身份鉴别策略组检
口令周期检测
安装一个PAM模块来启用cracklib支持,这可以提供额外的密码检查功能。
在Debian,Ubuntu或者Linux Mint使用命令: sudo apt-get install libpam-cracklib
这个模块在CentOS,Fedora或者RHEL默认安装了。所以在这些系统上就没有必要安装了。
直接编辑/etc/login.defs文件
- 最长使用周期小于等于90天
- 最短更换周期大于等于2天
- 距失效提示天数大于等于5天
密码复杂度检测
- 在Debian,Ubuntu或者Linux Mint使用命令:
sudo vi /etc/pam.d/common-password
- 新增加部分依次表示:一个大写字母、两个小写字母、一个数字和一个符号,其中密码中包含其中2个或2个以上规则即可。
在Fedora,CentOS或RHEL使用命令:
sudo vi /etc/pam.d/system-auth
登录锁定检测
普通用户触发锁定次数小于等于5
普通用户锁定时间大于等于5分钟
Root用户触发锁定次数小于等于5
Root用户锁定时间大于等于5分钟
修改如下配置文件:
/etc/pam.d/sshd(远程ssh)
/etc/pam.d/login(终端)
添加如下行:auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root=5 root_unlock_time=1200
各参数解释:
even_deny_root:也限制root用户
deny:设置普通和root用户连续错误登录的最大次数,超过最大次数,则锁定该用户
unlock_time:设定普通用户锁定后,多少时间后解锁,单位是秒
root_unlock_time:设定root用户锁定后,多少时间后解锁,单位是秒
配置示例:
注意auth要放在第二行,否则,用户登录失败3次以后,也可以认证成功。配置即可生效,不需要重启服务。
root权限用户
- root权限用户检测
检查配置文件/etc/passwd中,是否包含用户标识号为0,或者组标识号为0的用户。
以第一行为例,从左至右,分别表示:
帐号名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell
wheel组
- wheel组检测:
cat /etc/group
检查文件/etc/group中,wheel后面是否有用户名,如果有,将其修改成与上述划线部分相同。
相同ID用户
- 相同ID用户检测
检查配置/etc/passwd中,是否包含用户标识号相同的帐号,用户标识号位置如下:
以第一行为例,从左至右,依次为:
帐号名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell
访问控制策略组
空口令检测
如果检测出有空口令账户,可以做以下处理:
A. 删除该用户,命令如下
userdel 用户名
rm -rf /home/用户名(可选,表示删除该用户的主目录)
B.给该用户设置密码
passwd 用户名
弱口令检测
如果检测出有弱口令账户,建议设置符合密码复杂度要求的密码
passwd 用户名
安全审计策略组检测
日志守护进程
开启日志守护进程,当rsyslog没有在运行,则检测失败,操作命令如下:
- CentOS系列操作如下:
systemctl status rsyslog(查看状态)
systemctl stop rsyslog(停止)
systemctl start rsyslog(启动)
启动成功后状态
查看进程有没有启动
- Ubuntu系列操作如下:
service rsyslog status(查看状态)
service rsyslog stop(停止)
service rsyslog start(启动)
启动成功后状态
查看进程有没有启动
SSH策略检测
SSH检测
执行如下命令,修改配置文件:(systemctl restart sshd.service重启sshd生效)sudo vi /etc/ssh/sshd_config
- 使用协议版本大于等于2.
- 使用端口不为22.
- 最大失败尝试登录次数小于等于5.
- 禁止root登录
no表示禁止root登录,yes表示允许root登录.
- 关闭密码认证登录
yes为开启密码认证,no为关闭密码认证登录.
- 开启RSA认证登录
yes为开启RSA认证登录,no为关闭RSA认证登录.
- 开启公钥验证登录
yes为开启公钥验证登录,no为关闭公钥验证登录.
- 设置允许登录用户
在Fedora,CentOS或RHEL使用命令:
默认不配置的情况下,是允许所有用户登录.
入侵防范策略组检测
开启防火墙
iptables(各Linux系统共有)
- 删除现有规则
iptables -F
(or)
iptables --flush
警告:当前命令执行后,会放开屏蔽的端口
- 设置默认链策略
默认的iptables策略是ACCEPT。将此更改为如下所示。
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
当将INPUT和OUTPUT默认策略作为DROP时,对于每一个防火墙规则要求都应该定义两条规则。即一个INPUT和一个OUTPUT。
如果信任内部用户,则可以忽略上面OUTPUT的设置。默认情况下,不要丢弃所有OUTPUT的数据包。在这种情况下,对于每一个防火墙规则的要求,你只需要定义一个规则。即定义规则传入,因为传出是接受所有数据包。
- 阻止一个特定的IP地址
在我们做其他规则前,如果你想阻止一个特定的IP地址,你应该先做如下所示。当您在日志文件中找到特定的IP地址时发现一些奇怪的活动,并希望在进一步研究时暂时阻止该IP地址,这将很有帮助。
BLOCK_THIS_IP='192.168.1.108
iptables -A INPUT -s '$BLOCK_THIS_IP' -j DROP
你也可以使用下面的一种规则。
iptables -A INPUT -i eth0 -s '$BLOCK_THIS_IP' -j DROP
//规则禁止这个IP地址对我们服务器eth0网卡的所有连接
iptables -A INPUT -i eth0 -p tcp -s '$BLOCK_THIS_IP' -j DROP
//规则只禁止这个IP地址对我们服务器eth0网卡的tcp协议的连接
配置ufw:(Ubuntu)
安装:sudo apt-get install ufw
启用:sudo ufw enable
禁用:sudo ufw disable
查看状态:sudo ufw status
配置:firewalld(CentOS)
查看状态 systemctl status firewalld.service
启动防火墙systemctl start firewalld.service
关闭防火墙systemctl stop firewalld.service
重新启动防火墙systemctl restart firewalld.service