linux下IPTABLES配置详解,Linux中iptables设置详细

2019-07-22 作者:yzc216亚洲城   |   浏览(123)

无论如何,iptables是一个需要特别谨慎设置的东西,万一服务器不在你身边,而你贸然设置导致无法SSH,那就等着被老板骂吧,呵呵。。。

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 24000 -j ACCEPT

-A RH-Firewall-1-INPUT -s 121.10.120.24 -p tcp -m tcp --dport 18612 -j ACCEPT

一下内容是为了防止这种情况发生而写的,当然很初级,不过一般服务器也够用了:

如果你的IPTABLES基础知识还不了解,建议先去看看.

1.首先介绍一下指令和相关配置文件

开始配置,我们来配置一个filter表的防火墙.

  1. 启动指令:service iptables start   
  2. 重启指令:service iptables restart   
  3. 关闭指令:service iptables stop   
  4.   
  5. 然后是相关配置:/etc/sysconfig/iptables   
  6. 如何操作该配置呢?   
  7. vim /etc/sysconfig/iptables   
  8. 然后进去修改即可,修改完了怎么办?这里很多人会想到/etc/rc.d/init.d/iptables save指令,但是一旦你这么干了你刚才的修改内容就白做了。。。   
  9. 具体方法是:   
  10. 只修改/etc/sysconfig/iptables 使其生效的办法是修改好后先service iptables restart,然后才调用/etc/rc.d/init.d/iptables save,   
  11. 因为/etc/rc.d/init.d/iptables save会在iptables服务启动时重新加载,要是在重启之前直接先调用了/etc/rc.d/init.d/iptables save那么你   
  12. 的/etc/sysconfig/iptables 配置就回滚到上次启动服务的配置了,这点必须注意!!!  

(1)查看本机关于IPTABLES的设置情况

[root@tp ~]# iptables -L -n

Chain INPUT (policy ACCEPT)

target    prot opt source              destination

Chain FORWARD (policy ACCEPT)

target    prot opt source              destination

Chain OUTPUT (policy ACCEPT)

target    prot opt source              destination

Chain RH-Firewall-1-INPUT (0 references)

target    prot opt source              destination

ACCEPT    all  --  0.0.0.0/0            0.0.0.0/0

ACCEPT    icmp --  0.0.0.0/0            0.0.0.0/0          icmp type 255

ACCEPT    esp  --  0.0.0.0/0            0.0.0.0/0

ACCEPT    ah  --  0.0.0.0/0            0.0.0.0/0

ACCEPT    udp  --  0.0.0.0/0            224.0.0.251        udp dpt:5353

ACCEPT    udp  --  0.0.0.0/0            0.0.0.0/0          udp dpt:631

ACCEPT    all  --  0.0.0.0/0            0.0.0.0/0          state RELATED,ESTABLISHED

ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:22

ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:80

ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:25

REJECT    all  --  0.0.0.0/0            0.0.0.0/0          reject-with icmp-host-prohibited

可以看出我在安装linux时,选择了有防火墙,并且开放了22,80,25端口.

如果你在安装linux时没有选择启动防火墙,是这样的

[root@tp ~]# iptables -L -n

Chain INPUT (policy ACCEPT)

target    prot opt source              destination

Chain FORWARD (policy ACCEPT)

target    prot opt source              destination

Chain OUTPUT (policy ACCEPT)

target    prot opt source              destination

什么规则都没有.

2.下面介绍一些指令用法(主要还是man iptables看下相关资料才行)

(2)清除原有规则

不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则.

[root@tp ~]# iptables -F      清除预设表filter中的所有规则链的规则

[root@tp ~]# iptables -X      清除预设表filter中使用者自定链中的规则

我们在来看一下

[root@tp ~]# iptables -L -n

Chain INPUT (policy ACCEPT)

target    prot opt source              destination

Chain FORWARD (policy ACCEPT)

target    prot opt source              destination

Chain OUTPUT (policy ACCEPT)

target    prot opt source              destination

什么都没有了吧,和我们在安装linux时没有启动防火墙是一样的.(提前说一句,这些配置就像用命令配置IP一样,重起就会失去作用),怎么保存.

[root@tp ~]# /etc/rc.d/init.d/iptables save

这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.

[root@tp ~]# service iptables restart

现在IPTABLES配置表里什么配置都没有了,那我们开始我们的配置吧

  1. -A:指定链名   
  2. -p:指定协议类型   
  3. -d:指定目标地址   
  4. --dport:指定目标端口(destination port 目的端口)   
  5. --sport:指定源端口(source port 源端口)   
  6. -j:指定动作类型  

