Day 38 防火墙技术IPtables

news2024/11/17 2:07:08

一:防火墙简介

1.简介

​ iptables其实并不是真正的防火墙,我们可以把他理解为一个客户端的代理,用户是通过iptables这个代理,将用户的安全设定执行到对应的“安全框架”中,这个“安全框架”才是真正的防火墙。这个框架叫做netfilter

​ netfilter 内核态 位于内核空间

​ iptables 用户态 位于用户空间

注意:

​ 企业环境内部服务器需关闭Linux自身防火墙;(解决安全问题尽量不给服务器配置外网IP.需要访问的话,就使用代理转发)因为高并发,iptables会加大延迟。除非并发小,服务器必须处于公网,考虑开启防火墙;大并发的情况,不能开iptables,影响性能因为iptables是要消耗CPU的,利用硬件防火墙提升架构安全

2.分类

逻辑分类

​ 主机防火墙:针对单个主机进行防护

​ 网络防火墙:它往往处于网络入口或者边缘,针对于网络入口进行防护,服务于防火墙背后的局域网

物理分类

​ 硬件防火墙:在硬件级别实现部分防火墙功能,另一部分基于软件实现,性能高,成本高

​ 软件防火墙:应用软件处理逻辑运行于通用硬件平台之上,性能低,成本低

二:相关术语

1.表(tables)

​ 表(tables)是链的容器,即所有的链(chains)都属于其对应的表(tables),如上,如果把Netfilter看成是某个小区的一栋楼,那么表(tables)就是楼里的其中的一套房子

2.链(chains)

​ 链(chains)是规则(Policys)的容器。如果把表(tables)当作有一套房子,那么链(chains)就可以说是房子里的家具(柜子等)

3.规则(Policy)

​ 规则(Policy)就比较容易理解了,就是iptables系列过滤信息的规范和具体方法条款了.可以理解为柜子如何增加并摆放柜子东西等

Netfilter/iptables表(tables)链(chains)规则(Policy)
一栋楼楼里的房子房子里的柜子柜子里衣服,摆放规则

三:Iptables表和链

​ 默认情况下,iptables根据功能和表的定义划分包含四个表,filter,nat,mangle,raw其每个表又包含不同的操作链(chains )

1.表

​ raw 追踪数据包

​ mangle 对数据包打标记

​ nat 地址转换

​ filter 数据包过滤

2.链

​ PREROUTING 在路由之前

​ INPUT 数据包进入时

​ FORWARD 数据包经过时

​ OUTPUT 数据包出去时

​ POSTROUTING 在路由之后

3.表详情

raw:
Chain PREROUTING (policy ACCEPT)

​ Chain OUTPUT (policy ACCEPT)

mangle:

​ Chain PREROUTING (policy ACCEPT)

​ Chain INPUT (policy ACCEPT)

​ Chain FORWARD (policy ACCEPT)

​ Chain OUTPUT (policy ACCEPT)

​ Chain POSTROUTING (policy ACCEPT)

nat:
Chain PREROUTING (policy ACCEPT)

​ Chain INPUT (policy ACCEPT)

​ Chain OUTPUT (policy ACCEPT)

​ Chain POSTROUTING (policy ACCEPT)

filter:
Chain INPUT (policy ACCEPT)

​ Chain FORWARD (policy ACCEPT匹配过的数据包不会在去匹配)

​ Chain OUTPUT (policy ACCEPT)

4.访问顺序

​ 当一个数据包进入网卡,先进入PREROUTING链,内核根据数据包的IP判断是否需要转发

​ 如果是到本机的,就会到INPUT链,然后本机的所有进程可收到这个包

​ 如果不是到本机的,且内核允许转发,就会到达FORWARD链,然后到POSRTROUTING链输出

​ 本机发出一个数据,会通过OUTPUT链,再到POSRTROUTING链输出

注意:

​ 规则顺序:匹配即刻停止

image-20230309194921559

四:Iptables操作

