引言:安全加固的本质与误区
"我们的服务器很安全,因为安装了防火墙"——这是最常见的认知误区。服务器安全是一个系统工程,而非单个产品的堆砌。研究表明,90%的安全漏洞源于基础配置缺陷而非高级攻击。本文将从攻击者视角出发,提供一套可立即执行的服务器安全加固实战流程,帮助您构建纵深防御体系。
一、安全基线配置:构建第一道防线
1. 系统账户安全
# 禁用root远程登录
sed -i 's/^PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
# 创建专用运维用户
useradd admin -s /bin/bash -m -G sudo
passwd admin
# 设置密码策略
sed -i 's/PASS_MAX_DAYS.*/PASS_MAX_DAYS 90/' /etc/login.defs
sed -i 's/PASS_MIN_DAYS.*/PASS_MIN_DAYS 1/' /etc/login.defs
# 锁定无用账户
usermod -L games && usermod -L nobody
2. SSH服务加固
# 修改默认端口
echo "Port 3022" >> /etc/ssh/sshd_config
# 强制密钥认证
echo "PasswordAuthentication no" >> /etc/ssh/sshd_config
echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config
# 限制登录IP
echo "AllowUsers admin@192.168.1.*" >> /etc/ssh/sshd_config
# 重启服务
systemctl restart sshd
3. 网络配置优化
# 禁用IPv6(如不需要)
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
# 加固TCP堆栈
cat <<EOF >> /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
net.ipv4.syn_retries = 3
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
EOF
sysctl -p
二、访问控制体系:最小权限原则实践
1. 文件权限治理
# 系统关键目录权限
chmod 700 /root
chmod 600 /etc/shadow
chmod 644 /etc/passwd
# 日志文件保护
chmod 640 /var/log/secure
chmod 640 /var/log/auth.log
# 防止权限提升
chattr +i /etc/passwd /etc/shadow
2. SELinux/AppArmor配置
# 检查SELinux状态
sestatus
# 启用强制模式
sed -i 's/SELINUX=permissive/SELINUX=enforcing/' /etc/selinux/config
# 常见策略配置
setsebool -P httpd_can_network_connect 0
setsebool -P mysql_connect_any 0
3. 防火墙精细化控制
# 清空现有规则
iptables -F
# 设置默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# 开放基础服务
iptables -A INPUT -p tcp --dport 3022 -j ACCEPT # SSH
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # HTTP
iptables -A INPUT -p tcp --dport 443 -j ACCEPT # HTTPS
# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT
# 保存规则
iptables-save > /etc/iptables.rules
三、服务安全加固:攻击面收敛
1. 服务最小化原则
# 查看运行服务
systemctl list-units --type=service --state=running
# 禁用非必要服务
systemctl disable bluetooth.service
systemctl disable cups.service
systemctl disable avahi-daemon.service
# 卸载危险软件
apt remove -y telnet rsh-server ypserv
2. Web服务安全加固
# Apache安全配置
<Directory />
Options None
AllowOverride None
Require all denied
</Directory>
<Files ~ "^\.">
Require all denied
</Files>
ServerTokens Prod
ServerSignature Off
TraceEnable Off
3. 数据库安全配置
-- MySQL安全设置
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost');
DROP DATABASE test;
FLUSH PRIVILEGES;
-- 设置密码策略
SET GLOBAL validate_password_policy=STRONG;
SET GLOBAL validate_password_length=12;
四、安全监控与审计:持续威胁发现
1. 日志集中化配置
# 配置rsyslog远程日志
echo "*.* @192.168.1.100:514" >> /etc/rsyslog.conf
# 启用详细日志记录
echo "auth.* /var/log/auth.log" >> /etc/rsyslog.d/security.conf
echo "kernel.* /var/log/kernel.log" >> /etc/rsyslog.d/security.conf
# 日志轮转配置
cat <<EOF > /etc/logrotate.d/security
/var/log/auth.log {
daily
missingok
rotate 90
compress
delaycompress
notifempty
create 640 root adm
}
EOF
2. 入侵检测部署
# 安装fail2ban
apt install -y fail2ban
# 配置SSH防护
cat <<EOF > /etc/fail2ban/jail.d/sshd.conf
[sshd]
enabled = true
port = 3022
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
EOF
systemctl restart fail2ban
3. 文件完整性监控
# 安装aide
apt install -y aide
# 初始化数据库
aideinit
# 配置定期检查
echo "0 3 * * * /usr/bin/aide --check" >> /etc/crontab
五、应急响应准备:从预防到处置
1. 入侵检查清单
# 检查异常进程
ps aux | grep -E '(ssh|telnet|ftp|rsh)'
# 检查网络连接
netstat -antp | grep ESTABLISHED
# 检查计划任务
crontab -l
ls -la /etc/cron.*
# 检查SUID文件
find / -perm -4000 -type f 2>/dev/null
2. 应急响应流程
1. 隔离:断开网络连接,保留现场
2. 分析:收集日志、进程、网络信息
3. 处置:清除后门,修复漏洞
4. 恢复:从备份还原,验证完整性
5. 复盘:分析根本原因,完善防御
3. 备份恢复验证
# 创建系统快照
tar -czpf /backup/system-$(date +%Y%m%d).tar.gz \
--exclude=/proc --exclude=/sys --exclude=/dev /
# 验证备份完整性
sha256sum /backup/system-*.tar.gz > /backup/checksums.txt
结语:安全是一个持续过程
服务器安全加固不是一次性的任务,而需要建立持续改进的机制。记住三个核心原则:
1. 纵深防御:不要依赖单一安全措施
2. 最小权限:按需授权,及时回收
3. 持续监控:建立安全态势感知能力
建议每月进行一次安全扫描,每季度开展一次渗透测试,每年组织一次应急响应演练。只有将安全实践融入日常运维,才能真正构建可靠的服务器安全体系。
> 本文提供的配置示例需要根据实际环境调整,建议先在测试环境验证后再部署到生产环境。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。