当前位置:   article > 正文

iptables 简单使用

iptables 简单使用

ptables网络防火墙
一、简介
  防火墙:可以是硬件也可以是软件: 规则(匹配标准,处理办法)
    netfilter: 是一种框架,工作在内核中,通过iptables命令(用户空间) 来规则交给netfilter(内核空间)。作用实现规则
    iptables: 数据报文过滤,NAT、mangle等规则生成的工具;过滤IP报文首部与TCP报文首部。作用是制定规则
iptables不是服务,但有服务脚本;服务脚本的主要作用在于管理保存的规则,装载及移除iptables/netfilter相关的内核模块;iptables_nat, iptables_filter, iptables_mangle, iptables_raw, ip_nat, ip_conntrack   service iptables start 开启服务
在启动iptables报iptables: No config file错误时
#iptables -P OUPUT ACCEPT
#service iptables save
#service iptables restart

#lsmod  |grep ip     查看模块是否加载
二、iptables表与链简介
 Netfilter/iptables是表的容器;表是链的容器,即所有的链都属于其对应的表; 链是规则的容器;规则一条条过滤的语句。容器的意思是包含或者说属于的关系。
1、规则:匹配标准IP: SIP, DIP(源地址,目的地址)    TCP: SPORT, DPORT,  (源端口,目的端口)        UDP: SPORT, DPORT (源端口,目的端口)       ICMP:icmp-type(icmp类型)
2、iptables链(PREROUTING、INPUT、FORWARD、OUTPUT和POSTROUTING五个链)
  1)、PREROUTING: 用于修改目的地址(DNAT)
  2)、INPUT: 匹配目的 IP 是本机的数据包
  3)、FORWARD: 匹配穿过本机的数据包(转发数据包)
  4)、OUTPUT:匹配目的 IP 是外部主机的数据
  5)、POSTROUTING: 用于修改源地址 (SNAT)
3、iptables表(filter、nat、mangle与raw四个表)
1)、filter表(过滤):有 INPUT、OUTPUT、FORWARD三个链    用于过滤的时候
2)、nat表(地址转换): 有PREROUTING、OUTPUT、POSTROUTING三个链   用于做 NAT 的时候
3)、mangle表(拆开报文、修改、重新封装): PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING五个链
4)、raw表(关闭nat表连接追踪机制):只能放在PREROUTING、OUTPUT两个链上
链相关知识:可以使用自定链,但只在被调用时才能发挥作用,而且如果没有自定义链中的任何规则匹配,还应该有返回机制;用可以删除自定义的空链,默认链无法删除
每个规则都有两个内置的计数器:一个用来记录被匹配的报文个数;另一个用来记录被匹配的报文大小之和
          各表的优先级,从上到下(由高到底)如下图  例如input链中 先处理mangle表再处理filter表

三、操作命令
语法:iptables  [-t要操作的表]  < 操作命令>  [要操作的链]  [规则号码]  [匹配条件]  [-j 匹配到以后处理动作]
1)、操作命令(-A、-I、D、-R、-P、-F)
    A、管理规则
        -A 链名:附加一条规则,添加在链的尾部
        -I 链名 号码: 插入一条规则,插入为对应链上的第几条;
        -D链名 号码: 删除指定链中的第几条规则;
        -R链名 号码: 替换指定链的规则;
    B、管理链:
        -F  链名:flush,清空指定规则链,如果省略链,则可以实现删除对应表中的所有链
        -P  链名: 设定指定链的默认策略;
        -N:自定义一个新的空链
        -X: 删除一个自定义的空链
        -Z:置零指定链中所有规则的计数器;
        -E: 重命名自定义的链;
    C、查看类:
        -L: 显示指定表中的规则;
            -n: 以数字格式显示主机地址和端口号;
            -v: 显示链及规则的详细信息
            -vv: 更详细信息          
            -x: 显示计数器的精确值      
            --line-numbers: 显示规则号码 
2)、匹配条件:
    A、通用匹配
        -s, --src: 指定源地址
        -d, --dst:指定目标地址
        -p {tcp|udp|icmp}:指定协议
        -i INTERFACE: 指定数据报文流入的接口   可用于定义标准的链:PREROUTING,INPUT,FORWARD
        -o INTERFACE: 指定数据报文流出的接口  可用于标准定义的链:OUTPUT,POSTROUTING,FORWARD
    B、扩展匹配
        a、隐含扩展:不用特别指明由哪个模块进行的扩展,因为此时使用-p {tcp|udp|icmp}
            ①、-p tcp隐含扩展
                --sport PORT[-PORT]: 源端口
                --dport PORT[-PORT]: 目标端口
