插件窝 干货文章 如何设置CentOS系统以阻止外部攻击者的端口扫描

如何设置CentOS系统以阻止外部攻击者的端口扫描

sudo iptables systemctl 端口 800    来源:    2025-04-16

CentOS系统防御端口扫描的全面方案

端口扫描是攻击者常用的信息收集手段,通过以下措施可以有效增强CentOS系统对端口扫描的防御能力:

1. 配置防火墙规则

使用firewalld

# 安装并启动firewalld
sudo yum install firewalld -y
sudo systemctl enable --now firewalld

# 设置默认区域为drop(丢弃所有未明确允许的连接)
sudo firewall-cmd --set-default-zone=drop
sudo firewall-cmd --runtime-to-permanent

# 仅开放必要端口(例如SSH)
sudo firewall-cmd --add-port=22/tcp --permanent
sudo firewall-cmd --reload

使用iptables(传统方法)

# 安装iptables服务
sudo yum install iptables-services -y
sudo systemctl enable --now iptables

# 设置基本规则
sudo iptables -F
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT  # 允许SSH
sudo iptables -A INPUT -j DROP  # 默认拒绝所有其他连接
sudo service iptables save

2. 限制连接速率

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

# 对于firewalld,可以创建富规则
sudo firewall-cmd --add-rich-rule='rule service name=ssh limit value=3/m accept' --permanent
sudo firewall-cmd --reload

3. 启用SYN Cookies防御SYN洪水攻击

# 编辑sysctl.conf
sudo vi /etc/sysctl.conf

# 添加以下内容
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2

# 应用设置
sudo sysctl -p

4. 安装和配置Fail2Ban

# 安装Fail2Ban
sudo yum install epel-release -y
sudo yum install fail2ban -y

# 配置SSH保护
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo vi /etc/fail2ban/jail.local

# 修改[sshd]部分
[sshd]
enabled = true
maxretry = 3
bantime = 1h
findtime = 600

# 启动服务
sudo systemctl enable --now fail2ban

5. 禁用不必要的服务

# 查看运行中的服务
sudo systemctl list-unit-files --type=service | grep enabled

# 禁用不必要的服务(示例)
sudo systemctl disable telnet.socket
sudo systemctl disable rpcbind

6. 使用端口敲门(Port Knocking)技术(可选高级方案)

# 安装knockd
sudo yum install knockd -y

# 配置/etc/knockd.conf
[options]
    UseSyslog

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

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

# 启动服务
sudo systemctl enable --now knockd

7. 定期更新系统

# 定期更新系统
sudo yum update -y

# 设置自动安全更新
sudo yum install yum-cron -y
sudo vi /etc/yum/yum-cron.conf
# 确保以下设置
update_cmd = security
apply_updates = yes

sudo systemctl enable --now yum-cron

8. 监控和日志分析

# 安装并配置日志分析工具
sudo yum install logwatch -y

# 配置每日日志报告
sudo vi /etc/logwatch/conf/logwatch.conf
# 设置Output = mail 和 MailTo = your@email.com

# 检查异常连接
sudo netstat -tulnp
sudo ss -tulnp

通过以上综合措施,您的CentOS系统将能够有效防御大多数端口扫描攻击,同时保持必要的服务可用性。建议定期审查安全设置并根据实际需求进行调整。