服务器安全加固:Linux系统基线检查与防护配置教程

Linux服务器默认安装配置通常面向通用场景,生产环境需要根据安全基线标准进行加固。本文从SSH、防火墙、用户权限、内核参数和审计日志五个维度,给出完整的加固操作步骤。

SSH服务安全配置与端口加固

SSH是服务器最常用的远程管理通道,也是攻击者首要目标。修改sshd_config中以下关键项:

# 备份原配置
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

# 修改SSH端口(避免使用默认22)
Port 52222

# 禁用root直接登录
PermitRootLogin no

# 禁用密码认证,强制密钥登录
PasswordAuthentication no
PubkeyAuthentication yes

# 限制登录失败后的重试次数
MaxAuthTries 3

# 空闲超时自动断开(秒)
ClientAliveInterval 300
ClientAliveCountMax 2

# 限制允许登录的用户
AllowUsers deploy admin

# 禁用X11转发(如不需要)
X11Forwarding no

重启SSH服务前,务必保留一个已登录的会话作为后备:

# 先不关闭当前会话,新开终端测试
systemctl restart sshd

配置fail2ban自动封禁暴力破解IP:

yum install -y epel-release
yum install -y fail2ban

cat > /etc/fail2ban/jail.local << 'EOF'
[sshd]
enabled = true
port = 52222
maxretry = 3
bantime = 86400
findtime = 600
EOF

systemctl enable fail2ban
systemctl start fail2ban

防火墙规则配置与端口管控

使用firewalld管理入站规则,遵循最小开放原则:

# 查看当前区域和默认规则
firewall-cmd --get-default-zone
firewall-cmd --list-all

# 移除不需要的服务
firewall-cmd --permanent --remove-service=ssh
firewall-cmd --permanent --remove-service=dhcpv6-client

# 仅允许指定IP段访问SSH
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" port port="52222" protocol="tcp" accept'

# 开放Web服务端口
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=80/tcp

# 限制ICMP(防ping扫描,可选)
firewall-cmd --permanent --add-icmp-block=echo-request

# 重载规则
firewall-cmd --reload

用户权限管理与sudo审计

禁止多个管理员共享root账号,为每个运维人员创建独立用户并配置sudo权限:

# 创建运维用户
useradd -m -s /bin/bash deploy
passwd deploy

# 配置SSH密钥
mkdir -p /home/deploy/.ssh
cp /tmp/deploy_pubkey /home/deploy/.ssh/authorized_keys
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
chmod 600 /home/deploy/.ssh/authorized_keys

# 配置sudo权限(仅允许特定命令)
visudo -f /etc/sudoers.d/deploy

/etc/sudoers.d/deploy内容示例:

# deploy用户只能执行特定命令,需要密码
deploy ALL=(ALL) /usr/bin/systemctl restart nginx, /usr/bin/systemctl restart php-fpm

# admin用户拥有完整sudo权限但需要密码
admin ALL=(ALL) ALL

# 禁止sudo提权到root shell
Cmnd_Alias DANGEROUS = /bin/su, /bin/bash, /bin/sh
deploy ALL=(ALL) ALL, !DANGEROUS

启用sudo审计日志,记录所有提权操作:

# /etc/sudoers 中添加
Defaults log_host, log_year, logfile="/var/log/sudo.log"
Defaults requiretty
Defaults !visiblepw

内核参数安全加固配置

通过sysctl调整内核参数,防御网络层攻击:

cat > /etc/sysctl.d/99-security.conf << 'EOF'
# SYN Flood防护
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_synack_retries = 2

# 禁用IP转发(非路由器场景)
net.ipv4.ip_forward = 0

# 禁用源路由
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

# 开启反向路径过滤
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# 禁用ICMP重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

# 忽略ICMP广播请求(防Smurf攻击)
net.ipv4.icmp_echo_ignore_broadcasts = 1

# 记录可疑数据包
net.ipv4.conf.all.log_martians = 1

# 禁用IPv6(如不需要)
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

# 进程安全
kernel.randomize_va_space = 2
kernel.exec-shield = 1

# 文件描述符限制
fs.file-max = 655350
EOF

sysctl -p /etc/sysctl.d/99-security.conf

安全审计与日志监控配置

配置auditd记录关键文件变更和权限操作:

yum install -y audit
systemctl enable auditd
systemctl start auditd

# 监控/etc/passwd和/etc/shadow变更
auditctl -w /etc/passwd -p wa -k identity
auditctl -w /etc/shadow -p wa -k identity
auditctl -w /etc/sudoers -p wa -k sudo_config
auditctl -w /etc/sudoers.d/ -p wa -k sudo_config

# 监控SSH配置文件
auditctl -w /etc/ssh/sshd_config -p wa -k ssh_config

# 查看审计日志
ausearch -k identity
ausearch -k sudo_config

配置日志远程转发,防止单机日志被篡改:

# /etc/rsyslog.conf 添加远程转发
*.* @@log-server.internal:514

# 或使用relp协议(更可靠)
$ModLoad imrelp
*.* :omrelp:log-server.internal:514;RSYSLOG_ForwardFormat

定期执行基线扫描,推荐使用Lynis工具生成加固报告:

yum install -y lynis
lynis audit system --quick
# 报告路径: /var/log/lynis-report.dat

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/fu-wu-qi-an-quan-jia-gu-linux-xi-tong-ji-xian-jian-cha-yu/

(0)
小编小编
上一篇 12小时前
下一篇 12小时前

相关推荐