zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    JavaEE——SpringMVC(11)--拦截器
    JavaEE——SpringMVC(10)--文件上传 CommonsMultipartResovler
    codeforces 460A Vasya and Socks 解题报告
    hdu 1541 Stars 解题报告
    hdu 1166 敌兵布阵 解题报告
    poj 2771 Guardian of Decency 解题报告
    hdu 1514 Free Candies 解题报告
    poj 3020 Antenna Placement 解题报告
    BestCoder5 1001 Poor Hanamichi(hdu 4956) 解题报告
    poj 1325 Machine Schedule 解题报告
  • 原文地址:https://www.cnblogs.com/xiaolang666/p/13678944.html
Copyright © 2011-2022 走看看