安全基线检查脚本
时间: 2023-07-29 10:07:03 浏览: 164
CentOS7或RHEL7的安全基线检查脚本
以下是一个基础的安全基线检查脚本示例,可以根据具体需要进行修改和扩展:
```bash
#!/bin/bash
# 安全基线检查脚本
# 检查是否以 root 用户身份运行
if [ "$(id -u)" != "0" ]; then
echo "该脚本需要以 root 身份运行" >&2
exit 1
fi
# 更新系统软件包
apt-get update
apt-get upgrade -y
# 禁用 root 用户 SSH 登录
sed -i 's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config
service sshd restart
# 安装防火墙并配置规则
apt-get install ufw -y
ufw default deny incoming
ufw default allow outgoing
ufw allow ssh
ufw enable
# 检查是否存在不安全的密码
awk -F: '($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd | while read user; do
if [ ! "$(grep "^$user:" /etc/shadow | cut -d: -f2 | grep -E '^\$6\$')" ]; then
echo "用户 $user 存在不安全的密码" >&2
fi
done
# 检查是否存在不必要的服务
systemctl list-unit-files | grep enabled | awk '{print $1}' | while read service; do
case $service in
rpcbind|cups|avahi-daemon|bluetooth|speech-dispatcher|apport|whoopsie|rsync|ntp|smbd|nmbd|vsftpd|dovecot|postfix|exim4|sendmail)
echo "存在不必要的服务 $service" >&2
;;
esac
done
# 检查是否存在不必要的用户
awk -F':' '($2!="*")&&($2!="!")&&($2!="!!")&&(length($2)>=13)&&($3>=1000)&&($1!="nobody") {print $1}' /etc/shadow | while read user; do
case $user in
bin|daemon|adm|lp|sync|shutdown|halt|mail|uucp|operator|games|gopher|ftp|nobody|systemd-timesync|systemd-network|systemd-resolve|systemd-bus-proxy|systemd-journal-remote|systemd-journal-upload|systemd-journal-gateway|systemd-journal-flush|systemd-coredump|systemd-coredumpctl|systemd-cryptsetup|systemd-fsck|systemd-homed|systemd-hostnamed|systemd-localed|systemd-machined|systemd-networkd|systemd-portabled|systemd-rfkill|systemd-sysusers|systemd-timedated|systemd-tmpfiles|systemd-tmpfiles-clean|systemd-udevd|systemd-userdbd|systemd-userdbctl|systemd-ask-password-wall|systemd-ask-password-console|systemd-ask-password-plymouth|systemd-backlight|systemd-binfmt|systemd-cgroups-agent|systemd-delta|systemd-detect-virt|systemd-firstboot|systemd-genetic-hostname|systemd-hwdb|systemd-initctl|systemd-journald|systemd-machined|systemd-mount|systemd-nspawn|systemd-repart|systemd-sysctl|systemd-utmp|systemd-vconsole-setup|systemd-rc-local-generator|systemd-sysctl-generator|systemd-system-update-generator|systemd-timesyncd|systemd-update-utmp|systemd-user-sessions|systemd-binfmt.service)
;;
*)
echo "存在不必要的用户 $user" >&2
;;
esac
done
# 检查系统文件的权限
find /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin -type f -perm /022 -ls >&2
```
该脚本的功能包括:
1. 检查是否以 root 用户身份运行;
2. 更新系统软件包;
3. 禁用 root 用户 SSH 登录;
4. 安装防火墙并配置规则;
5. 检查是否存在不安全的密码;
6. 检查是否存在不必要的服务;
7. 检查是否存在不必要的用户;
8. 检查系统文件的权限。
当然,根据具体情况,还可以在脚本中添加其它需要检查的项。
阅读全文