端口扫描是攻击者常用的信息收集手段,通过以下措施可以有效增强CentOS系统对端口扫描的防御能力:
# 安装并启动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服务
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
# 使用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
# 编辑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
# 安装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
# 查看运行中的服务
sudo systemctl list-unit-files --type=service | grep enabled
# 禁用不必要的服务(示例)
sudo systemctl disable telnet.socket
sudo systemctl disable rpcbind
# 安装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
# 定期更新系统
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
# 安装并配置日志分析工具
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系统将能够有效防御大多数端口扫描攻击,同时保持必要的服务可用性。建议定期审查安全设置并根据实际需求进行调整。