iptables应用大全

news/2024/5/19 17:37:01/文章来源:https://blog.csdn.net/ydaxia110/article/details/128041441

在这里插入图片描述
在这里插入图片描述

iptables四表五链:
1、“四表”是指 iptables 的功能
——filter 表(过滤规则表):控制数据包是否允许进出及转发
——nat 表(地址转换规则表):控制数据包中地址转换
——mangle(修改数据标记位规则表):修改数据包中的原数据
——raw(跟踪数据表规则表):控制 nat 表中连接追踪机制的启用状况

2、“五链”是指内核中控制网络的 NetFilter 定义的 5 个规则链。每个规则表中包含 多个数据链,防火墙规则需要写入到这些具体的数据链中。
——INPUT(入站数据过滤) :处理来自外部的数据
——OUTPUT(出站数据过滤):处理向外发送的数据。
——FORWARD(转发数据过滤):将数据转发到本机的其他网卡设备上
——PREROUTING(路由前过滤) :– 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。
——POSTROUTING(路由后过滤): – 处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。

filter表有三个链:forward 、input、output
nat表有三个链:prerouting、postrouting、output
mangle表有五个链:prerouting、forward、input、output、postrouting

iptables规划:
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

-i eht0 从哪个口进
-o eth0 从哪个网卡出

处理动作大全:accept、reject、drop、redirect、log、masquerade、dnat、snat、mirror、queue、return、mark

filter表使用的主要动作:accept、reject、drop、log

drop和reject区别是:如果是drop直接超时,不回发任何信息
如果是reject就会返回信息回来提示(目标端口不可达)Destination port unreachable

首先先来翻译一下dport和sport的意思:
dport:目的端口
sport:来源端口
初学iptables比较容易迷糊,但是我尽量用通俗的语言给你讲解。
dport 和sport字面意思来说很好理解,一个是数据要到达的目的端口,一个是数据来源的端口。
但是在使用的时候要分具体情况来对待,这个具体情况就是你的数据包的流动行为方式。(INPUT还是OUTPUT)
比如你的例子:/sbin/iptables -A INPUT -p tcp –dport 80 -j ACCEPT
注意里面的INPUT参数,这个代表你的这条数据包的进行的 “进入” 操作!
那么你的这条数据包可以这么描述:
1.这是一条从外部进入内部本地服务器的数据。
2.数据包的目的(dport)地址是80,就是要访问我本地的80端口。
3.允许以上的数据行为通过。
总和:允许外部数据访问我的本地服务器80端口。

再看第2条列子:/sbin/iptables -A INPUT -p tcp –sport 80 -j ACCEPT
1.这是一条从外部进入内部本地服务器的数据。
2.数据包的来源端口是(sport)80,就是对方的数据包是80端口发送过来的。
3.允许以上数据行为。
总结:允许外部的来自80端口的数据访问我的本地服务器。
input方式总结: dport指本地,sport指外部。

如果你的数据包是(OUTPUT)行为,那么就是另外一种理解方式:
比如:
/sbin/iptables -A OUTPUT -p tcp –dport 80 -j ACCEPT
1.这是一条从内部出去的数据。
2.出去的目的(dport)端口是80。
3.允许以上数据行为。
output行为总结:dport指外部,sport指本地。

iptables -nvL
查看规划所有

iptables -nvL --line-number
查看规则带编号

iptables -R INPUT 3 -j ACCEPT
修改第三条规则

iptables -F 规则清空
iptables -X
iptables -Z 清空记数器

iptables -R 替换规则

/etc/sysconfig/iptables-config
配置文件
例如增加ftp主和备动访问等模块:
IPTABLES_MODULES=“ip_conntrack_ftp ip_nat_ftp”

/etc/rc.d/init.d/iptables save
centos6保存重启不丢失

/etc/sysconfig/iptables
保存在这个文件里

