首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >从零到一:服务器安全加固全流程实战指南

从零到一:服务器安全加固全流程实战指南

原创
作者头像
小库主机
发布2025-09-02 11:31:26
发布2025-09-02 11:31:26
1390
举报
文章被收录于专栏:技术干货技术干货

引言:安全加固的本质与误区

"我们的服务器很安全,因为安装了防火墙"——这是最常见的认知误区。服务器安全是一个系统工程,而非单个产品的堆砌。研究表明,90%的安全漏洞源于基础配置缺陷而非高级攻击。本文将从攻击者视角出发,提供一套可立即执行的服务器安全加固实战流程,帮助您构建纵深防御体系。

服务器安全加固全流程实战指南
服务器安全加固全流程实战指南

一、安全基线配置:构建第一道防线

1. 系统账户安全

代码语言:txt
复制
# 禁用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服务加固

代码语言:txt
复制
# 修改默认端口
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. 网络配置优化

代码语言:txt
复制
# 禁用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. 文件权限治理

代码语言:txt
复制
# 系统关键目录权限
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配置

代码语言:txt
复制
# 检查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. 防火墙精细化控制

代码语言:txt
复制
# 清空现有规则
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. 服务最小化原则

代码语言:txt
复制
# 查看运行服务
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服务安全加固

代码语言:txt
复制
# Apache安全配置
<Directory />
    Options None
    AllowOverride None
    Require all denied
</Directory>

<Files ~ "^\.">
    Require all denied
</Files>

ServerTokens Prod
ServerSignature Off
TraceEnable Off

3. 数据库安全配置

代码语言:txt
复制
-- 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. 日志集中化配置

代码语言:txt
复制
# 配置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. 入侵检测部署

代码语言:txt
复制
# 安装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. 文件完整性监控

代码语言:txt
复制
# 安装aide
apt install -y aide

# 初始化数据库
aideinit

# 配置定期检查
echo "0 3 * * * /usr/bin/aide --check" >> /etc/crontab

五、应急响应准备:从预防到处置

1. 入侵检查清单

代码语言:txt
复制
# 检查异常进程
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. 备份恢复验证

代码语言:txt
复制
# 创建系统快照
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档