震惊!!Linux iptables防火墙居然可以这样使用??!!

80 阅读2分钟

Linux iptables防火墙

1、Linux防火墙

  • iptables防火墙,centos7版本之前是系统的默认防火墙
  • firewalld防火墙,centos7版本之后的默认防火墙
  • 都是基于Linux内核子系统netfilter

2、安装iptables服务端

yum -y install iptables-servicessystemctl start iptables

3、4表5链

  • 每一张表作用不一样,表中存储链,链中存储规则

    #表rawmanglenat                #对数据包的源地址、目的地址、端口进行转换filter            #是否放行对应数据包
    
    #链INPUT            #入站OUTPUT            #出站FORWARD            #转发PREROUTING        #路由前处理POSTROUTING        #路由后处理
    
  • 数据流处理过程

    image-20240823160702256

4、规则编写

  • 如果只是入站、出站、转发只需要调整filter表中的链

  • 如果需要进行NAT转换,需要调整NAT表

  • 规则语法

    iptables -t 表名 -I 链名 五元组条件 动作iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT            #允许所有主机访问本机的TCP/80端口入站#链名需要大写、动作需要大写#不指定表名,默认filter
  • 举例

    #查看规则,filteriptables -nLiptables -t nat -nLiptables -nL --line-numbers
    
    #添加入站规则,允许tcp/80入站iptables -I INPUT -p tcp --dport 80 -j ACCEPT
    
    #删除规则iptables -D INPUT 3
    
    #设置规则链的默认规则(默认情况下,如果规则链中没有任何规则,是允许所有的)iptables -P INPUT DROP                #拒绝所有入站
    
    #保存规则到文件中iptables-save > /etc/sysconfig/iptables
    

5、SNAT(源地址转换)

  • 一般是内网访问外网,内网主机是私网地址,无法在公网上进行使用,内网主机访问外网时需要在网络边界设备上进行SNAT转换,将内网主机的私网地址转换为公网地址,再访问外网主机

  • 实验环境

    image-20240823173733384

    #开启转发echo 1 > /proc/sys/net/ipv4/ip_forward
    
    #创建iptables的SNAT规则iptables -t nat -I POSTROUTING -s 192.168.10.0/24 -o ens36 -j SNAT --to-source 202.101.122.35
    
    #在iptables中允许转发iptables -I FORWARD -j ACCEPT
    

6、DNAT(目的地址转换)

  • 一般是外网访问内网,外网主机是无法访问内网IP的,只能访问企业边界的外网IP,所以需要提前在企业边界的设备上添加DNAT映射表,将内网服务器的某个服务映射到边界设备外网IP的某个端口上,从而外网主机访问边界设备的外网IP就会被映射到内网主机的服务

  • 实验环境

    image-20240823181102737

    #开启转发#创建iptables的nat规则iptables -t nat -I PREROUTING -p tcp --dport 80 -d 202.101.122.35 -i ens36 -j DNAT --to-destination 192.168.10.10#允许iptables转发