写点什么

【Linux】iptables 之防火墙的应用及案例、策略、备份与还原(2)

作者:A-刘晨阳
  • 2023-04-23
    北京
  • 本文字数:2522 字

    阅读完需:约 8 分钟

一、案例——基于 IP 和端口的防火墙控制


实验环境:为网关、Web 服务器配置防火墙规则需求描述:1、为网站服务器编写入站规则  (1)允许接受响应本机 ping 测试请求的各种 ICMP 数据包  (2)允许访问本机中位于 80 端口的 Web 服务,禁止访问其他端口的 TCP 请求  (3)允许发往本机以建立连接或与已有连接相关的各种 TCP 数据包  (4)禁止其他任何形式的入站访问数据


搭建实验环境,结果如下:







为网站服务器编写入站规则允许接受响应本机 ping 测试请求的各种 ICMP 数据包




禁止其他任何形式的入站访问数据



内网服务器 ping 网关测试:



网关 ping 内网服务器测试:



允许访问本机中位于 80 端口的 Web 服务,禁止访问其他端口的 TCP 请求



允许发往本机以建立连接或与已有连接相关的各种 TCP 数据包



保存 iptables 设置




测试






[root@iptables~]# elinks 192.168.1.5
复制代码




[root@iptables~]# ftp 192.168.1.5ftp:connect:连接超时
复制代码


2、为网关服务器编写转发规则   (1)允许局域网中的主机访问 Internet 中是 Web、FTP、DNS、邮件服务  (2)禁止局域网中的主机访问 web.qq.com、w.qq.com、im.qq.com 等网站,以防止通过 WebQQ 的方式进行在线聊天


允许局域网中的主机访问 Internet 中是 Web、FTP、DNS、邮件服务



禁止局域网中的主机访问 web.qq.com、w.qq.com、im.qq.com 等网站






保存 iptables 规则配置


二、SNAT 策略

1、作用

作用:局域网主机共享单个公网 IP 地址接入 Internet

2、SNAT 策略的原理

  源地址转换,Source Network Address Translation  修改数据包的源地址


3、企业共享上网案例


前提条件:  局域网各主机正确设置 IP 地址/子网掩码  局域网各主机正确设置默认网关地址   Linux 网关支持 IP 路由转发




3.1、固定的外网 IP 地址






3.2、非固定外网 IP 地址或 ADSL

三、DNAT 策略

1、DNAT 原理

  在 Internet 环境中,通过网关服务器中正确设置 DNAT 策略可实现企业所注册的网站或域名必须对应公网 IP 地址。



前提条件  局域网的 Web 服务器能够访问 Internet  网关的外网 IP 地址有正确的 DNS 解析记录  Linux 网关支持 IP 路由转发

1.1、DNAT 转发规则 1:发内网 Web 服务




1.2、DNAT 转换规则 2:发布时修改目标端口





四、iptables 防火墙规则的备份与还原

  设置完防火墙规则后,可备份规则到文件中,以便日后进行还原,或以备份规则为依据编写防火墙脚本


> 为导出   iptables-save< 为导入   iptables-restore

1、导出(备份)防火墙规则

iptables-save 工具
复制代码


语法格式:


iptables-save > 要导出的路径
复制代码


实例:


2、导入(还原)防火墙规则

iptables-restore 工具
复制代码


语法格式:


iptables-restore < 要导入的路径
复制代码


实例:


查看规则,现在是空的:



导入规则:



  重定向出的文件也可以是任意自定义的文件,若将规则保存到/etc/sysconfig/iptables 中,iptables 启动时自动还原规则。

五、企业防火墙脚本编程与规范【附加】

1、“网关型”防火墙脚本

好的防火墙脚本要包括以下部分:


  • 定义基本变量,便于脚本的维护、重用

  • 加载必要的内核模块,将频繁用到的模块载入到内核

  • 调整/proc 参数,Linux 内核控制及调优

  • 具体的防火墙规则,按表、链分别设置规则,包括默认策略

1.1、定义基本变量便于脚本的维护、重用

#!/bin/bashINET_IF=”eth0”INET_IP=”192.168.1.108”LAN_IF=”eth1”LAN_IP=”192.168.100.1”LAN_NET=”192.168.100.0/24”LAN_WWW_IP=”192.168.100.100”IPT=”/sbin/iptables”MOD=”/sbin/modprobe”CTL=”/sbin/sysctl”
复制代码

1.2、加载必要的内核模块将频繁用到的模块载入内核

……MOD ip_conntrackMOD ipt_LOGMOD xt_tcpudpMOD xt_multiport$MOD xt_macMOD ip_conntrack_ftp   支持 FTP 访问的连接状态跟踪

1.3、调整/proc 参数 Linux 内核控制及调优

……$CTL -w net.ipv4.ip_forward=1            开启路由转发功能$CTL -w net.ipv4.default_ttl=128         默认生存周期$CTL -w net.ipv4.icmp_echo_ignore_all=1            根本不要响应 echo 包。请不要设置为缺省,它可能在你正被利用成为 DoS 攻击的跳板时可能有用$CTL -w net.ipv4.icmp_echo_ignore_broadcasts=1     ping 子网的子网地址,所有的机器都应该予以回应。这可能成为非常好用的拒绝服务攻击工具。设置为 1 来忽略这些子网广播消息以下配置为优化 TCP 响应能力$CTL -w net.ipv4.tcp_syncookies=1        tcp syncookie,默认关闭$CTL -w net.ipv4.tcp_syn_retries=3       外向 syn 握手重试次数,默认 4$CTL -w net.ipv4.tcp_synack_retries=3    syn-ack 握手状态重试次数,默认 5,遭受 syn-flood 攻击时改为 1 或 2$CTL -w net.ipv4.tcp_fin_timeout=60      默认 60,tcp fin 状态超时时间$CTL -w net.ipv4.tcp_max_syn_backlog=3200     syn 队列,默认1024,> 1280 可能工作不稳定,需要修改内核源码参数……
复制代码

1.4、具体的防火墙规则

按表、链分别设置规则,包括默认策略


清空原有规则:$IPT -t filter -X   删除 filter 表内的用户自定义的链IPT -t filter -F$IPT -t nat -F

设置默认策略:IPT -p FORWARD DROP$IPT -P OUTPUT ACCEPT

其他具体规则:IPT -t nat -A POSTROUTING -s INET_IF -j SNAT --to-source IPT -t nat -A PREROUTING -i INET_IP -p tcp --dport 80 -j DNAT --to-destination$LAN_WWW_IP

1.5、实例:




2、“主机型”防火墙脚本

  • 将 OUTPUT 链的默认策略设为允许,不添加其他规则

  • 将 INPUT 链的默认策略设为拒绝,只放行对 Web 服务的访问,以及响应本机访问请求的数据包

2.1、定义基本变量

IPT=”/sbin/iptables”……

2.2、调整/proc 参数

……

2.3、设置具体的防火墙规则

  1>删除自定义的链、清空已有规则IPT -t filter -F

  2>定义默认策略IPT -p FORWARD DROP$IPT -P OUTPUT ACCEPT

   3>设置 filter 表中的各种规则IPT -A INPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT

2.4、实例:






发布于: 刚刚阅读数: 3
用户头像

A-刘晨阳

关注

还未添加个人签名 2022-06-16 加入

本人公众号《小刘Linux》,优质博主,欢迎大家的关注

评论

发布
暂无评论
【Linux】iptables之防火墙的应用及案例、策略、备份与还原(2)_Linux_A-刘晨阳_InfoQ写作社区