iptables防火墙【☆】

  一、防火墙的基础      

        防火墙分为硬件防火墙软件防火墙,硬件防火墙有专门的设备:如国产华为、绿盟等,作为网关层做地址转换等安全防护。很多公司基本都会使用硬件防火墙做第一道防御,在核心业务上再添加软件防火墙提高安全性能。iptables防火墙是Linux系统软件类型防火墙的一种,是centOS7之前版本默认的防火墙,由netfilter和iptables组成。

        netfilter属于内核态的功能体系,是一个内核模块,有多个数据包过滤表组成,其中包含数据包的过滤处理规则集,并根据规则处理IP数据包(raw、mangle、 nat 和 filter 四个规则表,表中所有规则配置后,立即生效无需重启);iptables是属于用户态的管理工具,如同firewalld、ufw,是一个防火墙应用程序,用来实现防火墙规则集的增删改查

1)四表五链

iptables防火墙的四表五链的关系:表中有链,链中有规则。

四表

raw表:确定是否对该数据包进行状态跟踪。包含两个规则链,OUTPUT、PREROUTING。
mangle表修改数据包内容,用来做流量整形的,给数据包设置标记。包含五个规则链,INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING。
nat表:负责网络地址转换,用来修改数据包中的源、目标IP地址或端口。包含三个规则链,OUTPUT、PREROUTING、POSTROUTING。
filter表:负责过滤数据包,确定是否放行该数据包(过滤)。包含三个规则链,INPUT、FORWARD、OUTPUT。

五链

INPUT:处理入站数据包,匹配目标IP为本机的数据包。
OUTPUT:处理出站数据包,一般不在此链上做配置。
FORWARD:处理转发数据包,匹配流经本机的数据包(可以理解为一个路由器的功能)。
PREROUTING:在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网服务器的IP和端口映射到路由器的外网IP和端口上。
POSTROUTING:在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网。

2)数据包过滤的匹配流程和优先级

规则表之间的顺序:raw ---> mangle ---> nat --->filter

3)链的匹配顺序

入站数据:PREROUTING ---> INPUT  --->本机应用程序

出站数据:本机应用程 ---> OUTPUT ---> POSTROUTING

转发数据:PREROUTING ---> FORWARD---> POSTROUTING

4)规则的匹配顺序

按顺序从上往下依次匹配,匹配到即停止(log策略除外);若没有匹配的规则,则按该链的默认策略处理。

过滤入站数据包:filter表中的INPUT链

过滤出站数据包:filter表中的OUTPUT链

过滤转发数据包:filter表中的FORWARD链

修改内网转发到外网数据包的源IP地址:nat表中的POSTROUTING链

修改外网转发到内网数据包的目的IP地址:nat表中的PREROUTING链

二、使用iptables

1)安装iptables和iptables-service服务

        centOS7默认使用firewalld防火墙,安装Linux系统时选择桌面安装也会安装iptables,想要使用iptables先要永久关闭firewalld,然后安装iptables和iptables-service,可以使用systemctl管理应用服务。

2)iptables命令行配置格式

iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]

iptables命令-t  指定表名操作选项链名匹配条件

-j 常用控制类

-t filter   或无,默认指定filter

-t nat     指定nat   

-t mangle   指定mangle   

-t raw  指定raw   

增  -A   -I

改  -R  -P

删  -D  -F

查  -L -n -v

INPUT

OUTPUT

FORWARD

PREROUTING

HOSTROUTING

-p 协议

-s  源IP

-d  目的IP

-i  入站网卡接口

-o 出站网卡接口

--dport 目的端口

--sport 源端口

ACCEPT

REJECT

DROP

SNAT

DNAT

3)常用的控制类型

ACCEPT:允许数据包通过;
DROP:拒绝通过,直接丢弃数据包,不给出任何回应信息;


REJECT:拒绝数据包通过,会给数据发送端一个响应信息;


