使用iptables阻止端口扫描攻击是一种常见的安全措施。以下是一些基本的步骤和策略,可以帮助你配置iptables来阻止端口扫描攻击:
通过限制每个IP地址在一定时间内的连接速率,可以有效地防止端口扫描攻击。
# 限制每分钟最多5个连接
iptables -A INPUT -p tcp --syn -m limit --limit 5/min -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
如果你知道某些端口经常被扫描,可以专门针对这些端口进行配置。
# 阻止对端口80的扫描
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP
iptables的状态检测模块可以帮助你更精确地控制连接。
# 只允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 阻止新的连接请求
iptables -A INPUT -m state --state NEW -j DROP
虽然ICMP不是TCP或UDP端口,但扫描器有时会使用ICMP进行探测。你可以限制ICMP请求来减少扫描。
# 限制ICMP请求速率
iptables -A INPUT -p icmp -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p icmp -j DROP
SYN Flood是一种常见的拒绝服务攻击,可以通过配置iptables来缓解。
# 启用SYN Cookies
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
# 限制SYN队列长度
echo 1024 > /proc/sys/net/ipv4/tcp_max_syn_backlog
# 丢弃无效的SYN包
iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
记录可疑活动可以帮助你更好地了解攻击模式,并进行进一步的分析和响应。
# 记录所有被拒绝的连接
iptables -A INPUT -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
通过上述步骤,你可以有效地使用iptables来阻止端口扫描攻击,提高系统的安全性。