一、账号安全控制
- 系统账号管理
- 清理非登录用户:
- 将非交互式用户(如服务账号)的 Shell 设置为 /sbin/nologin:
- 清理非登录用户:
usermod -s /sbin/nologin <用户名>
-
-
- 锁定长期未使用的账号:
-
passwd -l <用户名> # 锁定
usermod -L <用户名>
-
-
- 删除无用账号并清理残留文件:
-
userdel -r <用户名> # 连带删除家目录和邮件池
-
-
- 锁定关键文件 /etc/passwd 和 /etc/shadow,防止非法修改:
-
chattr +i /etc/passwd /etc/shadow # 锁定
chattr -i /etc/passwd /etc/shadow # 解锁
-
- 密码策略强化:
- 复杂度要求 :
编辑 /etc/security/pwquality.conf,设置最小长度(minlen=12)、字符类型(minclass=4)等规则。 - 有效期控制:
- 全局配置:修改 /etc/login.defs,设置 PASS_MAX_DAYS=90(密码最长使用天数)。
- 用户级配置:使用 chage 命令:
- 复杂度要求 :
- 密码策略强化:
chage -M 90 -m 7 -W 14 <用户名> # 设置密码 90 天过期,修改间隔 7 天,提前 14 天警告
-
- 命令历史与终端安全:
- 限制历史记录条数(/etc/profile 中设置 HISTSIZE=100)。
- 终端闲置超时自动注销(export TMOUT=180)。
- 注销时自动清空历史记录(.bash_logout 中添加 history -c)。
- 命令历史与终端安全:
- 用户权限控制
- 限制 su 命令使用:
- 仅允许 wheel 组用户使用 su:
- 限制 su 命令使用:
gpasswd -a <用户> wheel # 将用户加入 wheel 组
vi /etc/pam.d/su # 启用 `auth required pam_wheel.so use_uid`
-
- 精细化 sudo 授权:
- 通过 visudo 配置 /etc/sudoers,例如:
- 精细化 sudo 授权:
user1 ALL=(root) /usr/bin/systemctl restart httpd # 仅允许重启HTTP服务
%wheel ALL=(ALL) ALL # wheel组成员可执行所有命令
-
-
- 启用 sudo 日志记录:
-
Defaults logfile="/var/log/sudo.log"
二、系统引导与登录控制
- 引导程序安全( GRUB )
- 加密 GRUB 菜单:
- 生成密码哈希:
- 加密 GRUB 菜单:
grub2-mkpasswd-pbkdf2
-
-
- 修改 /etc/grub.d/40_custom,添加:
-
set superusers="admin"
password_pbkdf2 admin <哈希值>
-
-
- 更新配置:
-
grub2-mkconfig -o /boot/efi/EFI/openEuler/grub.cfg
-
- 禁用高风险功能:
- 禁止通过 Ctrl+Alt+Del 重启:
- 禁用高风险功能:
systemctl mask ctrl-alt-del.target
-
-
- 关闭非必要服务(如 telnet):
-
systemctl disable telnet.socket
- 登录安全策略
- SSH 加固:
- 禁止 root 远程登录(修改 /etc/ssh/sshd_config):
- SSH 加固:
PermitRootLogin no
PasswordAuthentication no # 强制使用密钥认证
MaxAuthTries 3 # 限制登录尝试次数
-
-
- 启用登录失败锁定(PAM 配置):
-
auth required pam_tally2.so deny=5 unlock_time=600
-
- 终端登录限制:
- 限制 root 仅能在特定终端登录(修改 /etc/securetty)。
- 设置登录警告横幅(编辑 /etc/issue.net)。
- 终端登录限制:
三、弱口令检测与防范
- 自动化检测工具
- John the Ripper:
- 提取哈希并破解:
- John the Ripper:
unshadow /etc/passwd /etc/shadow > hashes.txt
john --wordlist=/usr/share/dict/rockyou.txt hashes.txt
-
-
- 查看结果:
-
john --show hashes.txt
-
- Cracklib 集成:
- 修改 PAM 配置(/etc/pam.d/system-auth):
- Cracklib 集成:
password requisite pam_pwquality.so retry=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
- 强制密码策略
- 定期扫描弱口令用户:
for user in (cut -d: -f1 /etc/passwd); do passwd -S user | grep "weak"; done
四、端口扫描与网络防护
- 端口扫描检测
- 使用 nmap:
nmap -sS -p 1-65535 192.168.1.1 # SYN 半开扫描
nmap -sU -p 1-1000 192.168.1.1 # UDP 端口扫描
-
- 监控端口变化:
ss -tuln > ports_$(date +%F).txt # 每日记录开放端口
diff ports_2023-10-01.txt ports_2023-10-02.txt
- 防火墙配置( firewalld )
- 仅开放必要端口:
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
-
- 限制 IP 访问:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'
五、实施建议与高级防护
- 系统更新与审计
- 启用自动更新:
dnf install dnf-automatic
systemctl enable --now dnf-automatic.timer
-
- 启用 auditd 监控关键文件:
auditctl -w /etc/passwd -p wa -k user_changes
- 强制访问控制( SELinux )
- 基础操作:
setenforce 1 # 临时启用
semanage port -a -t http_port_t -p tcp 8080 # 自定义端口标签