精华内容
下载资源
问答
  • 2021-05-15 16:09:10

    linux下的软件防火墙iptables——规则的查看与清除、定义默认策略软件防火墙IPTABLES ——规则在Linux下查看和清除,定义默认策略,防火墙意味着用户限制某些ip或用户对其主机的访问。防火墙可以分为两类,硬件防火墙和软件防火墙。软件防火墙主要用于过滤数据包,硬件防火墙主要用于防范恶意攻击和过滤数据包,如DDOS攻击。这里我们来解释一下linux下的软件防火墙——iptables。

    iptables与firewalld

    centOS6下默认的软件防火墙是iptables,而centos7中是防火墙d,两者之间有什么联系?事实上,firewalld是在原始iptables上新打包的软件。

    学习iptables时,建议先关闭firewalld,打开iptables

    yum install iptables-服务

    systemctl停止防火墙

    启动iptablesiptables的表和链系统

    iptables的不同表代表不同的功能,默认有4个表

    过滤器nat(地址转换)会破坏原始数据

    在不同的桌子下,你有自己的规则链:

    过滤器(输入/输出/前进)

    nat(路由前/输出/路由后)

    这些链代表以下含义:

    输入链——传入数据包应用规则链中的规则

    输出链——输出数据包应用规则链中的规则

    转发数据包时,转发链——应用规则链中的规则

    预路由链——在路由数据包之前应用该链中的规则

    后路由链——在路由数据包后应用该链中的规则

    iptables的规则查看与清除

    规则查看

    使用示例:iptables [-t tables] -L [-nv]

    选项和参数:

    -t后面是表格类型。如果省略此选项,默认为过滤器表。

    -L列出了当前表的规则

    -n不要反向检查域名和ip

    -v显示更多信息

    #检查过滤器表的规则

    # iptables -nvL

    链输入(策略接受0包,0字节)

    pkts字节目标prot选择加入退出源目标

    67 4444 ACCEPT all-* * 0 . 0 . 0 . 0 . 0/0 0 . 0 . 0 . 0/0状态相关,已建立

    0 0 ACCEPT icmp-* * 0 . 0 . 0 . 0/0 0 . 0 . 0 . 0/0

    0 0 ACCEPT all-lo * 0 . 0 . 0 . 0/0 0 . 0 . 0 . 0/0

    0 0 ACCEPT TCP-* * 0 . 0 . 0 . 0/0 0 . 0 . 0 . 0/0状态新tcp dpt:22

    2 286 REJECT all-* * 0 . 0 . 0 . 0/0 0 . 0 . 0 . 0/0 REJECT-带icmp-主机-禁止

    链转发(策略接受0包,0字节)

    pkts字节目标prot选择加入退出源目标

    0 0拒绝全部- * * 0.0.0.0/0 0.0.0.0/0拒绝-带icmp-主机-禁止

    链输出(策略接受38个数据包,4664字节)

    pkts字节目标prot选择加入退出源目标

    #查看nat表的规则

    iptables -t nat -L -nv链下规则期权的含义如下:

    目标:表示操作,如接受释放、丢弃和拒绝拒绝

    Prot:代表使用的数据包协议,包括tcp、udp和icmp

    选项:描述信息

    源:限制源主机

    目标:限制目标主机

    上面显示的输入链的五个规则具有以下含义:

    只要数据包的状态是“相关”、“已建立”,它就会被接受

    接受任何icmp数据包

    只要是本地环回网卡,所有数据都可以接受

    发送到端口22的活动连接的TCP数据包被接受。

    拒绝所有数据包

    清楚iptables的规则

    在默认安装centOS7后,系统已经有了很多规则的iptables。这里我们教你如何清除这些规则

    用法示例:iptables [-t tables] [-FXZ]

    选项和参数:

    清理所有定制的规则

    -X清除所有用户定义的规则

    -Z将所有统计计数设置为零

    # iptables -F

    # iptables -X

    # iptables-Z查看具体的规则

    使用iptables-保存可以查看具体的规则

    用法:iptables-save [-t tables]

    # iptables-save -t筛选器

    #由iptables生成-2020年年11月14日星期六保存1.4.21版21:51:56

    *过滤器

    :输入接受[0:0]

    :转发接受[0:0]

    :输出接受[56:7196]

    -输入-m状态-状态相关,已建立-j接受

    -A INPUT -p icmp -j ACCEPT

    -输入-i lo -j接受

    -输入-传输控制协议-状态-状态新-传输控制协议-端口22 -j接受

    -输入-j拒绝-拒绝-带icmp-主机-禁止

    -转发-j拒绝-拒绝-带icmp-主机-禁止

    #于2020年11月14日星期六完成21:51336056定义默认策略

    当我们清楚完规则后,就只剩下默认的策略了。什么是默认的策略,就是当不满足我们任何一条规则时,就采用默认规则。默认的策略有接受(接受数据包(和DROP(丢弃数据包(

    用法:iptables[-t tables]-P[INPUT | OUTPUT | FORWARD……][ACCEPT | DROP]

    现在,我们尝试将过滤器的投入链的默认修改为下降、输出及向前链修改为ACCETP

    iptables -t过滤器-P输入下降

    #注意,该命令敲完后,你的终端就可能会断开连接了

    iptables -P输出接受

    更多相关内容
  • iptables策略详解

    千次阅读 2018-11-07 10:41:03
    iptables可用操作 (1)-L : 显示所选链接的所有策略 : # iptables -L -n 查看iptables 策略   (2)-A : 在所选的链最尾部... (3)-D : 从所选链中删除策略,可以通过将策略的内容完整的写出来或指定在...

     

    iptables可用操作
    (1)-L : 显示所选链接的所有策略 : # iptables -L -n 查看iptables 策略
     
    (2)-A : 在所选的链最尾部添加一条新的策略:# iptables -A INPUT -s 192.168.0.1 -j DROP
     
    (3)-D : 从所选链中删除策略,可以通过将策略的内容完整的写出来或指定在所愿链中的序号
            # iptables -D INPUT 1  
     
    (4)-R:替换所选中的链里指定的策略:# iptables -R INPUT 1 -s 192.168.30.0 -j DROP(替换第一条)
     
    (5)-I: 从所选的链中指定策略前面插入一条新的策略 # iptables -I INPUT 2 -s 192.168.10.2 -j DROP
     
    (6)-F:清空所选链的策略,如果没有指定链,则清空指定表的所有链:# iptables -F INPUT (清空INPUT链)
     
    (7)-Z:将所选链的所有计数器归零,如果没有指定链,则将指定表所有链中计数器归零:# iptables -Z INPUT
     
    (8)-N:根据用户指定的名字建立新的链,在定义新链时所使用的名字不能和已有的链同名,数据包如果在自定义链里被匹配了就会被target/jump执行,如果没有被匹配则数据包将被送回调用自定义链的父链匹配
            # iptables -N isok
            # iptables -A isok -p tcp -s 192.168.0.168 -j DROP
            # iptables -L -n
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination          
    DROP       tcp  --  172.28.10.0          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          
     
    Chain isok (0 references)
    target     prot opt source               destination          
    DROP       tcp  --  192.168.0.168        0.0.0.0/0
     
    (9)-X:删除指定的用户自定义的链。在删除这个链必须没有被引用,如果没有指定链名称,则删除所有自定义的链,如果没有指定表及链则删除默认表中左右自定义的链
            # iptables -X isok            ( iptables -X)
             
    (10)-E:对自定义的链进行重命名,该命令仅仅是改变自定义链的名字,对这个结构、工作没有任何影响
            # iptables -E isok isallow
             
    (11)-P:为链设置默认的策略(如ACCEPT、DROP),所有不符合策略的数据包都被强制使用这个策略
            # iptables -P INPUT DROP
             
    (12)--line-number:在显示策略时,输入序号,该参数只能和-L配合使用
        # iptables -L --line-number
         
    (13)-s:匹配指定的IP源地址匹配数据包,指定网段为:# iptables -A INPUT -s 192.168.1.0/24 -j DROP
     
    (14)-d:匹配指定的IP目标地址匹配数据包,指定网段:# iptables -A INPUT -d 192.168.1.0/24 -j DROP
     
    (15)-i:<网络接口>:以数据包进入本地所使用的网络接口来匹配数据包,这个匹配操作只能用于
            INPUT、FORWARD和PREROUTING这3个链
            1、指定时使用网络接口名称,比如eth0、ppp0
            2、使用加号作为通配符时,如果直接用一个加号,比如iptables -A INPUT -i +表示匹配所有的包,而不考虑使用哪个接口,这也是用-i参数的默认行为。通配符还可以使放在某一类接口的后面,
                比如eth+表示所有的Ethernet接口
            3、在接口前加感叹号表示取反(注意空格),比如“-i!eth0”意思是匹配来自除eth0外的所有包
            4、lo表示本地回环地址
            # iptables -A INPUT -i eth0 -s 192.168.0.99 -j DROP(阻止从eth0进入的源IP地址为192.168.0.99的所有通信)
             
    (16)-o:<网络接口>:以数据包离开本地所使用的网络接口来匹配数据包,该参数配置方法与-i参数相同
            # iptables -A OUTPUT -o eth0 -s 192.168.0.99 -j DROP
         
    (17)--sport<端口>:基于数据包的源端口来匹配数据包:
                        1、该参数必须与-p参数配合使用
                        2、不指定--sport参数时,表示所有端口
                        3、可以使用连续的端口,比如“--sport 1000:1024"表示从1000到1024的所有端口
                            (包括1000、1024),”--sport 1024:1000“和”--sport 1000:1024“的效果相同
                        4、当省略第一个冒号时,默认从端口0开始,比如”--sport:1000"表示从0到1000的所有端口
                        5、当省略第二个冒号时,默认是65535,比如“--sport 1000:"表示从1000到65535的所有端口
                        6、在端口号前加感叹号表示取反(在感叹号与端口号之间必须有空格),比如”--sport!1000" 表示除1000号外的所有端口,“--sport ! 1000:1024"表示从1000到1024的所哟偶端口(包括1000、1024)之外的所有端口
                        # iptables -A INPUT -p tcp --sport 1000 -j DROP(阻止源端口为1000的所有tcp通信)
                        # iptables -A INPUT -p tcp --sport 1000:1024 -j DROP(阻止源端口大于等于1000且小于等于1024的所有tcp通信)
                         
    (18)--dport:基于数据包的目的端口来匹配包,该参数配置方法与--sport参数相同
                # iptables -A INPUT -p tcp --dport 1000 -j DROP (阻止目标端口为1000的所有tcp通信)
                # iptables -A INPUT -p tcp --dport 1000:1024 -j DROP (阻止目标端口大于等于1000且小于等于1024的所有tcp通信)
                         
    (19)-m multiport --sport<端口>:源端口多端口匹配,最多可以使用15个端口,使用逗号分隔,该参数必须与-p参数配合使用
            # iptables -A INPUT -p tcp -m multiport --sport 1000,1024,1025 -j DROP (阻止源端口为1000,1024,1025的所有tcp通信)
             
    (20)-m multiport --dport<端口>:目的端口多端口匹配,最多可以使用15个端口,以逗号隔开,该参数必须与-p参数配合使用
            # iptables -A INPUT -p tcp -m multiport --dport 1000,1024 -j DROP(阻止目的端口为1000,1024的所有tcp通信)
             
    (21)-m multiport --port<端口>:同端口多端口匹配,通端口是指源端口和目的端口使用相同端口的数据包
     
    (22)--tcp-flags<检查标记列表><条件列表>:匹配指定的tcp标记,有两个参数,它们都是列表,列表内部用英文的都好作为分隔符,这两个列表之间用空格分开,第一个参数指定需要检查的tcp标记,第二个参数指定”在第一个列表中出现过的且必须被设为1(即状态是打开的)的“标记(第一个列表中其他的标记必须设置0),也就是说第一个参数提供检查范围,第二个参数提供被设置的调价(就是哪些位置1).这个匹配操作可以识别SYN、ACK、FIN、RST、URG、PSH标记另外还可以使用ALL、NONE。ALL是指选定所有的标,NONE是指未选定任何标记,也可以在参数钱使用感叹号取反
                         # iptables -p tcp --tcp-flags SYN,ACK,FIN SYN -j DROP(阻止SYN标记被设置而FIN和ACK标记没有被设置的所有tcp通信)
                         # iptables -p tcp --tcp-flags ALL NONE -j DROP (阻止所有标记没有被设置为1的所有tcp通信)
                         # iptables -p tcp --tcp-flags ! SYN,FIN,ACK SYN -j DROP (阻止FIN、ACK被设置为而SYN没有被设置的所有tcp通信)
                             
    (23)--syn:匹配SYN标记被设置而ACK和RST标记没有设置的数据包(该参数与”iptables -p tcp --tcp-flags SYN,ACK,RST SYN" 有相同的效果)
     
    (24)--icmp-type<类型数值>:根据ICMP类型匹配包,类型的指定可以使用十进制数值
                    # iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
                    # iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT
                     
                    # iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
                    # iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
     
    (25)--mac-source<MAC地址>:基于数据包的源MAC地址匹配数据包,只能在PREROUTING,FORWARD,INPUT链中使用
                            # iptables -A INPUT -m mac --mac-source 00:50:56:C0:00:01 -j DROP
                             
    (26)--uid-owner<UID>:按生成包的用户ID(UID)来匹配数据包,如例阻止所有UID为555的用户向外的所有通信
                            # iptables -A OUTPUT -m owner --uid-owner 555 -j DROP
                             
    (27)--gid-owner<GID>:按生成包的用户所在的组的ID(GID)来匹配数据包
                            # iptables -A OUTPUT -m owner --gid-owner 555 -j DROP
     
    (28)--sid-owner<SID>;按生成数据包的会话ID(SID)来匹配外出数据包(一个进程以及它的子进程或他的多个线程都有同一个SID)
                            # iptables -A OUTPUT -m owner --sid-owner 178 -j DROP
                             
    (29)--state<状态列表>:匹配数据包的状态,多个状态使用逗号分隔,例子将允许连接本机的FTP服务器
                            # iptables -A INPUT -p tcp --dport 21 -j ACCEPT
                            # iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
                            # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
                     例:# iptables -A INPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT   
             
    (30)DNAT:用于进行目标网络地址转换,就是重写数据包的目标IP地址,如果一个数据包被匹配,那么和他属于同一个流的所有的包都会被自动的转换,然后就可以被路由到正确的主机或网络DNAT在实际工作中非常有用,比如一台Web服务器位于局域网,而且没有可在Internet上使用的真实 IP地址,这时就可以使用DNAT让防火墙把所有到它自己HTTP端口的包转发给局域网内部真正的Web服务器,目的地址也可以是一个范围,这样DNAT会为每一个流随机分配一个IP地址,DNAT只能在nat表的PREROUTING,OUTPUT链中使用,或是被这两条链调用的链中,DNAT需要使用--to-dest参数指定写入IP包头的地址(也就是数据包要被转发到的地方);   还可以再地址后指定一个活一个范围的端口,如 --to-dest 192.168.1.10:80或192.168.1.10:80-100
          
    # iptables -t nat -A PREROUTING -p tcp -d 202.13.0.2 --dport 80 -j DNAT --to-dest 192.168.0.1-192.168.0.10  
      (意思是说外面要访问内部的web服务器,需要经过202.13.0.2:80端口来访问,经过这个ip时需要进行目标网络地址转换,每个数据流被随机分配一个要转发到的地址,但同一个数据流总是使用同一个地址,也可以只指定一个IP地址作为参数)
         
    (31)SNAT:用于进行源网络地址转换,就是重写数据包的源IP地址,SNAT需要使用--to-source参数指定写入IP包头的地址,
            SNAT的其他语法与DNAT相同,SNAT只能有nat表的POSTROUTING链使用
             
        # iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 202.103.0.2
             (意思为当内网的ip:192.168.0.0/24网段要访问外网时需要将这些内网ip伪装成公网ip才可以访问到外部)
         
    (32)MASQUERADE:该目标与SNAT作用相同,只是使用该目标时不需要指明--to-source。MASQUERADE是专门设计用于那些动态获取IP地址的连接(比如拨号上网等),如果有固定的IP地址,可推荐直接使用SNAT(也可以使用MASQUERADE)和SNAT一样,只能用于nat表的POSTROUTING链,而且它只有一个参数(不是必需的)--to-ports用于指定端口,使用该参数时必需配合-p使用
                # iptables -t nat -A POSTROUTING -p tcp -j MASQUERADE --to-ports 1024-5000   
                # iptables -t nat -A POSTROUTING -p tcp -s 192.168.0.0/24 -j MASQUERADE
                 
    (33)REDIRECT:在防火墙所在的主机内部转发数据包或流到另外一个端口(比如把所有去往端口HTTP的包REDIRECT到HTTP代理,当然这都发生在主机内部,本地生成的数据包都会被映射到127.0.0.1,换句话说这个目标把要转发的数据包的目的地址改写为本机主机的IP,在实现透明代理时就需要使用该目标(局域网内的主机不需要知道代理服务器的存在就可以正常上网被称为透明代理)。该目标只能用在nat表的PREROUTING、OUTPUT链和被它们调用的自定义链REDIRECT只有一个选项--to-ports用于指定端口(可以使用--to-ports 8080-8888的方式指定一个端口范围)。
                  举个例子:将本机tcp的80端口收到的数据包转发到本机的8080端口
                # iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
             
    (34)REJECT:REJECT和DROP作用相同,区别在于它除了阻止数据包之外,还向发送者返回错误信息,该目标只用用在INPUT、FORWARD,OUTPUT和它们的子链,而且包含REJECT的链也只能被它们调用,否则不能发挥作用,它只有一个选项--reject-with用于控制返回的错误信息的类型
            # iptables -A FORWARD -p tcp --dport 22 -j REJECT --reject-with tcp-reset    
             
    ##################### iptables策略配置方法 #########################
     
    (1)使用命令:在使用命令修改了策略后,需要使用如下命令让策略永久生效   # service iptables save    
     
    (2)使用脚本:另外一个方法让策略永久生效的,编写一个脚本将所有的策略放入脚本然后每次开机自动运行该脚本(/etc/rc.locl)
        #!/bin/sh
        # 清除filter、nat表的所有侧率及计数器
        iptables -t filter -F
        iptables -t filter -Z
        iptables -t filter -X
        iptables -t nat -F
        iptables -t nat -Z
        iptables -t nat -X
        #定义filter、nat表默认策略
        iptables -t filter -P INPUT DROP
        iptables -t filter -p OUTPUT DROP
        iptables -t filter -P FORWARD ACCEPT
        iptables -t nat -P OUTPUT ACCEPT
        iptables -t nat -P PREROUTING ACCEPT
        iptables -t nat -P POSTROUTING ACCEPT
        #允许IP转发
        /bin/echo "1" >/pro/sys/net/ipv4/ip_forward
        #载入内核模块
        modprode ip_conntrack-ftp
        modprode ip_nat_ftp
        #允许本机的所有通信
        iptables -t filter -A INPUT -i lo -j ACCEPT
        iptables -t filter -A OUTPUT -o lo -j ACCEPT
        #运行ping
        iptables -t filter -A INPUT -m icmp --icmp-type 8 -j ACCEPT
        iptables -t filter -A OUTPUT -m icmp --icmp-type 0 -j ACCEPT
        iptables -t filter -A INPUT -m icmp --icmp-type 0 -j ACCEPT
        iptables -t filter -A OUTPUT -m icmp --icmp-type 8 -j ACCEPT
        #允许查询本机的DNS服务
        iptables -t filter -A OUTPUT -o eth0 -p udp --dport 53 -j ACCEPT
        iptables -t filter -A INPUT -i eth0 -p udp --sport 53 -j ACCEPT
        #允许访问本机的FTP服务
        iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT
        iptables -t filter -A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
        iptables -t filter -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
     
    #################################### 常见服务策略配置 ##########################################
    下面是iptables中通过策略允许常见服务通信的例子,除特殊说明外都架设服务于防火墙在同一主机且filter表INPUT及OUTPUT链默认策略时DROP,如果将IPtables做为网关或其他情况可根据实现情况选择不同的表(下列策略都假设服务使用默认端口)
     
    (1)NTP服务
    # iptables -A INPUT -p udp -s 192.168.0.0/24 --dport 123 -j ACCEPT
    # iptables -A INPUT -p udp -s 192.168.0.0/24 --dport 37 -j ACCEPT
     
    # iptables -A OUTPUT -p udp -d 192.168.0.0/24 --sport 123 -j ACCEPT
    # iptables -A OUTPUT -p udp -d 192.168.0.0/24 --sport 37 -j ACCEPT
     
    (2)FTP服务
    # iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 21 -j ACCEPT
    # iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
     
    # iptables -A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
    # iptables -A OUTPUT -p tcp -d 192.168.0.0/24 --sport 21 -j ACCEPT
     
    (3)DHCP服务
    # iptables -A INPUT -p udp -s 192.168.0.0/24 --dport 67 -j ACCEPT
    # iptables -A INPUT -p udp -s 192.168.0.0/24 --sport 68 -j ACCEPT
     
    # iptables -A OUTPUT -p udp -d 192.168.0.0/24 --dport 67 -j ACCEPT
    # iptables -A OUTPUT -p udp -d 192.168.0.0/24 --sport 68 -j ACCEPT
     
    (4)DNS服务
    # iptables -A INPUT -p udp -s 192.168.0.0/24 --dport 53 -j ACCEPT
    # iptables -A INPUT -p udp -s 192.168.0.0/24 --sport 53 -j ACCEPT
     
    # iptables -A OUTPUT -p udp -d 192.168.0.0/24 --dport 53 -j ACCEPT
    # iptables -A OUTPUT -p udp -d 192.168.0.0/24 --sport 53 -j ACCEPT
     
    (5)Samba服务
    # iptables -A INPUT -p udp -s 192.168.0.0/24 --dport 137:139 -j ACCEPT
    # iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 137:139 -j ACCEPT
    # iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 445 -j ACCEPT
    # iptables -A INPUT -p udp -s 192.168.0.0/24 --dport 445 -j ACCEPT
     
    # iptables -A OUTPUT -p udp -d 192.168.0.0/24 --sport 137:139 -j ACCEPT
    # iptables -A OUTPUT -p tcp -d 192.168.0.0/24 --sport 137:139 -j ACCEPT
    # iptables -A OUTPUT -p udp -d 192.168.0.0/24 --sport 445 -j ACCEPT
    # iptables -A OUTPUT -p tcp -d 192.168.0.0/24 --sport 445 -j ACCEPT
     
    (6)NFS 服务
    1、在使用iptables允许NFS服务时需要修改/etc/sysconfig/nfs文件的下列参数,是NFS使用固定端口
    LOCKD_TCPPORT=4001
    LOCKD_UDPPORT=4001
    LOCKD_PORT=4002
    STATD_PORT=4000
    STATD_OUTGOING_PORT=4003
    2、配置iptables策略
    # iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 4000:4003 -j ACCEPT
    # iptables -A INPUT -p udp -s 192.168.0.0/24 --dport 4000:4003 -j ACCEPT
    # iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 2049 -j ACCEPT
    # iptables -A INPUT -p udp -s 192.168.0.0/24 --dport 2049 -j ACCEPT
    # iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 111 -j ACCEPT
    # iptables -A INPUT -p udp -s 192.168.0.0/24 --dport 111 -j ACCEPT
     
    # iptables -A OUTPUT -p tcp -d 192.168.0.0/24 --sport 4000:4003 -j ACCEPT
    # iptables -A OUTPUT -p udp -d 192.168.0.0/24 --sport 4000:4003 -j ACCEPT
    # iptables -A OUTPUT -p tcp -d 192.168.0.0/24 --sport 2049 -j ACCEPT
    # iptables -A OUTPUT -p udp -d 192.168.0.0/24 --sport 2049 -j ACCEPT
    # iptables -A OUTPUT -p tcp -d 192.168.0.0/24 --sport 111 -j ACCEPT
    # iptables -A OUTPUT -p udp -d 192.168.0.0/24 --sport 111 -j ACCEPT
     
    (7)日志服务
    # iptables -A INPUT -p udp -s 192.168.0.0/24 --dport 514 -j ACCEPT
    # iptables -A OUTPUT -p udp -d 192.168.0.0/24 --sport 514 -j ACCEPT
     
    (8)HTTP/HTTPS服务
    # iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 80 -j ACCEPT
    # iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 443 -j ACCEPT
     
    # iptables -A OUTPUT -p tcp -d 192.168.0.0/24 --sport 80 -j ACCEPT
    # iptables -A OUTPUT -p tcp -d 192.168.0.0/24 --sport 443 -j ACCEPT
     
    (8)WebDav服务
    # iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 9800 -j ACCEPT
    # iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 9802 -j ACCEPT
     
    # iptables -A OUTPUT -p tcp -d 192.168.0.0/24 --sport 9800 -j ACCEPT
    # iptables -A OUTPUT -p tcp -d 192.168.0.0/24 --sport 9802 -j ACCEPT
     
    (9)SMTP服务
    # iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 25 -j ACCEPT
     
    # iptables -A OUTPUT -p tcp -d 192.168.0.0/24 --sport 25 -j ACCEPT
     
    (10)POP3/POP3s服务
    # iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 110 -j ACCEPT
    # iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 995 -j ACCEPt
     
    # iptables -A OUTPUT -p tcp -d 192.168.0.0/24 --sport 110 -j ACCEPT
    # iptables -A OUTPUT -p tcp -d 192.168.0.0/24 --sport 995 -j ACCEPT
     
    (11)IMAP/IMAPs服务
    # iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 143 -j ACCEPT
    # iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 993 -j ACCEPT
     
    # iptalbes -A OUTPUT -p tcp -d 192.168.0.0/24 --sport 143 -j ACCEPT
    # iptables -A OUTPUT -p tcp -d 192.168.0.0/24 --sport 993 -j ACCEPT
     
    (12)LDAP服务
    # iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 389 -j ACCEPT
    # iptables -A OUTPUT -p tcp -d 192.168.0.0/24 --sport 389 -j ACCEPT
     
    (14)SSH服务
    # iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 22 -j ACCEPT
    # iptables -A OUTPUT -p tcp -d 192.168.0.0/24 --sport 22 -j ACCEPT
     
    (15)telnet服务
    # iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 23 -j ACCEPT
    # iptables -A OUTPUT -p tcp -d 192.168.0.0/24 --sport 23 -j ACCEPT
     
    (16)MySQL服务
    # iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 3306 -j ACCEPT
    # iptables -A OUTPUT -p tcp -d 192.168.0.0/24 --sport 3306 -j ACCEPT
     
    (17)SQL Server
    # iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 1433 -j ACCEPT
    # iptables -A OUTPUT -p tcp -d 192.168.0.0/24 --sport 1433 -j ACCEPT
    展开全文
  • Iptables防火墙策略详解 一、iptables Linux 系统的防火墙——netfilter/iptables IP信息包过滤系统,它实际上由两个组件netfilter 和 iptables组成。 主要工作在网络层,针对IP数据包。体现在对包内的IP地址、端口...

    Iptables防火墙策略详解

    一、iptables

    Linux 系统的防火墙——netfilter/iptables

    • IP信息包过滤系统,它实际上由两个组件netfilter 和 iptables组成。
    • 主要工作在网络层,针对IP数据包。体现在对包内的IP地址、端口等信息的处理上。

    netfilter/iptables 关系

    netfilter:属于“内核态”(Kernel Space,又称为内核空间)的防火墙功能体系。是内核的一部分,由一些数据包过滤表组成,这些表包含内核用来控制数据包过滤处理的规则集。
    
    iptables:属于“用户态”(User Space,又称为用户空间)的防火墙管理体系。是一种用来管理Linux防火墙的命令程序,它使插入、修改和删除数据包过滤表中的规则变得容易,通常位于/sbin/iptables目录下。
    
    netfilter/iptables后期简称为iptables。iptables是基于内核的防火墙,其中内置了raw、mangle、nat和 filter 四个规则表。表中所有规则配置后,立即生效,不需要重启服务。
    

    二、四表五链

    • 规则表的作用:容纳各种规则链
    • 规则链的作用:容纳各种防火墙规则
    • 表里有链,链里有规则

    四表:

    • raw表:确定是否对该数据包进行状态跟踪。包含两个规则链,OUTPUT、PREROUTING。
    • mangle表:修改数据包内容,用来做流量整形的,给数据包设置标记。包含五个规则链,INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING。
    • nat表:负责网络地址转换,用来修改数据包中的源、目标IP地址或端口。包含三个规则链,OUTPUT、PREROUTING、POSTROUTING。
    • filter表:负责过滤数据包,确定是否放行该数据包(过滤)。包含三个规则链,INPUT、FORWARD、OUTPUT。

    在 iptables 的四个规则表中,mangle 表和 raw 表的应用相对较少。

    五链:

    • INPUT:处理入站数据包,匹配目标IP为本机的数据包。
    • OUTPUT:处理出站数据包,一般不在此链上做配置。
    • FORWARD:处理转发数据包,匹配流经本机的数据包。
    • PREROUTING链:在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网中的80端口映射到路由器外网端口上。
    • POSTROUTING链:在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网。

    数据包到达防火墙时,规则表之间的优先顺序: raw > mangle > nat > filter

    规则链之间的匹配顺序:

    主机型防火墙:

    • 入站数据(来自外界的数据包,且目标地址是防火墙本机):PREROUTING --> INPUT --> 本机的应用程序

    • 出站数据(从防火墙本机向外部地址发送的数据包):本机的应用程序 --> OUTPUT --> POSTROUTING

    网络型防火墙:

    • 转发数据(需要经过防火墙转发的数据包):PREROUTING --> FORWARD --> POSTROUTING
    规则链内的匹配顺序:
    自上向下按顺序依次进行检查,找到相匹配的规则即停止(LOG策略例外,表示记录相关日志)若在该链内找不到相匹配的规则,则按该链的默认策略处理(未修改的状况下,默认策略为允许)
    

    三、iptables的安装

    CentOS 7默认使用firewalld防火墙,没有安装 iptables,若想使用iptables防火墙。必须先关闭firewalld防火墙,再安装 iptables

    systemctl stop firewalld.service
    systemctl disable firewalld.service
    
    yum -y install iptables iptables-services
    systemctl start iptables.service
    

    (1)iptables防火墙的配置方法:

    • 1、使用iptables 命令行。
    • 2、使用system-config-firewall

    iptables 命令行配置方法:

    命令格式:
    iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
    

    注意事项:
    不指定表名时,默认指filter表
    不指定链名时,默认指表内的所有链
    除非设置链的默认策略,否则必须指定匹配条件
    选项、链名、控制类型使用大写字母,其余均为小写

    常用的控制类型:

    • ACCEPT:允许数据包通过。

    • DROP:直接丢弃数据包,不给出任何回应信息。

    • REJECT:拒绝数据包通过,会给数据发送端一个响应信息。

    • SNAT:修改数据包的源地址。

    • DNAT:修改数据包的目的地址。

    • MASQUERADE:伪装成一个非固定公网IP地址。

    • LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。

    • LOG只是一种辅助动作,并没有真正处理数据包。

    常用的管理选项:

    -A :在指定链的末尾追加(--append)一条新的规则
    -I :在指定链的开头插入(--insert)一条新的规则,未指定序号时默认作为第一条规则
    -R :修改、替换(--replace)指定链中的某一条规则,可指定规则序号或具体内容
    -P :设置指定链的默认策略(--policy)
    -D :删除(--delete)指定链中的某一条规则,可指定规则序号或具体内容
    -F :清空(--flush)指定链中的所有规则,若未指定链名,则清空表中的所有链
    -L :列出(--list)指定链中所有的规则,若未指定链名,则列出表中的所有链
    -n :使用数字形式(--numeric)显示输出结果,如显示 IP 地址而不是主机名
    -v :显示详细信息,包括每条规则的匹配包数量和匹配字节数
    --line-numbers:查看规则时,显示规则的序号
    

    添加新的规则:

    iptables -t filter -A INPUT -p icmp -j REJECT
    iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT
    

    查看规则列表:

    iptables [-t 表名] -n -L [链名] [--line-numbers]
    或
    iptables -[vn]L				#注意:不可以合写为 -Ln
    
    iptables -n -L --line-numbers
    

    设置默认策略:

    iptables [-t 表名] -P <链名> <控制类型>
    
    iptables -P INPUT DROP
    iptables -P FORWARD DROP 
    #一般在生产环境中设置网络型防火墙、主机型防火墙时都要设置默认规则为DROP,并设置白名单
    

    删除规则:

    iptables -D INPUT 2
    iptables -t filter -D INPUT -p icmp -j REJECT
    

    注意:

    • 1.若规则列表中有多条相同的规则时,按内容匹配只删除的序号最小的一条
    • 2.按号码匹配删除时,确保规则号码小于等于已有规则数,否则报错
    • 3.按内容匹配删数时,确保规则存在,否则报错

    清空规则:

    iptables [-t 表名] -F [链名] 
    
    iptables -F INPUT
    iptables -F
    

    注意:

    • 1.-F 仅仅是清空链中的规则,并不影响 -P 设置的默认规则,默认规则需要手动进行修改
    • 2.-P 设置了DROP后,使用 -F 一定要小心!

    #防止把允许远程连接的相关规则清除后导致无法远程连接主机,此情况如果没有保存规则可重启主机解决

    • 3.如果不写表名和链名,默认清空filter表中所有链里的所有规则

    规则的匹配:

    1.通用匹配 可直接使用,不依赖于其他条件或扩展,包括网络协议、IP地址、网络接口等条件。

    协议匹配:-p 协议名
    地址匹配:-s 源地址、-d 目的地址	#可以是IP、网段、域名、空(任何地址)
    接口匹配:-i 入站网卡、-o 出站网卡
    
    iptables -A FORWARD ! -p icmp -j ACCEPT 
    iptables -A INPUT -s 192.168.80.11 -j DROP
    iptables -I INPUT -i ens33 -s 192.168.80.0/24 -j DROP
    

    (2)隐含匹配
    要求以特定的协议匹配作为前提,包括端口、TCP标记、ICMP类型等条件。

    端口匹配:--sport 源端口、--dport 目的端口
    #可以是个别端口、端口范围
    --sport 1000			匹配源端口是1000的数据包
    --sport 1000:3000		匹配源端口是1000-3000的数据包
    --sport :3000			匹配源端口是3000及以下的数据包
    --sport 1000:			匹配源端口是1000及以上的数据包
    注意:--sport 和 --dport 必须配合 -p <协议类型> 使用
    
    iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
    iptables -I FORWARD -d 192.168.80.0/24 -p tcp --dport 24500:24600 -j DROP
    
    TCP标记匹配:--tcp-flags TCP标记
    iptables -I INPUT -i ens33 -p tcp --tcp-flags SYN,RST,ACK SYN -j ACCEPT
    #丢弃SYN请求包,放行其他包
    
    ICMP类型匹配:--icmp-type ICMP类型		
    #可以是字符串、数字代码、、目标不可达
    “Echo-Request”(代码为 8)表示 请求
    “Echo-Reply”(代码为 0)表示 回显
    “Destination-Unreachable”(代码为 3)表示 目标不可达
    关于其它可用的 ICMP 协议类型,可以执行“iptables -p icmp -h”命令,查看帮助信息
    
    iptables -A INPUT -p icmp --icmp-type 8 -j DROP		#禁止其它主机ping 本机
    iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT	#允许本机ping 其它主机
    
    iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT	#当本机ping 不通其它主机时提示目标不可达
    #此时其它主机需要配置关于icmp协议的控制类型为 REJECT
    iptables -A INPUT -p icmp -j REJECT	
    

    (3)显式匹配
    要求以“-m 扩展模块”的形式明确指出类型,包括多端口、MAC地址、IP范围、数据包状态等条件。

    多端口匹配:-m multiport --sports 源端口列表
    		    -m multiport --dports 目的端口列表
    			
    iptables -A INPUT -p tcp -m multiport --dport 80,22,21,20,53 -j ACCEPT			
    iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT			
    			
    IP范围匹配:-m iprange --src-range IP范围
    iptables -A FORWARD -p udp -m iprange --src-range 192.168.80.100-192.168.80.200 -j DROP			
    #禁止转发源地址位于192.168.80.100-192.168.80.200的udp数据包
    
    MAC地址匹配:-m mac --mac-source MAC地址
    iptables -A FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP
    #禁止来自某MAC 地址的数据包通过本机转发
    
    状态匹配:-m state --state 连接状态
    常见的连接状态:
    NEW :与任何连接无关的,还没开始连接
    ESTABLISHED :响应请求或者已建立连接的,连接态
    RELATED :与已有连接有相关性的(如FTP 主被动模式的数据连接),衍生态,一般与ESTABLISHED 配合使用
    INVALID :不能被识别属于哪个连接或没有任何状态
    
    iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP
    #禁止转发与正常 TCP 连接无关的非--syn 请求数据包(如伪造的网络攻击数据包)
    
    iptables -I INPUT -p tcp -m multiport --dport 80,22,21,20,53 -j ACCEPT
    iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT			
    iptables -I INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -P INPUT DROP 
    

    四、SNAT原理与应用:

    • SNAT 应用环境:局域网主机共享单个公网IP地址接入Internet(私有不能早Internet中正常路由)
    • SNAT原理:修改数据包的源地址。

    SNAT转换前提条件:

    • 1.局域网各主机已正确设置IP地址、子网掩码、默认网关地址
    • 2.Linux网关开启IP路由转发

    临时打开:

    echo 1 > /proc/sys/net/ipv4/ip_forward
    或
    sysctl -w net.ipv4.ip_forward=1
    
    永久打开:
    vim /etc/sysctl.conf
    net.ipv4.ip_forward = 1 		#将此行写入配置文件
    
    sysctl -p 						#读取修改后的配置
    
    
    SNAT转换1:固定的公网IP地址:
    iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to 12.0.0.1
    或
    iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to-source 12.0.0.1-12.0.0.10
    									内网IP	     出站 外网网卡                 外网IP或地址池		
    
    SNAT转换2:非固定的公网IP地址(共享动态IP地址):
    iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j MASQUERADE
    
    小知识扩展: 一个IP地址做SNAT转换,一般可以让内网 100到200 台主机实现上网。
    

    DNAT原理与应用:

    • DNAT 应用环境:在Internet中发布位于局域网内的服务器

    • DNAT原理:修改数据包的目的地址。

    DNAT转换前提条件:

    • 1.局域网的服务器能够访问Internet
    • 2.网关的外网地址有正确的DNS解析记录
    • 3.Linux网关开启IP路由转发
    vim /etc/sysctl.conf
    net.ipv4.ip_forward = 1 	
    
    sysctl -p
    

    DNAT转换1:发布内网的Web服务

    #把从ens33进来的要访问web服务的数据包目的地址转换为 192.168.80.10
    iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.80.10
    或
    iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.80.10
                                 入站 外网网卡  外网IP											   内网服务器IP
    
    iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80 -j DNAT --to 192.168.80.10-192.168.80.20
    	
    	
    DNAT转换2:发布时修改目标端口			
    #发布局域网内部的OpenSSH服务器,外网主机需使用250端口进行连接
    iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.80.10:22
    
    #在外网环境中使用SSH测试
    ssh -p 250 root@12.0.0.1
    
    yum -y install net-tools 		#若没有 ifconfig 命令可提前使用 yum 进行安装
    ifconfig ens33
    
    
    注意:使用DNAT时,同时还有配合SNAT使用,才能实现响应数据包的正确返回
    

    小知识扩展:

    • 主机型防火墙 主要使用 INPUT、OUTPUT 链,设置规则时一般要详细的指定到端口

    • 网络型防火墙 主要使用 FORWARD 链,设置规则时很少去指定到端口,一般指定到IP地址或者到网段即可

    防火墙规则的备份和还原

    导出(备份)所有表的规则
    iptables-save > /opt/ipt.txt
    
    导入(还原)规则
    iptables-restore < /opt/ipt.txt
    
    将iptables规则文件保存在 /etc/sysconfig/iptables 中,iptables服务启动时会自动还原规则
    iptables-save > /etc/sysconfig/iptables
    systemctl stop iptables						#停止iptables服务会清空掉所有表的规则
    systemctl start iptables					#启动iptables服务会自动还原/etc/sysconfig/iptables 中的规则
    
    展开全文
  • iptables防火墙策略

    2021-08-24 18:25:32
    iptables的四表五链: 四表:raw,mongon,nat,filter 五链:PREROUTING, POSTROUTING, FORWAROD, INPUT, OUTPUT

    Linux内核是linux内部最核心的软件
    包括过滤机制netfilter:是linux内核里面的一个模块,对进出网卡的数据进行管理
    iptables给netfilter传参(人–》iptables–》netfilter)

    firewalld 新式防火墙 iptables 老式防火墙
    firewalld 是对iptables进行新的封装,底层仍然是是使用的是iptables的基本命令
    uname -r 查看linux内核版本
    防火墙是防止别人攻击,对进出的数据进行限制。防火墙不能检查病毒,查看病毒

    iptables的四表五链:
    四表:raw,mongon,nat,filter
    mangle表:–》给数据打标记
    nat表:–》dnat和snat
    数据包的流走机制:表是链的集合 表的优先级:raw–>mangle–>nat–>filter

    五链:PREROUTING, POSTROUTING, FORWAROD, INPUT, OUTPUT

    iptables 后的几种状态: ACCEPT 接收 REJECT 拒绝 DROP 丢弃 默认为 DROP
    -A 在链尾追加一条新的规则
    append -I 在指定位置插入一条新的服务
    insert -R 修改、替换指定位置或内容的规则
    replace 拒绝性 reject 给与回复
    -P 设置指定链的默认策略
    -L 列表查看各条规则信息
    –line-numbers 查看规则信息时显示股则的行号
    -n 以数字形式显示 IP 地址、端口等信息
    -v 显示数据包个数、字节数等详细信息
    –sport 源端口
    –dport 目的端口
    –sport 源端口:目标端口 一个端口范围
    -m multiport 加载多端口的模块
    m:match -m iprange --src-range 规定一个网段 *
    iptables 常见的操作命令 链名必须放在前面并且大写 *

    iptables 语法格式: iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 目标动作或则跳转]
    iptables -L -t 表名 可以查看表中使用了哪些链
    iptables -L 默认查看 filter 表
    iptables -L --line-num -v 显示规则的编号 -v 显示规则的详细信息
    iptables -I INPUT 1 -s 192.168.29.124/32 -p tcp --dport 80 -j ACCEPT 插入数据放在第一 行
    iptables -L --line -v -n 可以查看规则 用数字并且显示详细信息 iptables -I INPUT 1 -s 192.168.29.24/24 -p tcp --dport 22 -j ACCEPT iptables -R INPUT 1 -s 192.168.29.24/24 -p tcp --dport 22 -j ACCEPT 修改这个规则
    iptables -P INPUT ACCEPT 修改默认规则
    iptables -F 清除的规则是不会清除默认的规则的 需要 iptables -P 链名 状态
    iptables -A INPUT -s 192.168.24.29 -j DROP 丢弃针对一个 IP 地址
    iptables -A INPUT -s 192.168.24.29/32 -j DROP 丢弃针对一个 IP 地址
    iptables -A INPUT -s 192.168.24.29/24 -j DROP 丢弃针对一个 IP 网段
    iptables -I INPUT -p icmp --icmp-type 0 -j ACCEPT 可以接收 可以 ping 的通
    iptables -I INPUT -p icmp --icmp-type 0 -j DROP 不可以接收
    iptables -I INPUT -p icmp -j LOG 可以形成 log 日志 tailf /var/log/messages iptables -D INPUT 4 删除第 4 条规则

    脚本实例:

    #!/bin/bash 
    
    #清空iptables规则
    iptables -t filter -F
    
    #不允许其他机器ping本机,但是本机可以ping其他机器
    iptables -t filter -A INPUT -p icmp --icmp-type 8 -j DROP
    
    #不允许访问80端口
    iptables -t filter -A INPUT -p tcp --dport 80 -j DROP
    

    设置INPUT链的默认规则为DROP

    iptables -P INPUT DROP

    iptables -t filter -A INPUT -s 192.168.100.88 -p tcp --dport 22 -j ACCEPT

    tcpdump -i ens33 -p tcp --dport 3306

    清空iptables和nat表的里面的规则

    iptables -t filter -F
    iptables -t nat -F

    设置filter表的默认策略为ACCEPT

    iptables -t filter -P INPUT ACCEPT

    iptables的命令选项:

    -A(为追加,放到末尾)
    -I(指定位置添加)

    可以man一下iptables查看更多信息

    docker
    在iptables新建自定义链

    -j 有四种选项
    ACCEPT
    DROP(直接丢弃,不给回复)
    REJECT(拒绝但是给回复)
    LOG(记录日志功能)

    总结下iptables的命令语法
    [root@web-server nginx]# tcpdump -i ens33 -p icmp -n
    抓包
    协议: tcp 、udp、icmp、arp等网络层和传输层
    -p tcp
    -p icmp
    -p arp

    ip地址:源ip和目的ip
    端口号: 源端口和目的端口
    	src port 
    	dst port
    
      src  host   源主机--》源ip  source 
      dst  host  目的主机 --》目的ip  destination
      src  net   源网段--》源ip  source   192.168.10.0/24
      dst  net  目的网段 --》目的ip  destination
    

    ===========
    iptables的条件:
    1.协议:tcp udp icmp
    -p protocol 小写的p
    -p icmp --icmp-type 8 ping请求报文
    -p icmp --icmp-type 0 ping响应报文
    2.端口号:
    -p tcp --sport
    -p tcp --dport
    -p udp --sport
    -p udp --dport
    -p tcp --sport 20:80
    iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT
    3.ip地址
    -s source
    -d destination
    iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP
    4.mac地址
    5.状态
    6.其他
    -i in-interface
    -o out-interface

    iptables -I INPUT -i ens33 -p tcp --tcp-flags SYN,RST,ACK SYN -j REJECT
    ens33接口上不接收tcp三次握手的第一个包–》不允许新的连接产生了

    -m 加模块
    [root@localhost ~]# iptables -A FORWARD -m mac --mac-source 00:0C:29:27:55:3F -j DROP
    [root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT
    [root@localhost ~]# iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP

    /var/log/message(内核记录的日志)

    iptables -t filter -N SWY(新建一个链)
    iptables -t filter -A SWY -p tcp --dport 22 -j ACCEPT (给SWY这条链加一条策略)
    iptables -A INPUT -p tcp --dport 22 -j SWY(INPUT链把22号端口的tcp协议给SWY这个链处理)

    内核的最大并发数:1024个

    如何开机让linux去加载保存的iptables配置文件?
    iptables-restore < /etc/sysconfig/iptables-config(手动重新加载)
    开机手动执行脚本(放到/etc/rc.local里面就开机自动执行脚本)

    状态机制:

    ftp的连接:service先yum install vsftpd -y 再 service vsftpd start
    client先yum install ftp lftp -y 再ftp service的IP名
    会产生一个新的传输数据的链路,且数据端口随机

    lsmod(查看内核加载了哪些模块)
    modprobe(加载模块)

    采用状态机制来开放ftp服务的iptables规则
    #!/bin/bash
    iptables -P INPUT DROP

    open ssh

    iptables -A INPUT -p tcp --dport 22 -j ACCEPT

    open ftp

    iptables -A INPUT -p tcp --dport 21 -j ACCEPT

    open ftp data link

    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    让linux内核加载支持ftp状态的检查的模块

    modprobe nf_conntrack_ftp
    modprobe nf_nat_ftp

    存放linux内核模块路径
    /lib/modules/4.18.0-193.el8.x86_64/kernel/net/netfilter

    ftp:文件传输协议–》搭建一个文件服务器–》有大量的视频,文档需要共享
    linux:ftp,lftp
    windows:ftp://ip地址
    匿名用户访问会访问到:/var/ftp/pub里(使用的是ftp用户,他的家目录就是/var/ftp/pub)
    普通用户访问是到自己的家目录下
    root用户是不允许访问的

    ftp的主动模式:
    命令链路是21号端口
    数据链路是20号端口000

    脚本:、
    #!/bin/bash

    截取出日志里面的访问root用户的ip地址

    /tmp/denv_ip.txt是专门存放的iptables阻止过的黑名单

    #!/bin/bash
    
    for i in $(cat /var/log/secure |awk '/Failed password for root/{print $11}'|sort|uniq -c |sort -nr|awk '{print $2}')
    do	
    	if grep $i /tmp/deny_ip.txt;then
    		echo "此ip $i 已经在iptables防火墙里阻止了"
    	else
    		iptables -I INPUT -s $i -p tcp --dport 22 -j DROP
    	echo $i >> /tmp/deny_ip.txt
    	fi
    done
    

    (iptables -I INPUT 放到第一条,如果iptables -A INPUT 追加到末尾的话会被第一条规则给覆盖)

    统计加排序命令:cat file |sort|uniq -c |sort -nr
    sort -u (去重)
    sort -n (排序)
    uniq -c (加统计相同的)

    在写一个脚本clear的iptables(在规定的时间内)

    grep 192.168.0.54 /var/log/secure(查看此文件里是否有此ip地址)

    展开全文
  • iptables策略iptables -L #查看现有防火墙所有策略iptables -F #清除现有防火墙策略只允许特定流量通过,禁用其他流量1.允许SSH流量(重要)iptables -A INPUT -p tcp --dport 22 -j ACCEPT #-A追加的意思;--dport...
  • iptables 防火墙策略

    千次阅读 2018-02-27 20:38:03
    ##一.iptables iptable是用来设置,维护检查内核的ip包过滤规则的,就是规则设置工具。配置防火墙的主要工作就是添加,修改删除一些规则,规则就是网络管理员预定义的一些条件。 三表五链: filter表:过滤...
  • 首先,请允许我先介绍一下什么是iptables? iptables 并不是真正的防火墙,可以理解为一个客户端代理。用户通过iptables这个代理,将用户的安全设定执行到对应的“安全框架”(netfilter).所以说,iptables其实是...
  • d 282.202.203.83/32 -j i_XXXXX_i > -A OUTPUT -d 222.202.62.253/32 -j i_XXXXX_i > -A OUTPUT -d 222.202.60.62/32 -j i_XXXXX_i > -A OUTPUT -d 224.93.27.235/32 -j i_XXXXX_i 当我尝试删除此链时: iptables -...
  • 背景 测试服务器为阿里云的centos7.2的版本,自带的防火墙为firewall。因对firewall不熟,安装了iptables...于是关掉iptables,可是访问还是慢,就想着之前正常,安装了iptables之后这么慢,把他卸载了再试试看。卸...
  • iptables防火墙与S/DNAT策略iptables防火墙 iptables防火墙
  • linux防火墙iptables策略

    2016-08-20 23:05:06
    实现防火墙功能需要软件来调用内核中的netfilter模块2.linux.2.6的内核中使用的软件是iptablesiptables实现的功能有过滤,地址转换.1.iptables中对于同一服务的不同规则的匹配顺序是至上往下,一旦匹配到规则则不再...
  • linux下清空iptables规则具体方法如下:iptables -t nat -Fiptables -t nat -Xiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPTiptables -t nat -P OUTPUT ACCEPTiptables -t mangle -...
  • iptables如何删除一条规则

    千次阅读 2021-02-22 09:32:55
    – 查找所有规则 iptables -L INPUT --line-numbers – 删除一条规则 iptables -D INPUT 11 (注意,这个11是行号,是iptables -L INPUT --line-numbers 所打印出来的行号)
  • Linux如何清空所有iptables规则.docx
  • 这是通过做了几套不同省赛和市赛题总结出来的一些相关的防火墙策略题,只供参考,如有侵犯联系即删。 一、iptables结构及基本命令 首先查看iptables是否安装执行命令:#iptables--version 然后查看iptables...
  • 文章目录概念介绍防火墙和netfilter/iptablesiptables的表与链iptables规则iptables 服务管理iptables配置命令链的操作规则操作规则匹配条件常用规则示例配置 概念介绍 防火墙和netfilter/iptables 从逻辑上讲。...
  • iptables策略

    2017-11-12 15:27:00
    方法1: iptables -P INPUT ACCEPT iptables -A INPUT -i em2 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -i em2 -s 168.235.21.0/24 -p tcp --dport 22 -j ACCEPT ...
  • 原标题:通过iptables设置Linux防火墙INPUT策略小白电脑课堂开课啦!游戏团战就死机,多半是废了。大家好我是小白。说到防火墙,同学们都会想到开了防火墙就会卡的Windows。而在Linux中,防火墙是个很重要的服务。...
  • /bin/bash usage() { echo "usage(): " echo "xxx_network --add|-a Append rule " echo "xxx_network --delete|-d Delete rule" echo "xxx_network --search|-s Print the rules" } iptables_add() { local ret ret...
  • iptables概述 iptables 并不是真正的防火墙,可以理解为一个客户端代理。用户通过iptables这个代理,将用户的安全设定执行到对应的“安全框架”(netfilter).所以说,iptables其实是一个命令行工具,位于用户空间...
  • IPTABLES 防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在linux内核中.数据包过滤表中,规则被分组放在我们所谓的链(chain)中. iptables5个链 INPUT:...
  • iptables防火墙策略,黑白名单添加方式 查看iptablesiptables-services服务是否安装 rpm -qa | grep iptables iptables-1.4.21-28.el7.x86_64 安装iptables-services yum -y install iptables-services 查看...
  • 两种编写防火墙策略的工具ip table,firewalld 防火墙策略,控制进出 firewalld的域 trusted信任域, 接受所有的网络连接 home家庭域 用于家庭网络,仅接受ssh,mdns,ipp-client,samba-client,dhcpv6-client服务...
  • 什么是iptables,常用人员有哪些? iptables是常见于Linux系统下的应用层防火墙工具,是Linux内核集成的IP信息包过滤系统。如果linux系统连接到因特网或LAN、服务器或连接LAN和因特网的代理服务器,则系统有利于在...
  • 一.查看现有防火墙策略 二.增加防火墙策略(以22端口为例) 说明: 1.-A代理在末尾追加,如果要在开头插入使用 -I 2.多IP使用逗号(半角...iptables -I INPUT -m iprange --src-range 192.168.220.128-192.168.22...
  • 一、实验环境(rhel7.0版本) 主机环境:rhel7.0 各主机信息 主机名 IP server 172.25.254.183 desktop 172.25.254.133 ...二、iptables介绍 ...iptables 并不是真正的...用户通过iptables这个代理,...
  • IPTables 策略详解

    2013-01-19 17:29:52
    ############IPtables可用操作(1)-L:显示所选链接的所有策略:#iptables-L-n查看iptables策略(2)-A:在所选的链最尾部添加一条新的策略:#iptables-AINPUT-s192.168.0.1-jDROP(3)-D:从所选链中删除策略,可以通过将...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,046
精华内容 7,618
关键字:

删除iptables策略