• iptables 防火墙


    iptables防火墙

    一、iptables防火墙基本概述

    1.应用场景

    1.主机安全
    2.端口转发/ip转发
    3.内部共享上网
    

    2.iptables工作流程

    1.配置防火墙规则可以添加在下面,也可以添加在前面,是有顺序的
    2.匹配规则时是按照从上到下依次匹配
    3.只要符合匹配到的规则,就不再往下匹配
    4.如果都没有匹配上,则匹配默认规则
    5.默认规则最后执行,默认规则是全部都允许
    
    6.匹配次数越多的规则越往前放
    

    二、iptables四表五链

    #四表:
    1.filter表
    2.nat表
    3.raw表
    4.mangle表
    
    #五链:
    1.INPUT
    2.OUTPUT
    3.FORWARD
    4.PREROUTING
    5.POSTROUTING
    

    1.filter表

    主要作用就是阻止和允许访问
    #包含的链:
    1.INPUT:过滤进入主机的数据包
    2.OUTPUT:过滤从主机出去的数据包
    3.FORWARD:转发经过主机的数据包
    

    2.nat表

    主要作用就是IP和端口转发
    #包含的链:
    1.PREROUTING:数据流入时,改写数据包地址
    2.POSTROUTING:数据流出时,改写数据包地址
    3.OUTPUT:过滤从主机出去的数据包
    

    三、iptables安装

    1.安装

    [root@m01 ~]# yum install -y iptables-services
    

    2.安装iptbles支持的内核模块

    [root@m01 ~]# modprobe ip_tables
    [root@m01 ~]# modprobe iptable_filter
    [root@m01 ~]# modprobe iptable_nat
    [root@m01 ~]# modprobe ip_conntrack
    [root@m01 ~]# modprobe ip_conntrack_ftp
    [root@m01 ~]# modprobe ip_nat_ftp
    [root@m01 ~]# modprobe ipt_state
    
    #查看加载的模块
    [root@m01 ~]# lsmod | egrep 'filter|nat|ipt'
    
    modprobe ip_tables
    modprobe iptable_filter
    modprobe iptable_nat
    modprobe ip_conntrack
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe ipt_state
    

    3.启动

    [root@m01 ~]# systemctl stop firewalld.service
    
    [root@m01 ~]# systemctl start iptables.service
    

    4.iptables常用命令

    #常用参数
    1.链管理:
        -N:new, 自定义一条新的规则链;
        -X:delete,删除自定义的规则链;
            注意:仅能删除 用户自定义的 引用计数为0的 空的 链;
        -P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:
               ACCEPT:接受
               DROP:丢弃
               REJECT:拒绝
        -E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除;
        
    2.规则管理:
        -A:append,追加规则;
        -I:insert, 插入,要指明位置,省略时表示第一条;
        -D:delete,删除;
            (1) 指明规则序号;
            (2) 指明规则本身;
        -R:replace,替换指定链上的指定规则;
    
        -F:flush,清空指定的规则链;
        -Z:zero,置零;
            iptables的每条规则都有两个计数器:
                (1) 匹配到的报文的个数;
                (2) 匹配到的所有报文的大小之和;        
    3.查看:
    	-L:list, 列出指定鏈上的所有规则;
        -n:numberic,以数字格式显示地址和端口号;
        -v:verbose,详细信息;
            -vv, -vvv
        -x:exactly,显示计数器结果的精确值;
        --line-numbers:显示规则的序号;
    

    四、iptables常用操作

    1.查看防火墙

    #默认是filter表
    [root@m01 ~]# iptables -nL
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
    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         
    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
    

    2.查看指定表

    #-t:	指定表
    [root@m01 ~]# iptables -nL -t nat
    

    3.清除防火墙规则

    [root@m01 ~]# iptables -F
    [root@m01 ~]# iptables -X
    [root@m01 ~]# iptables -Z
    

    4.添加防火墙规则

    [root@m01 ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j DROP
    
    [root@m01 ~]# iptables -nL
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
    

    5.删除防火墙规则

    #防火墙规则加序号
    [root@m01 ~]# iptables -nL --line-numbers
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination         
    1    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:2
    2    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
    
    Chain FORWARD (policy ACCEPT)
    num  target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    num  target     prot opt source               destination
    
    #删除指定id的规则
    [root@m01 ~]# iptables -D INPUT 3
    

    五、防火墙配置实例

    1.禁止访问22端口

    [root@m01 ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j DROP
    
    iptables 	#防火墙命令
    -t 			#指定表
    filter 		#filter表
    -A 			#追加规则到链
    INPUT 		#指定链
    -p 			#指定协议
    tcp 		#tcp协议
    --dport 	#指定端口
    22 			#端口号
    -j 			#指定动作
    DROP		#丢弃
    

    2.禁止IP访问

    [root@m01 ~]# iptables -t filter -A INPUT -p tcp -s 10.0.0.7 -j DROP
    
    -s			#指定IP
    10.0.0.7	#IP地址或网段
    

    3.禁止IP网段

    [root@m01 ~]# iptables -t filter -A INPUT -p tcp -s 10.0.0.0/24 -i eth0 -j DROP
    
    -i			#指定网卡
    

    4.只允许某个IP访问

    #方式一:
    [root@m01 ~]# iptables -t filter -A INPUT -p tcp -s 10.0.0.1 -j ACCEPT
    [root@m01 ~]# iptables -t filter -A INPUT -p tcp -s 10.0.0.0/24 -j DROP
    
    #方式二:
    [root@m01 ~]# iptables -t filter -A INPUT -p tcp ! -s 10.0.0.1 -i eth0 -j DROP
    
    !  			#取反
    

    5.拒绝端口范围

    #如果端口是连续的
    [root@m01 ~]# iptables -t filter -A INPUT -p tcp --dport 22:200 -j DROP
    
    #如果端口不是连续的
    [root@m01 ~]# iptables -t filter -A INPUT -p tcp -m multiport --dport 22:200,3000:4000 -j DROP 
    

    六、企业如何配置

    1.配置之前

    1.考虑一下哪些机器需要防火墙
    2.该服务器部署了哪些服务
    	nginx
    	sshd
    3.服务的端口
    	80
    	443
    	22
    4.其他端口全部拒绝
    

    2.配置

    3.防火墙规则永久生效

    #防火墙配置文件,当重启防火墙时,会读取配置文件,配置文件中的配置才会永久生效
    [root@m01 /home/lhd]# vim /etc/sysconfig/iptables
    
    #想要永久生效配置,配置好防火墙策略,测试成功
    [root@m01 /home/lhd]# service iptables save
    iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
    

    七、iptables转发

    1.端口转发

    [root@m01 ~]# iptables -t nat -A PREROUTING -d 10.0.0.61 -p tcp --dport 5555 -j DNAT --to-destination 172.16.1.7:22
    
    [root@m01 ~]# iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 10.0.0.61
    

    2.IP转发

    iptables -t nat -A PREROUTING -d 10.0.1.61 -j DNAT --to-destination 172.16.1.7
    iptables -A FORWARD -i eth1 -s 172.16.1.0/24 -j ACCEPT
    iptables -A FORWARD -o eth0 -s 172.16.1.0/24 -j ACCEPT
    iptables -A FORWARD -i eth0 -d 172.16.1.0/24 -j ACCEPT
    iptables -A FORWARD -o eth1 -d 172.16.1.0/24 -j ACCEPT
    iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 10.0.0.61
    

    3.内部共享上网

    echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
    sysctl -p
    
    iptables -A FORWARD -i eth1 -s 172.16.1.0/24 -j ACCEPT
    iptables -A FORWARD -o eth0 -s 172.16.1.0/24 -j ACCEPT
    iptables -A FORWARD -i eth0 -d 172.16.1.0/24 -j ACCEPT
    iptables -A FORWARD -o eth1 -d 172.16.1.0/24 -j ACCEPT
    iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 10.0.0.61
    
  • 相关阅读:
    VRRP(Virtual Router Redundancy Protocol)业界标准
    CISCO快速转发
    89、C++中将临时变量作为返回值时的处理过程
    87、C++函数调用的压栈过程
    82、类什么时候会析构?
    84、智能指针的原理、常用的智能指针及实现
    81、构造函数一般不定义为虚函数的原因
    80、构造函数析构函数可否抛出异常
    79、虚析构函数的作用,父类的析构函数是否要设置为虚函数?
    78、构造函数、析构函数的执行顺序?
  • 原文地址:https://www.cnblogs.com/xiaolang666/p/13678944.html
Copyright © 2020-2023  润新知