Linux下iptables屏蔽IP和端口号
封单个IP的命令:iptables -I INPUT -s 124.115.0.199 -j DROP封IP段的命令:iptables -I INPUT -s 124.115.0.0/16 -j DROP封整个段的命令:iptables -I INPUT -s 194.42.0.0/8 -j DROP封⼏个段的命令:iptables -I INPUT -s 61.37.80.0/24 -j DROP
只封80端⼝:iptables -I INPUT -p tcp –dport 80 -s 124.115.0.0/24 -j DROP解封:iptables -F
清空:iptables -D INPUT 数字
列出 INPUT链 所有的规则:iptables -L INPUT --line-numbers
删除某条规则,其中5代表序号(序号可⽤上⾯的命令查看):iptables -D INPUT 5开放指定的端⼝:iptables -A INPUT -p tcp --dport 80 -j ACCEPT禁⽌指定的端⼝:iptables -A INPUT -p tcp --dport 80 -j DROP拒绝所有的端⼝:iptables -A INPUT -j DROP
以上都是针对INPUT链的操作,即是外⾯来访问本机的⽅向,配置完之后 需要保存,否则iptables 重启之后以上设置就失效service iptables save
iptables 对应的配置⽂件 /etc/sysconfig/iptables
注意:iptables的规则匹配顺序上从上到下的,也就是说如果上下两条规则有冲突时,将会以上⾯的规则为准。***************************************************************
Linux中iptables设置详解
⽆论如何,iptables是⼀个需要特别谨慎设置的东西,万⼀服务器不在你⾝边,很有可能导致⽆法SSH连接,这将是很认⼈头疼的事. 以下内容是为了防⽌这种情况发⽣⽽写的,如果SSH端⼝是22(这⾥不建议⽤默认端⼝最好改掉SSH端⼝).iptables -A INPUT -p tcp –dport 22 -j ACCEPTiptables -A OUTPUT -p tcp –sport 22 -j ACCEPT
注意要/etc/rc.d/init.d/iptables save,以下每⼀步都最好执⾏⼀遍此语句,以下不再累述, 否则直接执⾏service iptables restart命令后, 刚才添加的将丢失.
1.⾸先介绍⼀下指令和相关配置⽂件启动指令:service iptables start重启指令:service iptables restart关闭指令:service iptables stop然后是相关配置:/etc/sysconfig/iptables如何操作该配置呢?
vim /etc/sysconfig/iptables2.下⾯介绍⼀些指令⽤法
-A:指定链名-p:指定协议类型-d:指定⽬标地址
–dport:指定⽬标端⼝(destination port ⽬的端⼝)–sport:指定源端⼝(source port 源端⼝)-j:指定动作类型3.全局DROP规则.
iptables -P INPUT DROPiptables -P OUTPUT DROP
iptables -P FORWARD DROP
这个步骤是把所有不符合⾃⼰配置的规则ACCEPT的连接全部DROP掉,执⾏完以后如果咱SSH还没掉,那么谢天谢地,安全了,重启下iptables后继续下⾯的配置!
4.可能有时候需要删除规则,使⽤指令完成的命令删除规则的⽅法:语法是: iptables -D chain rulenum [options]
其中: chain 是链的意思,就是INPUT FORWARD 之类的
rulenum 是规则的编号。从1 开始。可以使⽤ –line-numbers 列出规则的编号所以,例如上⾯要删除⼀个INPUT链的规则的话可以这样:iptables -D INPUT 3意思是删除第3条规则。
5.最后补充⼀下,对某IP进⾏单独开放端⼝可以如下配置:
如果我需要对内⽹某机器单独开放mysql端⼝,应该如下配置:
iptables -A INPUT -s 192.168.2.6 -p tcp -m tcp –dport 3306 -j ACCEPTiptables -A OUTPUT -s 192.168.2.6 -p tcp -m tcp –sport 3306 -j ACCEPT
下⾯咱就不细说了,具体就是看⾃⼰服务器要开放哪些端⼝或者是要访问哪些端⼝来做具体的配置,下⾯是我⾃⼰的机器的配置:/etc/sysconfig/iptables⽂件配置如下:
# Generated by iptables-save v1.4.7 on Fri Mar 2 19:59:43 2012*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]:OUTPUT DROP [8:496]
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT#ping使⽤的端⼝
-A INPUT -p icmp -j ACCEPT-A INPUT -i lo -j ACCEPT
#允许服务器⾃⼰的SSH(对外部请求来说服务器是⽬标所以使⽤–dport)-A INPUT -p tcp -m tcp –dport 22 -j ACCEPT
#80端⼝不⽤说了吧,服务器⽹站访问端⼝-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT-A INPUT -p tcp -m tcp –dport 3306 -j ACCEPT-A INPUT -p tcp -m tcp –dport 11211 -j ACCEPT-A INPUT -p tcp -m tcp –dport 11212 -j ACCEPT
-A FORWARD -j REJECT –reject-with icmp-host-prohibited#53端⼝是DNS相关,TCP和UDP都要配置-A INPUT -p tcp -m tcp –dport 53 -j ACCEPT-A INPUT -p udp -m udp –dport 53 -j ACCEPT
#允许服务器SSH到其他机器(使⽤外部端⼝就使⽤–dport)-A OUTPUT -p tcp -m tcp –dport 22 -j ACCEPT#允许服务器⾃⼰的SSH(⾃已为源输出就使⽤–sport)-A OUTPUT -p tcp -m tcp –sport 22 -j ACCEPT#访问外部⽹站80端⼝(使⽤外部端⼝就使⽤–dport)-A OUTPUT -p tcp -m tcp –dport 80 -j ACCEPT
#如果服务器需要访问外部⽹站,那么OUTPUT也需要配置53端⼝(使⽤外部端⼝就使⽤–dport)-A OUTPUT -p tcp -m tcp –dport 53 -j ACCEPT-A OUTPUT -p udp -m udp –dport 53 -j ACCEPT
#如果有访问外部邮箱,那么打开邮箱相关端⼝(使⽤外部端⼝就使⽤–dport)-A OUTPUT -p tcp -m tcp –dport 465 -j ACCEPT-A OUTPUT -p tcp -m tcp –dport 25 -j ACCEPT-A OUTPUT -p tcp -m tcp –dport 110 -j ACCEPT#服务器⽹站访问端⼝(⾃已为源输出就使⽤–sport)-A OUTPUT -p tcp -m tcp –sport 80 -j ACCEPT-A OUTPUT -p tcp -m tcp –sport 3306 -j ACCEPT
-A OUTPUT -p tcp -m tcp –sport 11211 -j ACCEPT-A OUTPUT -p tcp -m tcp –sport 11212 -j ACCEPTCOMMIT
# Completed on Fri Mar 2 19:59:43 2012
======================
说⼀下上⾯的 –line-numbers 选项,如下⾯的命令:
iptables -L INPUT –line-numbers 列出INPUT 链所有的规则num target prot opt source destination
1 REJECT tcp — anywhere anywhere tcp dpt:microsoft-ds reject-with icmp-port-unreachable2 REJECT tcp — anywhere anywhere tcp dpt:135 reject-with icmp-port-unreachable
3 REJECT tcp — anywhere anywhere tcp dpt:netbios-ssn reject-with icmp-port-unreachable……
#屏蔽单个IP的命令是
iptables -I INPUT -s 123.45.6.7 -j DROP
#封整个段即从123.0.0.1到123.255.255.254的命令iptables -I INPUT -s 123.0.0.0/8 -j DROP#封IP段即从123.45.0.1到123.45.255.254的命令iptables -I INPUT -s 124.45.0.0/16 -j DROP#封IP段即从123.45.6.1到123.45.6.254的命令是iptables -I INPUT -s 123.45.6.0/24 -j DROP
指令I是insert指令 但是该指令会insert在正确位置并不像A指令看你⾃⼰的排序位置,因此⽤屏蔽因为必须在⼀开始就要加载屏蔽IP,所以必须使⽤I命令加载,然后注意执⾏/etc/rc.d/init.d/iptables save进⾏保存后重启服务即可 . ******************************iptables ⽩名单配置******************************
Linux防⽕墙--iptables--⽩名单配置
1.服务器22端⼝和1521端⼝开通给指定IP12345678910111213141516171819202122232425262728
[root@node2 sysconfig]# iptables -t filter -nL INPUTChain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHEDACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited[root@node2 sysconfig]# iptables -F
[root@node2 sysconfig]# iptables -t filter -nL INPUTChain INPUT (policy ACCEPT)
target prot opt source destination
[root@node2 sysconfig]# iptables -I INPUT -s 192.168.222.1 -p tcp -m tcp --dport 22 -j ACCEPT[root@node2 sysconfig]# iptables -t filter -nL INPUTChain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 192.168.222.1 0.0.0.0/0 tcp dpt:22[root@node2 sysconfig]# iptables -A INPUT -j REJECT
[root@node2 sysconfig]# iptables -I INPUT -s 192.168.222.1 -p tcp -m tcp --dport 1521 -j ACCEPT[root@node2 sysconfig]# iptables -t filter -nL INPUTChain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 192.168.222.1 0.0.0.0/0 tcp dpt:1521ACCEPT tcp -- 192.168.222.1 0.0.0.0/0 tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable[root@node2 sysconfig]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ][root@node2 sysconfig]# service iptables restart
iptables: Setting chains to policy ACCEPT: filter [ OK ]
29iptables: Flushing firewall rules: [ OK ]30iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]31[root@node2 sysconfig]# iptables -t filter -nL INPUT32Chain INPUT (policy ACCEPT)
33target prot opt source destination
34ACCEPT tcp -- 192.168.222.1 0.0.0.0/0 tcp dpt:152135ACCEPT tcp -- 192.168.222.1 0.0.0.0/0 tcp dpt:22
36REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable37[root@node2 sysconfig]# iptables -t filter -nL INPUT --line-numbers38Chain INPUT (policy ACCEPT)
39num target prot opt source destination
401 ACCEPT tcp -- 192.168.222.1 0.0.0.0/0 tcp dpt:1521412 ACCEPT tcp -- 192.168.222.1 0.0.0.0/0 tcp dpt:22
423 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
[root@node2 sysconfig]# iptables -t filter -D INPUT 1
43[root@node2 sysconfig]# iptables -t filter -nL INPUT --line-numbers44Chain INPUT (policy ACCEPT)
45num target prot opt source destination
461 ACCEPT tcp -- 192.168.222.1 0.0.0.0/0 tcp dpt:22
472 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable484950
2.注意:每次最后需要添加iptables -I INPUT -i lo -j ACCEPT
iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT3.插⼊到那⼀⾏
先查看当前的⾏,iptables -nL --line-numbers插⼊到指定的⾏
[root@node2 sysconfig]# iptables -I INPUT ⾏号 -s 192.168.222.1 -p tcp -m tcp --dport 1521 -j ACCEPT 4.针对某个端⼝设置⽩名单机制1234567891011
[root@node2 ~]# iptables -F
[root@node2 ~]# iptables -I INPUT -p tcp --dport 1521 -j DROP[root@node2 ~]#
[root@node2 ~]# telnet 192.168.222.11 1521Trying 192.168.222.11...^C
[root@node2 ~]# iptables -I INPUT -s 192.168.222.11 -p tcp --dport 1521 -j ACCEPT[root@node2 ~]# telnet 192.168.222.11 1521Trying 192.168.222.11...
Connected to 192.168.222.11.Escape character is '^]'.
因篇幅问题不能全部显示,请点此查看更多更全内容