一、身份鉴别
1.1 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;
建议操作系统对登录的用户进行身份标识和鉴别,身份鉴别信息配置复杂度要求开启定期更换策略,避免使用弱口令,至少包含字母和数字,密码长度至少8位。密码最长适用90天,5次内不重复
整改方案:
1.修改 /etc/login.defs 文件内容即可,加入如下
PASS_MAX_DAYS 90
PASS_MIN_DAYS 1
PASS_MIN_LEN 8
PASS_WARN_AGE 7
2.对于密码的强度要求可以修改system-auth文件,vim /etc/pam.d/system-auth,修改如下:
password requisite pam_cracklib.so retry=5 difok=3 minlen=10 ucredit=-1 lcredit=-3 dcredit=-3 dictpath=/usr/share/cracklib/pw_dict
1.2 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;
建议操作系统开启登录失败处理功能配置登录失败5次及锁定时间30分钟;
vim /etc/pam.d/system-auth
auth required pam_tally2.so onerr=fail deny=5 unlock_time=1800 even_deny_root root_unlock_time=1800
参数含义: 密码错误 5 次锁定 1800 秒
会话过期,修改 /etc/profile 文件
vim /etc/profile
export TMOUT=1800
source /etc/profile
二、访问控制
2.1 应对登录的用户分配账户和权限;
建议操作系统对登录的用户分配账户和权限;
整改方案:
组 系统表示 作用
数据库 db 只负责管理数据库的用户
服务 server 负责业务服务或其他组件的用户
安全 security 负责系统安全,日志审计登的用户
命令如下:
cat /etc/group
groupdel xulei
groupadd db
groupadd server
groupadd security
cat /etc/passwd
groups db
userdel -rf xulei
useradd xulei -d /home/users/xulei –N
usermod -g db xulei
chown :server /home/server
passwd xulei
用户名 所属组 密码
dbuser db Dbuser@2021
secuser security Secuser@2021
serveruser server Serveruser@2021
2.2 修改root的默认账户信息
usermod -l 新用户 旧用户
1、vim /etc/passwd 将第一行的第一个root替换为重命名的用户
2、vim /etc/shadow 将这一行中的root 替换为重命名
密码为:SuperAdmin@2021
三、安全审计
3.1 应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计;
建议操作系统启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计;
整改方案:
service auditd start
auditctl –s
vim /etc/audit/audit.rules
-w /etc/my.cnf -p wa
-a entry,always -S umask -S chown
3.2 审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息;
建议操作系统启用安全审计功能审计记录包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息;
整改方案:
cat /var/log/audit/audit.log
3.3 应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等;
建议操作系统启用安全审计功能并部署日志审计系统并对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等;
整改方案:
FILE=/var/log/audit/audit.log
current_time=`date +%y%m%d`
cat $FILE |while read LINE
Udate=`echo $LINE|awk -F'[(.]+' '{print $2}'`
Cdate=`date -d @$Udate`
echo $LINE|sed "s/[0-9]\{10\}/$Cdate/" >> /home/sh/log/audit${current_time}.log
3.4 应对审计进程进行保护,防止未经授权的中断。
建议操作系统启用安全审计功能对审计进程进行保护,防止未经授权的中断,限制除审计员外的审计控制权限。
整改方案:
给输出的日志只允许 security 组可读即可。
其他日志方式
vi /etc/syslog.conf
加入
authpriv.* /var/log/secure
开启安全日志,日志文件位置/var/log/secure
没有 syslog.conf 文件,只有 rsyslog.conf。 rsyslog.conf 本身就具有该语句
chown :security /var/log
三、入侵防范
3.1 应遵循最小安装的原则,仅安装需要的组件和应用程序;
建议操作系统遵循最小安装的原则,仅安装需要的组件和应用程序;
整改方案:
按照部署方案,删除每台机器上多余的应用即可。
3.2 应关闭不需要的系统服务、默认共享和高危端口;
建议操作系统关闭不需要的系统服务、默认共享和高危端口,如FTP、DHCP等不必要服务
整改方案:
FTP 目前不能关闭还需要上传文件,还有根据部署方案多余的都可以关闭。
systemctl list-units 查看所有服务
快照 建议 备份半年,可以登录到物理机上配分。
3.3 设置登录地址限制(重启生效)
通过设定终端接入方式、网络地址范围等条件限制终端登录
vi /etc/hosts.allow
sshd:10.10.20.99:allow
in.telnetd:192.168.221.
vi /etc/hosts.deny
sshd:all:deny
示例允许 10.10.20.99 ssh登录系统有效,优先级为先检查 hosts.deny , hosts.allow 后者设定可越过前者限制 在 hosts.deny 中加入 sshd:all:deny。在 Hosts.allow 加入允许的 ip 或者 ip 网段 sshd:ip:allow。
3.4 高危端口管理
永久禁用,需要重启生效
# 用 iptables 来控制端口和防火墙管理
yum install iptables-services
# 设置开机自启动
systemctl enable iptables
# 启动停止命令
systemctl [stop|start|restart] iptables
# 状态查看
service iptables status
# 禁用端口
# 先打开文件编辑
vim /etc/sysconfig/iptables
# 添加禁止端口访问
-A INPUT -p tcp --dport 445 -j DROP
-A INPUT -p tcp --dport 139 -j DROP
-A INPUT -p tcp --dport 3389 -j DROP
# 查看开放端口
iptables -nL
# -A 参数就看成是添加一条 INPUT 或 OUTPUT 的规则。
# -p 指定是什么协议 我们常用的tcp 协议,当然也有udp 例如53端口的DNS,到时我们要配置DNS用到53端口 大家就会发现使用udp协议的。
# --dport 就是目标端口,当数据从外部进入服务器为目标端口(INPUT),反之数据从服务器出去(OUTPUT),则为数据源端口使用 --sport
# -j 就是指定是 ACCEPT 接收 或者 DROP 不接收
# 禁止IP访问
-A INPUT -p tcp -s 192.168.1.2 -j DROP
我们就用 -p tcp , 如果是 udp 就写udp,这里就用tcp了, -s就是 来源的意思,
ip来源于 192.168.1.2 ,-j 怎么做 我们拒绝它 这里应该是 DROP
快速生效方式,也会添加到文件中(不建议)
# 禁用端口访问
/sbin/iptables -A INPUT -p tcp --dport 8080 -j DROP
/sbin/iptables -A OUTPUT -p tcp --sport 8080 -j DROP
# 允许端口
/sbin/iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --sport 8080 -j ACCEPT
# 禁用IP访问,可以ping通 但无法通过shh访问
/sbin/iptables -A INPUT -p tcp -s 192.168.200.16 -j DROP
# 保存到文件,会改变默认规则,所有端口可以访问
service iptables save
# 基础设置
# 禁止所有端口访问,但允许22 端口访问,因为是立即生效,最好使用主机修改
iptables -P INPUT ACCEPT
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
-A INPUT –m state --state RELATED,ESTABLISHED –j ACCEPT
-A INPUT –p icmp –j ACCEPT
-A INPUT –i lo –j ACCEPT
-A INPUT –p tcp –m state --state NEW –m tcp --dport 22 –j ACCEPT
-A INPUT –j REJECT --reject-with icmp-host-prohibited
-A FORWARD –j REJECT --reject-with icmp-host-prohibited
# 清除规则
# 先查看行号
iptables -nL --line-number
iptables -D INPUT 1
-D 是删除的意思
INPUT 指定删除INPUT的规则
1 是行号
注意事项,需要关闭firewalld
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
复制代码