1. Linux系统安全防护的必要性
在当今数字化环境中,Linux系统作为服务器领域的主流操作系统,其安全性直接关系到企业核心数据和业务连续性。我管理过的数百台Linux服务器中,90%的安全事件都源于基础防护措施不到位。SSH作为最常用的远程管理通道,往往成为攻击者的首要目标。
最近处理的一个典型案例:某企业服务器因使用弱密码和默认SSH端口,导致被植入挖矿木马,CPU长期满载运行。排查发现攻击者通过暴力破解获得权限后,不仅部署了恶意进程,还修改了关键系统文件。这种问题完全可以通过基础加固避免。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统级安全加固
2.1 包管理安全实践
包管理器是Linux系统的软件供应链入口,必须严格管控:
bash复制# 配置yum/dnf源校验(CentOS/RHEL)
sudo sh -c 'echo "localpkg_gpgcheck=1" >> /etc/dnf/dnf.conf'
sudo sh -c 'echo "repo_gpgcheck=1" >> /etc/yum.conf'
# APT源签名验证(Debian/Ubuntu)
sudo apt-get install apt-transport-https
sudo sh -c 'echo "Acquire::https::Verify-Peer \"true\";" >> /etc/apt/apt.conf.d/99verify'
关键操作要点:
- 官方源优先:禁用第三方源,必要时手动审核GPG密钥
- 更新策略:安全更新自动应用(
unattended-upgrades) - 软件审计:定期执行
rpm -Va或debsums校验文件完整性
重要提示:曾遇到攻击者替换本地软件源仓库,植入后门包。务必定期检查
/etc/apt/sources.list和/etc/yum.repos.d/目录的权限为644且属主为root。
2.2 最小化服务原则
通过systemd分析服务状态:
bash复制systemctl list-unit-files --state=enabled | grep -v static
典型需要禁用的服务:
- 打印服务:cups
- 旧协议:telnet.socket, rpcbind
- 桌面组件:bluetooth, avahi-daemon
加固脚本示例:
bash复制# 批量禁用非必要服务
for service in cups avahi-daemon bluetooth; do
systemctl mask $service
systemctl disable $service
done
3. SSH深度加固方案
3.1 认证机制强化
修改/etc/ssh/sshd_config关键参数:
bash复制# 基础防护
Port 58222 # 非标准端口
PermitRootLogin no
MaxAuthTries 3
LoginGraceTime 1m
# 加密算法配置
HostKeyAlgorithms ssh-ed25519,ecdsa-sha2-nistp384
KexAlgorithms curve25519-sha256@libssh.org
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com
证书认证配置流程:
- 生成ED25519密钥:
ssh-keygen -t ed25519 -f ~/.ssh/admin_key - 部署公钥:
ssh-copy-id -i ~/.ssh/admin_key.pub user@host - 服务端配置:
bash复制echo 'AuthenticationMethods publickey' >> /etc/ssh/sshd_config systemctl restart sshd
3.2 网络层防护
结合firewalld限制访问源:
bash复制# 仅允许管理IP段访问SSH
firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="192.168.1.0/24"
port protocol="tcp" port="58222" accept'
Fail2Ban配置示例(/etc/fail2ban/jail.local):
ini复制[sshd]
enabled = true
port = 58222
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 1h
findtime = 300
4. 木马防御体系
4.1 入侵检测配置
AIDE(高级入侵检测环境)部署:
bash复制# 初始化数据库
aide --init
# 将生成的数据库移动到安全位置
mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
# 每日校验脚本
echo 'aide --check | mail -s "AIDE Report" admin@example.com' > /etc/cron.daily/aide-check
关键目录监控策略(/etc/aide.conf):
conf复制# 重要目录完全监控
/root/ CONTENT_EX
/bin/ CONTENT_EX
/sbin/ CONTENT_EX
/lib/ CONTENT_EX
# 配置文件监控属性
/etc/ CONTENT_EX+p+i+n+u+g+s+b+m+c+sha512
4.2 进程行为监控
使用auditd监控敏感操作:
bash复制# 监控SSH相关进程执行
echo '-a exit,always -F arch=b64 -F exe=/usr/sbin/sshd -S execve' > /etc/audit/rules.d/ssh.rules
# 监控特权操作
echo '-a always,exit -F arch=b64 -S execve -F uid=0 -F auid>=1000' >> /etc/audit/rules.d/priv.rules
systemctl restart auditd
异常进程排查技巧:
bash复制# 查找隐藏进程
ps -ef | grep -E '(nohup|disown|setsid|screen)'
# 检查LD_PRELOAD劫持
cat /proc/*/environ 2>/dev/null | grep -a LD_PRELOAD
# 检测挖矿特征
netstat -antp | grep -E '(tor2web|monero|xmrig)'
5. 安全运维实践
5.1 自动化巡检脚本
每日安全检查脚本(/usr/local/bin/security_check.sh):
bash复制#!/bin/bash
{
echo "==== $(date) ===="
echo "[用户检查]"
awk -F: '($3 == 0) {print $1}' /etc/passwd
grep -E ':\*:|:!' /etc/shadow | cut -d: -f1
echo "[网络检查]"
netstat -tulnp | grep -Ev '(127.0.0.1|::1)'
iptables -L -nv
echo "[文件检查]"
find / -xdev -type f \( -perm -4000 -o -perm -2000 \) -exec ls -ld {} \;
find /tmp /dev/shm -xdev \( -nouser -o -nogroup \) -exec ls -ld {} \;
} | tee /var/log/security_audit.log
5.2 应急响应流程
发现入侵时的标准操作:
- 取证:
dd if=/dev/sda1 of=/evidence/img1 bs=1M - 网络隔离:
iptables -P INPUT DROP - 进程分析:
strace -p <PID> -o /tmp/trace.log - 时间线重建:
find / -type f -printf "%T+ %p\n" | sort > /tmp/timeline.txt
取证工具包准备:
bash复制# 常用工具安装
yum install -y sleuthkit volatility foremost
# 内存快照
LiME=$(modinfo -F filename lime)
insmod $LiME "path=/memdump.lime format=lime"
6. 进阶防护措施
6.1 SELinux策略定制
创建SSH保护模块(sshguard.te):
selinux复制module sshguard 1.0;
require {
type sshd_t;
class process { noatsecure rlimitinh siginh };
}
# 禁止SSH进程修改关键目录
dontaudit sshd_t etc_t:dir { write add_name remove_name };
dontaudit sshd_t usr_t:dir { write add_name remove_name };
编译加载:
bash复制checkmodule -M -m -o sshguard.mod sshguard.te
semodule_package -o sshguard.pp -m sshguard.mod
semodule -i sshguard.pp
6.2 内核参数加固
/etc/sysctl.d/99-hardening.conf配置:
conf复制# 内存防护
kernel.kptr_restrict = 2
kernel.dmesg_restrict = 1
vm.mmap_rnd_bits = 32
# 网络防护
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
# 文件系统防护
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
应用配置:sysctl -p /etc/sysctl.d/99-hardening.conf
7. 持续安全维护
建立安全基线检查表:
| 检查项 | 标准值 | 检测命令 |
|---|---|---|
| SSH协议版本 | >=7.5 | sshd -T | grep protocol |
| 密码过期策略 | <=90天 | grep PASS_MAX_DAYS /etc/login.defs |
| 核心文件权限 | root:root 600 | stat -c "%U:%G %a" /etc/passwd |
| 审计日志留存 | >=180天 | grep max_log_file_action /etc/audit/auditd.conf |
自动化合规检查工具:
bash复制# OpenSCAP基线扫描
yum install openscap-scanner scap-security-guide
oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_stig \
--results scan-results.xml \
--report scan-report.html \
/usr/share/xml/scap/ssg/content/ssg-centos7-ds.xml
日志集中化分析架构:
- Filebeat收集系统日志
- Logstash解析过滤
- Elasticsearch存储
- Kibana展示仪表盘
- 告警规则示例:
json复制{ "alert": "SSH暴力破解", "condition": { "query": { "bool": { "must": [ { "match": { "message": "Failed password" } }, { "range": { "@timestamp": { "gte": "now-5m" } } } ], "minimum_should_match": 1 } }, "threshold": { "value": 5 } } }
