Linux中iptables设置详细

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

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

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

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

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

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

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

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

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

首先要做的是给咱的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  

首先要做的是给咱的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

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

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/22377.html