--tcp-flags mask comp: 只检查mask指定的标志位,是逗号分隔的标志位列表;comp:此列表中出现的标记位必须为1,comp中没出现,而mask中出现的,必须为0;
                --tcp-flags SYN,FIN,ACK,RST SYN  =  --syn     三次握手第一次
                --tcp-flags –syn    三次握手第一次
            ②、-p icmp 隐含扩展
        --icmp-type  0|8: 0: echo-reply  响应报文(回来的ping响应) 或  8: echo-request  请求报文(出去的ping)
            ③、-p udp 隐含扩展
                --sport:源端口
                --dport:目标端口
        b、显式扩展:必须指明由哪个模块进行的扩展,在iptables中使用-m选项可完成此功能
          语法: -m  matchname  [per-match-options]
①、state  状态    结合ip_conntrack追踪会话的状态
                    NEW: 新连接请求
                    ESTABLISHED:已建立的连接
                    INVALID:非法连接
                    RELATED:相关联的
                -m state --state NEW,ESTABLISHED -j ACCEPT
                要对FTP使用iptables要首先要装载ip_conntrack_ftp和ip_nat_ftp模块
            例:    iptables -A INPUT -d 192.168.100.7 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
②、multiport: 离散的多端口匹配扩展
                --source-ports  源端口
                --destination-ports  目标端口
                --ports  端口 
            例:-m multiport --destination-ports 21,22,80 -j ACCEPT
            ③、-m iprange :多个IP地址匹配
                --src-range   源地址
                --dst-range   目标地址
例:   iptables -A INPUT -p tcp -m iprange --src-range 192.168.100.3-192.168.100.100 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
④    、-m connlimit: 根据每客户端IP(也可以是地址块)做并发连接数数量匹配
                --connlimit-above n    连接的数量大于n
               --connlimit-mask prefix_length   prefix_length为掩码(0-32) ,默认是32,即一个IP地址 , 限制网段
例:  iptables -A INPUT -d 192.168.100.7 -p tcp --dport 80 -m connlimit --connlimit-above 2 -j  DROP
            ⑤、-m limit:基于收发报文的速率做检查
                --limit rate[/second|/minute|/hour|/day]  速率限制,默认是3/hour
                  --limit-burst number  空闲时峰值,默认是5
例: iptables -I INPUT -d 10.0.3.11 -p icmp --icmp-type 8 -m limit --limit-burst 3 --limit 20/minute -j ACCEPT
            ⑥、-m string      字符串匹配,能够检测报文应用层中的字符串,屏蔽非法字符
                --algo {bm|kmp}   指定匹配算法,有bm和kpm两种
                --string "STRING"  指定所要匹配的字符串
            ⑦、-m  time   根据报文到达的时间与指定的时间范围进行匹配
                 --datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 时间格式为:2019-03-13T12:24:30
                   --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
                   --timestart hh:mm[:ss]   时间格式为 12:24:30
                   --timestop hh:mm[:ss]
                   --monthdays day[,day...]   1-31
 --weekdays day[,day...]   Mon, Tue, Wed, Thu, Fri, Sat, Sun 或者1-7
                   --utc  设置--datestart, --datestop, --timestart and --timestop为UTC时间 
                   --localtz  设置--datestart, --datestop, --timestart and --timestop为内核时间
注意时区差异,CST比UTC时间快8小时           
3)、常用动作(target):
    ACCEPT:放行
    DROP:丢弃
    REJECT:拒绝(明确告诉对方)
    DNAT:目标地址转换
    SNAT:源地址转换
    REDIRECT:端口重定向
    MASQUERADE:地址伪装
    LOG:日志
    MARK:打标记(打个戳)
保存规则:
#service iptables save     保存的位置    /etc/sysconfig/iptables
#iptables-save > /etc/sysconfig/iptables.2019031301    手动保存位置
#iptables-restore < /etc/sysconfig/iptables.2019031301   手动生效
所有条件都可取反:!,-s ! 192.168.100.6  源地址不是192.168.100.6  都被匹配

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/632055
推荐阅读
相关标签
  

闽ICP备14008679号