仅作为等级保护基础,在满足一定条件下使用
不建议生产环境下直接运行,建议克隆生产机器进行配置
相关运行等问题自行处理,syslog等非百分百合适,结合审计服务器和设备执行
#!/bin/bash
# 创建备份文件函数
backup_file() {
local file="$1"
local backup_file="${file}.bak"
# 备份文件
cp "$file" "$backup_file"
chmod 400 "$backup_file"
chattr +i "$backup_file"
}
# 1. 配置 /proc/sys/net/ipv4/conf/all/accept_redirects 的值为0
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
# 2. 配置 /proc/sys/net/ipv4/conf/all/send_redirects 的值为0
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
# 3. 运行 systemctl start ntpd
systemctl start ntpd
# 4. 更改 /etc/host.conf 内容为 multi off 和 nospoof on
echo "multi off" > /etc/host.conf
echo "nospoof on" >> /etc/host.conf
# 5. 编辑文件 /etc/profile,配置 HISTFILESIZE=5
echo "HISTFILESIZE=5" >> /etc/profile
# 6. 编辑 /etc/syslog-ng/syslog-ng.conf
syslog_ng_conf="/etc/syslog-ng/syslog-ng.conf"
if [ -f "$syslog_ng_conf" ]; then
# 备份并修改权限
backup_file "$syslog_ng_conf"
# 添加配置
echo 'filter f_msgs { level(err) or facility(kern) and level(debug) or facility(daemon) and level(notice); };' >> "$syslog_ng_conf"
echo 'destination msgs { file("/var/adm/msgs"); };' >> "$syslog_ng_conf"
echo 'log { source(src); filter(f_msgs); destination(msgs); };' >> "$syslog_ng_conf"
else
# 创建文件并修改权限
touch /var/adm/msgs
chmod 666 /var/adm/msgs
# 添加配置
echo 'filter f_msgs { level(err) or facility(kern) and level(debug) or facility(daemon) and level(notice); };' > "$syslog_ng_conf"
echo 'destination msgs { file("/var/adm/msgs"); };' >> "$syslog_ng_conf"
echo 'log { source(src); filter(f_msgs); destination(msgs); };' >> "$syslog_ng_conf"
fi
# 重启日志服务
service syslog restart
# 7. 编辑 /etc/rsyslog.conf
rsyslog_conf="/etc/rsyslog.conf"
if [ -f "$rsyslog_conf" ]; then
# 备份并修改权限
backup_file "$rsyslog_conf"
# 添加配置
echo '*.err;kern.debug;daemon.notice /var/adm/messages' >> "$rsyslog_conf"
else
# 创建文件并修改权限
touch /var/adm/messages
chmod 666 /var/adm/messages
# 添加配置
echo '*.err;kern.debug;daemon.notice /var/adm/messages' > "$rsyslog_conf"
fi
# 重启日志服务
service rsyslog restart
# 8. 编辑 /etc/syslog.conf
syslog_conf="/etc/syslog.conf"
if [ -f "$syslog_conf" ]; then
# 备份并修改权限
backup_file "$syslog_conf"
# 添加配置
echo '*.err;kern.debug;daemon.notice /var/adm/messages' >> "$syslog_conf"
else
# 创建文件并修改权限
touch /var/adm/messages
chmod 666 /var/adm/messages
# 添加配置
echo '*.err;kern.debug;daemon.notice /var/adm/messages' > "$syslog_conf"
fi
# 重启日志服务
service syslog restart
# 9. 修改权限 /etc/rc.d/init.d/
chmod 750 /etc/rc.d/init.d/
# 10. 修改权限 /tmp
chmod 750 /tmp
# 11. 修改权限 /etc/rc5.d/
chmod 750 /etc/rc5.d/
# 12. 修改权限 /etc/rc4.d/
chmod 750 /etc/rc4.d/
# 13. 修改权限 /etc/security
chmod 600 /etc/security
# 14. 修改权限 /etc/grub2.cfg
chmod 600 /etc/grub2.cfg
# 15. 修改权限 /boot/grub2/grub.cfg
chmod 600 /boot/grub2/grub.cfg
# 16. 修改权限 /etc/rc0.d/
chmod 750 /etc/rc0.d/
# 17. 修改权限 /etc/rc6.d
chmod 750 /etc/rc6.d
# 18. 修改权限 /etc/rc1.d/
chmod 750 /etc/rc1.d/
# 19. 修改权限 /etc/rc2.d/
chmod 750 /etc/rc2.d/
# 20. 修改权限 /etc/rc3.d
chmod 750 /etc/rc3.d
# 21. 修改 /etc/csh.cshrc 中的 umask 为 077
sed -i 's/^umask .*$/umask 077/' /etc/csh.cshrc
# 22. 修改 /etc/bashrc 中的 umask 022 为 077
sed -i 's/^umask .*$/umask 077/' /etc/bashrc
# 23. 修改 /etc/csh.login 中的 umask 为 077
sed -i 's/^umask .*$/umask 077/' /etc/csh.login
# 24. 修改 /etc/profile 中的 umask 为 077
sed -i 's/^umask .*$/umask 077/' /etc/profile
# 25. 执行 chattr +i /etc/gshadow
chattr +i /etc/gshadow
# 26. 执行 chattr +i /etc/passwd
chattr +i /etc/passwd
# 27. 执行 chattr +i /etc/group
chattr +i /etc/group
# 28. 执行 chattr +i /etc/shadow
chattr +i /etc/shadow
# 29. 编辑 /etc/syslog.conf 文件
syslog_conf="/etc/syslog.conf"
if [ -f "$syslog_conf" ]; then
# 备份并修改权限
backup_file "$syslog_conf"
# 添加配置
echo 'cron.* /var/log/cron' >> "$syslog_conf"
else
# 创建文件并修改权限
touch /var/log/cron
chmod 775 /var/log/cron
# 添加配置
echo 'cron.* /var/log/cron' > "$syslog_conf"
fi
# 30. 编辑 /etc/aliases 文件
aliases_file="/etc/aliases"
if [ -f "$aliases_file" ]; then
# 备份并修改权限
backup_file "$aliases_file"
# 注释掉不需要的行
sed -i '/^#games:/ s/^/#/' "$aliases_file"
sed -i '/^#ingres:/ s/^/#/' "$aliases_file"
sed -i '/^#system:/ s/^/#/' "$aliases_file"
sed -i '/^#toor:/ s/^/#/' "$aliases_file"
sed -i '/^#uucp:/ s/^/#/' "$aliases_file"
sed -i '/^#manager:/ s/^/#/' "$aliases_file"
sed -i '/^#dumper:/ s/^/#/' "$aliases_file"
sed -i '/^#operator:/ s/^/#/' "$aliases_file"
sed -i '/^#decode:/ s/^/#/' "$aliases_file"
sed -i '/^#root:/ s/^/#/' "$aliases_file"
else
echo "Aliases file not found: $aliases_file"
fi
# 更新别名
newaliases
# 33. 修改 /etc/profile 中的 TMOUT 和 umask
sed -i 's/^TMOUT=.*/TMOUT=600/' /etc/profile
sed -i 's/^umask .*$/umask 077/' /etc/profile
# 34. 在 /etc/pam.d/system-auth 中设置口令最小长度
system_auth="/etc/pam.d/system-auth"
if [ -f "$system_auth" ]; then
# 备份并修改权限
backup_file "$system_auth"
# 添加配置
sed -i '/^password required pam_cracklib.so/ s/$/ minlen=6/' "$system_auth"
else
echo "System auth file not found: $system_auth"
fi
# 35. 修改 /etc/login.defs 中的 PASS_MIN_DAYS
sed -i 's/^PASS_MIN_DAYS .*$/PASS_MIN_DAYS 6/' /etc/login.defs
# 36. 修改 /etc/login.defs 中的 PASS_WARN_AGE
sed -i 's/^PASS_WARN_AGE .*$/PASS_WARN_AGE 30/' /etc/login.defs