Linux服务器防攻击需分层设防:先禁用root远程登录、修改SSH默认端口至高位(如58222)、强制密钥认证;再通过Fail2ban监控auth.log,配置maxretry=3、findtime=600、bantime=86400并指定新端口;辅以MaxAuthTries 3、ClientAliveInterval 300等系统级加固及防火墙最小化放行。

Linux服务器防攻击不是靠单一手段,而是分层设防、层层收紧。核心思路是:先收窄入口,再加固通道,最后动态拦截异常行为。下面从实操角度拆解最关键的几项配置。
SSH服务必须做的三件事
SSH是绝大多数攻击的起点,必须优先加固:
- 禁用root远程登录:编辑/etc/ssh/sshd_config,设置PermitRootLogin no,避免攻击者直接爆破最高权限账号
- 改默认端口:把Port 22换成10000以上的高位端口(如Port 58222),大幅降低被自动化扫描器盯上的概率
- 强制密钥登录:关闭密码认证(PasswordAuthentication no),只允许通过ed25519或RSA密钥对登录,杜绝暴力破解可能
Fail2ban自动封禁恶意IP
即使做了SSH加固,日志里仍会看到大量探测请求。Fail2ban能实时分析/var/log/auth.log,自动封禁高频失败尝试的IP:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 安装后创建/etc/fail2ban/jail.local,明确指定SSH监听新端口(如port = 58222)
- 调低阈值:maxretry = 3、findtime = 600(10分钟内失败3次即触发)、bantime = 86400(封禁24小时)
- 加入可信网段:ignoreip = 127.0.0.1/8 192.168.0.0/16,防止误伤内网运维流量
系统级基础防护不能跳过
很多攻击利用的是系统默认宽松策略,这几项配置成本低、见效快:
- 限制登录尝试次数:在sshd_config中加MaxAuthTries 3,单次连接最多试3次密码就断开
- 设置空闲超时:添加ClientAliveInterval 300和ClientAliveCountMax 0,5分钟无响应自动断连,释放僵尸会话
- 清理无用账户:运行awk -F: '$3==0 {print $1}' /etc/passwd确认只有root一个UID为0的账号,删除games、nobody等默认闲置用户
防火墙只放行必要端口
不主动暴露,攻击面就小了一大半:
- 用ufw或firewalld默认拒绝所有入站,再精确放行业务端口(如HTTP/HTTPS、自定义SSH端口)
- 关闭高危端口:确保3389(RDP)、445(SMB)、21(FTP)等不在监听状态,用netstat -tuln或ss -tuln检查
- 业务端口也做来源限制:比如只允许公司出口IP访问管理后台,其他IP一律DROP

















