基线加固自动化

该脚本主要用于Linux系统的安全配置,包括禁止IP重定向,启动NTP服务,修改host.conf以防止IP欺骗,限制历史记录大小,配置syslog-ng和rsyslog以记录特定错误信息,修改目录和文件权限,加强密码策略,并启用不可变属性以防止未授权修改关键文件。
摘要由CSDN通过智能技术生成

仅作为等级保护基础,在满足一定条件下使用

不建议生产环境下直接运行,建议克隆生产机器进行配置

相关运行等问题自行处理,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
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值