Linux配置防火墙详细步骤(iptables命令使用方法)

  |   0 评论   |   2,337 浏览

Linux配置防火墙详细步骤(iptables命令使用方法)

如果您使用的是ssh远程,而又不能直接操作本机,那么建议您慎重,慎重,再慎重!
无论如何,iptables是一个需要特别谨慎设置的东西,万一服务器不在你身边,而你贸然设置导致无法SSH,那就等着被老板骂吧!!!

通过iptables我们可以为我们的Linux服务器配置有动态的防火墙,能够指定并记住为发送或接收信息包所建立的连接的状态,是一套用来设置、维护和检查Linux内核的IP包过滤规则的命令包。iptables定义规则的方式比较复杂,本文对Linux防火墙Iptables规则写法进行详细介绍。

概览

ppl727png
ppl729png
ppl730png
ppl731png
ppl732png

ppl733png

[root@ppl ~]# iptables -h
iptables v1.4.21

Usage: iptables -[ACD] chain rule-specification [options]
       iptables -I chain [rulenum] rule-specification [options]
       iptables -R chain rulenum rule-specification [options]
       iptables -D chain rulenum [options]
       iptables -[LS] [chain [rulenum]] [options]
       iptables -[FZ] [chain] [options]
       iptables -[NX] chain
       iptables -E old-chain-name new-chain-name
       iptables -P chain target [options]
       iptables -h (print this help information)

介绍

  1. Iptables规则写法的基本格式是:
      
      iptables [-t table] COMMAND chain CRETIRIA -j ACTION
      
  2. Iptables规则相关参数说明:
      
      -t table:3个:filter nat mangle ;定义如何对规则进行管理
      
      chain:指定你接下来的规则到底是在哪个链上操作的,当定义策略的时候,是可以省略的;
      
      CRETIRIA:指定匹配标准;
      
      -j ACTION:指定如何进行处理;
      
  3. Iptables规则其他写法及说明:
     
    iptables -L -n -v #查看定义规则的详细信息
    [root@ppl ~]# iptables -L -n
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
    INPUT_direct  all  --  0.0.0.0/0            0.0.0.0/0           
    INPUT_ZONES_SOURCE  all  --  0.0.0.0/0            0.0.0.0/0           
    INPUT_ZONES  all  --  0.0.0.0/0            0.0.0.0/0           
    DROP       all  --  0.0.0.0/0            0.0.0.0/0            ctstate INVALID
    REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
    FORWARD_direct  all  --  0.0.0.0/0            0.0.0.0/0           
    FORWARD_IN_ZONES_SOURCE  all  --  0.0.0.0/0            0.0.0.0/0           
    FORWARD_IN_ZONES  all  --  0.0.0.0/0            0.0.0.0/0           
    FORWARD_OUT_ZONES_SOURCE  all  --  0.0.0.0/0            0.0.0.0/0           
    FORWARD_OUT_ZONES  all  --  0.0.0.0/0            0.0.0.0/0           
    DROP       all  --  0.0.0.0/0            0.0.0.0/0            ctstate INVALID
    REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination         
    OUTPUT_direct  all  --  0.0.0.0/0            0.0.0.0/0 
    

  
  iptables是Linux服务器上防火墙配置必备的设置工具,是我们在做好服务器安全及部署大型网络时,常会用到的重要工具,很好的掌握iptables,可以让我们对Linux服务器整个网络的结构有一个比较透彻的了解,更能够很好的掌握Linux服务器的安全配置技巧。

配置

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

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

    • 启动指令:service iptables start
    • 重启指令:service iptables restart
    • 关闭指令:service iptables stop
  2. 然后是相关配置

    /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 配置就回滚到上次启动服务的配置了,这点必须注意!!!

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

      -A:指定链名   
      -p:指定协议类型   
      -d:指定目标地址
      -s:IP地址
      --dport:指定目标端口(destination port 目的端口)   
      --sport:指定源端口(source port 源端口)   
      -j:指定动作类型 
    
  4. 如果我不像修改文件直接打命令可以吗,当然没问题,步骤如下:

    例如我给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 文件中了。

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

    首先要做的是给咱的SSH进行ACCEPT配置,以免直接无法连接的情况发生:
    如果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,以下每一步都最好执行一遍此语句,以下不再累述。

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

示例

拒绝某IPSSH链接我的Linux

iptables -t filter -A INPUT -s 192.168.12.12 -p tcp --dport 22 -j DROP

技术改变人生 Q群:702101215
爱学习:www.aixx123.com


技术改变人生 Q群:702101215 程序之家3群
IT资源网:www.pplsunny.top
程序之家5群:757629668

评论