• iptables 配置详解


    Linux下的防火墙概念:

    a、一般谈到Linux下的防火墙,我们都会首先想到iptables,其实更确切的叫法应该是Netfilter/iptables,iptables和Netfilter其实是存在差别的。
    
    b、尽管它们经常被用来相互替换使用,Netfilter是用来实现Linux内核中防火墙的Linux内核空间程序代码段,它要么被直接编译进内核,要么被包含在模块中。
    
    c、而iptables是用来管理Netfilter防火墙的用户程序,而我这里提到的iptables是包含Netfiler和iptables。
    
    d、Netfilter/iptables是基于包过滤的防火墙,主要是针对2-4层,另外,iptables也支持7层控制。

    iptables的组成部分:

    iptables有四个表和五个链以及一些规则组成:
    
    四个表:filter、nat、mangle、raw
    
    filter表(过滤规则表),nat表(地址转换规则表),mangle(修改数据标记位规则表),raw(跟踪数据表规则表)
    
    其中最常用的是filter表以及nat表
    
    五个链:INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING

    iptables的命令语法:

    iptables [-t 表名] <-A|-I|-D|-R>链名[规则编号] [-i|-o 网卡名称]  [-p 协议类型]  [-s 源IP地址|源子网]  [–sport 源端口号]
    [-d 目标IP地址|目标子网] [–dport 目标端口号] <-j 动作>

    参数及动作信息

    -A    追加防火墙规则
    -D    删除防火墙规则
    -I    插入防火墙规则
    -F    清空防火墙规则
    -L    列出防火墙规则
    -R    替换防火墙规则
    -Z    清空防火墙数据表统计信息
    -P    设置链默认规则

    匹配参数:

    -p                   匹配协议
    -s                   匹配源地址
    -d                   匹配目标地址
    -i                   匹配入站网卡接口
    -o                   匹配出站网卡接口
    –sport               匹配源端口
    –dport               匹配目标端口
    –src-range           匹配源地址范围
    –dst-range           匹配目标地址范围
    –limit               匹配数据表速率
    –mac-source          匹配源MAC地址
    –state               匹配状态(INVALID、ESTABLISHED、NEW、RELATED)
    –string              匹配应用层字串

    触发动作:

    ACCEPT     允许数据包通过
    DROP      丢弃数据包
    REJECT     拒绝数据包通过,并发回封包通知对方
    LOG        将数据包信息记录syslog日志
    DNAT       目标地址转换
    SNAT       源地址转换(适用于静态IP)
    MASQUERADE 地址欺骗(只能用于ADSL拨号上网的IP伪装,也就是主机的IP是由ISP分配动态的)
    REDIRECT   重定向,将数据包重定向到本机或另外主机的某一个端口,通常能实现透明代理或者对外开放内网的某些服务

    常用的命令

    a、查看filter表的所有规则:

    [root@localhost python]# iptables -n -L
    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  

    b、清空filter表的所有规则:

    [root@localhost ~]# iptables -F

    c、查看nat表的所有规则:

    [root@localhost python]# iptables -t nat -n -L
    Chain PREROUTING (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain POSTROUTING (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination 

    # 记录192,.168.10.116访问主机80端口的日志信息(/var/log/messages)

    iptables  -I  INPUT -s 192.168.10.116  -p  tcp  --dport  80  -j  LOG
    [root@localhost python]# tail -10 /var/log/messages
    Mar 25 19:29:25 localhost kernel: IN=eth0 OUT= MAC=00:0c:29:d0:4d:a8:00:e0:4c:68:00:a5:08:00 SRC=192.168.10.100 DST=192.168.10.115 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=30507 DF PROTO=TCP SPT=50870 DPT=80 WINDOW=16425 RES=0x00 ACK URGP=0 
    Mar 25 19:29:25 localhost kernel: IN=eth0 OUT= MAC=00:0c:29:d0:4d:a8:00:e0:4c:68:00:a5:08:00 SRC=192.168.10.100 DST=192.168.10.115 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=30508 DF PROTO=TCP SPT=50870 DPT=80 WINDOW=16425 RES=0x00 ACK URGP=0 
    Mar 25 19:29:25 localhost kernel: IN=eth0 OUT= MAC=00:0c:29:d0:4d:a8:00:e0:4c:68:00:a5:08:00 SRC=192.168.10.100 DST=192.168.10.115 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=30509 DF PROTO=TCP SPT=50870 DPT=80 WINDOW=16425 RES=0x00 ACK FIN URGP=0 
    Mar 25 19:29:25 localhost kernel: IN=eth0 OUT= MAC=00:0c:29:d0:4d:a8:00:e0:4c:68:00:a5:08:00 SRC=192.168.10.100 DST=192.168.10.115 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=30510 DF PROTO=TCP SPT=50871 DPT=80 WINDOW=8192 RES=0x00 SYN URGP=0 
    Mar 25 19:29:25 localhost kernel: IN=eth0 OUT= MAC=00:0c:29:d0:4d:a8:00:e0:4c:68:00:a5:08:00 SRC=192.168.10.100 DST=192.168.10.115 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=30511 DF PROTO=TCP SPT=50871 DPT=80 WINDOW=16425 RES=0x00 ACK URGP=0 
    Mar 25 19:29:25 localhost kernel: IN=eth0 OUT= MAC=00:0c:29:d0:4d:a8:00:e0:4c:68:00:a5:08:00 SRC=192.168.10.100 DST=192.168.10.115 LEN=442 TOS=0x00 PREC=0x00 TTL=64 ID=30512 DF PROTO=TCP SPT=50871 DPT=80 WINDOW=16425 RES=0x00 ACK PSH URGP=0 
    Mar 25 19:29:25 localhost kernel: IN=eth0 OUT= MAC=00:0c:29:d0:4d:a8:00:e0:4c:68:00:a5:08:00 SRC=192.168.10.100 DST=192.168.10.115 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=30513 DF PROTO=TCP SPT=50871 DPT=80 WINDOW=16425 RES=0x00 ACK URGP=0 
    Mar 25 19:29:25 localhost kernel: IN=eth0 OUT= MAC=00:0c:29:d0:4d:a8:00:e0:4c:68:00:a5:08:00 SRC=192.168.10.100 DST=192.168.10.115 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=30514 DF PROTO=TCP SPT=50871 DPT=80 WINDOW=16425 RES=0x00 ACK URGP=0 

    # 将来自192.168.10.0/24网段的主机并访问80端口的请求给予拒绝

    iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 80 -j DROP  
    [root@localhost ~]# iptables -L -n
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    DROP       tcp  --  192.168.10.0/24      0.0.0.0/0           tcp dpt:80  这个就是新添加的防火墙规则
    LOG        tcp  --  192.168.10.100       0.0.0.0/0           tcp dpt:80 LOG flags 0 level 4 
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination 

    # 禁止10.10.10.0/24网段内的主机ping。ICMP类型为8

    说明:禁止10.10.10.0/24网段内的主机ping
    iptables -A INPUT -s 10.10.10.0/24 -p icmp --icmp-type 8 -j DROP

    # -D参数,删除INPUT链的第三条规则:  

    [root@localhost ~]# iptables -L -n
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    DROP       tcp  --  192.168.10.0/24      0.0.0.0/0           tcp dpt:80 
    LOG        tcp  --  192.168.10.100       0.0.0.0/0           tcp dpt:80 LOG flags 0 level 4 
    DROP       icmp --  10.10.10.0/24        0.0.0.0/0           icmp type 8 
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination         
    [root@localhost ~]# iptables -D INPUT 3 删除INPUT链的第三条规则
    [root@localhost ~]# iptables -L -n     
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    DROP       tcp  --  192.168.10.0/24      0.0.0.0/0           tcp dpt:80 
    LOG        tcp  --  192.168.10.100       0.0.0.0/0           tcp dpt:80 LOG flags 0 level 4 
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination   

    # -R参数,替换第二条规则  

    [root@localhost ~]# iptables -R INPUT 2 ! -s 10.10.10.1 -p tcp --dport 80 -j ACCEPT  
    [root@localhost ~]# iptables -L -n
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    DROP       tcp  --  192.168.10.0/24      0.0.0.0/0           tcp dpt:80 
    ACCEPT     tcp  -- !10.10.10.1           0.0.0.0/0           tcp dpt:80 
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination 

    # 定义iptables默认策略

    默认策略的定义格式为:

    iptables    [-t 表名]    <-P>   <链名>    <动作>
  • 相关阅读:
    关于互联网产品经理的认知
    互联网产品经理的工作职责
    软件需求分析方法
    Enumeration遍历http请求参数的一个例子
    jquery datatable使用简单示例
    改变输出的文字的字体格式
    excel 类获取起始列和使用列
    调试不能命中断点
    CString转换为const char*
    __declspec(dllexport)
  • 原文地址:https://www.cnblogs.com/xu743876685/p/8646528.html
Copyright © 2020-2023  润新知