(文中命令行没有专门使用具体ip,所以用ip代替。希望别的小伙伴不要理解错了)
iptables -t filter -F INPUT
先将filter表中的INPUT链规则删除
iptables -t filter -I INPUT -s ip,ip -j DROP
指定源地址时,我们可以指定多个IP,谨记用逗号隔开且逗号两侧不能包含空格。
iptables -t filter -A INPUT ! -s ip -j ACCEPT
"! -s ip"表示对这个IP匹配条件取反。
匹配条件:目标IP
-s指定源地址,那么-d是指定目标地址的。
iptables -t filter -I INPUT -s ip -d ip -j DROP
拒绝源地址发向目标地址的报文,如果不指定-s或-d,那么就是默认地址0.0.0.0/0
一条规则包含多个匹配条件,必须同时满足多个条件。
匹配条件:协议类型
iptables -t filter -I INPUT -s ip -d ip -p tcp -j REJECT
拒绝来自源地址发往目标地址的IP且限制tcp协议通过;
-p支持匹配什么协议?
centos6:tcp、udp、udplite、icmp、esp、ah、sctp;
centos7:tcp、udp、udplite、icmp、icmpv6、esp、ah、sctp、mh;
当不使用-p时,默认所有协议都被匹配到。
匹配条件:网卡接口
一台服务器有时候不止一个网卡,所以需要使用-i选项匹配报文从哪块网卡流入本机的。
iptables -t filter -I INPUT -i eth0 -p icmp -j DROP
使用-i选项指定流入网卡名称,使用-p选项,指定了匹配报文的协议类型。-o指定流出网卡名称
-i判断报文从哪块网卡流入,用于PREROUTING、INPUT、FORWARD等链;
-o判断报文从哪块网卡流出,用于FORWARD、OUTPUT、POSTROUTING等链;
匹配条件:扩展匹配
如源端口、目标端口就是扩展条件,扩展条件需要依赖一些扩展模块来使用;
iptables -t filter -I INPUT -s ip -p tcp -m tcp --dport 22 -j DROP
上面命令是:拒绝来自IP的ssh请求,其中选项--dport 匹配报文的目标端口,-m是指定该扩展模块是tcp(一般可以省略-m,没有-m的时候默认调用-p对应协议名称的相同模块。),--sport指定源端口
iptables -t filter -I INPUT -s ip -p tcp --sport 22 -j DROP
iptables -t filter -I INPUT -s ip -p tcp -m tcp --dport :22 -j DROP
上面命令:匹配0到22之间所有端口
iptables -t filter -I INPUT -s ip -p tcp -m tcp --dport 80: -j DROP
上面命令:匹配80端口及以后所有端口。
iptables -t filter -I INPUT -s ip -p tcp -m multiport --dports 22,25,40,80 -j DROP
使用-m multiport可以指定多个分散的端口。
网友评论