[root@localhost ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables: [ 确定 ]
centos7保存重启不丢失

iptables -A INPUT -j REJECT
默认放在最后拒绝所有

iptables -I INPUT -p tcp --dport 22 ACCEPT
放行22端口

iptables -I INPUT -s 192.168.1.5 -j DROP
在前面新增拒绝这个ip的所有通信,不写哪行就默认第1行

iptables -I INPUT 3 -s 192.168.1.3 -j DROP
插入一条规则到第3行

iptables -D INPUT -s 192.168.1.5 -j DROP
删除这条规则

iptables -L -n --line-number
看序号,直接删除序号对应的也可以
iptables -t filter -D INPUT 1

直接拒绝icmp 的请求包
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT
这时候尝试ping这台主机的话会出现
Reply from 192.168.50.131: Destination port unreachable.

iptables -t filter -P INPUT ACCEPT
input链默认全部允许

如果centos7 做为防火墙或路由网关,那就要两块网卡,内网卡不能设置网关,
只在里面填IP地址和子网掩码,如果再加一块网卡的话,如果从第一个配置文件
ifcfg-eth0复制的话,要注销掉uuid和mac地址,其它名称也要改成对应的。

开启centos7路由转发功能:
vim /etc/sysctl.conf
net.ipv4.ip_forward=1

马上生效:
sysctl -p

查看路由:
route -n

添加静态路由(放入脚本开机启动):
route add -net 192.168.100.0/24 gw 192.168.90.20

另一种方法加静态路由:
改配置文件(如果没有就增加这个文件,route-eth?要和出口网关对应上):
vi /etc/sysconfig/network-scripts/route-eth1
ADDRESS0=192.168.100.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.90.20
如果有多个下一跳就把上面的0依次改为1…n
重启网卡服务

只允许22连接centos7路由器,把input链改为默认禁止所有连接,只开22:
iptables -t filter -I INPUT -p tcp --dport 22 -j ACCEPT
iptables -t filter -P INPUT DROP

iptables在中间以路由模式对其它网段进行过滤全部用FORWARD链
禁止两个网段互ping
iptables -t filter -I FORWARD -p icmp -s 192.168.80.0/24 -d 192.168.100.0/24 -j DROP

禁止80段访问100的远程桌面,但是他可以反向连接
iptables -t filter -I FORWARD -p tcp -s 192.168.80.0/24 -d 192.168.100.0/24 --dport 3389 -j DROP

禁止80段访问100段的123主机的远程桌面,但是他可以反向连接
iptables -t filter -I FORWARD -p tcp -s 192.168.80.0/24 -d 192.168.100.123/32 --dport 3389 -j DROP

基于状态包过滤规则:
–state(NEW,ESTABLISHED,INVALID,RELATED)
new 表示该包属于一个新连接
related表示属于已建立的连接,类似于防火墙上的server-map表(ftp连接要用这个)
iptables -t filter -A INPUT -m state --state RELATED -j ACCEPT

禁止单个方向不能拼通
iptables -I FORWARD -p icmp -m icmp --icmp-type echo-request -s 192.168.80.123/32 -d 192.168.100.123/32 -j DROP

禁止多个端口连接
iptables -A FORWARD -p tcp -m multiport --dports 1:1024,3389 -s 192.168.80.123/32 -d 192.168.100.123/32 -j DROP

iptables -A FORWARD -p tcp -m iprange --src-range 192.168.80.1-192.168.80.10 -j DROP
限制IP范围段访问

iptables -A FORWARD -p tcp -m limit --limit 3000/second -s 192.168.80.123/32 -d 192.168.100.123/32 -j DROP
两个IP地址之间限速(一秒不能超过3000个)

对每个用户限速(每秒只允许最多300个数据包通过限制):
写个脚本生成:
vi /etc/sysconfig/limit.sh
for (i=2;i<254;i++)
do
iptables -I FORWARD -s 192.168.10.i−jDROPiptables−IFORWARD−s192.168.10.i -j DROP iptables -I FORWARD -s 192.168.10.ijDROPiptablesIFORWARDs192.168.10.i -m limit --limit 300/sec --limit-burst 400 -j ACCEPT
done

瞬间流量控制(5为数量包的数量):
-m limit --limit-burst 5

限制最大连接数(最多2个连接上去远程桌面):
iptables -A FORWARD -p tcp --dprot 3389 -m connlimit --connlimit-above 2 -s 192.168.80.0/24 -d 192.168.100.0/24 -j DROP

限制MAC地址访问:
iptables -A INPUt -m mac --mac-source C0-9F-8D-5F-6D

限制这个主机的MAC地址访问80网段:
iptables -A FORWARD -d 192.168.80.0/24 -m mac --mac-source C0-9F-8D-5F-6D

LOG动作日志设置在/etc/syslog.conf中,日志记录在:/var/log/message里面
添加iptabls-icmp标记,方便在message里查找
iptables -t filter -I FORWARD -p icmp -d 192.168.100.0/24 -j LOG --log-prefix “iptables-icmp”
iptables -t filter -A FORWARD -p icmp -d 192.168.100.0/24 -j REJECT
先记录日志,再阻止连接

centos7做为web服务器,用iptables保护,只允许123地址远程过来:
iptables -t filter -P INPUT DROP
iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -I INPUT -p tcp --dport 22 -s 192.168.10.123/32 -j ACCEPT

recent模块实现服务器安全:
–seconds 指定时间
–set 将地址添加到列表,并更新信息,包含地址加入时间戳。
–rcheck 检查地址是否在列表,以第一个匹配开始计时。
–name 设定列表名,默认DEFAULT
–rsource 源地址,此为默认
–rdest目的地址
–remove列表中删除相应地址
–update和rcheck类似,以最后一个匹配开始计算时间
–hitcount命中次数

SSH连接一个客户端60秒只能连接2回,防穷举攻击,表名定义为SSHPOOL表
iptables -t filter -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name SSHPOOL --rcheck --seconds 60 --hitcount 2 -j DROP //负责读表中的记录是否过了2个
iptables -t filter -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name SSHPOOL --set -j ACCEPT //负责记录连接客户端数量
iptables -t filter -A INPUT -m state --state ESTABLISHED -j ACCEPT //当已建立了,就允许进入。

保护网站防ddos攻击,每秒建立连接数限制:
iptables -t filter -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --rcheck --seconds 60 --hitcount 10 -j LOG --log-prefix “DDOS” --log-ip-options //先进行日志记录
iptables -t filter -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --rcheck --seconds 60 --hitcount 10 -j DROP //连接数量限制
iptables -t filter -A INPUT -m state --state ESTABLISHED -j ACCEPT //已建立的连接不阻止。

设置打开端口钥匙(指定ping这个开启22服务的服务器,来打开允许ssh连接,完了再ping一个包就自动关闭连接):
iptables -t filter -A INPUT -p icmp --icmp-type echo-request -m length --length 1078 -j LOG --log-prefix “SSHOPEN” //先记录连接日志
iptables -t filter -A INPUT -p icmp --icmp-type echo-request -m length --length 1078 -m recent --set --name sshopen --rsource -j ACCEPT
//指定ping过来包为1078大小,包含IP头20和icmp头8,所以应该ping -l 1050
iptables -t filter -A INPUT -p tcp --dport 22 --syn -m recent --rcheck --seconds 60 --name sshopen --rsource -j ACCEPT //看sshopen表中60秒内的记录如果有源地址就允许访问tcp22端口
iptables -t filter -AINPUT -p icmp --icmp-type echo-request -m length --length 1178 -m recent --name sshopen --remove -j ACCEP //ping个1178包大小就删除22端口连接了
iptables -A INPUT -m state --state ESTABLISHED -j ACCEP //已建立的就允许连接

保护网段安全,先改forward默认drop
从ens34网卡进来的,只可以访问此目标网段内的所有主机3389,其它禁止
iptables -t filter -I FORWARD -p tcp --dport 3389 -d 192.168.80.0/24 -i ens34 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED -j ACCEP //已建立的就允许连接,不然回不了包,建立不起来

NAT地址转换上网(外网ip是192.168.90.10):
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens34 -j SNAT --to-source 192.168.90.10
如果有多个外线IP就:
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens34 -j SNAT --to-source 192.168.90.10-192.168.90.12

端口映射(端口映射前必须先做好上面的nat地址转换):
iptables -t nat -A PREROUTING -i ens34 -d 192.168.90.10/32 -p tcp --dport 4000 -j DNAT --to 192.168.80.123:3389

修改通过iptables路由的TTL值,来迷惑攻击者
iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-inc 2 //经过就增加2个TTL值
iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-dec 3 //经过就删除3个TTL值
iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-set 30 //改TTL回显为30开始递减

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

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

相关文章

NDK 是什么 | FFmpeg 5.0 编译 so 库

前言 NDK 全称 Native Development Kit&#xff0c;也就是原生开发工具包 &#xff0c;官网对它有详细的 中文介绍 。可能一说到 NDK 或 JNI &#xff0c;大家脑子里第一反应就是集成 C/C 。其实 JNI 的含义是 Java Native Interface &#xff0c;这种接口允许 Java 和其他语言…

ovs vxlan 时延和吞吐

设计云时到底要不要用vxlan&#xff0c;如果用vxlan到底要不要购买比较贵的smart nic做offload&#xff0c;采用软件vxlan还是硬件交换机vxlan&#xff0c;很难决策&#xff0c;这儿简单测试一下&#xff0c;给个参考&#xff0c;资源终究是有限的&#xff0c;成本还是有考虑的…

【HDU No. 2586】 树上距离 How far away ?

【HDU No. 2586】 树上距离 How far away &#xff1f; 杭电 OJ 题目地址 【题意】 有n 栋房屋&#xff0c;由一些双向道路连接起来。 每两栋房屋之间都有一条独特的简单道路&#xff08;“简单”意味着不可以通过两条道路去一个地方&#xff09;。人们每天总是喜欢这样问&a…

Linux 软链接 与 硬链接 的区别

Linux 软链接 与 硬链接 的区别 1、概念 ​  链接文件&#xff1a;是 Linux 操作系统中的一种文件&#xff0c;主要用于解决文件的共享使用问题&#xff0c;而链接的方式分为两种——软链接和硬链接。 ​  inode&#xff1a;是文件系统中存储文件元信息&#xff08;文件的…

3.71 OrCAD新建原理图时,每一个类目的含义是什么?OrCAD软件怎么显示元器件的封装名称?

笔者电子信息专业硕士毕业&#xff0c;获得过多次电子设计大赛、大学生智能车、数学建模国奖&#xff0c;现就职于南京某半导体芯片公司&#xff0c;从事硬件研发&#xff0c;电路设计研究。对于学电子的小伙伴&#xff0c;深知入门的不易&#xff0c;特开次博客交流分享经验&a…

Word处理控件Aspose.Words功能演示:在 Python 中将 Word 文档转换为 PNG、JPEG 或 BMP

MS Word 文件到图像格式的转换让您可以将文档的页面嵌入到您的 Web 或桌面应用程序中。为了在 Python 应用程序中执行此转换&#xff0c;本文介绍了如何使用 Python 将 Word DOCX或DOC文件转换为PNG、JPEG或BMP图像。此外&#xff0c;您将学习如何使用不同的选项控制 Word 到图…

SpringBoot2.7.4整合Redis

目录 一、添加maven依赖 二、添加配置项 三、新增配置类 四、编辑实体类 五、编写接口 六、编写业务层 1.编写service层 2.编写service实现层 七、测试接口 一、添加maven依赖 <dependency><groupId>org.springframework.boot</groupId><artif…

Python测试框架之Pytest基础入门

Pytest简介 Pytest is a mature full-featured Python testing tool that helps you write better programs.The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries. 通过官方网站介绍…

Flink部署之Yarn

Flink部署之Yarn 一、环境准备 1、Flink 是一个分布式的流处理框架&#xff0c;所以实际应用一般都需要搭建集群环境。 需要准备 3 台 Linux 机器。具体要求如下&#xff1a; 系统环境为 CentOS 7.5 版本。安装 Java 8。安装 Hadoop 集群&#xff0c;Hadoop 建议选择 Hadoop…

【代码随想录】二刷-二叉树

# 二叉树《代码随想录》 二叉树的遍历方式 深度优先遍历: 前序遍历(递归法、迭代法): 中左右中序遍历(递归法、迭代法): 左中右后序遍历(递归法、迭代法): 左右中 广度优先遍历: 层序遍历(迭代法) 二叉树的定义 struct TreeNode{int val;TreeNode* left;TreeNode* right;Tree…

React - Ant Design3.x版本安装使用,并按需引入和自定义主题

React - Ant Design3.x版本安装使用&#xff0c;并按需引入和自定义主题一. 安装使用 antd二&#xff0e;antd 高级配置安装 react-app-rewired&#xff0c;对 create-react-app 的默认配置进行自定义安装 babel-plugin-import &#xff0c;按需加载组件代码和样式自定义主题An…

[毕业设计]机器学习水域检测标注算法

前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投…

IO模型Netty

一、IO模型 对于一次IO操作&#xff0c;数据会先拷贝到内核空间中&#xff0c;然后再从内核空间拷贝到用户空间中&#xff0c;所以一次read操作&#xff0c;会经历以下两个阶段&#xff0c;基于这两个阶段就产生了五种不同的IO模式。 为了避免用户进程直接操作内核&#xff0c;…

Android8.1 MTK 浏览器下载的apk点击无反应不能安装

最近测试人员发现用原生浏览器下载的apk点击安装时无反应&#xff0c;不能安装。 在/vendor/mediatek/proprietary/packages/apps/Browser/src/com/android/browser/DownloadHandler.java 中&#xff0c;发现下载的apk文件缺少了mime类型&#xff0c;如下图 mimetype null造…

RS编码译码误码率性能matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 纠错编码技术在卫星通信、移动通信及数字存储等领域已获得了广泛的应用。RS码作为其中最重要的码类之一,具有优良的纠随机错误和突发错误的能力,被空间数据系统咨询委员会(CCSDS)作为一种…

计算机毕业设计——基于SpringBoot框架的网上购书系统的设计与实现

文章目录前言一、背景及意义选题背景选题目的二、系统设计主要功能运行环境三、系统实现部分页面截图展示部分代码展示四、源码获取前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 二十一世纪是网络化&#xff0c;信息化的时代&#xff0c;为了满足广大…

植入“人工心脏”助患者重获“心”生

【同期】人工心脏移植患者 刘女士这要是在过去的时候也就放弃了&#xff0c;我再活20年&#xff0c;我还能看着我大孙子成家&#xff0c;这就是我最大的希望。【解说】11月22日&#xff0c;人工心脏移植患者和心脏移植患者在即将康复出院前&#xff0c;互相握手庆贺。据了解&am…

18.3 内存池概念、代码实现和详细分析

一&#xff1a;内存池的概念和实现原理概述 malloc&#xff1a;内存浪费&#xff0c;频繁分配小块内存&#xff0c;浪费更加明显。 “内存池”要解决什么问题&#xff1f; 1、减少malloc()的次数&#xff0c;减少malloc()调用次数就意味着减少对内存的浪费 2、减少malloc()的…

Wireshark Ethernet and ARP 实验—Wireshark Lab: Ethernet and ARP v7.0

Wireshark Lab: Ethernet and ARP v7.0 1. Capturing and analyzing Ethernet frames 清除浏览器缓存 使用wireshark抓包并请求网页 修改“捕获数据包列表”窗口&#xff0c;仅显示有关 IP 以下协议的信息。 抓包干扰较多&#xff0c;故分析作者的数据包回答下列问题 包含…

关于WEB端实现电子海图之Openlayers加载切片

记笔记&#xff0c;免忘记&#xff01; 关于WEB端实现电子海图研究之思路 关于WEB端实现电子海图研究二GeoServer GeoServer完成shp文件切矢量图后&#xff0c;我们需要加载GeoServer切片在web上展示。 vector-tiles-tutorial官方示例 以下示例使用openLayers来加载 D:\s…