项目介绍
iptables是Linux系统下的免费包过滤防火墙软件,可实现封包过滤、封包重定向和网络地址转换等功能。它是一个高效且灵活的解决方案,可代替昂贵的商业防火墙。iptables具有强大的配置选项和规则设置,使用户能够根据自身需求对网络流量进行精细控制,提高网络安全性和性能。
iptables的规则其实是指网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。
iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤、网络地址转换、包重构(修改)和数据跟踪处理。而每一条链其实只是众多规则中的一个检查清单,每一条链中可以有一条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则。如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。
总的来说,iptables是一个功能强大的工具,用于配置Linux系统上的防火墙和网络地址转换功能。
替换系统防火墙: 在Centos7系统中默认防火墙管理工具不是iptables,当需要使用时则需要自己安装替换.
[root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl disable firewalld [root@localhost ~]# yum install -y iptables iptables-services [root@localhost ~]# systemctl restart iptables [root@localhost ~]# systemctl enable iptables
查询完整防火墙规则: 使用 -L -n –line-numbers 参数查看防火墙默认配置规则.
[root@localhost ~]# iptables -L -n --line-numbers [root@localhost ~]# iptables -F # 临时清空规则 Chain INPUT (policy ACCEPT) numtarget prot opt source destination 1ACCEPT all--0.0.0.0/00.0.0.0/0state RELATED,ESTABLISHED 2ACCEPT icmp --0.0.0.0/00.0.0.0/0 3ACCEPT all--0.0.0.0/00.0.0.0/0 4ACCEPT tcp--0.0.0.0/00.0.0.0/0state NEW tcp dpt:22 5REJECT all--0.0.0.0/00.0.0.0/0reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) numtarget prot opt source destination 1REJECT all--0.0.0.0/00.0.0.0/0reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) numtarget prot opt source destination
设置防火墙默认拒绝: 设置默认拒绝规则,把 INPUT 链设置为默认拒绝,也就是拒绝所有连接请求.
[root@localhost ~]# iptables -P INPUT DROP [root@localhost ~]# iptables -L -n --line-numbers Chain INPUT (policy DROP) #这里可以看出INPUT链已变成DROP numtarget prot opt source destination Chain FORWARD (policy ACCEPT) numtarget prot opt source destination Chain OUTPUT (policy ACCEPT) numtarget prot opt source destination
开启防火墙ICMP回显: 在默认规则拒绝的情况下,设置开启ICMP测试,允许主机ping通.
[root@localhost ~]# iptables -I INPUT -p icmp -j ACCEPT [root@localhost ~]# iptables -L -n --line-numbers Chain INPUT (policy DROP) numtarget prot opt source destination 1ACCEPT icmp --0.0.0.0/00.0.0.0/0 Chain FORWARD (policy ACCEPT) numtarget prot opt source destination Chain OUTPUT (policy ACCEPT) numtarget prot opt source destination
允许客户SSH远程连接: 在默认拒绝的情况下,设置开启22号端口,允许远程ssh连接到本机.
[root@localhost ~]# iptables -I INPUT -p tcp --dport 22 -j ACCEPT [root@localhost ~]# iptables -I OUTPUT -p tcp --sport 22 -j ACCEPT [root@localhost ~]# iptables -L -n --line-numbers Chain INPUT (policy ACCEPT) numtarget prot opt source destination 1ACCEPT tcp--0.0.0.0/00.0.0.0/0tcp dpt:22 Chain OUTPUT (policy ACCEPT) numtarget prot opt source destination 1ACCEPT tcp--0.0.0.0/00.0.0.0/0tcp spt:22
删除指定规则: 在默认拒绝的情况下,删除INPUT链,第2条数据,删除ICMP规则.
[root@localhost ~]# iptables -L -n --line-numbers Chain INPUT (policy DROP) numtarget prot opt source destination 1ACCEPT tcp--0.0.0.0/00.0.0.0/0tcp dpt:22 2ACCEPT icmp --0.0.0.0/00.0.0.0/0 [root@localhost ~]# iptables -D INPUT 2 [root@localhost ~]# iptables -L -n --line-numbers Chain INPUT (policy DROP) numtarget prot opt source destination 1ACCEPT tcp--0.0.0.0/00.0.0.0/0tcp dpt:22
指定允许网段访问: 在默认拒绝的情况下,设置只允许192.168.1.0/24网段的主机访问本机的22号端口.
[root@localhost ~]# iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT [root@localhost ~]# iptables -I OUTPUT -s 192.168.1.0/24 -p tcp --sport 22 -j ACCEPT [root@localhost ~]# iptables -L -n --line-numbers Chain INPUT (policy DROP) numtarget prot opt source destination 1ACCEPT tcp--192.168.1.0/24 0.0.0.0/0tcp dpt:22 Chain OUTPUT (policy ACCEPT) numtarget prot opt source destination 1ACCEPT tcp--192.168.1.0/24 0.0.0.0/0tcp spt:22
拒绝访问指定端口: 在INPUT规则链中,添加拒绝所有人访问本机的8888号端口.
[root@localhost ~]# iptables -I INPUT -p tcp --dport 8888 -j REJECT [root@localhost ~]# iptables -L -n --line-numbers Chain INPUT (policy DROP) numtarget prot opt source destination 1REJECT tcp--0.0.0.0/00.0.0.0/0tcp dpt:8888 reject-with icmp-port-unreachable 2ACCEPT tcp--192.168.1.0/24 0.0.0.0/0tcp dpt:22
拒绝访问指定主机网段的端口: 在INPUT规则链中,添加拒绝192.168.1.20主机访问本机的80端口.
[root@localhost ~]# iptables -I INPUT -p tcp -s 192.168.1.20 --dport 80 -j REJECT [root@localhost ~]# iptables -L -n --line-numbers Chain INPUT (policy DROP) numtarget prot opt source destination 1REJECT tcp--192.168.1.20 0.0.0.0/0tcp dpt:80 reject-with icmp-port-unreachable 2REJECT tcp--0.0.0.0/00.0.0.0/0tcp dpt:8888 reject-with icmp-port-unreachable 3ACCEPT tcp--192.168.1.0/24 0.0.0.0/0tcp dpt:22
拒绝访问指定端口范围: 在INPUT规则链中,添加拒绝所有主机访问本机1000-2000端口.
[root@localhost ~]# iptables -A INPUT -p tcp --dport 1000:2000 -j REJECT [root@localhost ~]# iptables -A INPUT -p udp --dport 1000:2000 -j REJECT [root@localhost ~]# iptables -L -n --line-numbers Chain INPUT (policy DROP) numtarget prot opt source destination 1REJECT tcp--192.168.1.20 0.0.0.0/0tcp dpt:80 reject-with icmp-port-unreachable 2REJECT tcp--0.0.0.0/00.0.0.0/0tcp dpt:8888 reject-with icmp-port-unreachable 3ACCEPT tcp--192.168.1.0/24 0.0.0.0/0tcp dpt:22 4REJECT tcp--0.0.0.0/00.0.0.0/0tcp dpts:1000:2000 reject-with icmp-port-unreachable 5REJECT udp--0.0.0.0/00.0.0.0/0udp dpts:1000:2000 reject-with icmp-port-unreachable
SNAT-源地址转换: 从本地发出的数据包,经过SNAT后,会自动伪装成公网的IP,并以公网IP访问指定服务.
#例:将本地 192.168.1.1 的请求自动伪装成外网地址 59.110.167.234 [root@localhost ~]# iptables -t nat -A POSTROUTING -o ens32 -s 192.168.1.1 -j SNAT --to-source 59.110.167.234 -o#指定外网接口,此处为ens32 -s#指定内网口地址,此处为192.168.1.1 --to-source #外网口的地址
DNAT-目标地址转换: 从公网接收的数据包,经过DNAT后,会自动将数据包转到指定的内网主机.
#例:将请求 59.110.167.234 且端口为 80 的数据包,自动映射到内网 192.168.1.10 [root@localhost ~]# iptables -t nat -A PREROUTING -i ens32 -d 59.110.167.234 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10 --to-destination #内网口地址,此处为192.168.1.1 -i #绑定外网接口,此处为ens32 -d #外网地址,此处为8.8.8.8 -dport #内网端口,此处为80
限制物理请求连接数: iptables可以利用connlimit模块实现限制同一IP针对某个端口的连接数. 允许限制每个客户端IP的并发连接数,即每个IP同时连接到一个服务器个数,还可以限制内网用户的网络使用,对服务器而言则可以限制每个IP发起的连接数.
# 限制同一IP同时最多100个http连接 [root@localhost ~]# iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT [root@localhost ~]# iptables -I INPUT -p tcp --syn --dport 80 -m connlimit ! --connlimit-above 100 -j ACCEPT # 只允许每组C类IP同时100个http连接 [root@localhost ~]# iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 --connlimit-mask 24 -j REJECT # 只允许每个IP同时5个80端口转发,超过的丢弃 [root@localhost ~]# iptables -I FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j DROP # 限制某IP最多同时100个http连接 [root@localhost ~]# iptables -A INPUT -s 192.168.1.100 -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT # 限制每IP在一定的时间(比如60秒)内允许新建立最多100个http连接数 [root@localhost ~]# iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --update --seconds 60 --hitcount 100 -j REJECT [root@localhost ~]# iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --set -j ACCEPT
配置基本防火墙规则: 我们可以在新安装的系统中依次执行下方代码,来配置一个基本的防火墙规则.
# 删除已有规则 iptables --delete-chain iptables --flush # 默认禁止进,允许出,允许回环网卡 iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT iptables -A INPUT -i lo -j ACCEPT # 允许已建立的或相关连接的通行 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # 限制80端口443端口的单个IP的最大连接数为10 iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j DROP iptables -I INPUT -p tcp --dport 443 -m connlimit --connlimit-above 10 -j DROP # 允许80(HTTP)/873(RSYNC)/443(HTTPS)/20,21(FTP)/25(SMTP)端口的连接 iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 873 -j ACCEPT # 允许SSH端口的连接,放行SSH端口 iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT # 允许ping iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT iptables -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT # 放行允许DNS解析端口 iptables -A OUTPUT -p udp -m udp -d 8.8.8.8 --dport 53 -j ACCEPT iptables -A OUTPUT -p udp -m udp -d 114.114.114.114 --dport 53 -j ACCEPT # 保存规则 iptables-save
生产常用配置规则: 下面是收藏的一些生成环境下常用规则的配置,一般情况下配置这些规则足够使用.
filter -P INPUT DROP #设置默认规则,拒绝所有 iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT#放行80口 iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT #放行22口 iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT#放行22口 iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT#放行80端口 iptables -t filter -I INPUT -p tcp --dport 443-j ACCEPT#插入在顶端一条放行443端口的规则 iptables -t filter -I INPUT 2 -p tcp --dport 443 -j ACCEPT #在第二列插入一条443放行规则 iptables -t filter -A INPUT -p tcp --dport 80 -j DROP#丢弃80端口的请求 iptables -I INPUT 2 -p icmp -j DROP#丢弃ICMP请求 iptables -t filter -D INPUT 3#删除第三条规则 iptables -A FORWARD -s 192.168.1.10 -j REJECT#拒绝IP的转发请求 iptables -I INPUT -s 10.20.30.0/24 -j DROP #丢弃IP网段的入站请求 iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP#丢弃从eth1网卡流入,且地址匹配的数据包 iptables -A INPUT -o eth0 -s 192.168.1.0/24 -j DROP#丢弃从eth0网卡流出,且地址匹配的数据包 iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT #放行20-21端口的数据包 iptables -I INPUT -p tcp -m multiport --dport 80-90,85 -j ACCEPT iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.10-192.168.1.100 -j ACCEPT
以上是Linux防火墙之-iptables详解的详细内容。更多信息请关注PHP中文网其他相关文章!

当某些用户尝试通过设置使用产品密钥激活平台时,会出现Windows11激活错误0x87e10bc6问题。发生该问题时,“设置”中的“激活”选项卡会显示以下错误消息:某些东西阻止了我们与激活服务器进行通信。等待几分钟,然后重试。错误代码:0x87e10bc6。由于防火墙阻止了与Microsoft的激活服务器的连接,因此可能会出现特定的激活错误。因此,当出现该错误时,用户无法使用其产品密钥激活Windows11。不幸的是,即使是Windows10用户过去也受到同样问题的困扰,因此准备好处

OneDrive是微软提供的流行的云存储应用程序。我们大多数人使用OneDrive来存储我们的文件,文件夹,文档等。但是一些用户抱怨说,当他们尝试访问OneDrive上的共享文件时,它会给出错误,指出“错误:0x80070185,云操作不成功”。因此,他们无法在OneDrive上执行任何操作,例如复制文件,粘贴,下载共享文件等。如今,有必要在我们的日常工作中使用这些操作。此错误可以轻松解决,为此,我们有一些方法可以应用并尝试解决问题。让我们开始吧!方法1–注销并重新登录到OneDrive应用步骤

如果您在Windows10或11PC上遇到语法问题,本文将帮助您解决此问题。Grammarly是最流行的打字助手之一,用于修复语法、拼写、清晰度等。它已经成为写作专业人士必不可少的一部分。但是,如果它不能正常工作,它可能是一个非常令人沮丧的体验。许多Windows用户报告说此工具在他们的计算机上运行不佳。我们做了深入的分析,找到了这个问题的原因和解决方案。为什么Grammarly无法在我的PC上运行?由于几个常见原因,PC上的Grammarly可能无法正常工作。它包括以下内

如何在Windows11中阻止对应用程序的Internet访问要使用WindowsDefender防火墙阻止应用在Windows11中访问Internet,请执行以下操作:单击开始按钮或按键盘上的Windows键,然后键入windowsdefenderfirewall并单击开始菜单中的顶部结果。当WindowsDefender防火墙窗口打开时,单击左侧的高级设置。从左侧面板中选择OutboundRules,然后在右侧单击Actions下的NewRule。在新的出站规则

当玩家尝试在Windows11中启动Valorant时会出现这两个Vanguard错误。因此,由于这些错误,玩家无法玩Valorant。如果您需要解决其中一个问题,请查看下面的潜在修复程序。什么是Vanguard?Vanguard是Valorant游戏的反作弊软件。Riot软件随游戏一起安装,以防止玩家在Valorant中作弊。如果没有安装并激活RiotVanguard软件,您将无法玩Valorant。该软件有些争议,因为它会阻止应用程序。玩家抱怨Vanguard即

Steam是一个流行的在线游戏流媒体平台,允许其用户购买和玩游戏以及与平台上的其他游戏玩家聊天。除了它提供的功能外,平台上还会遇到一些错误。许多Steam用户遇到的此类错误之一是“错误代码:130无法加载网页(未知错误)”。当Steam客户端尝试加载网页但无法从其服务器检索该页面时,会出现此错误。此错误代码可能会显示在Steam客户端的任何页面上,包括库存页面、更新新闻或阻止您搜索您有兴趣购买的游戏的商店页面。此问题的主要原因之一是您的PC上的互联网连接较弱。其他可能的原因是Stea
![修复:Steam 无法同步您的文件错误 [已解决]](https://img.php.cn/upload/article/000/465/014/168136171341011.png)
Steam 是一个深受全球游戏玩家欢迎的游戏分发平台。它包含大量游戏,Steam 玩家可以从 Steam 商店购买并通过 Steam 客户端在线玩这些游戏。但是,与任何其他应用程序一样,Steam 自身也面临一些网络连接问题,因此无法通过 Steam 云同步文件。在这里,正在讨论许多用户在尝试通过 Steam 云打开游戏时遇到的错误。用户面临一条错误消息,显示为Steam 无法为特定游戏同步您的文件并且游戏无法自行启动。此错误的可能原因如下。Steam 服务器已关闭且无法访问。损坏的游戏文件St

Windows 11 是微软系列中的最新版本,据说是最先进和面向用户的。但是,遇到错误仍然很常见,如果不超过以前的版本。在本文中,我们将讨论Windows 过滤平台已阻止连接的问题。当某些数据包或连接被基本过滤引擎阻止时,就会出现错误。虽然这个问题对大多数用户来说可能看起来很复杂,但它的解决方案相当简单,并已在以下部分列出。对于那些在 Windows 11 中遇到错误的人,很可能是升级没有成功完成,并且 Windows 防火墙中存在某种错误识别。但是,在我们着手修复之前,您必须了解 Window


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),