服务器加固实战:禁用危险端口、最小化权限与内核参数调优 核心要点图解,禁用非必要端口可大幅减少攻击面,建议仅开放业务必需端口。;遵循最小权限原则,为服务创建独立用户并限制sudo权限。;内核参数调优能防御SYN Flood等攻击,提升网络安全性。;定期使用netstat和ss检查监听端口,确保无多余服务。
服务器加固实战:禁用危险端口、最小化权限与内核参数调优 · 核心要点一图读懂(AegisX)

核心要点(TL;DR)

  • 禁用非必要端口可大幅减少攻击面,建议仅开放业务必需端口。
  • 遵循最小权限原则,为服务创建独立用户并限制sudo权限。
  • 内核参数调优能防御SYN Flood等攻击,提升网络安全性。
  • 定期使用netstat和ss检查监听端口,确保无多余服务。

你是否担心服务器被入侵?许多安全事件源于基础配置不当:开放了危险端口、权限过于宽松、内核参数未优化。本文将手把手带你完成服务器加固,通过禁用危险端口、最小化权限与内核参数调优,显著提升系统安全性。以下操作基于Linux,请谨慎执行。

一、禁用危险端口:减少攻击面

服务器每开放一个端口,就多一个潜在入口。首先,使用以下命令查看当前监听端口:

ss -tulnp

或

netstat -tulnp

输出中,关注0.0.0.0和::的监听项。常见危险端口包括:

  • 21 (FTP):明文传输,建议改用SFTP。
  • 23 (Telnet):明文,应禁用,使用SSH替代。
  • 25 (SMTP):若非邮件服务器,关闭。
  • 3306 (MySQL):不应对外网开放。
  • 6379 (Redis):未授权访问风险高。
  • 11211 (Memcached):易被利用放大攻击。

禁用方法:

  1. 若服务不需要,直接停止并禁用开机自启:systemctl stop <服务名> && systemctl disable <服务名>。
  2. 使用防火墙限制访问。例如,仅允许内网访问3306:
    iptables -A INPUT -p tcp --dport 3306 -s 192.168.1.0/24 -j ACCEPT
    iptables -A INPUT -p tcp --dport 3306 -j DROP
    保存规则:iptables-save > /etc/iptables/rules.v4(需安装iptables-persistent)。
  3. 对于必须开放的端口(如SSH 22),修改默认端口并限制源IP,可减少扫描攻击。例如修改SSH端口为2222:编辑/etc/ssh/sshd_config,修改Port 2222,重启sshd。

操作后再次运行ss -tulnp确认。

二、最小化权限:遵循最小权限原则

许多服务以root运行,一旦被攻破,攻击者将获得最高权限。应遵循最小权限原则:

  • 为服务创建独立用户:例如运行Nginx,创建www-data用户,配置Nginx以该用户运行。
  • 禁止服务用户登录:usermod -s /sbin/nologin www-data。
  • 文件权限最小化:网站目录设为755,文件设为644,避免777。使用chmod -R 755 /var/www和find /var/www -type f -exec chmod 644 {} \;。
  • sudo权限控制:使用visudo编辑,仅授予必要命令。例如允许运维重启Nginx:ops ALL=(ALL) NOPASSWD: /bin/systemctl restart nginx。
  • 定期审计:检查拥有sudo权限的用户:grep -Po '^sudo.+:\K.*$' /etc/group;检查空密码账户:awk -F: '( == "") {print }' /etc/shadow。

此外,禁用root远程登录:编辑/etc/ssh/sshd_config,设置PermitRootLogin no,重启sshd。

三、内核参数调优:增强网络与系统安全

Linux内核参数可通过/etc/sysctl.conf调整。以下为关键安全参数:

参数建议值作用
net.ipv4.tcp_syncookies1防御SYN Flood攻击
net.ipv4.conf.all.rp_filter1防止IP欺骗
net.ipv4.icmp_echo_ignore_broadcasts1忽略广播ICMP,防Smurf攻击
net.ipv4.conf.all.accept_redirects0禁止接受ICMP重定向
kernel.randomize_va_space2启用ASLR,增加漏洞利用难度
net.ipv4.ip_forward0除非需要转发,否则关闭

编辑/etc/sysctl.conf,添加或修改上述参数,然后执行:

sysctl -p

验证:sysctl net.ipv4.tcp_syncookies。

注意:修改前备份原文件,避免影响业务。

四、加固检查清单与工具推荐

完成上述步骤后,使用以下清单复查:

  • 是否仅开放必要端口?使用nmap -sT -O localhost扫描确认。
  • 是否所有服务以非root运行?检查进程:ps aux | grep -v root。
  • 是否禁用root SSH登录?检查/etc/ssh/sshd_config。
  • 内核参数是否生效?运行sysctl -a | grep ...。
  • 是否安装并配置了防火墙?iptables -L -n或firewall-cmd --list-all。

对于希望自动化加固的团队,可考虑使用AegisX等安全加固工具,它提供一键检测与修复功能,覆盖端口、权限、内核等维度,并生成合规报告。

五、行动建议:持续加固

服务器加固不是一次性任务。建议:

  • 每月执行一次安全扫描与配置复查。
  • 关注安全公告,及时更新软件。
  • 使用配置管理工具(如Ansible)固化安全基线。
  • 记录所有变更,便于审计。

立即动手,从禁用危险端口开始,逐步落实最小权限和内核调优,让你的服务器更安全。

常见问题(FAQ)

如何查看服务器上哪些端口正在监听?

使用命令 `ss -tulnp` 或 `netstat -tulnp` 可以列出所有监听端口及对应进程。重点关注0.0.0.0和::表示的对外端口,确认是否均为业务所需。若非必要,应通过防火墙或停止服务来关闭。

怎样安全地禁用危险端口?

首先用 `ss -tulnp` 找出监听端口,然后通过防火墙规则(如iptables或firewalld)拒绝访问,或直接停止对应服务。例如禁用3306端口:`iptables -A INPUT -p tcp --dport 3306 -j DROP`。同时确保SSH端口限制访问IP。

什么是最小化权限原则?如何实施?

最小化权限指仅授予用户或服务完成其任务所必需的最小权限。实施方法:为每个服务创建独立系统用户,禁止其登录shell;使用sudo精细控制命令;文件权限设置为644或750,避免777。定期审计权限。

哪些内核参数对服务器安全至关重要?

关键参数包括:net.ipv4.tcp_syncookies=1(防SYN Flood)、net.ipv4.conf.all.rp_filter=1(防IP欺骗)、net.ipv4.icmp_echo_ignore_broadcasts=1(防Smurf攻击)、kernel.randomize_va_space=2(ASLR)。修改后需执行sysctl -p生效。

服务器加固后如何验证效果?

可从外部使用nmap扫描端口,确认仅开放必要端口;检查用户权限和sudo规则;运行`sysctl -a`查看内核参数。同时监控日志,确保无异常访问。建议定期复查,形成持续加固流程。