zoukankan      html  css  js  c++  java
  • iptables用法

    http://www.linuxso.com/linuxpeixun/10332.html

    先查看本机配置

    [html] view plain copy
     
     print?
    1. sudo iptables -L -n  

    如要重新配置,则先清除已有配置

    [html] view plain copy
     
     print?
    1. sudo iptables -F        //清除预设表filter中的所有规则链的规则    
    2. sudo iptables -X        //清除预设表filter中使用者自定链中的规则  

    如果是远程通过ssh连接服务器进行配置,则先加入允许ssh的规则

    [html] view plain copy
     
     print?
    1. sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT  

    设定预设规则,DROP掉INPUT链与FORWARD链

    [html] view plain copy
     
     print?
    1. sudo iptables -P INPUT DROP    
    2. sudo iptables -P FORWARD DROP  

    INPUT链规则配置

    允许来自于lo接口的数据访问本机

    [html] view plain copy
     
     print?
    1. sudo iptables -A INPUT -i lo -j ACCEPT  

    lo:loopback,回环接口,通常对应的IP地址为127.0.0.1(未开启之前,本机不能ping通本机)

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

    [html] view plain copy
     
     print?
    1. sudo iptables -A INPUT -p icmp -j ACCEPT  

    开启web服务端口

    [html] view plain copy
     
     print?
    1. sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT  

    FORWARD链规则配置

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

    [html] view plain copy
     
     print?
    1. sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT    
    2. sudo iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT  

    丢弃坏的TCP包

    [html] view plain copy
     
     print?
    1. sudo iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP  

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

    [html] view plain copy
     
     print?
    1. sudo iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT  

    限制ICMP,允许每秒1个包,限制触发条件是10个包

    [html] view plain copy
     
     print?
    1. sudo iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT  

    保存及调用

    [html] view plain copy
     
     print?
    1. iptables-save > /etc/iptables.rules (可能需要切换至root用户)  

    重启后会失效,重新调用配置

    [html] view plain copy
     
     print?
    1. sudo iptables-restore < /etc/iptables.rules  

    设置自动保存与调用

    [html] view plain copy
     
     print?
    1. sudo vim /etc/network/interfaces  

    [html] view plain copy
     
     print?
    1. auto ath0  
    2. iface ath0 inet dhcp  

    后面加上

    [html] view plain copy
     
     print?
    1. # Auto save and restore iptables rules  
    2. pre-up iptables-restore < /etc/iptables.rules  
    3. post-down iptables-save > /etc/iptables.rules  

    解决INPUT DROP后,引起sshd服务DNS反向解析不顺,从而导致登录等待时间过长的问题:

    vim /etc/ssh/sshd_config
    在最后添加下面一行,关闭 SSH 的 DNS 反解析
    UseDNS no
    重启sshd服务
    sudo /etc/init.d/ssh restart

    常见命令:

    -A, --append 新增规则(追加方式)
    -D, --delete 删除规则
    -L, --list 列出某规则链中的所有规则 iptables -L INPUT

    常见参数:

    -p, --protocol 指定协议

    -s  --source  源地址
    -d, --dst, --destination 指定目的地址
    -i, --in-interface 指定入口网卡 iptables -A INPUT -i eth0 (-i eth+ 所有网卡)

    --out-interface -o  指定出口网卡 iptables -A INPUT -o eth0 (-i eth+ 所有网卡)
    --dport, --destination-port 目的端口
    -j 指定对包的处理(ACCEPT、DROP、REJECT、REDIRECT)

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

    -j:指定动作类型  

    对于防火墙的设置,有两种策略:一种是全部通讯口都允许使用,只是阻止一些我们知道的不安全的或者容易被利用的口;另外一种,则是先屏蔽所有的通讯口,而只是允许我们需要使用的通讯端口。

    1. sudo iptables -P INPUT DROP //一旦执行,将马上阻断所有进站数据,远程配置时,注意顺序问题(ssh先加入允许)  
    2. sudo iptables -P OUTPUT ACCEPT
    3. sudo iptables -P FORWARD DROP  

    注意-P中的P需要大写,表示Protocol。

    可以看出INPUT,FORWARD两个链采用的是允许什么包通过,而OUTPUT链采用的是不允许什么包通过。
    当超出了IPTABLES里filter表里的两个链规则(INPUT、FORWARD)时,不在这两个规则里的数据包怎么处理呢,那就是DROP(放弃)。应该说这样配置是很安全的,我们要控制流入数据包。
    而对于OUTPUT链,也就是流出的包我们不用做太多限制,而是采取ACCEPT,也就是说,不在这个规则里的包怎么办呢,那就是通过。

    为INPUT链添加规则

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

    sudo iptables -A INPUT -p icmp -j ACCEPT  
     

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

    sudo iptables -A INPUT -i lo -p all -j ACCEPT

    对于OUTPUT规则,因为预设的是ACCEPT,所以要添加DROP规则,减少不安全的端口链接。

     
    1. sudo iptables -A OUTPUT -p tcp --sport 31337 -j DROP  
    2. sudo iptables -A OUTPUT -p tcp --dport 31337 -j DROP  

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

    我们还可以把规则限制到只允许某个IP:

     
    1. sudo iptables -A INPUT -s 192.168.0.18 -p tcp --dport 22 -j ACCEPT  

    这表示只允许192.168.0.18的机器进行SSH连接。
    如果要允许一个IP段,可以使用下面的写法:

     
    1. sudo iptables -A INPUT -s 192.168.0.1/255 -p tcp --dport 22 -j ACCEPT  

    这表示允许192.168.0.1/255IP段的机器进行连接。
    但是,注意我们前面已经添加一条规则来允许所有IP连接22端口,需要把这条规则删除掉。

     
    1. sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT  

    在下面就是FORWARD链,FORWARD链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链,对正在转发链的监控
    开启转发功能,(在做NAT时,FORWARD默认规则是DROP时,必须做)

     
    1. sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT  
    2. sudo iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT  

    丢弃坏的TCP包

     
    1. sudo iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP  

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

     
    1. sudo iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT  

    设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包(在前面只允许ICMP包通过,在这里作限制)

     
      1. sudo iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT 

    例如我给SSH加放行的语句:   
    添加input记录: iptables -A INPUT -p tcp --dport 22 -j ACCEPT   
    添加output记录: iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT   

  • 相关阅读:
    execution(* *..BookManager.save(..))的解读
    metalink下载补丁包
    loop_login.sh
    EXPDP IMPDP 知识总结
    图书管理系统简单 过程
    Data Types
    Oracle 创建分页存储过程(转帖)
    绑定变量赋值
    Oracle10g、 Oracle11g完美共存
    Oracle11G 数据库 expdp、impdp使用示例
  • 原文地址:https://www.cnblogs.com/kex1n/p/7048267.html
Copyright © 2011-2022 走看看