Linux安全--iptables详解

news2025/7/26 19:21:08

目录

1、iptables介绍

2、iptables四表五链详解

3、iptables基本语法

4、实际操作

4.1 增加规则

 4.2 删除规则

4.3 修改规则

 5、命令语法总结

 6、基本匹配条件

7、iptables进阶用法

7.1 iprange扩展模块

7.2 string扩展模块

8、iptables进行端口转发


1、iptables介绍

防火墙分类:从逻辑上分类

分类说明
主机防火墙针对单个主机进行防护
网络防火墙处理网络入口或者边缘,针对网络入口进行防护

防火墙分类:从物理上分类

分类说明
硬件防火墙在硬件级别实现防火墙功能
软件防火墙应用软件处理逻辑运行于通用硬件平台之上的防火墙

两个概念:

内核空间:也叫内核态,操作系统占据的内存区域

用户空间:也叫用户态,用户进程所在的内存区域

2、iptables四表五链详解

说明
filter表负责过滤功能,防火墙;内核模块:iptable_filter
nat表网络地址转换功能;内核模块:iptable_nat
mangle表拆解报文,做出修改;iptable_mangle
raw表关闭nat表上启用的追踪机制;iptable_raw
preroutingraw表,mangle表,nat表
inputmangle表,filter表
forwardmangle表,filter表
outputraw表,mangle表,nat表,filter表
postroutingmangle表,nat表

表和链的关系:

rawprerouting,output
mangleprerouting,input,forward,output,postrouting
natprerouting,output,postrouting
filter

input,forward,outpu

优先级次序(由高到低): raw > mangle >  nat > filter

3、iptables基本语法

处理动作

动作含义
ACCEPT允许数据包通过
DROP直接丢弃数据包,不给任何回应信息
REJECT拒绝数据包通过,客户端会收到拒绝的信息
SNAT源地址转换
DNAT目标地址转换

常用操作命令

常用操作命令说明
-A在指定链尾部添加规则
-D删除匹配的规则
-R替换匹配的规则
-I在指定位置插入规则
-F删除所有链的规则

常见设置参数

常见设置参数说明
--dport       指定目标TCP/IP端口 
--sport    指定源TCP/IP端口
-p  tcptcp协议
-p  udpudp协议
-j   DROP拒绝
-j   ACCEPT允许
-s 192.168.150.129指定源地址或地址段
-d 192.168.150.130指定目标地址或地址段

4、实际操作

4.1 增加规则

选项说明:

-t :指定操作的表

-I :指定插入规则到哪个链中

-s :指定“匹配条件”中的源地址

-j :指定“匹配条件”中的动作

拒绝所有来自192.168.150.15的所有报文

iptables -I INPUT -s 192.168.150.15 -j DROP

效果展示:

 再允许192.168.150.15的所有报文

iptables -I INPUT -s 192.168.150.15 -j ACCEPT

效果展示:

 4.2 删除规则

iptables -D INPUT 1

4.3 修改规则

iptabels -R INPUT 1 -s  192.168.150.15 -j ACCEPT

效果展示:

 

 5、命令语法总结

iptables -t 表名 -A  链名 匹配条件 -j 动作       #在规则尾部追加

iptables -t 表名 -I  链名 匹配条件 -j 动作       #在规则首部增加

iptables -t 表名 -I  链名 规则序号 匹配条件 -j 动作       #在链的指定位置添加

 iptables - t 表名 -D 链名 规则序号         #按照规则序号删除规则

iptables  -t 表名 -D 链名 匹配条件 -j 动作         #按照匹配条件个动作删除规则

 iptables - t 表名 -P 链名 动作        #修改指定表的指定链的默认策略

iptables -F         #删除所有规则

iptables -t 表名 -R 链名 规则序号 规则原本的匹配条件 -j 动作         #修改规则 

 6、基本匹配条件

# -s 用于匹配报文的源地址,可以同时指定多个源地址,每个IP之间用逗号隔开,也可以指定为一个网段。

iptables -t filter -I INPUT -s 192.168.150.15,192.168.150.16 -j DROP

# -d 用于匹配报文的目标地址,可以同时指定多个目标地址,每个IP之间用逗号隔开,也可以指定为一个网段。

iptables -t filter -I OUTPUT -d 192.168.150.15,192.168.150.16 -j DROP

