linux安全加固

系统信息

    - 查看内核信息        uname -a
- 查看所有软件包   rpm -qa
- 查看主机名     hostname
- 查看网络配置   ifconfig -a
- 查看路由表         netstat -rn
- 查看开放端口   netstat -an
- 查看当前进程    ps -aux

 

用户帐号和环境禁用无用账号

- 如果不需要登录系统,shell应该/sbin/nologin

 

检查特殊账号

- 验证是否有账号存在空口令的情况:
awk -F:  '($2 =="") {print $1 }' /etc/shadow
- 检查除了root以外是否还有其它账号的UID为0:
- 任何UID为0的账号在系统上都具有超级用户权限.
awk -F:  '($3 ==0) {print $1 }' /etc/passwd

 

限制用户远程登录

    - 在#%PAM-1.0的下面,即第二行,添加内容,一定要写在前面,如果写在后面,虽然用户被锁定,但是只要用户输入正确的密码,还是可以登录的!
- vim /etc/pam.d/sshd
#%PAM-1.0
auth       required     ddpam_tally2.so deny=3 unlock_time=300 even_deny_root root_unlock_time=10

 

设置自动注销时间

    - 修改帐户TMOUT值,设置自动注销时间,使用命令“vi /etc/profile”修改配置文件,添加“TMOUT=”行开头的注释,设置为“TMOUT=600”,即超时时间为10分钟。
#vi /etc/profile
#增加
TMOUT=600

 

设置Bash保留历史命令的条数

- 修改HISTSIZE=5,即只保留最新执行的5条命令
#vi /etc/profile
HISTSIZE=5

调整和关闭非必须的服务

- 关闭postfix服务。如无必要,禁止该服务。
systemctl disable postfix

调整SSH服务

- 调整配置文件:/etc/ssh/sshd_config
- 修改SSH端口
Port 6622
- 不允许root直接登陆,在ssh的配置文件中进行修改,查找“#PermitRootLogin yes”,将前面的“#”去掉,短尾“Yes”改为“No”,并保存文件。
systemctl restart sshd.service
- 添加别的用户
useradd jkl
passwd jkl
111111
- 下次登陆,先用 jkl的普通用户登陆服务器,注意自己修改的ssh远程连接的端口。
- 若要获得ROOT权限,在SSH中执行以下命令
su root1 回车
输入root密码(一定要回车之后输入密码,linux会有历史记录的保存,要不就是清除历史记录:history -c)执行以上命令并输入root密码后即可获得root权限。

- 日志级别LogLevel设置为INFO或者DEBUG
LogLevel INFO
- 对应调整防火墙和SElinux策略
yum -y install policycoreutils-python
semanage port -a -t ssh_port_t -p tcp 6622
- 调整防火墙策略,限制SSH服务访问IP
firewall-cmd --state (检查firewalld是否运行)
firewall-cmd --permanent --list-port(查看端口列表)
firewall-cmd --permanent --zone=public --add-port=6622/tcp(添加端口)
firewall-cmd --permanent --remove-port=48489/tcp(删除端口)
firewall-cmd --permanent --zone=public --remove-service=ssh
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="10.0.10.0/22" service name="ssh" accept"
## IP根据实际配置
firewall-cmd --reload




# Centos7设置ssh安全策略 ----->> 指定IP登陆。

vim /etc/ssh/sshd_config
- 修改默认的ssh端口
Port 2222 (自定义端口,这里暂定为2222)
- 禁止root账户通过SSH直接登录
PermitRootLogin no
- 添加普通用户并给一个密码
useradd jkl
passwd jkl
111111
- 新设置的端口,需要打开端口号。
firewall-cmd –add-port=2222/tcp –permanent
firewall-cmd –reload
- 限制SSH登录的IP
# 设置禁止所有IP连接服务器的SSH
vim /etc/hosts.deny
sshd:all:deny
# 设置允许指定IP连接服务器的SSH(这边建议设置一个备用允许连接的IP)
vim /etc/hosts.allow
sshd:192.168.1.106:allow
- 重启ssh服务,并通过登陆进行验证
systemctl restart sshd.service
systemctl status sshd.service

 

WinSCP下su切换到root的技巧(禁止root远程ssh登录时)

# 限制了root用户的远程登录,但是重要的数据文件都是700。更可悲的是,WinSCP完全失去了用武之地。因为root账户无法登陆,而像是FTP,SFTP,SCP这些协议都不支持在登录以后切换用户。 SCP协议在登录的时候可以指定shell,一般默认的也就是推荐的是/bin/bash,但是我们可以修改它来玩花样,比如改成sudo su - 但是新问题又来了,sudo需要输入密码,但是WinSCP在登录的时候并没有交互过程。但是天无绝人只要在root权限之路,只要在root权限下visudo,添加如下一行即可取消sudu时的密码:
yourusername ALL=NOPASSWD: ALL
# 为了可以在非putty的环境下sudo,我们还需要注释掉下面一行:
Defaults requiretty
# 然后保存,即可在登录到WinSCP的时候享受root的快感啦!

 

系统和网络参数调整

- vi /etc/security/limits.conf
* soft core 0
* hard core 0

系统文件加锁

- 防止未经许可的删除或添加,注意:执行权限修改后,就无法添加和删除用户。
chattr +ia /etc/passwd
chattr +ia /etc/shadow
chattr +ia /etc/group
chattr +ia /etc/gshadow
chattr +ia /etc/services

日记调整

修改rsyslogd日志,rotate>25,日记记录超180天。
- vim /etc/logrotate.conf
# rotate 30
坚持这种真诚,那么总归能遇到良人。
原文地址:https://www.cnblogs.com/jiaxiaozia/p/12157341.html