SNAT:修改数据包的源地址;

DNAT:修改数据包的目的地址;
REDIRECT:重定向改变目的端口,将接受的包转发至本机的不同端口;
MASQUERADE:伪装成一个非固定公网IP地址;
LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。LOG只是一种辅助动作,并没有真正处理数据包。

4)常用的操作选项

① 增操作

-A :在指定链的末尾追加(--append)一条新的规则

iptables -t 表名 -A 链名 匹配条件 -j 控制类型

-I :在指定链的开头插入(--insert)一条新的规则,未指定序号时默认作为第一条规则

iptables -t 表名 -A 链名 序号 匹配条件 -j 控制类型

想要重新连接需要到服务器端把那条命令删除或替换成放开

② 修改操作

-R :修改、替换(--replace)指定链中的某一条规则,可指定规则序号或具体内容

iptables -t 表名 -R 链名 序号 序号 新规则内容


-P :设置指定链的默认策略(--policy)

iptables -t 表名 -P 链名 ACCEPT/DROP/REJECT

③ 删除操作

-D :删除(--delete)指定链中的某一条规则,可指定规则序号或具体内容

iptables -t 表名 -D 链名 序号/内容


-F :清空(--flush)指定链中的所有规则,若未指定链名,则清空表中的所有链。(慎用)

iptables -t 表名 -F 链名     #如果不指定链名则删除清空所有链的规则

清空规则时需要注意到默认规则有没有指定为drop

④ 查看操作

iptables -t 表名 -L -n -v --line-numbers 链名

iptables -t 表名 -nvL --line-numbers 链名

-L :列出(--list)指定链中所有的规则,若未指定链名,则列出表中的所有链


-n :使用数字形式(--numeric)显示输出结果,如显示 IP 地址而不是主机名


-v :显示详细信息,包括每条规则的匹配包数量和匹配字节数


--line-numbers:查看规则时,显示规则的序号


⑤ 设置白名单

√ 生产环境中通常使用白名单设置规则

iptables -t 表名 -A 链名 匹配条件 -j ACCEPT     #先配置需要开放的规则1...2...3...

iptables -t 表名 -A 链名 -j DROP #在规则最后设置指定默认为禁止所有

5)规则的匹配条件

① 通用的匹配

-i  指定入站网卡(可以是IP、网段、域名、空即任何地址)

-o 出站网卡接口(可以是IP、网段、域名、空即任何地址)

-p 协议

-s  源IP

-d  目的IP

----------------------------------------------------------------------------------------------------------------------------

② 隐含匹配

隐含匹配必须指定协议

-p tcp/udp --dport 目标端口/扣扣范围

-p tcp/udp --sport 目标端口/扣扣范围

-p icmp --icmp-type 8(请求) / 0 (回显) / 3 (目标不可达)

 iptables -A INPUT ! -p icmp -j ACCEPT     #取反

 --dport 目的端口

--sport 源端口

TCP标志位匹配:--tcp-flags TCP标志位

③ 显示匹配

-m 扩展模块支出类型,包括多端口、mac地址、IP范围、数据包状态等条件

多端口匹配:-m  -multiport --dport 端口号,端口号;端口号

ip地址范围匹配:-m  iprange --src-range 192.168.170.10-192.168.170.20 -j DROP

-m  iprange --dst-range 192.168.170.10-192.168.170.20 -j DROP 根据目标地址禁止访问

-m mac --mac-source 11:22:33:44:55:66 -j DROP         根据mac地址禁止访问

-m state --state RELATED,ESTABLISHED, [,NEW,INVALID]

用于放行本机发出去的数据包返回的应答包进站

6)规则的保存

iptables规则修改后会立即生效,但是重启后会恢复到原始设置。

iptables-save > 文件路径  #保存设置的规则

iptables-save > /etc/sysconfig/iptables   #设置成默认规则

iptables-restore < 文件路径       #导出、或者误删后还原规则    

7)注意事项

