zoukankan      html  css  js  c++  java
  • 防火墙iptables

    防火墙iptables

    iptables是开源的基于数据包过滤的防火墙工具。

    iptables应用场景

    1、主机防火墙(filter表的INPUT链)。
    2、局域网共享上网(nat表的POSTROUTING链)。NAT功能。
    3、端口及IP映射(nat表的PREROUTING链),硬防的NAT功能。
    4、IP一对一映射。
    

    iptables工作流程

    iptables是采用数据包过滤机制工作的,所以它会对请求的数据包的包头数据进行分析,并根据我们预先设定的规则进行匹配来决定是否可以进入主机。
    1.防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
    2.如果匹配上了规则,即明确表明是阻止还是通过,此时数据包就不在向下匹配新规则了。
    3.如果所有规则中没有明确表明是阻止还是通过这个数据包,也就是没有匹配上规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
    4.防火墙的默认规则是对应链的所有的规则执行完以后才会执行的(最后执行的规则)。
    

    iptables四表五链

    Filter

    NAT

    iptables工作原理图

    iptables环境安装

    [root@lb01 ~]# yum -y install iptables-services
    [root@lb01 ~]# systemctl start iptables.service
    [root@lb01 ~]# 
    [root@lb01 ~]# 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         
    [root@lb01 ~]# 
    

    加载防火墙内核模块

    [root@lb01 ~]# modprobe ip_tables
    [root@lb01 ~]# modprobe iptable_filter
    [root@lb01 ~]# modprobe iptable_nat
    [root@lb01 ~]# modprobe ip_conntrack
    [root@lb01 ~]# modprobe ip_conntrack_ftp
    [root@lb01 ~]# modprobe ip_nat_ftp
    [root@lb01 ~]# modprobe ipt_state
    [root@lb01 ~]# lsmod | egrep 'filter|nat|ipt'
    nf_nat_ftp             12770  0 
    nf_conntrack_ftp       18638  1 nf_nat_ftp
    iptable_nat            12875  0 
    nf_nat_ipv4            14115  1 iptable_nat
    nf_nat                 26787  2 nf_nat_ftp,nf_nat_ipv4
    ipt_REJECT             12541  2 
    nf_reject_ipv4         13373  1 ipt_REJECT
    nf_conntrack          133387  7 nf_nat_ftp,nf_nat,xt_state,nf_nat_ipv4,xt_conntrack,nf_conntrack_ftp,nf_conntrack_ipv4
    iptable_filter         12810  1 
    ip_tables              27115  2 iptable_filter,iptable_nat
    libcrc32c              12644  3 xfs,nf_nat,nf_conntrack
    [root@lb01 ~]# 
    [root@lb01 ~]# systemctl restart iptables.service 
    [root@lb01 ~]# 
    
    

    iptables基础命令

    #查看防火墙规则(默认查看Filter表)
    [root@lb01 ~]# 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         
    [root@lb01 ~]# 
    
    #清除防火墙规则
    iptables -F <- 清除所有规则,不会处理默认的规则
    iptables -X <- 删除用户自定义的链
    iptables -Z <- 链的计数器清零(数据包计数器与数据包字节计数器)
    
    #添加防火墙规则
    iptables -t <-指定表d(efault: `filter')
    iptables -A <-把规则添加到指定的链上,默认添加到最后一行。
    iptables -I <-插入规则,默认插入到第一行(封IP)。
    iptables -D <-删除链上的规则
    
    #网络连接状态
    NEW:已经或将启动新的连接
    ESTABLISHED:已建立的连接
    RELATED:正在启动的新连接
    INVALID:非法或无法识别的
    
    #删除某个规则
    iptables -nL --line-numbers 查看规则号码
    iptables -D INPUT 1 删除指定链上的指定序号
    

    iptables配置Filter表

    #禁止某个端口访问
    [root@lb01 ~]# iptables -A INPUT -p tcp --dport 22 -j DROP
    规则解释:
    -p       #<==指定过滤的协议-p(tcp,udp,icmp,all)
    --dport  #<==指定目标端口(用户请求的端口)。
    -j       #<==对规则的具体处理方法(ACCEPT,DROP,REJECT,SNAT/DNAT)
    --sport  #<==指定源端口。
    
    #禁止某个ip访问
    [root@lb01 ~]# iptables -A INPUT -p tcp -s 10.0.1.6 -i eth0 -j DROP
    规则解释:
    -s       #<==指定源地址或网段(192.168.1.0/24)。 ! 取反。
    -d       #<==指定目的地址(nat表prerouting)。
    -i       #<==进入的网络接口(eth0,eth1)。
    -o       #<==出去的网络接口(eth0,eth1)。
    
    #禁止源地址访问是10.0.1.6的主机访问22端口
    [root@lb01 ~]# iptables -A INPUT -p tcp -s 10.0.1.6 --dport 22 -j DROP
    
    #禁止除了源地址是10.0.1.6以外的主机访问22端口
    [root@lb01 ~]# iptables -A INPUT -p tcp ! -s 10.0.1.6 --dport 22 -j DROP
    
    #禁止10.0.1.6访问22和80端口
    [root@lb01 ~]# iptables -I INPUT -s 10.0.1.6 -p tcp -m multiport --dport 22,80 -j DROP
    规则解释:
    -m 参数表示增加扩展匹配功能,multiport 实现不连续多端口扩展匹配
    
    #禁止10.0.1.6访问22到100的所有端口
    [root@lb01 ~]# iptables -A INPUT -p tcp -s 10.0.1.6 --dport 22:100 -j DROP
    
    #禁止ping本机
    [root@lb01 ~]# iptables -A INPUT -p icmp -j DROP
    
    #只要不是10.0.1.6就不允许ping本机
    [root@lb01 ~]# iptables -A INPUT -p icmp --icmp-type 8 ! -s 10.0.1.6 -j DROP
    

    NAT共享上网

    #lb01
    [root@lb01 ~]# iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 10.0.1.5
    [root@lb01 ~]# echo 'net.ipv4.ip_forward = 1' >>/etc/sysctl.conf
    规则解释:
    -t nat :NAT表
    -A POSTROUTING :POSTROUTING链
    -s 172.16.1.0/24 :源地址172.16.1.0/24
    -j SNAT :SNAT 改写源地址
    --to-source 10.0.0.61 :将源地址改写成10.0.0.61
    
    #lb02
    [root@lb02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
    GATEWAY=172.16.1.5
    [root@lb02 ~]# ifdown eth1 && ifup eth1
    [root@lb02 ~]# vim /etc/resolv.conf 
    nameserver 10.0.1.254
    
    

    端口映射

    #访问10.0.1.5的9000端口,跳转到172.16.1.6的22端口
    [root@lb01 ~]# iptables -t nat -A PREROUTING -d 10.0.1.5 -p tcp --dport 9000 -j DNAT --to-destination 172.16.1.6:22
    命令拆解:
    表:nat
    链:PREROUTING
    目标IP:10.0.1.5
    目标端口:9000
    协议:tcp
    动作:DNAT
    目标IP:172.16.1.6
    目标端口:22
    改写数据包的目标IP和端口
    用到的是PREROUTING链
    

    IP映射

    [root@lb01 ~]# ip a add 10.0.1.59/24 dev eth0 label eth0:0
    [root@lb01 ~]# iptables -t nat -A PREROUTING -d 10.0.1.59 -j DNAT --to-destination 172.16.1.6
    
    

    iptables规则保存

    保持命令
    iptables-save
    
    iptables-save > iptables_m01
    iptables-restore < iptables_m01
    
    iptables-save > /etc/sysconfig/iptables
    
    
  • 相关阅读:
    centos 用户管理
    rsync 实验
    文件共享和传输
    PAT 1109 Group Photo
    PAT 1108 Finding Average
    PAT 1107 Social Clusters
    PAT 1106 Lowest Price in Supply Chain
    PAT 1105 Spiral Matrix
    PAT 1104 Sum of Number Segments
    PAT 1103 Integer Factorization
  • 原文地址:https://www.cnblogs.com/opesn/p/11644131.html
Copyright © 2011-2022 走看看