1. Linux系统安全配置基础:从零开始构建防护体系
作为Web安全从业者,我见过太多因为基础系统配置不当导致的安全事故。去年处理的一个企业数据泄露案例,根源就是管理员直接使用默认安装的Ubuntu系统部署Web服务,连最基本的防火墙都没配置。今天我们就从最基础的Linux安全配置说起,这些知识看似简单,但能帮你避开80%的初级攻击。
1.1 最小化安装原则与用户管理
我强烈建议所有生产环境都采用最小化安装(Minimal Install)。以CentOS为例,安装时取消勾选所有不必要的软件包组,这能显著减少攻击面。安装完成后,第一件事就是处理默认账户:
bash复制# 禁用root远程登录(完成后记得先创建普通用户!)
sed -i 's/^PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
# 创建运维用户并赋予sudo权限
useradd -m -s /bin/bash opsadmin
passwd opsadmin
usermod -aG sudo opsadmin # Ubuntu/Debian
usermod -aG wheel opsadmin # CentOS/RHEL
重要提示:完成上述操作前,务必确保新用户能正常登录!我有次在客户现场亲眼见到管理员禁用了root又没创建新用户,最后不得不通过单用户模式恢复。
1.2 防火墙配置实战(iptables与firewalld对比)
现在主流的Linux发行版主要使用两种防火墙方案:传统的iptables和新一代的firewalld。我个人的选择标准是:
- 简单需求用firewalld(适合新手)
- 复杂规则用iptables(更灵活)
以开放Web服务为例,两种配置方式对比:
bash复制# firewalld方式(CentOS/RHEL)
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
# iptables方式(通用)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables-save > /etc/sysconfig/iptables # 保存规则
1.3 SSH安全加固的七个关键点
SSH是攻击者最常尝试突破的入口,这是我多年总结的加固方案:
- 修改默认端口(但不要用2222这类常见替代端口)
bash复制Port 59234 # 在/etc/ssh/sshd_config中修改
- 强制使用密钥登录
bash复制PasswordAuthentication no
PubkeyAuthentication yes
- 启用两步验证(以Google Authenticator为例)
bash复制# 安装PAM模块
yum install google-authenticator # CentOS
apt-get install libpam-google-authenticator # Ubuntu
# 用户配置
google-authenticator
- 设置登录失败锁定
bash复制# 在/etc/pam.d/sshd添加
auth required pam_tally2.so deny=5 unlock_time=300
- 限制用户登录(白名单机制)
bash复制AllowUsers opsadmin webadmin
- 启用日志监控
bash复制# 在/etc/rsyslog.conf添加
auth.* /var/log/ssh.log
- 定期更新OpenSSH版本
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 网络攻防实战:从扫描到防御
2.1 端口扫描检测与防御
攻击者通常会使用nmap进行扫描,我们可以用这些方法检测和干扰:
bash复制# 安装psad入侵检测
yum install psad -y
apt-get install psad -y
# 配置关键参数(/etc/psad/psad.conf)
EMAIL_ALERT_DANGER_LEVEL 3;
ENABLE_AUTO_IDS Y;
AUTO_IDS_DANGER_LEVEL 3;
# 启用监控
psad -R
psad --sig-update
service psad start
更高级的防御手段包括:
- 使用端口敲门(Port Knocking)
- 部署蜜罐服务
- 设置虚假响应(如用iptables返回随机数据)
2.2 常见Web攻击防御方案
2.2.1 SQL注入防御
除了常规的预处理语句,我推荐这些额外措施:
bash复制# 在MySQL配置中启用严格模式
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
# 安装ModSecurity
yum install mod_security -y
cp /etc/httpd/conf.d/mod_security.conf /etc/httpd/conf.d/mod_security.conf.bak
wget -O /etc/httpd/conf.d/mod_security.conf https://www.modsecurity.org/modsecurity.conf
2.2.2 XSS防御
在Nginx中增加这些头部:
nginx复制add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options nosniff;
add_header Content-Security-Policy "default-src 'self'";
2.3 日志分析与入侵检测
这是我常用的日志分析命令组合:
bash复制# 查找失败的SSH尝试
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
# 检测异常进程
ps aux | awk '{print $1,$11}' | sort | uniq -c | sort -nr | head -20
# 查找最近修改的文件
find / -type f -mtime -7 -print0 | xargs -0 ls -lt | head -50
3. 高级安全配置与内核调优
3.1 SELinux实战配置
很多管理员因为觉得复杂直接禁用SELinux,这是非常危险的做法。正确的方式是:
bash复制# 查看当前状态
sestatus
# 修改模式(/etc/selinux/config)
SELINUX=enforcing
# 常见问题排查
audit2allow -a # 查看被拒绝的操作
sealert -a /var/log/audit/audit.log # 分析日志
3.2 内核参数安全优化
在/etc/sysctl.conf中添加这些参数:
bash复制# 禁用ICMP重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
# 防止SYN洪水攻击
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 3
# 内存保护
vm.mmap_min_addr = 65536
kernel.randomize_va_space = 2
应用配置:sysctl -p
3.3 文件系统安全
bash复制# 关键目录权限设置
chmod 700 /etc/cron* /etc/at*
chmod 600 /etc/ssh/*key
chown root:root /etc/passwd /etc/shadow
chmod 644 /etc/passwd
chmod 400 /etc/shadow
# 查找SUID/SGID文件
find / -perm -4000 -o -perm -2000 -type f -exec ls -ld {} \;
4. 自动化安全监控与应急响应
4.1 使用OSSEC构建HIDS
OSSEC是开源的主机入侵检测系统,安装配置如下:
bash复制# Ubuntu安装
wget -q -O - https://updates.atomicorp.com/installers/atomic | sudo bash
apt-get install ossec-hids-server
# 关键配置(/var/ossec/etc/ossec.conf)
<syscheck>
<frequency>7200</frequency>
<directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
</syscheck>
<rootcheck>
<rootkit_files>/var/ossec/etc/shared/rootkit_files.txt</rootkit_files>
</rootcheck>
4.2 应急响应流程
发现入侵后的标准操作流程:
- 隔离受影响系统(拔网线最快)
- 保存当前状态(内存dump、进程列表)
bash复制# 内存信息
cat /proc/meminfo > /tmp/meminfo.txt
ps aux > /tmp/processes.txt
- 收集证据(日志、可疑文件)
- 分析入侵路径
- 修复漏洞后重建系统
4.3 安全更新自动化
使用unattended-upgrades自动打补丁:
bash复制apt-get install unattended-upgrades
dpkg-reconfigure unattended-upgrades
# 配置文件(/etc/apt/apt.conf.d/50unattended-upgrades)
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
最后提醒:所有安全配置都需要定期审计和更新。我建议至少每季度做一次全面安全检查,包括:
- 用户权限复核
- 防火墙规则审查
- 安全补丁状态检查
- 关键文件完整性验证