(3)设定预设规则

[root@tp ~]# iptables -P INPUT DROP

[root@tp ~]# iptables -P OUTPUT ACCEPT

[root@tp ~]# iptables -P FORWARD DROP

上面的意思是,当超出了IPTABLES里filter表里的两个链规则(INPUT,FORWARD)时,不在这两个规则里的数据包怎么处理呢,那就是DROP(放弃).应该说这样配置是很安全的.我们要控制流入数据包

而对于OUTPUT链,也就是流出的包我们不用做太多限制,而是采取ACCEPT,也就是说,不在着个规则里的包怎么办呢,那就是通过.

可以看出INPUT,FORWARD两个链采用的是允许什么包通过,而OUTPUT链采用的是不允许什么包通过.

这样设置还是挺合理的,当然你也可以三个链都DROP,但这样做我认为是没有必要的,而且要写的规则就会增加.但如果你只想要有限的几个规则是,如只做WEB服务器.还是推荐三个链都是DROP.

注:如果你是远程SSH登陆的话,当你输入第一个命令回车的时候就应该掉了.因为你没有设置任何规则.

怎么办,去本机操作呗!

3.如果我不像修改文件直接打命令可以吗,当然没问题,步骤如下:

(4)添加规则

首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链

为了能采用远程SSH登陆,我们要开启22端口.