不指定表名时,默认指filter表
不指定链名时,默认指表内的所有链
除非设置链的默认策略,否则必须指定匹配条件
控制类型和链名使用大写字母,其余均为小写

三、SNAT和DNAT策略配置,tcpdump抓包

1)SNAT策略配置

把从内网 --> 外网的数据的源内网地址转换成公网源地址

1、实验网络规划,环境部署。准备配置一台内网主机IP地址为192.168.237.100;一台网关服务器,准备2个网卡接口,分别连接内网和外网,接内网IP设置为192.168.237.10,接外网IP设置为20.0.0.10;一台外网主机IP地址为20.0.0.100。实验前请先检查镜像、本地yum仓库配置、光盘挂载、防火墙是否关闭,避免影响整体的过程。

2、配置内网客户机

systemctl disable --now firewalld
systemctl stop firewalld
setenforce 0
ifconfig
vim /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network
ifconfig 
iptables -nl
iptables -F

3、外网web服务器

systemctl disable --now firewalld
systemctl stop firewalld
setenforce 0
ifconfig
vim /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network
ifconfig
yum install -y httpd
systemctl start httpd.service
iptables -nl
iptables -F

4、配置网关服务器

先将虚拟机网络模式与内网客户端与外网客户端区分开,虚拟机网络设置,真机网络设置同步。

网关服务器首先要确保能够进行路由转发,cat /etc/proc/sys/net/ipv4/ip_forwad,值为0则表示关闭,临时开启修改此文件的值为1,sysctl -p立即生效;或者vim /etc/sysctl.conf文件,添加一行配置:永久生效。

添加规则的命令:iptables  -t nat  -A POSTROUTING  -s 内网的源地址/网段  -o 出站网卡  -j SNAT  --to 要转换的公网源地址

systemctl disable --now firewalld
systemctl stop firewalld
setenforce 0
ifconfig
vim /etc/sysconfig/network-scripts/ifcfg-ens33--->设置内网卡ip为192.168.237.10
cd /etc/sysconfig/network-scripts
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36--->复制ens33配置文件修改时需要注意,网卡设备的uuid都是唯一的,需要注释掉,修改文件里的网卡名 为ens36,,IP地址修改为20.0.0.10
systemctl restart network
ifconfig
yum install -y iptables-services.x86_64 iptables
systemctl start iptables.service
vim /etc/sysctl.conf ---> 添加net.ipv4.ip_forward=1
sysctl -p
iptables -nL
iptables -F
iptables -t nat -A POSTROUTING -s 192.168.237.0/24 -o ens36 -j SNAT --to 20.0.0.100
iptables -t nat -nL --line-numbers 
ping 192.168.237.100
ping 20.0.0.100

5、内网ping命令验证能否联通外网即可

6、tcpdump抓包查看验证SNAT策略的整个过程

tcp开启监听icmp协议,从内网192.168.237.100 ping web服务端20.0.0.100,ping10个包,tcpdump抓包看看

#借助远程终端连接外网web端,开启监听抓包
tcpdump -i ens33 -s 0 -w ./test1.cap    #指定监听的网卡,保存抓包的文件为test1.cap#内网客户端
ping -c 10 20.0.0.100#外网web端退出监听,保存文件到本地
ctrl c 
sz test1.cap 

2)DNAT策略

将外网 -->  内网的数据包的目的地址有公网IP转换 端口 转换成内网IP 端口 
iptables  -t nat  -A PREROUTING   -i 入站网卡  -d 原公网目的地址  -p 协议 --dport 原目的端口  -j DNAT  --to 要转换的内网目的地址:端口

3)补充tcpdump抓包工具用法

监听特定网卡 tcpdump -i ens32

监听特定主机 tcpdump host 192.168.170.10

监听特定主机名来源的数据包 tcpdump src host hostname

监听特定主机名为目标的数据包 tcpdump dst host hostname

