检查yum源,然后执行yum update ,更新后再删除无效的公网yum源
1.查找全局权限的目录,测试大于766会扫描出来
df --local -P 2> /dev/null | awk '{if (NR!=1) print $6}' | xargs -I '{}' find '{}' -xdev -type d \( -perm -0002 -a ! -perm -1000 \) 2>/dev/null
修复命令
chmod -R 700 目录
2.设置Bootloader 权限配置
chmod og-rwx /boot/grub2/grub.cfg
3.统一设置告警信息
echo "Authorized uses only. All activity may be monitored and reported." > /etc/issue
echo "Authorized uses only. All activity may be monitored and reported." > /etc/motd
4.虚拟化机器,删除相关包。其他机器符合审计
yum remove xorg-x11-server* bind vsftpd samba telnet-server rpcbind rsync openldap-clients
5.禁用IPV6
echo "net.ipv6.conf.all.disable_ipv6 = 1" >>/etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >>/etc/sysctl.conf
sysctl -p
6. 禁用包重定向转发.
echo "net.ipv4.conf.all.send_redirects = 0" >>/etc/sysctl.conf
echo "net.ipv4.conf.default.send_redirects = 0" >>/etc/sysctl.conf
运行以下命令来设置活动内核参数:
sysctl -w net.ipv4.conf.all.send_redirects=0
sysctl -w net.ipv4.conf.default.send_redirects=0
sysctl -w net.ipv4.route.flush=1
7.确保不接受安全的 ICMP 重定向
echo "net.ipv4.conf.all.secure_redirects = 0" >>/etc/sysctl.conf
echo "net.ipv4.conf.default.secure_redirects = 0">>/etc/sysctl.conf
运行以下命令来设置活动内核参数:
sysctl -w net.ipv4.conf.all.secure_redirects=0
sysctl -w net.ipv4.conf.default.secure_redirects=0
sysctl -w net.ipv4.route.flush=1
8.确保记录可疑数据包
echo "net.ipv4.conf.all.log_martians = 1" >>/etc/sysctl.conf
echo "net.ipv4.conf.default.log_martians = 1" >>/etc/sysctl.conf
运行以下命令来设置活动内核参数:
sysctl -w net.ipv4.conf.all.log_martians=1
sysctl -w net.ipv4.conf.default.log_martians=1
sysctl -w net.ipv4.route.flush=1
9.确保审计日志不被自动删除
sed -i "s\ROTATE\keep_logs\g" /etc/audit/auditd.conf #默认是ROTATE,循环日志。keep_logs是保留日志
10.收集修改日志和时间信息的事件
cat >> /etc/audit/rules.d/50-time_change.rules<<EOF
-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time-change
-a always,exit -F arch=b32 -S adjtimex -S settimeofday -S stime -k timechange
-a always,exit -F arch=b64 -S clock_settime -k time-change
-a always,exit -F arch=b32 -S clock_settime -k time-change
-w /etc/localtime -p wa -k time-change
EOF
11.收集修改user/group信息的事件
cat >> /etc/audit/rules.d/50-identity.rules << EOF
-w /etc/group -p wa -k identity
-w /etc/passwd -p wa -k identity
-w /etc/gshadow -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/security/opasswd -p wa -k identity
EOF
12.收集修改系统网络环境信息的事件
cat >> /etc/audit/rules.d/50-system_local.rules <<EOF
-a always,exit -F arch=b64 -S sethostname -S setdomainname -k system-locale
-a always,exit -F arch=b32 -S sethostname -S setdomainname -k system-locale
-w /etc/issue -p wa -k system-locale
-w /etc/issue.net -p wa -k system-locale
-w /etc/hosts -p wa -k system-locale
-w /etc/sysconfig/network -p wa -k system-locale
EOF
13.收集登入和登出事件
cat >> /etc/audit/rules.d/50-MAC_policy.rules <<EOF
-w /var/log/lastlog -p wa -k logins
-w /var/run/faillock/ -p wa -k logins
EOF
14. 收集session 初始化信息
cat >> /etc/audit/rules.d/50-session.rules <<EOF
/etc/audit/rules.d/50-session.rules
-w /var/run/utmp -p wa -k session
-w /var/log/wtmp -p wa -k logins
-w /var/log/btmp -p wa -k logins
EOF
15.收集任意访问控制权限修改事件
cat >> /etc/audit/rules.d/50-perm_mod.rules <<EOF
-a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b32 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b64 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b32 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b64 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b32 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid>=1000 -F auid!=4294967295 -k perm_mod
EOF
16. 收集不成功的未授权的文件访问尝试
cat >> /etc/audit/rules.d/50-access.rules <<EOF
-a always,exit -F arch=b64 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
-a always,exit -F arch=b32 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
-a always,exit -F arch=b64 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access
-a always,exit -F arch=b32 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access
EOF
17.收集对文件系统成功的挂载
cat >> /etc/audit/rules.d/50-mounts.rules <<EOF
-a always,exit -F arch=b64 -S mount -F auid>=1000 -F auid!=4294967295 -k mounts
-a always,exit -F arch=b32 -S mount -F auid>=1000 -F auid!=4294967295 -k mounts
EOF
18.收集用户删除文件事件
cat >> /etc/audit/rules.d/50-deletion.rules << EOF
-a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete
-a always,exit -F arch=b32 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete
EOF
19.收集系统管理范围的更改
cat >> /etc/audit/rules.d/50-scope.rules <<EOF
-w /etc/sudoers -p wa -k scope
-w /etc/sudoers.d/ -p wa -k scope
EOF
20.收集系统管理命令执行
cat >> /etc/audit/rules.d/50-actions.rules <<EOF
-a always,exit -F arch=b64 -C euid!=uid -F euid=0 -F auid>=1000 -F auid!=4294967295 -S execve -k actions
-a always,exit -F arch=b32 -C euid!=uid -F euid=0 -F auid>=1000 -F auid!=4294967295 -S execve -k actions
EOF
21.收集内核模块加载和卸载
cat >> /etc/audit/rules.d/50-modules.rules <<EOF
-w /sbin/insmod -p x -k modules
-w /sbin/rmmod -p x -k modules
-w /sbin/modprobe -p x -k modules
-a always,exit -F arch=b64 -S init_module -S delete_module -k modules
EOF
22.将journald 配置为发送日志给rsyslog
echo "ForwardToSyslog=yes" >>/etc/systemd/journald.conf
23.将journald 配置为可压缩大型日志文件
echo "Compress=yes" >>/etc/systemd/journald.conf
24.将journald 配置为可写日志文件到持久化存储
echo "Storage=persistent">>/etc/systemd/journald.conf
25.配置/etc/crontab权限
chmod u-x,og-rwx /etc/crontab
26.配置/etc/cron.hourly权限
chmod og-rwx /etc/cron.hourly
27.配置/etc/cron.daily的权限
chmod og-rwx /etc/cron.daily
28.配置/etc/cron.weekly的权限
chown root:root /etc/cron.weekly
chmod og-rwx /etc/cron.weekly
29.配置/etc/cron.monthly的权限
chmod og-rwx /etc/cron.monthly
30.配置/etc/cron.d的权限
chmod og-rwx /etc/cron.d
31.确保cron被限定为授权用户访问
rm /etc/cron.deny && touch /etc/cron.allow
chown root:root /etc/cron.allow && chmod u-x,og-rwx /etc/cron.allow
32.确保at被限定为授权
rm /etc/at.deny
touch /etc/at.allow
chown root:root /etc/at.allow
chmod u-x,og-rwx /etc/at.allow
33.确保sudo 命令使用 pty
echo "Defaults use_pty" >>/etc/sudoers
34.确保sudo 日志文件存在
echo "Defaults logfile="/var/log/sudo.log"" >>/etc/sudoers
35.限制SSH 访问
cat >> /etc/ssh/sshd_config <<EOF
AllowUsers vkapp
AllowUsers s-linuxad
AllowUsers zabbix
AllowUsers s-zabbix
AllowUsers mysql
AllowUsers root
EOF
36.禁用 SSH X11 Forwarding
sed -i "s/X11Forwarding yes/X11Forwarding no/g" /etc/ssh/sshd_config
37.配置SSH Idle 超时间隔
cat >>/etc/ssh/sshd_config <<EOF
ClientAliveInterval 900
ClientAliveCountMax 0
EOF
38.将ssh loginGraceTime 设置为一分钟或更少
sed -i "s/#LoginGraceTime 2m/LoginGraceTime 60/g" /etc/ssh/sshd_config
39. 配置SSH 警告标语
mv /etc/issue.net /etc/issue.net_bak
echo "Authorized only. All activity will be monitored and reported" >>/etc/issue.net
echo "Banner /etc/issue.net" >>/etc/ssh/sshd_config
40.配置SSH MaxStartups
echo "maxstartups 10:30:60" >> /etc/ssh/sshd_config
41. 配置密码创建需求
sed -i "s/# minclass = 0/minclass = 4/g" /etc/security/pwquality.conf
42.设置密码过期时间
for i in s-linuxad vkapp s-zabbix mysql;do chage --maxdays 365 $i;done
sed -i "s\99999\365\g" /etc/login.defs
43.确保不活跃的密码锁定小于等于90天,修改为180
useradd -D -f 180
chage --inactive 180 vkapp
44. 配置用户umask
echo "umask 027" >> /etc/profile
echo "umask 027" >> /etc/csh.login
echo "umask 027" >> /etc/bashrc
echo "umask 027" >> /etc/csh.cshrc
echo "umask 027" >> /root/.bashrc
echo "umask 027" >> /root/.cshrc
45.限制对su 命令的访问
groupadd sugroup
echo "auth required pam_wheel.so use_uid group=sugroup" >>/etc/pam.d/su
46.确保对audit进程启用之前运行的进程进行审计
vi /etc/default/grub # audit=1 添加到 GRUB_CMDLINE_LINUX:
GRUB_CMDLINE_LINUX="audit=1"
grub2-mkconfig -o /boot/grub2/grub.cfg
47.确保audit_backlog_limit是有效的
vi /etc/default/grub # audit_backlog_limit=<BACKLOG SIZE> 添加到GRUB_CMDLINE_LINUX:
GRUB_CMDLINE_LINUX="audit_backlog_limit=8192"
grub2-mkconfig -o /boot/grub2/grub.cfg
48.确保仅有强ciphers被使用、确保仅有强MAC算法被使用、确保仅有强key交换算法被使用
echo "Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr" >>/etc/ssh/sshd_config
echo "MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-256" >>/etc/ssh/sshd_config
echo 'KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1' >> /etc/ssh/sshd_config
49.配置失败密码尝试的锁定
vi /etc/pam.d/sshd
在auth行下方添加:
auth required pam_tally2.so deny=5 unlock_time=600
在account行下方添加:
account required pam_tally2.so