功能说明:以离散方式定义多端口匹配,最多指定15个端口。
技巧:连续多个端口使用:
相连;不连续的多个端口使用,
相连。
# 拒绝192.168.0.0/16这个网段对192.168.10.13这台主机的20,21,22,80四个端口的访问。 iptables -AINPUT -s 192.168.1.0.0/16 -d 192.168.10.13 -p tcp -m multiport --dports 20:22,80 -j ACCEPT
功能说明:指明连续的(但一般不是整个网络)ip地址范围。
# 在源地址范围内访问本地主机TCP协议80端口都被拒绝。 iptables -t filter -AINPUT -p tcp --dport 80 -m iprange --src-range 192.168.10.1-192.168.10.5 -j DROP
功能说明:
1、mac 模块可以指明源MAC地址,,适用于:PREROUTING, FORWARD,INPUT 这些链。
2、在使用mac扩展是建议使用-s
选项,MAC地址是可以手动改变的。
iptables -t filter -AINPUT -m mac --mac-source 00:0c:29:ec:3f:ac -j DROP
功能说明:对报文中的应用层数据做字符串模式匹配检测。
iptables -A OUTPUT -p tcp --sport 80 -m string --algo bm --from 62 --string "google" -j REJECT
功能说明:根据报文到达的时间与指定的时间范围进行匹配。
iptables -A INPUT -s 192.168.10.10/16 -d 192.168.10.12 -p tcp --dport 80 -m time --timestart 14:30 --timestop 18:30 --weekdays Sat,Sun --kerneltz-j DROP
功能说明:根据每客户端IP做并发连接数数量匹配,可防止Dos(Denial of Service,拒绝服务)攻击。
iptables -A INPUT -d 192.168.10.0/24 -p tcp --dport 22 -m connlimit --connlimit-above 2 -j REJECT
功能说明:基于收发报文的速率做匹配,令牌桶过滤器。
iptables -AINPUT -s 192.168.10.10 -p icmp --icmp-type 8 -m limit --limit 10/minute --limit-burst 5 -j ACCEPT iptables -AINPUT -p icmp -j REJECT
1、state 扩展模块,可以根据”连接追踪机制“去检查连接的状态,较耗资源。
2、conntrack机制:追踪本机上的请求和响应之间的关系。
# 1、连接信息库。 /proc/net/nf_conntrack # 2、调整连接追踪功能所能够容纳的最大连接数量。 /proc/sys/net/netfilter/nf_conntrack_max /proc/sys/net/nf_conntrack_max # 3、查看连接跟踪有多少条目。 /proc/sys/net/netfilter/nf_conntrack_count # 4、不同的协议的连接追踪时长。 /proc/sys/net/netfilter/
说明:对常用路径中最大连接数说明:
链接跟踪,需要加载模块: modprobe nf_conntrack_ipv4。
当服务器练级数大于最大连接数时dmesg可以观察到:kernel:ip_conntrack:table full,dropping packet错误,并且建立TCP连接很慢。
各种状态超时后,链接会从表中删除。
echo 1 > /proc/sys/net/netfilter/nf_conntrack_max tail /var/log/messages ********* kernel:ip_conntrack:table full,dropping packet
链接过多的两种解决办法:
1、加大nf_conntrack_max值。
vi /etc/sysctl.conf net.nf_conntrack_max = 393216 net.netfilter.nf_conntrack_max = 393216
2、降低 nf_conntrack timeout时间(调整内核参数)。
vim /etc/sysctl.conf net.netfilter.nf_conntrack_tcp_timeout_established = 300 net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120 net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60 net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
iptables -AINPUT -m state --state ESTABLISHED -j ACCEPT iptables -AINPUT -m state --state NEW -j REJECT