监听特定主机名所有的数据包 tcpdump host hostname

监听特定端口 tcpdump port XX

监听指定协议TCP/UDP  tcpdump tcp/udp/icmp

监听来源主机XX在端口XX上的TCP/UDP数据包  tcpdump tcp port 22 and src host 12.0.0.10

监听特定主机之间的通信  tcpdump ip host 192.168.117.10 and 210.10.10.10

抓包文件的保存 tcp 协议  port 端口 [src/dst]  net 网段     -i 网卡  -s 0  -w XXX.cap; sz test1.cap(这一步只能在远程终端实现)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/839348.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IP地址概述和配置

一.IP地址的概述 在计算机网络中&#xff0c;连接的网络设备和计算机都有唯一的地址&#xff0c;以此作为该计算机在internet中的唯一标识。 二.IP地址的定义 IP地址&#xff08;internet protocol Address&#xff0c;网络协议地址&#xff09;是用于表示网络节点的逻辑地址…

智能科技的新风潮:探索Web3与物联网结合

引言 随着科技的不断进步和创新&#xff0c;智能科技正成为新时代的主旋律。在这个充满活力和变革的时代&#xff0c;Web3技术与物联网的结合成为了一股新的风潮。本文将深入探讨这一新趋势&#xff0c;揭示Web3与物联网结合的意义、挑战和前景。 Web3技术的特点与优势 区块链…

Docker compose 的方式一键部署夜莺

官方安装文档&#xff1a;https://flashcat.cloud/docs/content/flashcat-monitor/nightingale-v7/install/docker-compose/ 介绍&#xff1a;夜莺监控是一款开源云原生观测分析工具&#xff0c;采用 All-in-One 的设计理念&#xff0c;集数据采集、可视化、监控告警、数据分析…

Go语言(Golang)的开发框架

在Go语言&#xff08;Golang&#xff09;的开发中&#xff0c;有多种开发框架可供选择&#xff0c;它们各自具有不同的特点和优势。以下是一些流行的Go语言开发框架&#xff0c;选择Go语言的开发框架时&#xff0c;需要考虑项目需求、团队熟悉度、社区支持、框架性能和可维护性…

3d选择模型后不能旋转什么原因?怎么解决?---模大狮模型网

在3D建模和渲染的过程中&#xff0c;旋转模型是常见的操作。然而&#xff0c;有时在选择了模型后&#xff0c;却发现无法进行旋转&#xff0c;这可能会让许多用户感到困扰。本文将探讨3D选择模型后不能旋转的可能原因&#xff0c;并提供相应的解决方法。 一、3D选择模型后不能旋…

若依nodejs版本过高问题解决方案

由于nodejs版本过高,可能会导致vue-cli项目运行报错。 目录 方法1:每次启动项目前,输入配置命令 方法2:修改package.js

react中样式的书写

在 React 中&#xff0c;你可以使用 className 来指定一个 CSS 的 class。它与 HTML 的 class 属性的工作方式相同&#xff1a; <img className"avatar" /> 然后&#xff0c;你可以在一个单独的 CSS 文件中为它编写 CSS 规则&#xff1a; .avatar {border-rad…

如何使用WindowsSpyBlocker防止Windows系统被恶意监控和跟踪

关于WindowsSpyBlocker WindowsSpyBlocker是一款功能强大的Windows系统安全防护工具&#xff0c;该工具基于Go语言开发&#xff0c;WindowsSpyBlocker以一个单独的可执行程序发布&#xff0c;可以帮助广大用户防止自己的Windows系统被恶意监控和跟踪。 WindowsSpyBlocker能够利…

SpringCloud(1)-Eureka相关配置

1.新建Module-注册中心 作为注册中心 1.1配置 pom.xml <!-- 引入 eureka-server --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency&g…

ASP+ACCESS基于BS产品销售管理系统

