Linux服务器防火墙Iptables命令使用详解

Linux服务器防火墙Iptables命令使用详解

2023年7月23日发(作者:)

Linux服务器防⽕墙Iptables命令使⽤详解iptables -A INPUT -s 192.168.109.10 -j DROP:拒绝192.168.109.10主机访问本服务器;注意:-A:添加⼀条规则,默认是加在最后。注意:"拒绝给192.168.109.10主机提供服务",最好使⽤INPUT链。使⽤PREROUTING,也可以满⾜要求,但是如果⽤户的要求是让服务器提供转发功能,添加到PREROUTING链中,"转发"功能也将被拒绝掉。注意:链名要⼤写;注意:-s:指定源地址,可以是IP地址,也可以是⽹段"192.168.109.10/24";"-s 为空",表⽰拒绝所有;注意:-j:指定所需要的操作;注意:拒绝有两种⽅式,⼀种是"REJECT",还有⼀种是"DROP";DROP是不回应,REJECT是拒绝;注意:iptables -A INPUT -j DROP,表⽰拒绝所有。不过加规则的时候,不要将⾃⼰的ssh给拒绝掉。iptables -nvL -t mangle:查看mangle表中的防⽕墙规则;注意:-t:指定表名,默认情况下是"fliter"表;注意:-v:查看详细信息;pkts:被本机报⽂所匹配的个数;prot:放⾏哪种协议;opt:额外的选项,--表⽰没有;target:处理机制;注意:选项中"v"和"L"的顺序(V只能在L的前⾯);iptables -nvL --line-numbers:查看fliter表中规则的顺序;注意:--line-numbers:查看指定表中的规则的顺序;注意:不指定表,默认情况下就是"fliter"表;注意:表中的规则是有执⾏顺序的,编号(num)越⼩,越先执⾏。只要匹配到结果,就不会往下执⾏了;iptables -F:清空"fliter"表中的所有的规则;注意:-F:表⽰清空指定表中的所有链中的规则;iptables -I INPUT -s 1.1.1.1 -j DROP:在"fliter"表中的INPUT链中,链⾸插⼊⼀条规则;注意:-I:表⽰在指定的链中插⼊⼀条规则,可以指定编号;iptables -R INPUT 1 -s 2.2.2.2 -j REJECT:表⽰替换第⼀条规则;注意:-R,replace,替换指定的规则;iptables -S:以iptables-save命令格式显⽰fliter链上的规则;iptables -A INPUT -s 192.168.109.10 -d 192.168.109.4 -j REJECT:拒绝来⾃192.168.109.10的主机访问192.168.109.4的ip地址;注意:-d:指定⽬标地址,使规则更加详细;iptables -A INPUT -s 192.168.109.10 -d 192.168.109.4,192.168.109.5 -j REJECT:拒绝192.168.109.10的主机访问192.168.109.4,192.168.109.5这两个ip地址。注意:⼀条命令添加两条规则;注意:源地址也可以使⽤这种⽅式,快速添加规则;注意:该命令在规则中的语义的含义,-s、-d属于并且的关系,即:拒绝源是192.168.109.10的ip,且源是192.168.109.4的访问;⽽192.168.109.4和192.168.109.5在逻辑上属于或者的关系。iptables -A INPUT -s 192.168.109.10 -p tcp --dport 22 -j REJECT:拒绝192.168.109.10主机使⽤tcp协议访问我的所有ip的22端⼝。注意:-p:指定协议;可以通过"/etc/protocols"⽂件查看协议类型;注意:--dport:指定⽬标主机的端⼝号;(拒绝别⼈链接我。)注意:--sport:指定源主机的端⼝号;(拒绝我链接别⼈。)注意:此处,注意区分dport和sport;iptables -A INPUT -s 192.168.109.10 -p icmp -j REJECT:拒绝来⾃192.168.109.10主机发来的ping包。注意:icmp协议没有端⼝号,即不属于tcp也不属于udp。由于icmp协议的特性,这条命令的结果会造成,192.168.109.10⽆法ping通⾃⼰,⾃⼰也⽆法ping通192.168.109.10主机。注意:如果要想实现别⼈⽆法ping通⾃⼰,⾃⼰可以ping通别⼈,需要根据state来判断。0表⽰回应包,8表⽰请求包。iptables -A INPUT -s 192.168.109.10 -i eth0 -j REJECT:拒绝192.168.109.10主机访问我的eth0⽹卡。注意:-i:加上⽹卡名,表⽰报⽂流⼊的接⼝;注意:-o:加上⽹卡名,表⽰报⽂流出的接⼝;iptables -A INPUT ! -s 192.168.109.4 -p tcp --dport 80 -j REJECT:除了192.168.109.4的主机可以访问我的tcp的80端⼝,其他的主机全部拒绝;注意:!:表⽰"⾮";⼀般情况下,很少使⽤该⽅式。iptables -A INPUT -s 192.168.109.4 -p icmp --icmp-type 8 -j REJECT:拒绝来⾃192.168.109.10主机发送来的icmp的请求包。即192.168.109.10主机⽆法ping通我,我可以ping通它。注意:icmp协议中,ping通需要满⾜两个条件,⾸先源主机向⽬标主机发送⼀个请求包(8),⽬标主机收到之后,便会返回⼀个回应包(0)。注意:-p:指定协议;注意:--icmp-type:指定ping包的类型。(code可以省略;)iptables -A INPUT -s 192.168.109.10 -p tcp -m multiport --dports 20:22,80 -j REJECT:拒绝来⾃192.168.109.10主机发送来的访问我的20-22,80端⼝的包。注意:-m:后⾯跟模块名,multiport:以离散形式表⽰的多端⼝(最多可以跟15个端⼝);注意:--dports:⽬标端⼝是多个端⼝;注意:使⽤samba服务测试多端⼝的话,可能存在问题。想要抓包测试的话,可以使⽤"tcpdump -i eth0 -nn host 192.168.109.4";iptables -A INPUT -m iprange --src-range 192.168.109.1-192.168.109.10 -j REJECT:拒绝192.168.109.1~192.168.109.10范围内的所有主机的访问。注意:iprange:ip范围的模块;注意:--src-range:源地址范围;注意:--dsc-range:⽬标地址的范围;iptables -A INPUT -m mac --mac-source 00:0c:29:2f:b1:d6 -j REJECT:拒绝该mac地址的主机访问本主机的资源。注意:mac:mac地址模块;注意:--mac-source:源主机的mac地址;iptables -A OUTPUT -p tcp -m string --algo bm --string "han" -j REJECT:拒绝所有主机访问访问我的有"han"字符串的报⽂。注意:string:字符串模块;注意:--algo:指定匹配算法,bm、kmp算法,两个随便选⼀个;注意:--string:指定要匹配的字符串;注意:--from offset:开始偏移,--to offset:结束偏移;注意:添加的是OUTPUT链;iptables -F OUTPUT:清空OUTPUT链中的规则;iptables -A INPUT -m time --weekdays 1,2,3,4,5 --timestart 9:00 --timestop 10:00 -j REJECT:拒绝所有的主机在周⼀到周五的九点~⼗点之间,访问本主机的所有资源;注意:time:时间模块;注意:--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] ⽇期--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]--timestart hh:mm[:ss] 时间--timestop hh:mm[:ss]--monthdays day[,] 每个⽉的⼏号--weekdays day[,] 星期⼏注意:centos7中,使⽤的是UTC时间(北京时间转化成UTC时间是减8);centos6中使⽤的是本地时间;iptables -A INPUT -m connlimit --connlimit-above 2 -j REJECT:并发连接的数量⼤于两条的时候,就拒绝;注意:connlimit:并发连接数量的模块;注意:--connlimit-upto n:连接的数量⼩于等于n时匹配;注意:--connlimit-above n:连接的数量⼤于n时匹配;注意:可以使⽤ssh服务测试;iptables -A INPUT -p icmp -m limit --limit 10/minute --limit-burst 5 -j ACCEPT:对于icmp协议,ping通5个包后,便会以每分钟接收⼗个的速度匹配。注意:--limit-burst 5:达到5个之后,便会限制速度;注意:--limit 10/minute:以每分钟通过10个的速度匹配;注意:需要"iptables -A INPUT -p icmp -j REJECT"配合使⽤。iptables -N ACCOUNT:在"fliter表中,"创建⼀个⾃定义链,命名为ACCOUNT;注意:-N:创建⼀条链;建议,将⼀些常⽤的规则放在⾃定义的链中,当使⽤的时候,将⾃定义的链关联到INPUT链中。注意:可以将⾃定义链的操作,理解为函数的声明。将关联操作,理解为函数的调⽤;iptables -A ACCOUNT -s 192.168.109.10,192.168.109.220 -j REJECT:在⾃定义链ACCOUNT中添加⼀条规则;iptables -D INPUT 2:删除INPUT链中的第⼆条;iptables -A INPUT -j ACCOUNT:将ACCOUNT链关联到INPUT链中;iptables -F ACCOUNT:清空"fliter"表中的ACCOUNT链中的规则;iptables -X ACCOUNT:删除"fliter"表中ACCOUNRT链;注意:-X:删除指定的⾃定义的链iptables -A INPUT -p icmp -m state --state NEW -j REJECT:拒绝使⽤icmp第⼀次连接的请求包;注意:state:state模块;注意:NEW:第⼀连接(注意此处并不是三次握⼿中的状态);iptables -A INPUT -s 192.168.109.10 -j LOG --log-prefix "FROM .10~~":当192.168.109.10主机访问我时,将他记录到/var/log/messige⽇志⽂件中,并且,⽇志中的记录的前缀的"FROM .10~~"注意:LOG,记录⽇志的target;注意:--log-prefix:定义⽇志⽂件中的记录的前缀;iptables -A FORWARD -s 192.168.109.4/24 -d 172.17.253.120/16 -m state --state NEW -j ACCEPT:在FORWARD表中添加⼀条规则,当源192.168.109.0⽹段中的主机,⽬标是172.17.0.0⽹段中的主机时,状态是NEW(第⼀条连接)时,就允许连接;iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT:对于状态是ESTABLISHED的连接,允许通过。iptables -A FORWARD -j REJECT:拒绝所有连接;以上三条规则结合起来,可以实现允许192.168.109.0⽹段中的主机ping通172.17.0.0的主机,但是反过来,ping不通。实现⽹络防⽕墙的功能。可以通过实验来验证:四台机器,两台192的地址(A、B),⼀台172的地址(D),还有⼀台充当路由器(C),既有172的地址,⼜有192的地址。设置好四台主机的路由表,并开启C主机的路由转发功能。然后,执⾏iptables的命令,添加规则,即可实现功能。iptables -t nat -R POSTROUTING 1 -s 192.168.109.0/24 -j SNAT --to-source 172.17.250.111:在nat表中的POSTROUTING链中,添加⼀策略,当收到192.168.109.0/24⽹段的主机访问的⽬标地址是任意地址的时候,就将该包的源地址改成172.17.250.111,发送。(SNAT)注意:要保证防⽕墙主机上的路由表,有到达⽬标地址的路径。注意:在实验中的C主机上,执⾏了该规则后,A主机通过C主机,到达C主机的POSTROUTING链的时候,将包的源地址改成C主机的公⽹地址,然后,发送给D主机。实验的时候,将D主机上的默认路由删掉。确保返回的包是将C主机的公⽹地址,作为⽬标地址的。注意:可以在D主机上,安装⼀个httpd服务,A访问D之后,通过查看⽇志(/var/log/httpd/access_log),来验证结果。iptables -t nat -A PREROUTING -d 172.17.250.111 -dport 80 -j DNAT --to-destination 192.168.109.4:8080:当访问172.17.250.111主机的80端⼝的时候,将⽬标端⼝改成192.168.109.4主机的8080端⼝。(DNAT)注意:将192.168.109.4主机上的httpd服务监听的端⼝改成8080;

发布者:admin,转转请注明出处:http://www.yc00.com/news/1690106926a306319.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信