markdown 编辑
layout: post title: “安全加固笔记” date: 2024-10-11 tags: [安全加固, Linux安全, 系统加固] comments: true author: VR2050 toc: true —
安全加固笔记
作者:VR2050
更新时间:2024-10-11
适用系统:通用 Linux 系统,特别适用于麒麟信安、凝思等国产操作系统
本文记录 Linux 系统安全加固过程中的关键配置项与操作命令,涵盖用户管理、密码策略、服务控制、访问限制等方面,适用于等保合规与日常安全运维。
1. 系统信息识别
查看操作系统发行版本
```bash cat /etc/issue
注意:麒麟信安(湖南麒麟)系统需使用以下命令:
bash 编辑
cat /etc/.kyinfo
查看内核版本
bash 编辑
uname -a
- 用户账户配置
查看可登录用户(排除 nologin 和 false):
bash 编辑
| cat /etc/passwd | grep -v “nologin” | grep -v “false” |
- 密码复杂度策略
检查密码复杂度模块配置:
bash 编辑
| cat /etc/pam.d/common-password | grep “pam_cracklib.so” |
若未配置或需加强,建议添加以下内容:
bash 编辑
password requisite pam_cracklib.so retry=5 minlen=8 difok=3
dcredit=-2 ucredit=-1 ocredit=-2 lcredit=-1
参数 含义 retry=5 密码错误最多尝试 5 次 minlen=8 最小长度 8 位 difok=3 至少包含 3 个与旧密码不同的字符 dcredit=-2 至少包含 2 个数字 ucredit=-1 至少包含 1 个大写字母 ocredit=-2 至少包含 2 个特殊字符 lcredit=-1 至少包含 1 个小写字母
建议使用 pam_pwquality.so 替代老旧的 pam_cracklib.so(功能更强大)。
- 登录失败锁定策略
查看当前登录失败锁定配置:
bash 编辑
| cat /etc/pam.d/common-auth | grep pam_tally2.so |
编辑配置文件,添加以下规则:
bash 编辑
auth required pam_tally2.so deny=5 unlock_time=600
even_deny_root root_unlock_time=600
参数 含义 deny=5 认证失败 5 次后锁定账户 unlock_time=600 普通用户锁定 600 秒(10 分钟) even_deny_root 同样适用于 root 用户 root_unlock_time=600 root 用户解锁时间
修改后可通过 pam_tally2 --user=username --reset 解锁用户。
- 口令有效期配置
查看当前 PAM 配置:
bash 编辑
| cat /etc/pam.d/system-auth-ac | grep password |
编辑配置文件(如 /etc/pam.d/system-auth-ac 或 /etc/login.defs):
bash 编辑
vim /etc/pam.d/system-auth-ac
建议设置密码策略(结合 login.defs): 配置项 推荐值 说明 PASS_MAX_DAYS 90 密码最长有效期(90天) PASS_MIN_LEN 8 最小密码长度 PASS_MIN_DAYS 1 密码最短修改间隔(1天) PASS_WARN_AGE 10 到期前10天开始提醒
对 root 用户设置有效期:
bash 编辑
chage -M 90 root
注意:所有可登录用户均需执行 chage -M 90 <username> 设置。
- 桌面环境检查
查看桌面用户目录:
bash 编辑
ls /home/desktop
查看已安装软件包列表:
bash 编辑
rpm -qa
可用于排查冗余或可疑软件。
- Umask 权限配置
查看默认 umask 设置:
bash 编辑
| cat /etc/login.defs | grep UMASK |
建议设置更严格的权限掩码:
bash 编辑
umask 027
含义:新建文件权限为 640,目录为 750,防止其他组用户访问。
- 安全内核模块配置
检查安全模块是否加载(如 linx_sec):
bash 编辑
| lsmod | grep linx_sec |
若系统启用蓝牙,建议禁用以减少攻击面:
bash 编辑
service bluetooth stop
mv /lib/modules/$(uname -r)/kernel/drivers/bluetooth /BAK
rmmod bluetooth
- 禁用 USB 存储设备
检查 USB 存储模块是否加载:
bash 编辑
| lsmod | grep usb_storage |
永久禁用方法:
bash 编辑
mv /lib/modules/$(uname -r)/kernel/drivers/usb/storage/usb-storage.ko /BAK
rmmod usb_storage
可有效防止通过 U 盘进行数据窃取或病毒传播。
- 消除多余网络接口
查看当前网络接口状态:
bash 编辑
service network status ifconfig
关闭不需要的网络接口:
bash 编辑
ifconfig eth1 down
将该命令加入 /etc/rc.local 实现开机自动关闭。
- 禁用 CD-ROM 光驱
检查 CD-ROM 相关模块:
bash 编辑
| lsmod | grep sr_mod |
| lsmod | grep cdrom |
禁用方法:
bash 编辑
mv /lib/modules/$(uname -r)/kernel/drivers/scsi/sr_mod.ko /BAK
mv /lib/modules/$(uname -r)/kernel/drivers/cdrom/cdrom.ko /BAK
rmmod sr_mod
rmmod cdrom
防止通过光盘启动或加载恶意介质。
- 限制远程管理地址
仅允许指定 IP 访问 SSH 服务。
编辑白名单:
bash 编辑
vim /etc/hosts.allow
conf 编辑
sshd:192.168.1.100:allow sshd:10.0.1.0/24:allow
拒绝其他所有:
bash 编辑
vim /etc/hosts.deny
conf 编辑
sshd:all:deny
实现基于 IP 的访问控制,提升安全性。
- SSH 远程管理超时自动退出
防止会话长时间空闲,设置自动登出。
在 /etc/profile 中添加:
bash 编辑
echo “readonly TMOUT=600” » /etc/profile echo “export TMOUT” » /etc/profile
或查看现有配置:
bash 编辑
grep TMOUT /etc/profile
TMOUT=600 表示 600 秒(10 分钟)无操作自动退出。
- 禁止 root 用户远程登录
编辑 SSH 配置文件:
bash 编辑
vim /etc/ssh/sshd_config
修改以下参数:
conf 编辑
PermitRootLogin no
重启 SSH 服务使配置生效:
bash 编辑
systemctl restart sshd
或 service ssh restart
强烈建议禁用 root 远程登录,使用普通用户 + sudo 管理。
- 远程用户资源限制
查看当前用户资源限制配置:
bash 编辑
cat /etc/security/limits.conf
建议添加以下限制(防止 DoS 或资源耗尽):
conf 编辑
防止 core dump
- soft core 0
- hard core 0
限制进程数
- soft nproc 1024
- hard nproc 2048
限制打开文件数
- soft nofile 1024
- hard nofile 4096
锁定内存(可选)
* soft memlock 524288
* hard memlock 524288
修改后需重新登录生效。
温馨提示:
所有操作建议在测试环境验证;
修改前备份原始文件(如 cp sshd_config sshd_config.bak);
安全加固后建议进行全面功能测试。
