iptables防火墙
文章目录
- 一.linux防火墙基础
- 1.linux 包过滤防火墙概述
- 1.1netfilter
- 1.2 iptables
- 2.包过滤的工作层次
- 2.1 通信的五元素和四元素
- 3.iptables 的表、链结构
- 3.1 规则链
- 3.2 默认包括5种规则链
- 3.3 规则表
- 3.4 默认包括4个规则表
- 二.数据包过滤的匹配流程
- 1.规则表之间的顺序
- 2.规则链之间的顺序
- 3.规则链内的匹配顺序
- 4.匹配流程示意图
- 5.转换
- 三.编写防火墙规则
- 1.基本语法
- 1.1 总结
- 1.2 管理选项
- 2.数据包的常见控制类型
- 3.管理选项
- 4.匹配的条件
- 四.添加、查看、删除规则
- 1.查看规则
- 2.添加规则
- 3.删除规则
- 4.通用匹配
- 5.隐藏扩展模块
- 6.显示匹配
- 7.IP范围匹配
- 8.MAC匹配
一.linux防火墙基础
1.linux 包过滤防火墙概述
1.1netfilter
(1)位于Linux内核中的包过滤功能体系
(2)称为Linux防火墙的“内核态”
1.2 iptables
(1)位于/sbin/iptables,用来管理防火墙规则的工具
(2)称为Linux防火墙的“用户态”
2.包过滤的工作层次
(1)主要是网络层,针对IP数据包
(2)体现在对包内的IP地址、端口等信息的处理上
2.1 通信的五元素和四元素
五元素:源IP、目标IP、源端口、目标端口、协议
四元素:源IP、目标IP、源端口、目标端口
3.iptables 的表、链结构
3.1 规则链
(1)规则的作用:对数据包进行过滤或处理
(2)链的作用:容纳各种防火墙规则
(3)链的分类依据:处理数据包的不同时机
3.2 默认包括5种规则链
(1)INPUT:处理入站数据包
(2)OUTPUT:处理出站数据包
(3)FORWARD:处理转发数据包
(4)POSTROUTING链:在进行路由选择后处理数据包
(5)PREROUTING链:在进行路由选择前处理数据包
3.3 规则表
(1)表的作用:容纳各种规则链
(2)表的划分依据:防火墙规则的作用相似
3.4 默认包括4个规则表
(1)raw表:确定是否对该数据包进行状态跟踪
(2)mangle表:为数据包设置标记
(3)nat表:修改数据包中的源、目标IP地址或端口
(4)filter表:确定是否放行该数据包(过滤)
二.数据包过滤的匹配流程
1.规则表之间的顺序
raw——mangle——nat——filter
按照表的顺序,依次查当前表中的链,看链中是否有匹配规则,匹配到立即停止,若找不到匹配规则,则会使用链的默认策略处理。
表里面有链,链里面匹配规则
2.规则链之间的顺序
(1)入站: PREROUTING——INPUT
(2)出站: OUTPUT——POSTROUTING
(3)转发: PREROUTING——FORWARD——POSTROUTING
3.规则链内的匹配顺序
(1)按顺序依次检查,匹配即停止 (LOG策略例外)
(2)若找不到相匹配的规则,则按该链的默认策略处理
4.匹配流程示意图
按照顺序查从raw表开始到mangle——nat表——(如没有策略到)filter表(input 让不让数据进来)——路由转发——一般不会对出数据进行限制——raw——mangle——nat——filter看是否有策略——nat(对数据进行地址转换)——出去,送达(不转换也送达)
5.转换
(1)nat PREROUTING:目的地址转换。要把别人的公网ip换成你们内部的ip
(2)nat POSTROUTING:源地址转换,要把你的内网地址转换成公网地址才能上网,一般用于对外发布内网的服务(内网访问外网)
三.编写防火墙规则
1.基本语法
1.1 总结
四表五链
规则表的作用:容纳各种规则链
规则链的作用: 容纳各种防火墙规则
总:表里有链,链里有规则
1.2 管理选项
表示iptables规则的操作方式,如插入、增加、删除、查看等;匹配条件:用来指定要处理的数据包的特征,不符合指定条件的数据包将不会处理:控制类型指的是数据包的处理方式,如允许、拒绝、丢弃等。
注:
不指定表名时,默认指filter表不指定链名时,默认指表内的所有链,一般不这么操作除非设置链的默认策略,否则必须指定匹配条件选项、链名、控制类型使用大写字母,其余均为小写
2.数据包的常见控制类型
(1)ACCEPT:允许数据包通过。
(2)DROP:直接丢弃数据包,不给出任何回 应信息
(3)REJECT:拒绝数据包通过,必要时会给数据发送端一个响应信息。
(4)SNAT:修改数据包的源地址
(5)DNAT:修改数据包的目的地址
3.管理选项
| 选项 | 注释 | 示例 |
|---|---|---|
| -A | 在指定链末尾追加一条 | iptables -A INPUT (操作) |
| -I | 在指定链中插入一条新的,未指定序号默认作为第一条 | iptables -I INPUT (操作) |
| -P | 指定默认策略 | iptables -P OUTPUT ACCEPT (操作) |
| -D | 删除 | iptables -t nat -D INPUT 2 (操作) |
| -R | 修改、替换某一条规则 | iptables -t nat -R INPUT (操作) |
| -L | 查看 | iptables -t nat -L (查看) |
| -n | 所有字段以数字形式显示(比如任意ip地址是0.0.0.0而不是anywhere,比如显示协议端口号而不是服务名) | |
| -v | 查看时显示更详细信息,常跟-L一起使用 (查看) | |
| –line-numbers | 规则带编号 | iptables -t nat -L -n --line-number iptables -t nat -L --line-number |
| 选项 | 注释 | 示例 |
|---|---|---|
| -F | 清除链中所有规则 | iptables -F (操作) |
| -X | 清空自定义链的规则,不影响其他链 | iptables -X |
| -Z | 清空链的计数器(匹配到的数据包的大小和总和) | iptables -Z |
| -S | 看链的所有规则或者某个链的规则/某个具体规则后面跟编号 |
4.匹配的条件
| 条件 | 作用 |
|---|---|
| -p | 指定要匹配的数据包的协议类型 |
| -s | 指定要匹配的数据包的源IP地址 |
| -d | 指定要匹配的数据包的目的IP地址 |
| -i | 指定数据包进入本机的网络接口 |
| -o | 指定数据包离开本机做使用的网络接口 |
| –sport | 指定源端口号 |
| –dport | 指定目的端口号 |
四.添加、查看、删除规则
1.查看规则
粗略查看默认规则:
iptables -L
数字化的形式查看规则:
iptables -nL
指定表查看:
iptables -t filter -vnL
查看指定表中的指定链
iptables -t filter -vnL INPUT ——————不指定表,默认就是filter
2.添加规则
添加规则的两个常用选项:
-A,在末尾追加规则。
-I,在指定位置前插入规则。如果不指定,则在首行插入
添加新的防火墙规则时,使用管理选项“-A”、“-I”,前者用来追加规则,后者用来插入规则。
iptables -F————————清空规则(如果不写表名和链名,默认清空filter表中所有链里的所有规则)
iptables -t filter -A INPUT -p icmp -j REJECT ——————————禁止所有主机ping本机
iptables -t filter -A INPUT -p icmp -j ACCEPT————————————允许ping通,-A在前一条规则后添加
#匹配到了就不在匹配后面的规则
iptables -t filter -I INPUT 1 -p icmp -j ACCEPT ——————————指定序号插入,插入到第一条
#即时生效
iptables -t filter -A INPUT -p tcp -j REJECT ——————————禁止任何主机tcp
iptables -I INPUT 1 -p udp -j ACCEPT——————允许任何主机udp
iptables -nL --line-number #查看行规则的位置
拒绝某一台主机,其他的可以:
iptables -t filter -A INPUT -s 192.168.198.12 -p icmp -j REJECT
拒绝多台主机:
iptables -t filter -A INPUT -s 192.168.198.12,192.168.198.13 -p icmp -j REJECT
不允许11的数据包出去,其他的就都ping不通了
iptables -t filter -A OUTPUT -s 192.168.198.11 -p icmp -j REJECT
指定端口:
iptables -t filter -A INPUT -p tcp --dport 22 -j REJECT
注:协议在前,指定端口号在后,否则识别不了端口,无法匹配就会报错!
iptables -t filter -A INPUT -s 192.168.198.12 -p tcp --dport 80 -j REJECT
指定IP地址的服务端口拒绝
3.删除规则
D删除 :
根据序号删除内容
iptables -D INPUT 1——————————删除指定的INPUT链中的第一条规则
内容匹配删除(有两个相同的则作用为去重) 如果有两个重复的规则,则删除序号较小的
iptables -D INPUT -p icmp -j REJECT——————删除序号小的
4.通用匹配
网络协议、IP地址、网络接口等条件。
协议匹配: -p协议名
地址匹配: -s 源地址、-d目的地址
#可以是IP、网段、域名、空(任何地址)
接口匹配: -i入站网卡、-o出站网卡
感叹号”!”表示取反
网络协议
iptables -P INPUT DROP ————其他的服务不受影响,这个时候,把策略清空,所有的协议都将被DROP
iptables -F ————这时只能进虚拟机重启
IP地址
iptables -A INPUT -s 192.168.198.12 -j DROP——————————禁止22的数据进入
网络接口:
iptables -I INPUT 1 -i ens33 -s 192.168.198.0/24 -j DROP————————禁止指定的网络设备名称ens33的所
怎么使整个网段不能用指定的端口
iptables -t filter -A INPUT -s 192.168.198.0/24 -p tcp --dport 80 -j REJECT——————————禁止整个网段访问80端口
5.隐藏扩展模块
iptables在使用-p 指定协议时,若指明特定协议后就无须再使用-m指明扩展模块的扩展机制。
例如若已经指明是 -p tcp协议则使用–dport及–sport等tcp模块内容时即可省略-m tcp。
多端口隐藏扩展匹配
iptables -A INPUT -p tcp --dport 22:80 -j REJECT ——————————禁止整个网段访问22和80端口注:小的数字写在前面,大的写在后面
6.显示匹配
多端口显示扩展匹配
iptables -A INPUT -p tcp -m multiport --dport 80,22,21,20,53 -j REJECT
多端口匹配,一次性禁止多个tcp网络协议的端口匹配规则
7.IP范围匹配
-m iprange --src-range 源IP范围
-m iprange --dst-range 目的IP范围
iptables -A INPUT -p icmp -m iprange --src-range 192.168.198.20-192.168.198.30 -j REJECT——————禁止网段内的ip地址ping主机
8.MAC匹配
iptables -A INPUT -m mac --mac-source 00:0c:29:23:65:98 -j DROP
相关文章:
iptables防火墙
文章目录 一.linux防火墙基础1.linux 包过滤防火墙概述1.1netfilter1.2 iptables 2.包过滤的工作层次2.1 通信的五元素和四元素 3.iptables 的表、链结构3.1 规则链3.2 默认包括5种规则链3.3 规则表3.4 默认包括4个规则表 二.数据包过滤的匹配流程1.规则表之间的顺序2.规则链之…...
properties、yaml作为配置文件的特点
说明:在软件开发中,经常需要把一些配置写在文件中,如数据库配置、MyBatis配置等。这样,后续如果数据库参数有改动,就可以避免直接对代码做修改,只要修改配置文件中关于数据库的配置。关于配置文件的选择&am…...
JavaSE-03 【流程控制语句】
文章目录 JavaSE-03 【流程控制语句】第一章 流程控制1.1 流程概述1.2 顺序结构 第二章 判断语句2.1 判断语句---if2.2 判断语句---if...else2.3 判断语句---if...else if ... else 第三章 选择语句3.1 选择语句--switch3.2 case的穿透性 第四章 循环语句4.1 循环概述4.2 循环语…...
笔记本电脑的BIOS是怎么保护安全的?
随着攻防技术的不断演进,像BIOS攻击、高级网络代码攻击等手段层出不穷,“受害者”也不仅限于企业级服务器、存储,很多魔爪也开始伸向了拥有商业机密数据的PC。 BIOS是Basic Input/Output System(基本输入/输出系统)的…...
Xubuntu之将rm删除内容移至回收站(一百七十七)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...
STM32F407实现1588v2(ptpd)
硬件: STM32F407ZGT6开发板 软件: VSCode arm-none-eabi-gcc openOCD st-link 在github搜到一个在NUCLEO-F429ZI开发板上移植ptpd的example,因为和F407差别很小,所以就打算用这个demo移植到手头的开发板上。因为目前只需要…...
架构师如何找到自己的商业模式
作为一个架构师,必须要在有限的资源下最大化架构活动所带来的商业价值。对于任何一个架构活动而言,架构师的可用资源,包括商业成本、研发成本、时间成本、迁移成本等等,都是非常有限的。但架构活动就是要在这些限制条件之下&#…...
SQLServer2022安装(Windows),已验证
一、SQLServer2022下载 1、官网下载地址 SQL Server 下载 | Microsoft 2、下载安装包 2.1、选择Developer版本,立即下载。 2.2、打开下载文件夹,双击运行SQL2022-SSEI-Dev.exe 尝试运行SQL2022-SSEI-Dev.exe,会收到以下信息:“…...
facenet, dlib人脸识别,人体检测,云数据库mysql,QQ邮箱,手机验证码,语音播报
目录 部分代码展示: 录入部分 识别部分编辑 活体检测部分编辑 同步到云数据库MySQL 其他操作 部分图片展示: 完整代码加ui链接: 涉及到的一些知识点的文章 部分代码展示: 录入部分 识别部分 活体检测部分 同步到云数…...
Spring Boot 面试题——定时任务
目录 1.什么是 cron 表达式?如何使用?2.Scheduled 注解有什么作用?3.介绍一下 spring-boot-starter-quartz。4.在 Spring Boot 中如何实现定时任务?4.1.使用 Schedule 注解4.2.Quartz 框架 1.什么是 cron 表达式?如何使…...
总建面64万平,配3所幼儿园+54班九年制学校,坪山江岭竹元规划
近日,坪山区城市更新和土地整备局发布,关于《坪山区马峦街道江岭竹元片区城市更新单元规划》已通过深圳市城市规划委员会法定图则委员会审批。现予以公告。 项目位于坪山区马峦街道,南邻南坪快速路,北邻比亚迪路,东西两…...
python3 爬虫相关学习7:使用 BeautifulSoup下载网页图片到本地文件夹
目录 1 一个爬图片pic的代码的例子 1.1 学习的原文章 1.2 原始代码的问题总结 问题1 问题2 问题3 其他问题 1.3 原始代码 2 直接在cmd里 python运行报错 和 处理 2.1 运行报错 2.2 报错原因: 没有提前安装这个bs4 模块 2.3 如何提前知道我的python环境…...
windows平台python脚本执行环境搭建笔记
1.python脚本环境下载 这里是原始发布源: https://www.python.org/downloads/release/python-3114/https://www.python.org/downloads/release/python-3114/安装时记得添加进系统path,这样你可以随时调用python环境。 2.扩展模块的安装 step1.找到py…...
MyBatis的动态SQL之OGNL(Object-Graph Navigation Language)表达式以及各种标签的用法
MyBatis的动态SQL 1、if标签的用法2、choose标签的用法3、where标签4、set标签5、trim的用法6、foreach标签7、bind标签 使用过JDBC或者是其他的ORM框架的开发者都知道,在很多操作中都需要去根据具体的条件进行SQL语句的拼接,并且在有些时候一些标点符号…...
基于Java+Springboot+Vue的二次元商城网站设计与实现
博主介绍:✌擅长Java、微信小程序、Python、Android等,专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案…...
MyBatis操作数据库实现
说明:MyBatis是作用于三层架构开发,数据访问层(Data Access Object)的框架,用于访问数据库,对数据进行操作。 一、环境搭建 首先,创建一个SpringBoot模块,然后把MyBatis的环境搭建…...
Git GitLab 使用及规范
Git 基本操作 Git安装配置及基本使用 从官网下载安装包,手动完成安装。打开Git Bash命令行工具,执行命令ssh-keygen -t rsa -C Email-Addresss生成一个密钥对。登录到GitLab,点击右上角你的用户头像,点击Edit Profile settings&…...
【SpringCloud——Sentinel】
一、什么是雪崩? 微服务调用链路中的某个服务发生故障,引起整个链路中的所有微服务都不可用,这就是雪崩。 二、解决雪崩问题的常见措施 1、超时处理 设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休…...
面试专题:计算机网络常见面试点总结
socket、tcp、udp、http 的认识及区别 socket、tcp、udp、http 的认识及区别 一、先来一个讲TCP、UDP和HTTP关系的 1、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。 在传…...
PageHelper失效问题
问题出现记录: 修改代码后,出现分页失效问题,原本的代码再设置了 PageHelper.startPage(pageNum, pageSize);后只有一个mysql查询,我在原本的业务查询前,新增了其他的Mysql查询,导致原需要分页的查询失效 …...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