1.安装
centos(5/6)
启动防火墙:#/etc/init.d/iptables start
centos7
[root@xingdian ~]# yum install -y iptables iptables-services
[root@xingdian ~]# systemctl stop firewalld
[root@xingdian ~]# systemctl  disable firewalld
[root@xingdian ~]# systemctl start iptables
查看版本:
[root@xingdian ~]# iptables -V 
iptables v1.4.21
配置文件:
 /etc/sysconfig/iptables-config   #iptables主配置文件
 /etc/sysconfig/iptables   #记录规则文件,启动失败时,创建这个文件	
2.参数解释
-L:列出一个链或所有链中的规则信息,如果不写-t 默认使用filter表
-n:以数字形式显示地址、端口等信息
-v:以更详细的方式显示规则信息
--line-numbers:查看规则时,显示规则的序号(方便之处,通过需要删除规则-D INPUT 1
-F:清空所有的规则(-X是清理自定义的链,用的少;-Z清零规则序号)
-D:删除链内指定序号(或内容)的一条规则
-P:为指定的链设置默认规则
-A:在链的末尾追加一条规则
-I:在链的开头(或指定序号)插入一条规则
-t: 指定表名
.... 更多参数可通过--help查看
3.常见操作
1.如果不写-t 默认使用filter表
指定表名查看规则
[root@xingdian ~]# iptables -t nat -L
默认查看规则:
# iptables  -L
以数字的形式显示ip和端口与协议
# iptables -nL 
显示规则行号
# iptables -nL --line
清空规则:
#iptables  -F 
清空单独的某一个链里面的规则
#iptables  -F  链名
保存规则:
# service iptables save
# iptables-save > /etc/sysconfig/iptables
# iptables-restore < /etc/sysconfig/iptables
4.常见协议
协议:-p (小p)
tcp ---用的最多
udp
icmp    ---ping的时候用的协议
#使用协议的时候可以不指定端口,使用端口的时候必须指定协议。
案例:
禁止自己被ping,在filter表的INPUT链插入一个丢弃icmp的规则。
[root@xingdian ~]# iptables -F
[root@xingdian ~]# iptables -A INPUT -p icmp -j REJECT    ----拒绝
验证:
[root@xingdian ~]# ping 192.168.246.200
PING 192.168.246.200 (192.168.246.200) 56(84) bytes of data.
From 192.168.246.200 icmp_seq=1 Destination Port Unreachable
5.目标动作

​ ACCEPT 允许数据包通过(默认策略)

​ DROP 直接丢弃数据包,不给任何回应

​ REJECT 拒绝数据包,必要时会给数据发送端一个响应

​ SNAT 源地址转换,可以解决內网用户用一个公网IP上网问题 POSTROUTING

​ DNAT 目标地址转换 PREROUTING

​ REDIRECT 做端口映射

6.规则案例
iptables语法格式
iptables -t 表名 -规则参数 链名 [规则序号] [匹配规则内容] -j [动作]

[规则参数]:对指定表中的指定链做规则变动
-A:添加规则(添加在最后一条规则后)
-I:插入规则(插入在某条规则后,不指定序号默认插入到第一条)
-D:删除规则
-R:修改规则
-P:修改链的默认规则,默认可选择DROP和ACCEPT
-N:创建自定义链,自定义链定义的规则无法生效,要在-j后引用自定义链才能生效
    自定义链删除,需要在引用的自定义链的链中删除引用规则,才能进行删除

[规则序号]:使用iptables -L -t表名 --line查看规则序号,序号和插入(-I),删除(-D),修改(-R)联用

[匹配规则内容]
-p:指定协议,例如:tcp,udp,icmp
--sport:源端口号(从哪个端口来)
--dport:目标端口号(到哪个端口去)
-s:源IP(从哪个IP 来)
-d:目标IP(到哪个IP去)

[动作]:对于符合规则的数据包做何种动作
ACCEPT:接收数据包
REJECT:拒绝数据包,必要时会给数据发送端一个响应
DROP:丢弃数据表,不给任何回应
添加规则:-A
[root@xingdian ~]# iptables -t filter -A INPUT -p icmp -j REJECT
[root@xingdian ~]# iptables -t filter -A INPUT -p tcp --dport 22 -s 192.168.122.113  -j REJECT
插入规则:-I  
     如果不指定插入到第几条,默认插入到第一条
     插到哪默认就是第几条
     序号靠前(小)的规则,优先级更高
[root@xingdian ~]# iptables -t filter -I INPUT  2 -p tcp --dport 22 -s 192.168.122.114  -j REJECT 
//插入到第二条上面
[root@xingdian ~]# iptables -t filter -I INPUT  -p tcp --dport 22 -s 192.168.122.114  -j REJECT   
//默认插入到第一行
替换(修改)规则:-R
[root@xingdian ~]# iptables -t filter -R INPUT  2 -p tcp --dport 22 -s 192.168.122.115  -j REJECT  把114-->115
删除规则:-D
[root@xingdian ~]# iptables -t filter -D INPUT -p tcp --dport 22 -s 192.168.122.115  -j REJECT
[root@xingdian ~]# iptables -L --line (要删除的序号)
[root@xingdian ~]# iptables -t filter -D INPUT(链)  2
修改默认策略:-P  只能用DROP和ACCEPT
[root@xingdian ~]# iptables -t filter -P INPUT DROP
[root@xingdian ~]# iptables -t filter -P INPUT ACCEPT
添加自定义链:-N  默认不生效  是用来存储规则的
[root@xingdian ~]# iptables -N blackrach   自己创建的链
[root@xingdian ~]# iptables -t filter -A blacrach   -p tcp --dport 22 -s 192.168.122.116  -j REJECT 
//往自定义链上添加
[root@xingdian ~]# iptables -A INPUT -j blackrach 关联自定义链,使用自定义链
修改自定义链名称:-E
[root@xingdian ~]# iptables -E blackrach blackcloud
删掉自定义规则:不能被关联,必须是空链
[root@xingdian ~]# iptables -X +链名   删除自定义链
7.匹配规则

基本匹配

协议 -p tcp udp icmp
查端口:vim /etc/services 记录的是tcp/udp协议簇
vim /etc/protocols 记录的是icmp
-p   tcp  udp icmp
端口:使用端口前加协议(-p)
		--sport源端口
[root@xingdian ~]# iptables -A INPUT -p tcp --sport 22 -s 10.18.44.10  -j REJECT
         --dport目标端口
[root@xingdian ~]# iptables -A INPUT -p tcp --dport 22 -s 10.18.44.10  -j REJECT

IP
         -s  源IP  source ip地址  网段 逗号可以分开多个地址
         -d  目标IP destination 

扩展规则

-m 后面+扩展匹配
-m multiport 多端口
[root@xingdian ~]# iptables -A INPUT -m multiport --sports(--source-ports) 80,20,22,1000:2000 -j DROP
                --dports(--destination-ports)
-m iprange    多ip地址
[root@xingdian ~]# iptables -A INPUT -m iprange --src-range 10.18.44.211-10.18.44.250 -j DROP
-m mac     
[root@xingdian ~]# iptables -A INPUT -m mac  --mac-source 52:54:00:86:a1:86 -j REJECT               
获取MAC的方式
[root@xingdian opt]# arp -a 10.0.102.101
[root@xingdian opt]# arping -I eth0 10.0.102.101
8.网络地址转换

​ 注意:实验环境效果不佳/无

SNAT:把内网地址转换成公网地址

​ client ----------------iptables----内网ip–公网(baidu公网)

​ 一个数据包在经过路由之后(或者说在通过防火墙的过滤之后)才被知道他的源IP是谁,在路由之前只能看到目标IP,如果我看不到你的源IP,那怎么匹配想过滤的数据包并进行源地址转换?我防火墙根本就不能确定你是否是符合匹配条件的IP,所以只能使用POSTROUTING

[root@xingdian ~]# iptables -t nat -A POSTROUTING -s 192.168.122.0/24 -d 192.168.122.0/24 -j SNAT --to-source 192.168.2.1

DNAT:要把别人的公网ip换成我们内部的IP

​ web-server iptables client

​ 如果我不在路由之前就把目标地址转换完成,很显然当数据包到达入口IP之后,他的目的已经达到了,因为他本来的目标IP就是防火墙的对外公网IP,那么数据包还会往里面走吗?显然不可能了,所以只能使用PREROUTING

[root@xingdian ~]# iptables -t nat -A PREROUTING -d 192.168.1.2  -j DNAT --to-destination 192.168.2.2 
[root@xingdian ~]# iptables -t nat -A POSTROUTING -d 192.168.2.2  -j SNAT --to  192.168.2.1

面试题

[root@xingdian ~]# iptables -t nat -A PREROUTING -p tcp -d 192.168.122.1 -dport 80  -j DNAT  --to-destination 192.168.1.1:8080

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

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

相关文章

【go项目01_学习记录15】

重构MVC 1 Article 模型1.1 首先创建 Article 模型文件1.2 接下来创建获取文章的方法1.3 新增 types.StringToUint64()函数1.4 修改控制器的调用1.5 重构 route 包1.6 通过 SetRoute 来传参对象变量1.7 新增方法&#xff1a;1.8 控制器将 Int64ToString 改为 Uint64ToString1.9…

Linux程序开发(八):操作系统进程通信编程

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

Java面向对象-常用类 (包装类)

常用类 – 包装类 基本数据类型的包装类 理解&#xff1a;包装类是8种基本数据类型对应的类 出现原因&#xff1a;Java是一种纯面向对象语言&#xff0c;但是java中有8种基本数据类型&#xff0c;破坏了java为纯面向对象的特征。为了承诺在java中一切皆对象&#xff0c;java…

【Hive SQL 每日一题】分析电商平台的用户行为和订单数据

需求描述 假设你是一位数据分析师&#xff0c;负责分析某电商平台的用户行为和订单数据&#xff0c;平台上有多个用户&#xff0c;用户可以在不同的日期下单&#xff0c;每个订单包含多个商品。请你完成相关业务分析&#xff0c;帮助平台优化运营策略和用户体验。 数据准备 …

音视频-常用的分析工具介绍-连续补充

目录 1&#xff1a;Audacity 2&#xff1a;MediaInfo 3&#xff1a;MP4Box 4&#xff1a;hexinator 5&#xff1a;Adobe Audition 6&#xff1a;VideoEye 7&#xff1a;YUVplayer &#xff08;YUV/RGB播放器&#xff09; 在做音视频分析时&#xff0c;经常用到各种分析工…

Sentinel的隔离和降级

文章目录 1、概念简介2、FeignClient整合Sentinel2.1、修改配置&#xff0c;开启sentinel功能2.2、编写失败降级逻辑2.3、总结 3、线程隔离&#xff08;舱壁模式&#xff09;3.1、线程隔离的实现方式3.2、sentinel的线程隔离1&#xff09;配置隔离规则2&#xff09;Jmeter测试 …

flink程序本地运行报: A JNI error has occurred和java.lang.NoClassDefFoundError

1.问题描述 在idea中运行flink job程序出现如下错误&#xff1a; Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/flink/api/common/io/FileInputFormat …

Excel模板计算得出表格看板

背景 表格看板及导出&#xff0c;单元格时间年是根据筛选器时间变化的 较往年和往年是计算单元格 思路 1.通过excel模板来把数据填入excel再数据清洗得到数据返回前端 2.数据填充&#xff0c;通过行列作为key 列如&#xff1a;key整体20241月&#xff0c;根据key匹配数据填…

资料防拷贝该如何实现?数据防拷贝的方法有哪些

数据安全和隐私保护成为企业和个人关注的重点。电脑中存储的资料往往包含了重要的商业机密、个人隐私或其他敏感信息。 因此&#xff0c;如何有效防止他人非法拷贝电脑资料&#xff0c;成为了一个亟待解决的问题。 本文将探讨数据防拷贝的方法&#xff0c;以帮助企业和个人保护…

linux查看硬盘信息

1、查看挂接的分区状态 [rootMaster ~]# fdisk -l |grep Disk 2、查看硬盘和分区分布 [rootMaster ~]# lsblk 3、查看硬盘和分区的详细信息 [rootMaster ~]# fdisk -l 4、查看挂接的分区状态 [rootMaster ~]# swapon -s 5、查看硬盘使用情况 [rootMaster ~]# df -hT 6、硬…

Mysql总结1

Mysql常见日志 &#xff08;1&#xff09;错误日志&#xff1a;记录数据库服务器启动、停止、运行时存在的问题&#xff1b; &#xff08;2&#xff09;慢查询日志&#xff1a;记录查询时间超过long_query_time的sql语句&#xff0c;其中long_query_time可配置&#xff0c;且…

docker所在磁盘空间不足 迁移数据

1.查看原始目录docker info | grep "Docker Root Dir" 一般在/var/lib/docker 2.停止docker service docekr stop 3.移动数据 注意 移动前不要创建docker目录&#xff01; mv /var/lib/docker /home/docker 4.进入目录查看是否与原始目录相同&#xff0c;确认一…

精准键位提示,键盘盲打轻松入门

在说明精准键位提示之前&#xff0c;我们先来看一张图&#xff1a; 这是一张标准的基准键位图&#xff0c;也就是打字时我们双手的8个手指放在基准键位上&#xff0c;在打不同的字母时&#xff0c;我们的手指以基准键位为中心&#xff0c;或上、或下、或左、或右&#xff0c;在…

全域运营是本地生活的下半场?新的创业风口来了?

随着全域概念的兴起&#xff0c;全域运营赛道也逐渐进入人们的视野之中&#xff0c;甚至有业内人士预测&#xff0c;全域运营将会是本地生活下半场的大趋势。 之所以这么说&#xff0c;是因为全域运营作为包含了公域和私域内所有运营业务的新模式&#xff0c;不仅能同时做所有本…

楼道堆积物视觉识别监控系统

楼道堆积物视觉识别监控系统采用了AI神经网络和深度学习算法&#xff0c;楼道堆积物视觉识别监控系统通过摄像头实时监测楼道的情况&#xff0c;通过图像处理、物体识别和目标跟踪算法&#xff0c;系统能够精确地识别楼道通道是否被堆积物阻塞。楼道堆积物视觉识别监控系统检测…

RA-RISK ANALYSIS

文章目录 一、期刊简介二、征稿信息三、期刊表现四、投稿须知五、咨询 一、期刊简介 Risk Analysis代表风险分析学会出版&#xff0c;在ISI期刊引文报告中的社会科学、数学方法类别中排名前10位&#xff0c;为风险分析领域的新发展提供了焦点。这本国际同行评审期刊致力于发表…

面试准备【面试准备】

面试准备【面试准备】 前言面试准备自我介绍&#xff1a;项目介绍&#xff1a; 论坛项目功能总结数据库表设计注册功能登录功能显示登录信息功能发布帖子评论私信点赞功能关注功能通知搜索网站数据统计热帖排行缓存 论坛项目技术总结Http的无状态cookie和session的区别为什么要…

Python TCP编程简单实例

客户端&#xff1a;创建TCP链接时&#xff0c;主动发起连接的叫做客户端 服务端&#xff1a;接收客户端的连接 连接其他服务器 可以通过tcp连接其他服务器。 示例&#xff1a; import socket# 1.创建一个socket # 参数1&#xff1a;指定协议 AF_INET&#xff08;ipv4&#…

TSMaster发送CAN报文

打开TSMaster工程 从菜单栏打开CAN报文发送窗口&#xff1a;【分析】->【报文发送】->【添加CAN/CAN FD发送】 可以选择【从CAN数据库添加报文】或者是【添加新的原始报文】 方法一 添加新的原始报文 可以配置报文发送的触发方式&#xff0c;有【手动】和【周期】两种。…

Linux多线程系列三: 生产者消费者模型,信号量使用,基于阻塞队列和环形队列的这两种生产者消费者代码的实现

Linux多线程系列三: 生产者消费者模型,信号量,基于阻塞队列和环形队列的这两种生产者消费者代码的实现 一.生产者消费者模型的理论1.现实生活中的生产者消费者模型2.多线程当中的生产者消费者模型3.理论 二.基于阻塞队列的生产者消费者模型的基础代码1.阻塞队列的介绍2.大致框架…