# -p 用于匹配报文的协议类型,可以匹配的协议类型tcp,udp,udplite,icmp等等。

iptables -t filter -I INPUT -p tcp -s 192.168.150.15,192.168.150.16 -j DROP

 # -i 用于匹配报文是哪个网卡接口流入本机的,由于匹配条件只是用于匹配报文的流入的网卡,所以OUTPUT链与POSTROUTING链中不能使用此选项。

iptables -t filter -I INPUT -p tcp -i ens33 -j DROP

7、iptables进阶用法

7.1 iprange扩展模块

使用iprange扩展模块可以指定“一段连续的ip地址范围”,用于匹配报文的源地址或者目标地址。

iprange扩展模块有两个扩展匹配条件可以使用:

  • --src-range:源地址范围
  • --dst-range:目标地址范围
  • -m iprange:表示使用iprange扩展模块

iptables -t filter -I INPUT -m iprange --src-range 192.168.150.15-192.168.150.25 -j DROP

7.2 string扩展模块

使用string扩展模块,可以指定要匹配的字符串,如果报文中包含对应的字符串,则符合匹配条件。

  • -m string:表示使用string扩展模块
  • --algo:用于指定匹配算法,可选的算法有bm和kmp,此选项为必选。
  • --string:用于指定需要匹配的字符串

iptables -t filter -I INPUT -m string --algo kmp --string "bit" -j DROP

# 网站有敏感字符串,用户访问不让响应

8、iptables进行端口转发

实例1:

将本机的8080端口转发至其他主机,主机IP:192.168.150.16,目标主机IP和端口:192.168.150.15:8088,规则如下;

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.150.15:8088

iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 8088 -j SNAT --to-source 192.168.150.16

echo 1 > /proc/sys/net/ipv4/ip_forward         #开启iptables forward转发功能。

实例2:

访问本机的8080端口转发到本地的80端口

iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-ports 80

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

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

相关文章

【Python】面向Sqli-Labs Less15的布尔盲注二分法脚本

前言 其实写这个python脚本是为了完成我某节课的某个实验 代码里有一堆一堆的for循环,导致程序整个运行下来起码需要一个小时,而且还是基于二分法的qwq。本来想说去学一学python的多线程提升一下效率,但我发现我这代码一环扣一环&#xff0c…

基于PHP+MySQL的在线学习网站系统

随着我国教育体制的改革,我国大学生的数量越来越多。相对应的对我国的教育质量也提出了新的要求。如果仅仅是在课堂上学习那些有限的知识已经不能够再满足大学生对知识的渴望了。为了能够让大学生学习到更多的内容需要一个在线学习系统来辅助大学生进行学习。 PHP在线学习网站系…

点阵 LED 显示设计实验

一、实验目的: 1.了解LED点阵的基本结构。 2.学习LED点阵扫描显示程序的设计方法。 二、实验内容与要求: 编写程序,控制点阵向上卷动显示“原来如此是这样呀”。 实验系统中的1616 LED点阵由四块88LED点阵组成,如图1所示&…

[附源码]SSM计算机毕业设计作业自动评阅系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【多标签文本分类】《融合注意力与CorNet的多标签文本分类》

阅读摘要:   本文主要提出标签与文本注意力文本注意力、CorNet增强标签预测概率两个创新点,提升了实验精度。 参考文献:   [1] 融合注意力与CorNet的多标签文本分类 参考论文信息 论文名称:《融合注意力与CorNet的多标签文本分…

2.10 80%的小红书新手博主都会忽略的问题:排版【玩赚小红书】

其实,不管在哪一个平台发布作品,都需要注重排版。 因为舒服的排版,不仅能让读者视觉舒服,而且也是你重新检查作品逻辑是不是清晰的过程。 比如,你看下面这张对比图,从读者角度来看,你更喜欢排…

人类小脑内在组织背后的基因图谱

摘要 人类小脑的功能多样性在很大程度上被认为更多地来自于其广泛的联系,而不是局限于其部分不变的结构。然而,小脑内在组织中连接的确定是否以及如何与微尺度基因表达相互作用仍不清楚。在这里,我们通过研究同时连接小脑功能异质性及其驱动因…

【快速上手系列】使用idea调百度AI接口实现人脸识别功能