2. 网页制作工具 a) 网页设计工具 网页主要使用Frontpage2003&#xff0c;Dreamweaver Mx辅助制作。 Frontpage 2003 frontpage2003是在frontpage2000基础上的网页工具。frontpage2003保留和发展了frontpage 2000的优秀功能&#xff0c;并根据用户的的要求再次增加了九大新…

如何用PLC监听消防系统485总线通讯获取火灾报警数据

本文由艺捷自动化编写&#xff0c;艺捷自动化旗下产品有艺捷自动化网站和易为二维码说明书小程序&#xff08;微信&#xff09; 前言&#xff0c;先来说一下为什么会有这么一个奇怪的应用。在一个自动化系统改造升级项目中&#xff0c;甲方要求把消防的画面加到他们的后台上。…

word如何按照原本页面审阅文档

1 视图-阅读视图 2 视图&#xff0c;自己看&#xff0c;懒得打字了哈哈

vulhub——ActiveMQ漏洞

文章目录 一、CVE-2015-5254(反序列化漏洞)二、CVE-2016-3088&#xff08;任意文件写入漏洞&#xff09;2.1 漏洞原理2.2 写入webshell2.3 写入crontab 三、CVE-2022-41678&#xff08;远程代码执行漏洞&#xff09;方法一方法2 四、CVE-2023-46604&#xff08;反序列化命令执行…

升级版网创教程wordpress插件自动采集并发布

主要功能&#xff1a; wordpress 插件主题系列支持自动采集并发布。 主要采集: 福缘&#xff0c;中创&#xff0c;冒泡 自动采集各大项目网进行整合发布到自己个人网站 插件话更新&#xff0c;减少网络请求&#xff0c;提升稳定性 代码完美开源 傻瓜式操作&#xff0c;一…

【MySQL】MySQL的安装和基本概念

MySQL的安装和基本概念 一、环境安装1、环境及配置2、下载安装 二、基本概念1、主流数据库2、mysql和mysqld的区别和概念&#xff08;1&#xff09;概念1&#xff1a;了解CS结构&#xff08;2&#xff09;概念2&#xff1a;数据库指的是什么&#xff08;3&#xff09;概念3&…

【Linux】:进程切换

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux进程切换的知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精…

【AI副业教程】日赚5000+涨粉3000,自媒体新玩法!

​StartAI是一款专为设计师打造的基于Photoshop的AI工具&#xff0c;它提供了一系列强大的AI功能如&#xff1a;文生图、生成相似图、线稿上色、无损放大、局部重绘、扩图、艺术融合、提示词、智能擦除、风格选择等。https://www.istarry.com.cn/?sfromHGtsRq 你们能想象吗&a…

【Android安全】AOSP版本对应编号| AOSP版本适配Pixel或Nexus型号 | 驱动脚本下载地址

AOSP版本对应编号 https://source.android.com/docs/setup/about/build-numbers?hlzh-cn#source-code-tags-and-builds 例如android-8.1.0_r1 对应的编号是OPM1.171019.011 可以适配Pixel 2 XL AOSP驱动脚本下载 编译AOSP时&#xff0c;需要Google的驱动&#xff0c;后面才…

【分享】3种方法取消PPT的“限制保护”

PPT如果设置了有密码的“只读方式”&#xff0c;每次打开PPT&#xff0c;都会出现对话框&#xff0c;提示需要输入密码才能修改文件&#xff0c;否则只能以“只读方式”打开。 以“只读方式”打开的PPT就会被限制&#xff0c;无法进行编辑修改等操作。那如果后续不需要“限制保…

SpringBoot+layuimini实现角色权限菜单增删改查(layui扩展组件 dtree)

角色菜单 相关组件方法效果图代码实现资源菜单树组件实现权限树方法js这里我先主要实现权限树的整体实现方法&#xff0c;如果是直接查看使用的话可以只看这里&#xff01; 后端代码Controlle层代码Service代码及实现类代码Service代码ServiceImpl代码 resourceMapper 代码role…