为防范计算机系统风险,规范计算机系统安全加固脚本,拟定此安全加固标准规范。
说明: /etc/security/ 为系统安全配置文件目录,禁止普通用户查看修改; /etc/init.d/ 、 /etc/rc*.d 为原systemV架构系统启动配置文件目录,禁止普通用户查看修改。/usr/lib/system d 、/etc/systemd为systemd架构系统启动配置文件目录,禁止普通用户查看修改。
语句:
chmod 600 /etc/security
chmod 750 /etc/init.d/
chmod 750 /etc/rc.d/init.d/
chmod 750 /etc/rc0.d/
chmod 750 /etc/rc1.d/
chmod 750 /etc/rc2.d/
chmod 750 /etc/rc3.d/
chmod 750 /etc/rc4.d/
chmod 750 /etc/rc5.d/
chmod 750 /etc/rc6.d/
chmod 750 /usr/lib/systemd
chmod 750 /etc/systemd
chmod 644 /etc/passwd
chmod 644 /etc/group
chmod 400 /etc/shadow
chmod 600 /boot/grub2/grub.cfg
说明:从内核级别修改账户相关文件属性,禁止修改
语句:
chattr +i /etc/passwd
chattr +i /etc/gshadow
chattr +i /etc/group
chattr +i /etc/shadow
说明:修改用户默认环境变量文件,禁止普通用户查看其他用户文件。
语句:
sed -i 's/umask 002/umask 077/' /etc/profile
sed -i -c 's/umask 002/umask 077/' /etc/csh.cshrc
sed -i -c 's/umask 002/umask 077/' /etc/bashrc
echo "umask 077" >> /etc/csh.login
说明:用户目录缺省访问权限设置
语句:
sed -i -c 's/UMASK.*077/UMASK 027/' /etc/login.defs
说明:设置 ssh 登录后警告 Banner 用于系统安全。
语句:
echo " Authorized only. All activity will be monitored and reported " > /etc/ssh_banner
chown bin:bin /etc/ssh_banner
chmod 644 /etc/ssh_banner
sed -i -c '/^Banner.*/d' /etc/ssh/sshd_config
echo "Banner /etc/ssh_banner" >> /etc/ssh/sshd_config
systemctl restart sshd
说明:设置自动超时退出为 10 分钟。
语句:
echo 'export TMOUT=600' >> /etc/profile
说明:调整系统启动服务,降低安全风险
语句:
systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl stop firewalld
systemctl disable NetworkManager
systemctl stop postfix
systemctl disable postfix
systemctl disable abrt-ccpp
systemctl disable abrt-oops
systemctl disable abrt-vmcore
systemctl disable abrt-xorg
systemctl disable abrt
systemctl disable Bluetooth
systemctl disable cups
说明: wheel 组成员为系统默认特权用户组,禁止其他用户使用 su 登陆到 root 用户。
语句:
sed -ri 's/#auth(.required.uid$)/auth \1/' /etc/pam.d/su
说明:关闭 core dump ,防止信息泄漏
语句:
sed -i -c '/.*soft core/d' /etc/security/limits.conf
sed -i -c '/.*hard core/d' /etc/security/limits.conf
cat << EOF >> /etc/security/limits.conf
EOF
说明: 5 次以内密码修改不允许重复
语句:
sed -ri 's/(^password.*authtok)/\1 remember=5/' /etc/pam.d/system-auth - ac
说明:操作记录保存数量由 1000 条改为 5 条,防止信息泄漏,并添加历史命令时间戳
语句:
sed -i '/^[[:blank:]]*HISTSIZE/d' /etc/profile
sed -i '/^[[:blank:]]*HISTFILESIZE/d' /etc/profile
echo "HISTSIZE=5" >> /etc/profile
echo "HISTFILESIZE=5" >> /etc/profile
echo "export HISTSIZE HISTFILESIZE" >> /etc/profile
echo "export HISTTIMEFORMAT=\"%F %T \"" >> /etc/profile
说明:更改本地登录尝试次数并设置锁定,失败 10 次后,非 root 用户锁定 120 秒, root 锁定 60 秒。 ssh 设置单次登录密码尝试次数由 6 次改为 3 次,防止用户暴力破解;
语句:
cp /etc/pam.d/system-auth-ac /etc/pam.d/system-auth-ac.date +%s
.bak
sed -i -c '/auth.required.pam_tally2.so deny=.unlock_time=.root_unlock_time=.*/d' /etc/pam.d/system-auth-ac
sed -i '3aauth required pam_tally2.so deny=10 unlock_time=120 root_unlock_time=60' /etc/pam.d/system-auth-ac
line_no1=grep -n '^[[:blank:]]*account' /etc/pam.d/system-auth-ac |head -1|awk -F':' '{print $1}'
sed -i "${line_no1}aaccount required pam_tally2.so" /etc/pam.d/system-auth-ac
sed -ri 's/(#MaxAuthTries).*6/\1 3/' /etc/ssh/sshd_config
说明:取消不必要文件 suid 和 sgid 权限,禁止普通用户使用该命令。
语句:
chmod a-s /usr/bin/chage
chmod a-s /bin/mount
chmod a-s /bin/umount
chmod a-s /usr/bin/chage
chmod a-s /usr/bin/chfn
chmod a-s /usr/bin/chsh
chmod a-s /usr/bin/gpasswd
chmod a-s /usr/bin/newgrp
chmod a-s /usr/sbin/usernetctl
chmod g-s /sbin/netreport
说明:去除 /etc/aliase 中不安全别名。
语句:
sed -i -r 's/^games(.*)/#game\1/' /etc/aliases
sed -i -r 's/^ingres(.*)/#ingres\1/' /etc/aliases
sed -i -r 's/^system(.*)/#system\1/' /etc/aliases
sed -i -r 's/^toor(.*)/#toor\1/' /etc/aliases
sed -i -r 's/^uucp(.*)/#uucp\1/' /etc/aliases
sed -i -r 's/^manager(.*)/#manager\1/' /etc/aliases
sed -i -r 's/^dumper(.*)/#dumper\1/' /etc/aliases
sed -i -r 's/^operator(.*)/#operator\1/' /etc/aliases
sed -i -r 's/^decode(.*)/#decode\1/' /etc/aliases
sed -i -r 's/^root(.*)/#root\1/' /etc/aliases
说明:设置定时自动屏幕锁定(默认5分钟),增加系统安全。
语句:
gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string --set /apps/gnome-screensaver/mode blank-only
说明:关闭 IP 伪装增强系统安全,关闭绑定多 IP 功能增强系统性能。
语句:
sed -i -c '/^[[:blank:]]*nospoof/d' /etc/host.conf
echo "nospoof on" >>/etc/host.conf
sed -i -c 's/multi[[:blank:]]*on/multi off/' /etc/host.conf
说明:关闭 selinux ,避免应用错误
语句:
sed -i 's/^[[:blank:]]SELINUX=[[:print:]]/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
说明: 设置密码复杂度要求,至少1个数字加1个大写字符,最小长度为 8 位。增加系统安全
语句:
sed -ri 's/(^pass.retry=3).type=/\1 dcredit=-1 ucredit=-1 minlen=8/' /etc/pam.d/system-auth - ac
sed -ri 's/(PASS_MIN_LEN.*)5/\18/' /etc/login.defs
说明: 配置正确的ntp服务器并开启服务。
语句:
export ntp_server=X.X.X.X
sed -i '/^[[:blank:]]server[[:blank:]]/d' /etc/ntp.conf
echo "server ${ntp_server} iburst" >> /etc/ntp.conf
systemctl start ntpd
systemctl enable ntpd
说明:处于对网络的安全考虑,关闭重定向功能。
语句:
echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.conf
sysctl –p
4.17设置口令生存周期**
在文件/etc/login.defs中设置 PASS_MAX_DAYS 不大于标准值,PASS_MAX_DAYS 90,如果该文件不存在,则创建并按照要求进行编辑
语句:
sed -i '/^[[:blank:]]PASS_MAX_DAYS[[:print:]]/d' /etc/login.defs
echo "PASS_MAX_DAYS 90" >> /etc/login.defs
说明 :系统中每一个账号都被分配一个用户ID号,ID 号为 0 是为 root和 adminbak 保留的,UID 号 1-99 是为系统其它预定义的帐号保留的,UID为0拥有系统的最高特权 。因此检查/etc/passwd文件,如有除root之外有UID=0账号的将其禁用。
语句 :
value=awk -F: '($3 == 0) { print $1 }' /etc/passwd |grep -v root|grep -v adminbak
if [ -n "$value" ]; then
for user in "$value"
do
/usr/sbin/userdel $user --force >/dev/null 2>&1
done
fi
注:解锁命令usermod - U $USER
说明 :检查 /etc/shadow文件,如果有空口令的账号将其禁止。
语句:
for user in awk -F: '($2 == "") { print $1 }' /etc/shadow
do
passwd -l $user
done
说明:系统中默认会创建一系列非交互式账号(系统账号)用于系统内部运作用,这些用户默认没有设置密码并且无法登陆,UID小于1000。但是通常当黑客入侵到系统中后,会尝试对这些用户默认配置进行攻击。可以加强系统预置帐户的安全性使得黑客更难以对这些用户进行破坏,如锁定用户和设置shell为/dev/null。另nfsnobody也是非交互账号但UID大于1000。常用的系统账号有: a dm、lp、sync、shutdown、halt、bin、daemon、news、uucp、operator、games、nobody等。
语句:
for NAME in cut -d: -f1 /etc/passwd
do
MyUID=id -u $NAME
value=/usr/bin/passwd -S "$NAME" 2>/dev/null |grep "in use"
ulock=$?
if [ $MyUID -lt 1000 -a $NAME != 'root' -a $ulock -eq 0 ]; then
usermod -L -s /dev/null $NAME
fi
done
usermod -L -s /dev/null nfsnobody > /dev/null 2>&1
注 :查看账号是否锁定命令:passwd -S $NAME
解锁命令 : passwd - u $NAME 或 usermod -U $NAME
说明 :通过修改系统banner,避免泄漏操作系统名称,版本号,主机名称等,并且给出登录提示信息。 /etc/issue是针对本地控制台登录前的配置文件;/etc/issue.net是针对网络远程登录前(如telnet,但不包括ssh)的配置文件; /etc/motd是针对登录后的配置文件 。
语句:
e cho "ATTENTION:You have logged onto a secured server..ONLY Authorized users can access.." > /etc/issue
e cho "ATTENTION:You have logged onto a secured server..ONLY Authorized users can access.." > /etc/issue .net
e cho "ATTENTION:You have logged onto a secured server..ONLY Authorized users can access.." > /etc/motd
说明 : 在生产系统中应 禁止使用usb存储设备, 防止 物理 usb 设备引入木马文件。
语句:
echo "install usb-storage /bin/true" >> /etc/modprobe.d/usb-storage.conf
说明 : 禁止A lt+Ctrl+Del 键盘组合键关机重启系统,防止恶意或误操作导致系统重启。
语句:
systemctl mask ctrl-alt-del.target
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞3
添加新评论0 条评论