【快速上手系列】使用idea调百度AI接口实现人脸识别功能 一、人脸检测 步骤 1、百度AI开放平台 登录后点击控制台 点击公有云服务——应用列表——点击创建应用 填写一下信息然后创建 然后回到概览——领取免费资源(如果账号没领取过的话) 可以自选&…

[Java] [Spring boot] Mybatis generator 生成Mapper.xml无效的问题

报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 百度出来的解决方案: 1:Mapper.xml中的namespace不对应和mapper接口不对应 2:Mapper.xml中的方法(即id)和mapper接口中的方法名字不同或…

使用 nexus 作为 npm 私服

背景: 之前公司内部是使用的 verdaccio 作为私有前端 npm 仓库的工具的, 由于最近安装包时总是遇到问题, 发包 和 安装都比较慢, 不太确定具体是什么问题 几经解决还是没能够解决掉, 索性换一个工具试试, 公司后端的 maven 库私服是使用的 nexus, 找资料时发现 nexus 也是可…

C++,STL,,vector容器

文章目录一、vector介绍1.vector对象构造2.vector的赋值3.vector的大小4.vector末尾的添加移除操作5.vector的数据存取6.vector的插入7.vector的删除8.vector迭代器一、vector介绍 vector相当于顺序表 vector是将元素置于一个动态数组中加以管理的容器。 vector可以随机存取元…

天元宠物上市首日破发:市值蒸发约5亿元,薛元潮兄妹为实控人

11月18日,杭州天元宠物用品股份有限公司(下称“天元宠物”,SZ:301335)在深圳证券交易所创业板上市。本次上市,天元宠物的发行价格为49.98元/股,发行数量为2250万股,募资总额约为11.25亿元&#…

华玉通软发布“云雀”执行管理中间件,为智能驾驶关键应用提供确定性执行保障

11月17日,华玉通软(下称“华玉”)宣布正式发布“云雀”执行管理中间件(LARK EM Execution Management)。 这是继“雨燕”通信中间件(SWIFT DDS)后,华玉的又一款完全自主研发的智能驾…

[iOS]分析Mach-O文件

一、Mach-O文件介绍 我们拿到IPA文件后,解压后就能拿到一个与APP同名的可执行文件。 Mach-O为Mach Object文件格式的缩写,它是一种用于可执行文件,目标代码,动态库,内核转储的文件格式。 每个Mach-O文件包括一个Mach-…

Design A NearBy Friends

title: Notes of System Design No.09 — Design a Uber backend description: Design a PasteBin ’ date: 2022-05-13 18:01:58 tags: 系统设计 categories: 系统设计 00. What is Newarby Friends? 01.Functional Requirement 02. Non-Functional Requirement 03. Assump…

Java新特性(2):Java 10以后

您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来~ 虽然到目前为止Java的版本更新还没有什么惊天动地的改变,但总是会冒出一些有趣的小玩意。前面列举了Java9和Java10的一些特色,现在接着来…

shell修改永久性别名,压缩与解压缩(zip gzip bzip2)文件上传预下载(sftp)

命令别名(永久有效) 敲重点(写入文件)(1)仅对root有效,写一个命令命为hello,实现的功能为每输入一次hello命令,就有hello,everyone写入文件/file.txt中。 root用户…

[UE][C++]Assimp库安装编译,UE_Assimp插件安装使用,各种三维格式转换

[UE][C]Assimp库安装编译,UE_Assimp插件安装使用,各种三维格式转换写在前面1.作者碎碎念2.结果1.需要准备的软件2.Assimp库编译步骤3.UE_Assimp插件的安装4.UE_Assimp插件样例使用5.Assimp库各种三维格式转换小程序写在前面 1.作者碎碎念 (…

ElasticSearch 拼音插件elasticsearch-analysis-pinyin + IK 分词器

ElasticSearch kibana 部署略 创建索引 PUT /nba_20220101 {"mappings": {"properties": {"age": {"type": "integer"},"birthDay": {"type": "date"},"birthDayStr": {"t…

软件方面的文档标准GB/T

在文档标准方面,主要有《软件文档管理指南》(GB/T 16680-1996)、《计算机软件产品开发文件编制指南》(GB/T 8567-2006)和《计算机软件需求说明编制指南》(GB/T 9385-2008)等三个标准。 1. GB/T…