[root@tp ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

[root@tp ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 

(注:这个规则,如果你把OUTPUT 设置成DROP的就要写上这一部,好多人都是望了写这一部规则导致,始终无法SSH.在远程一下,是不是好了.

其他的端口也一样,如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链:

[root@tp ~]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT ,其他同理.)

如果做了WEB服务器,开启80端口.

[root@tp ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

如果做了邮件服务器,开启25,110端口.

[root@tp ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT

[root@tp ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT

如果做了FTP服务器,开启21端口

[root@tp ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT

[root@tp ~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT

如果做了DNS服务器,开启53端口

[root@tp ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT

如果你还做了其他的服务器,需要开启哪个端口,照写就行了.

上面主要写的都是INPUT链,凡是不在上面的规则里的,都DROP

允许icmp包通过,也就是允许ping,

[root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)

[root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT  (INPUT设置成DROP的话)

允许loopback!(不然会导致DNS无法正常关闭等问题)

IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)

IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)

下面写OUTPUT链,OUTPUT链默认规则是ACCEPT,所以我们就写需要DROP(放弃)的链.

减少不安全的端口连接

[root@tp ~]# iptables -A OUTPUT -p tcp --sport 31337 -j DROP

[root@tp ~]# iptables -A OUTPUT -p tcp --dport 31337 -j DROP

有些些特洛伊木马会扫描端口31337到31340(即黑客语言中的 elite 端口)上的服务。既然合法服务都不使用这些非标准端口来通信,阻塞这些端口能够有效地减少你的网络上可能被感染的机器和它们的远程主服务器进行独立通信的机会

还有其他端口也一样,像:31335、27444、27665、20034 NetBus、9704、137-139(smb),2049(NFS)端口也应被禁止,我在这写的也不全,有兴趣的朋友应该去查一下相关资料.

当然出入更安全的考虑你也可以包OUTPUT链设置成DROP,那你添加的规则就多一些,就像上边添加

允许SSH登陆一样.照着写就行了.

下面写一下更加细致的规则,就是限制到某台机器

如:我们只允许192.168.0.3的机器进行SSH连接

[root@tp ~]# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT

如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.

24表示子网掩码数.但要记得把 /etc/sysconfig/iptables 里的这一行删了.

-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 因为它表示所有地址都可以登陆.

或采用命令方式:

[root@tp ~]# iptables -D INPUT -p tcp --dport 22 -j ACCEPT

然后保存,我再说一边,反是采用命令的方式,只在当时生效,如果想要重起后也起作用,那就要保存.写入到/etc/sysconfig/iptables文件里.

[root@tp ~]# /etc/rc.d/init.d/iptables save

这样写 !192.168.0.3 表示除了192.168.0.3的ip地址

yzc216亚洲城官方网站,其他的规则连接也一样这么设置.

在下面就是FORWARD链,FORWARD链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链,对正在转发链的监控.

开启转发功能,(在做NAT时,FORWARD默认规则是DROP时,必须做)

[root@tp ~]# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

[root@tp ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT

丢弃坏的TCP包

[root@tp ~]#iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP

处理IP碎片数量,防止攻击,允许每秒100个

[root@tp ~]#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包.

[root@tp ~]#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT

我在前面只所以允许ICMP包通过,就是因为我在这里有限制.

  1. 例如我给SSH加放行的语句:   
  2. 添加input记录: iptables -A INPUT -p tcp --dport 22 -j ACCEPT   
  3. 添加output记录: iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT   
  4. 最后注意需要再执行一下 /etc/init.d/iptables save,这样这两条语句就保存到刚才那个/etc/sysconfig/iptables 文件中了。  

配置一个NAT表放火墙

4.接下来说明一下步骤,如果机器不在我身边,我只能SSH进去做iptables规则,那么我必须注意每一步,千万别搞错了,否则就SSH链接不上都有可能!

1,查看本机关于NAT的设置情况

[root@tp rc.d]# iptables -t nat -L

Chain PREROUTING (policy ACCEPT)

target    prot opt source              destination

Chain POSTROUTING (policy ACCEPT)

target    prot opt source              destination

SNAT      all  --  192.168.0.0/24      anywhere            to:211.101.46.235

Chain OUTPUT (policy ACCEPT)

target    prot opt source              destination

我的NAT已经配置好了的(只是提供最简单的代理上网功能,还没有添加防火墙规则).关于怎么配置NAT,参考我的另一篇文章

当然你如果还没有配置NAT的话,你也不用清除规则,因为NAT在默认情况下是什么都没有的

如果你想清除,命令是

[root@tp ~]# iptables -F -t nat

[root@tp ~]# iptables -X -t nat

[root@tp ~]# iptables -Z -t nat

  1. 首先要做的是给咱的SSH进行ACCEPT配置,以免直接无法连接的情况发生:   
  2. 1.如果SSH端口是22(这里不建议用默认端口最好改掉SSH端口)   
  3. iptables -A INPUT -p tcp --dport 22 -j ACCEPT   
  4. iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT   
  5. 注意要/etc/rc.d/init.d/iptables save,以下每一步都最好执行一遍此语句,以下不再累述。   
  6.   
  7. 2.vim /etc/sysconfig/iptables确定是否已经加入配置,可以的话执行service iptables restart重启后生效   
  8.   
  9. 3.下面是很危险的操作,如果你第一步没做就会直接可能导致你连不上SSH,此步骤前切记执行第一步!!!   
  10. iptables -P INPUT DROP    
  11. iptables -P OUTPUT DROP    
  12. iptables -P FORWARD DROP   
  13. 这个步骤是把所有不符合自己配置的规则ACCEPT的连接全部DROP掉,执行完以后如果咱SSH还没掉,那么谢天谢地,安全了,重启下iptables后继续下面的配置!   
  14.   
  15. 4.下面咱就不细说了,具体就是看自己服务器要开放哪些端口或者是要访问哪些端口来做具体的配置,下面是我自己的机器的配置:   
  16.   
  17. /etc/sysconfig/iptables文件配置如下:   
  18. # Generated by iptables-save v1.4.7 on Fri Mar  2 19:59:43 2012   
  19. *filter   
  20. :INPUT DROP [0:0]   
  21. :FORWARD DROP [0:0]   
  22. :OUTPUT DROP [8:496]   
  23. -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT   
  24. #ping使用的端口   
  25. -A INPUT -p icmp -j ACCEPT   
  26. -A INPUT -i lo -j ACCEPT   
  27. -A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT   
  28. -A INPUT -s 192.168.2.200/32 -d 192.168.2.200/32 -j ACCEPT   
  29. #允许服务器自己的SSH(对外部请求来说服务器是目标所以使用--dport)   
  30. -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT   
  31. #80端口不用说了吧,服务器网站访问端口   
  32. -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT   
  33. -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT   
  34. -A INPUT -p tcp -m tcp --dport 11211 -j ACCEPT   
  35. -A INPUT -p tcp -m tcp --dport 11212 -j ACCEPT   
  36. -A FORWARD -j REJECT --reject-with icmp-host-prohibited   
  37. #53端口是DNS相关,TCP和UDP都要配置   
  38. -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT   
  39. -A INPUT -p udp -m udp --dport 53 -j ACCEPT   
  40. #ping使用的端口   
  41. -A OUTPUT -p icmp -j ACCEPT   
  42. -A OUTPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT   
  43. -A OUTPUT -s 192.168.2.200/32 -d 192.168.2.200/32 -j ACCEPT   
  44. #允许服务器SSH到其他机器(使用外部端口就使用--dport)   
  45. -A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT   
  46. #允许服务器自己的SSH(自已为源输出就使用--sport)   
  47. -A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT   
  48. #访问外部网站80端口(使用外部端口就使用--dport)   
  49. -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT   
  50. #如果服务器需要访问外部网站,那么OUTPUT也需要配置53端口(使用外部端口就使用--dport)   
  51. -A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT   
  52. -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT   
  53. #如果有访问外部邮箱,那么打开邮箱相关端口(使用外部端口就使用--dport)   
  54. -A OUTPUT -p tcp -m tcp --dport 465 -j ACCEPT   
  55. -A OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT   
  56. -A OUTPUT -p tcp -m tcp --dport 110 -j ACCEPT   
  57. #服务器网站访问端口(自已为源输出就使用--sport)   
  58. -A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT   
  59. -A OUTPUT -p tcp -m tcp --sport 3306 -j ACCEPT   
  60. -A OUTPUT -p tcp -m tcp --sport 11211 -j ACCEPT   
  61. -A OUTPUT -p tcp -m tcp --sport 11212 -j ACCEPT   
  62. COMMIT   
  63. # Completed on Fri Mar  2 19:59:43 2012  

    首先要做的是给咱的SSH进行ACCEPT配置,以免直接无法连接的情况发生: 1.如果SSH端口是22(这里不建议用默认端口最好改掉SSH端口) iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 注意要/etc/rc.d/init.d/iptables save,以下每一步都最好执行一遍此语句,以下不再累述。

    2.vim /etc/sysconfig/iptables确定是否已经加入配置,可以的话执行service iptables restart重启后生效

    3.下面是很危险的操作,如果你第一步没做就会直接可能导致你连不上SSH,此步骤前切记执行第一步!!! iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP 这个步骤是把所有不符合自己配置的规则ACCEPT的连接全部DROP掉,执行完以后如果咱SSH还没掉,那么谢天谢地,安全了,重启下iptables后继���下面的配置!

    4.下面咱就不细说了,具体就是看自己服务器要开放哪些端口或者是要访问哪些端口来做具体的配置,下面是我自己的机器的配置:

    /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 -A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT -A INPUT -s 192.168.2.200/32 -d 192.168.2.200/32 -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 #ping使用的端口 -A OUTPUT -p icmp -j ACCEPT -A OUTPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT -A OUTPUT -s 192.168.2.200/32 -d 192.168.2.200/32 -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 ACCEPT COMMIT # Completed on Fri Mar 2 19:59:43 2012

2,添加规则

添加基本的NAT地址转换,(关于如何配置NAT可以看我的另一篇文章),

添加规则,我们只添加DROP链.因为默认链全是ACCEPT.

防止外网用内网IP欺骗

[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP

[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP

[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP

如果我们想,比如阻止MSN,QQ,BT等的话,需要找到它们所用的端口或者IP,(个人认为没有太大必要)

例:禁止与211.101.46.253的所有连接

[root@tp ~]# iptables -t nat -A PREROUTING  -d 211.101.46.253 -j DROP

禁用FTP(21)端口

[root@tp ~]# iptables -t nat -A PREROUTING -p tcp --dport 21 -j DROP

这样写范围太大了,我们可以更精确的定义.

[root@tp ~]# iptables -t nat -A PREROUTING  -p tcp --dport 21 -d 211.101.46.253 -j DROP

这样只禁用211.101.46.253地址的FTP连接,其他连接还可以.如web(80端口)连接.

按照我写的,你只要找到QQ,MSN等其他软件的IP地址,和端口,以及基于什么协议,只要照着写就行了.

最后:drop非法连接

[root@tp ~]# iptables -A INPUT  -m state --state INVALID -j DROP

[root@tp ~]# iptables -A OUTPUT  -m state --state INVALID -j DROP

[root@tp ~]# iptables-A FORWARD -m state --state INVALID -j DROP

允许所有已经建立的和相关的连接

[root@tp ~]# iptables-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

[root@tp ~]# iptables-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

[root@tp ~]# /etc/rc.d/init.d/iptables save

这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.

[root@tp ~]# service iptables restart

别忘了保存,不行就写一部保存一次.你可以一边保存,一边做实验,看看是否达到你的要求,

上面的所有规则我都试过,没有问题.

写这篇文章,用了我将近1个月的时间.查找资料,自己做实验,希望对大家有所帮助.如有不全及不完善的地方还请提出.

因为本篇文章以配置为主.关于IPTABLES的基础知识及指令命令说明等我会尽快传上,当然你可以去网上搜索一下,还是很多的.

5.可能有时候需要删除规则,最简单就是修改一下/etc/sysconfig/iptables然后service iptables restart,最后/etc/rc.d/init.d/iptables save即可。

当然也可以使用指令完成:

  1. 在网上找了一下,删除规则的方法:   
  2. 语法是: iptables -D chain rulenum [options]   
  3. 其中: chain 是链的意思,就是INPUT FORWARD 之类的   
  4.              rulenum 是规则的编号。从1 开始。可以使用  --line-numbers 列出规则的编号   
  5.     
  6. 所以,例如上面要删除一个INPUT链的规则的话可以这样:iptables -D INPUT 3   
  7. 意思是删除第3条规则。   
  8. 还有第二种方法。第二种办法是 -A 命令的映射,不过用-D替换-A。当你的链中规则很复杂,而你不想计算它们的编号的时候这就十分有用了。也就是说,你如何用iptables -A.... 语句定义了一个规则,则删除此规则时就用 -D 来代替- A  其余的都不变即可。   
  9. ======================   
  10. 说一下上面的 --line-numbers 选项,如下面的命令:   
  11. iptables -L INPUT --line-numbers   列出INPUT 链所有的规则   
  12. num  target     prot opt source               destination            
  13. 1    REJECT     tcp  --  anywhere             anywhere            tcp dpt:microsoft-ds reject-with icmp-port-unreachable   
  14. 2    REJECT     tcp  --  anywhere             anywhere            tcp dpt:135 reject-with icmp-port-unreachable   
  15. 3    REJECT     tcp  --  anywhere             anywhere            tcp dpt:netbios-ssn reject-with icmp-port-unreachable   
  16.   
  17. ...   
  18. ...   
  19. 删除指定行规则:   
  20. [root@localhost rc.d]# iptables -D INPUT 4  

    在网上找了一下,删除规则的方法: 语法是: iptables -D chain rulenum [options] 其中: chain 是链的意思,就是INPUT FORWARD 之类的

             rulenum 是规则的编号。从1 开始。可以使用  --line-numbers 列出规则的编号
    

    所以,例如上面要删除一个INPUT链的规则的话可以这样:iptables -D INPUT 3 意思是删除第3条规则。

    还有第二种方法。第二种办法是 -A 命令的映射,不过用-D替换-A。当你的链中规则很复杂,而你不想计算它们的编号的时候这就十分有用了。也就是说,你如何用iptables -A.... 语句定义了一个规则,则删除此规则时就用 -D 来代替- A 其余的都不变即可。

    说一下上面的 --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-unreachable 2 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

    ... ... 删除指定行规则: [root@localhost rc.d]# iptables -D INPUT 4

  6.最后补充一下,如果想针对某IP进行单独开放端口可以如下配置:

  1. 如果我需要对内网某机器单独开放mysql端口,应该如下配置:   
  2. iptables -A INPUT -s 192.168.2.6 -p tcp -m tcp --dport 3306 -j ACCEPT   
  3. iptables -A OUTPUT -s 192.168.2.6 -p tcp -m tcp --sport 3306 -j ACCEPT  

7.彻底禁止某IP访问:

  1. #屏蔽单个IP的命令是   
  2. iptables -I INPUT -s 123.45.6.7 -j DROP   
  3. #封整个段即从123.0.0.1到123.255.255.254的命令   
  4. iptables -I INPUT -s 123.0.0.0/8 -j DROP   
  5. #封IP段即从123.45.0.1到123.45.255.254的命令   
  6. iptables -I INPUT -s 124.45.0.0/16 -j DROP   
  7. #封IP段即从123.45.6.1到123.45.6.254的命令是   
  8. iptables -I INPUT -s 123.45.6.0/24 -j DROP   
  9. 指令I是insert指令 但是该指令会insert在正确位置并不像A指令看你自己的排序位置,因此用屏蔽因为必须在一开始就要加载屏蔽IP,所以必须使用I命令加载,然后注意执行/etc/rc.d/init.d/iptables save进行保存后重启服务即可  

yzc216亚洲城官方网站 1

本文由yzc216亚洲城发布于yzc216亚洲城,转载请注明出处:linux下IPTABLES配置详解,Linux中iptables设置详细

关键词: yzc216亚洲城