插件窝 干货文章 保护您的Linux服务器免受端口扫描和攻击

保护您的Linux服务器免受端口扫描和攻击

端口 iptables bash sudo 712    来源:    2025-04-11

保护Linux服务器免受端口扫描和攻击的全面指南

一、基础防护措施

1. 最小化开放端口

  • 原则:仅开放必要的服务端口
  • 检查当前开放端口:netstat -tulnss -tuln
  • 关闭不必要的服务:systemctl disable <service_name>

2. 防火墙配置

使用iptables

# 默认拒绝所有入站连接
iptables -P INPUT DROP
iptables -P FORWARD DROP

# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 按需开放特定端口(示例:SSH)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

使用firewalld(CentOS/RHEL)

firewall-cmd --permanent --add-service=ssh  # 仅示例
firewall-cmd --reload

使用UFW(Ubuntu)

ufw default deny incoming
ufw allow ssh
ufw enable

3. 端口伪装与限制

# 防止端口扫描(限制连接速率)
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j DROP

# 对ICMP(ping)请求限速
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

二、高级防护技术

1. 使用Fail2Ban防止暴力破解

# 安装
sudo apt install fail2ban  # Debian/Ubuntu
sudo yum install fail2ban  # CentOS/RHEL

# 配置示例(/etc/fail2ban/jail.local)
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600

2. 端口敲门(Port Knocking)

# 安装knockd
sudo apt install knockd

# 配置示例(/etc/knockd.conf)
[options]
    logfile = /var/log/knockd.log

[openSSH]
    sequence = 7000,8000,9000
    seq_timeout = 5
    command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
    tcpflags = syn

[closeSSH]
    sequence = 9000,8000,7000
    seq_timeout = 5
    command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
    tcpflags = syn

3. 使用TCP Wrappers

# /etc/hosts.allow
sshd: 192.168.1.0/24
sshd: .example.com

# /etc/hosts.deny
ALL: ALL

4. 修改默认端口

# 编辑SSH配置文件
sudo nano /etc/ssh/sshd_config
# 修改Port行
Port 22222  # 改为非标准端口
# 重启服务
sudo systemctl restart sshd

三、监控与日志分析

1. 实时监控工具

  • iftop:监控网络流量 sudo apt install iftop
  • nethogs:按进程监控流量 sudo apt install nethogs
  • vnstat:流量统计 sudo apt install vnstat

2. 日志分析工具

  • Logwatch:每日日志摘要
  • GoAccess:Web访问日志分析
  • OSSEC:开源入侵检测系统

3. 自定义监控脚本

#!/bin/bash
# 监控异常连接尝试
netstat -ant | awk '{print $5}' | grep -v "Address" | grep -v "::" | cut -d: -f1 | sort | uniq -c | sort -n

四、系统加固建议

  1. 定期更新系统

    sudo apt update && sudo apt upgrade  # Debian/Ubuntu
    sudo yum update  # CentOS/RHEL
    
  2. 禁用root SSH登录

    # 在/etc/ssh/sshd_config中设置
    PermitRootLogin no
    
  3. 使用SSH密钥认证

    ssh-keygen -t rsa -b 4096
    ssh-copy-id user@server
    
  4. 安装安全增强工具

    sudo apt install aide rkhunter chkrootkit  # 入侵检测工具
    
  5. 配置SELinux/AppArmor

    # 检查SELinux状态
    sestatus
    # 启用SELinux(如未启用)
    sudo nano /etc/selinux/config
    # 设置为 enforcing
    SELINUX=enforcing
    

五、应急响应

  1. 发现攻击时的处理流程

    • 立即断开受影响服务
    • 分析日志确定攻击源
    • 封锁攻击IP
    • 检查系统完整性
    • 修复漏洞后恢复服务
  2. 常用命令

    # 查看当前连接
    netstat -antp
    # 封锁IP
    iptables -A INPUT -s <攻击IP> -j DROP
    # 查找异常进程
    ps aux | grep -i '可疑进程名'
    

通过实施以上措施,您可以显著提高Linux服务器的安全性,减少遭受端口扫描和各类网络攻击的风险。请记住,安全是一个持续的过程,需要定期审查和更新防护策略。