网络安全 Day29-运维安全项目-iptables防火墙

news2025/3/1 6:42:49

iptables防火墙

  • 1. 防火墙概述
  • 2. 防火墙
    • 2.1 防火墙种类及使用说明
    • 2.2 必须熟悉的名词
    • 2.3 iptables 执行过程※※※※※
    • 2.4 表与链※※※※※
      • 2.4.1 简介
      • 2.4.2 每个表说明
        • 2.4.2.1 filter表 :star::star::star::star::star:
        • 2.4.2.2 nat表
    • 2.5 环境准备及命令
    • 2.6 案例01::star::star::star::star::star:禁止访问22端口
    • 2.7 案例02: :star::star::star::star::star:屏蔽对应的ip
    • 2.8 案例03::star::star::star::star::star:禁ping
    • 2.9 案例04::star::star::star:禁止10.0.0.0/24内网访问22端口
    • 2.10 案例05: :star: 指定多个端口屏蔽
    • 2.11 案例06::star::star::star::star::star: 防火墙规则的保存生效与备份恢复
    • 2.12 案例07::star::star: 收尾设置链的默认规则

1. 防火墙概述

  • 目标:
    • 封或开启端口
    • 封或开启ip

2. 防火墙

2.1 防火墙种类及使用说明

  • 硬件: 整个企业入口
    • 三层路由: H3C 华为 Cisco(思科)
    • 硬件防火墙: 深信服,绿盟,奇安信…
    • 棱镜门 0day. 勒索病毒。 国内互联网企业去IOE运动。
    • Juniper
  • 软件: 开源软件 网站内部 封ip 封ip
    • iptables 写入到Linux内核中 以后服务docker 工作在 4层(大部分)
    • firewalld C7 底层也是iptables.
    • nftalbes C8
    • ufw (ubuntu firewall) Ubuntu
  • 云防火墙(公有云)
    • 阿里云:
      • 安全组 (封ip,封端口)
      • NAT网关(共享上网,端口映射…)
      • waf应用防火墙
  • waf防火墙(应用防火墙,处理7层的攻击) SQL注入,等攻击.
    • 书写规则(描述攻击过程,关键提示,关键操作.)

企业选型建议:

中小企业: 使用公有云,安全组,waf防火墙,态势感知.

访问量巨大: 使用硬件防火墙,waf防火墙,硬件服务器+云服务器

2.2 必须熟悉的名词

  • 容器: 瓶子 罐子 存放东西
  • (table): 存放====的容器,防火墙最大概念
  • 链(chain): 存放==规则==的容器
  • 规则(policy): 准许或拒绝规则 ,未来书写的防火墙条件就是各种防火墙规则

掌握表和链之间联系即可。

在这里插入图片描述

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

2.3 iptables 执行过程※※※※※

工作流程小结:※※※※※

  1. 防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
  2. 如果**匹配成功规则,即明确表示是拒绝(DROP)还是接收(ACCEPT)**,数据包就不再向下匹配新的规则
  3. 如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到**匹配默认规则**得到明确的阻止还是通过。
  4. 防火墙的**默认规则所有规则都匹配完才会匹配的**。

2.4 表与链※※※※※

2.4.1 简介

  • 表(table)是对功能的分类,防火墙功能(filter表),共享上网,端口转发(nat表)

  • 链对数据流进行处理,需要使用不同的链(数据流入(INPUT),数据流出(OUTPUT))

  • iptables 是4表5链

  • 4表: filter 表 nat表 raw表 mangle表

  • 伍链: INPUT OUTPUT FORWARD PREROUTING POSTROUTING

2.4.2 每个表说明

2.4.2.1 filter表 ⭐️⭐️⭐️⭐️⭐️

  • 是iptables默认的表,filter表示过滤.
  • 实现防火墙功能:(对数据包的filter过滤)屏蔽或准许,端口,ip.
filter 强调:主要和主机自身相关,真正负责主机防火墙功能的(过滤流入流出主机的数据包) filter表示iptables默认使用的表,这个表定义了三个链(chains) 企业工作场景:主机防火墙
INPUT ⭐️⭐️⭐️⭐️⭐️负责过滤所有目标地址是本机地址的数据包 通俗来说:就是过滤进入主机的数据包 (能否让数据包进入服务器)
FORWARD路过: 负责转发流经主机的数据包。起转发的作用,和NAT关系很大,后面会详细介绍 LVS NAT模式,net.ipv4.ip_forward=0
OUTPUT处理所有源地址是本机地址的数据包 通俗的讲:就是处理从主机发出去的数据包

2.4.2.2 nat表

  • 实现nat功能
    • 实现共享上网(内网服务器上外网)
    • 端口映射和ip映射
nat负责网络地址转换的,即来源与目的IP地址和port的转换。
应用:和主机本身无关,一般用于局域网共享上网或者特殊的端口转换服务相关。
工作场景:
1. 用于企业路由(zebra)或网关(iptables),共享上网POSTROUTING
2. 做内部外部IP地址一对一映射(dmz),硬件防火墙映射IP到内部服务器,ftp服务(PREROUTING
3. WEB,单个端口的映射,直接映射80端口(PREROUTING) 这个表定义了3个链,nat功能相当于网络的acl控制。和网络交换机acl类似。
OUTPUT和主机放出去的数据包有关,改变主机发出数据包的目的地址。
PREROUTING在数据包到达防火墙时,进行路由判断之前执行的规则,作用是改变数据包的目的地址、目的端口等
就是收信时,根据规则重写收件人的地址。
例如:把公网IP:xxx.xxx.xxx.xxx映射到局域网的xx.xx.xx.xx服务器上。
如果是web服务,可以报80转换为局域网的服务器9000端口上
10.0.0.61 8080(目标端口) ----nat—à 10.0.0.7 22
POSTROUTING在数据包离开防火墙时进行路由判断之后执行的规则,作用改变数据包的源地址,源端口等。
写好发件人的地址,要让家人回信时能够有地址可回。
例如。默认笔记本和虚拟机都是局域网地址,在出网的时候被路由器将源地址改为了公网地址。
生产应用:局域网共享上网

课外了解: 官方最全超级详解传送门

2.5 环境准备及命令

iptables iptables启动或关闭的命令

oldboy-bao 10.0.0.61 172.16.1.61

  1. 为了使用systemctl管理安装的软件:yum install -y iptables-services

  2. 检查结果

    [root@oldboy-bao ~] rpm -qa |grep iptables 
    iptables-services-1.4.21-35.el7.x86_64   #我们安装的。
    iptables-1.4.21-35.el7.x86_64            #系统自带
    
  3. 启动iptables 内核模块

    手动加载iptables内核模块(直接复制到虚拟机上就好了)
    
    modprobe ip_tables
    modprobe iptable_filter
    modprobe iptable_nat
    modprobe ip_conntrack
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe ipt_state	
    
  4. 让配置永久生效

    chmod +x /etc/rc.d/rc.local
    cat >>/etc/rc.local<<EOF
    modprobe ip_tables
    modprobe iptable_filter
    modprobe iptable_nat
    modprobe ip_conntrack
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe ipt_state	
    EOF
    
  5. 检查是否加载防火墙iptables 模块

    [root@oldboy-bao ~] lsmod |egrep 'filter|nat|ipt'
    nf_nat_ftp             12809  0 
    nf_conntrack_ftp       18478  1 nf_nat_ftp
    iptable_nat            12875  0 
    nf_nat_ipv4            14115  1 iptable_nat
    nf_nat                 26583  2 nf_nat_ftp,nf_nat_ipv4
    nf_conntrack          139264  6 nf_nat_ftp,nf_nat,xt_state,nf_nat_ipv4,nf_conntrack_ftp,nf_conntrack_ipv4
    iptable_filter         12810  0 
    ip_tables              27126  2 iptable_filter,iptable_nat
    libcrc32c              12644  3 xfs,nf_nat,nf_conntrack
    [root@oldboy-bao ~] lsmod |egrep 'filter|nat|ipt' |wc -l
    9
    
  6. 关闭已有的firewalld防火墙:systemctl stop firewalld +systemctl disable firewalld

  7. 清空iptables自带规则

    1. 查看规则:iptables -t filter -nL
    2. 清空规则
      iptables -t filter -F   #flush清空规则
      iptables -X             #删除定义的链。
      iptables -Z             #清空计数器。
      

2.6 案例01:⭐️⭐️⭐️⭐️⭐️禁止访问22端口

  • 在filter表的INPUT连上新加1条拒绝规则,拒绝所有目标端口是22的请求。

    iptables -t filter -I INPUT -p tcp --dport 22  -j  DROP
    iptables -t filter -nL --line-number #显示规则并添加序号
    iptables -t filter -D INPUT 1 #删除filter表INPUT链的第1个规则
    

2.7 案例02: ⭐️⭐️⭐️⭐️⭐️屏蔽对应的ip

  • DOS拒绝式服务攻击。特点就是某几个ip不断访问。
  • 在filter表的INPUT链上添加拒绝规则,拒绝源ip是10.0.0.1的访问。
屏蔽来自于10.0.0.1的访问
iptables -I INPUT -s  10.0.0.1  -j DROP
iptables -t filter -nL --line-number #显示规则并添加序号
iptables -t filter -D INPUT 1 #删除filter表INPUT链的第1个规则

2.8 案例03:⭐️⭐️⭐️⭐️⭐️禁ping

  • 我们需要禁止任何人ping ip,让用户无法ping通。
  • ping背后是使用icmp协议(数据包)。
  • 实现方法:
    • 🅰️ ✅ 通过Iptables实现。

    • 🅱️通过Linux内核参数实现。

      iptables -I INPUT    -p icmp    -j DROP
      开启另一个机器ping。
      

2.9 案例04:⭐️⭐️⭐️禁止10.0.0.0/24内网访问22端口

  • 实现22端口只能通过堡垒机访问或只能通过内网访问。
  • 未来可以改为只通过内网访问,准许172.16.1.0/24访问22端口。
  • 翻译:添加filter表INPUT链接拒绝规则,禁止源ip是10.0.0.0/24网段访问目标端口是22,协议tcp.
  • 环境准备
    • 双网卡 eth0 10, eth1 172(lan区段)
环境准备需求细节
oldboy-bao双网卡eth0 10(外网) eth1 172(内网)
oldboy-docker双网卡eth0 10(外网) eth1 172(内网)
  • 添加网卡设置lan区段:添加到和堡垒机相同的区段

  • 书写网卡配置文件

    oldboy-docker
    
    [root@oldboy-docker ~] cat /etc/sysconfig/network-scripts/ifcfg-eth1
    DEVICE=eth1
    NAME=eth1
    BOOTPROTO=none
    ONBOOT=yes
    IPADDR=172.16.1.62
    PREFIX=24
    [root@oldboy-docker ~] systemctl restart network 
    
  • 配置规则之前测试

    ssh -p22 10.0.0.61  #ctrl + d 退出
    ssh -p22 172.16.1.61
    都可以链接与访问。
    
  • 进行配置

    翻译:添加filter表INPUT链接拒绝规则,禁止源ip是10.0.0.0/24网段访问目标端口是22,协议tcp.
    iptables -I INPUT -s 10.0.0.0/24  -p tcp   --dport 22  -j DROP 
    
  • 配置规则之后测试

    ssh -p22 10.0.0.61    访问失败
    ssh -p22 172.16.1.61  访问成功
    都可以链接与访问。
    

经过漫长等待,10网段访问失败。

2.10 案例05: ⭐️ 指定多个端口屏蔽

  • 禁止80,443访问。
    --dport默认只能指定1个端口或指定端口范文 通过:(冒号)实现。
    iptables -I INPUT  -p tcp   --dport 1:1024   -j DROP
    
    使用multiport模块,就可以指定多个端口
    iptables -I INPUT  -p tcp  -m multiport --dport 80,443 -j DROP
    

2.11 案例06:⭐️⭐️⭐️⭐️⭐️ 防火墙规则的保存生效与备份恢复

  1. 配置的防火墙规则重启Linux或iptables服务后是否仍然生效
    iptables -I INPUT -s  10.0.0.1  -j ACCEPT 
    iptables -I INPUT    -p icmp    -j DROP
    iptables -I INPUT -s 10.0.0.0/24  -p tcp   --dport 22  -j ACCEPT
    iptables -I INPUT  -p tcp  -m multiport --dport 80,443 -j ACCEPT
    
  2. 通过iptables-save输出/etc/sysconfig/iptables文件
    备份原有的
    cp /etc/sysconfig/iptables{,.bak}
    iptables-save >/etc/sysconfig/iptables
    
  3. 恢复默认配置: 读取/etc/sysconfig/iptables文件并加载防火墙配置
    systemctl restart iptables
    

2.12 案例07:⭐️⭐️ 收尾设置链的默认规则

⭐️⚠️ 修改默认规则之前,要测试之前的准许的规则。

iptables -t filter -P INPUT DROP
修改之后一点点添加放行规则
iptables -I INPUT -s  10.0.0.1  -j ACCEPT 
iptables -I INPUT    -p icmp    -j DROP
iptables -I INPUT -s 10.0.0.0/24  -p tcp   --dport 22  -j ACCEPT
iptables -I INPUT  -p tcp  -m multiport --dport 80,443 -j ACCEPT

# -i 数据进入的时候
iptables -A INPUT -i lo -j ACCEPT
# -o 数据流出的时候
iptables -A OUTPUT -o lo -j ACCEPT

#匹配连接状态
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #放行tcp连接状态
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@oldboy-bao ~] iptables-save  
# Generated by iptables-save v1.4.21 on Thu Aug 10 12:00:05 2023
*nat
:PREROUTING ACCEPT [2:458]
:INPUT ACCEPT [2:458]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Thu Aug 10 12:00:05 2023
# Generated by iptables-save v1.4.21 on Thu Aug 10 12:00:05 2023
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -s 10.0.0.0/24 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p icmp -j DROP
-A INPUT -s 10.0.0.1/32 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Thu Aug 10 12:00:05 2023

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

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

相关文章

月度资金预算情况表取的数和结算页面不一样,是为什么?

月度资金预算情况表取的数和结算页面不一样&#xff0c;如下图&#xff0c;是为什么&#xff1f; 取数公式&#xff1a; CMPRFS(‘[收支项目01030101] ‘,K(‘单位’),’’,‘’,‘0’,ZDATEQC(‘-’),ZDATE(‘-’),‘1’,‘’,‘’)CMPRFS(‘[收支项目01030102] ‘,K(‘单位…

最新版本2023UI千月影视APP源码 开源完美版前后端完美匹配 后端基于ThinkPHP框架

最新版本的2023UI千月影视APP源码是一款开源的完美版应用程序&#xff0c;具备前后端完美匹配的特点。该应用的后端开发基于ThinkPHP框架&#xff0c;这是一个广泛使用的PHP开发框架&#xff0c;具有稳定性和安全性方面的优势。 2023UI千月影视APP是一款提供电影、电视剧、综艺…

文旅虚拟IP内卷国风,底层流量密码是什么?

数字化浪潮下&#xff0c;文旅虚拟IP已逐渐成为数字经济时代全新的增长风口以及传统文化传播载体。 虚拟IP具有极高的辨识度和可塑性&#xff0c;既可以作为虚拟主播在线上直播聊天互动&#xff0c;又可以化身虚拟解说员带你学习传统文化&#xff0c;还可以化身虚拟向导带你玩…

我与金融 —— 境外支付系统之安全测试实践(一)

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

【雕爷学编程】Arduino动手做(12)---霍尔模块之霍尔磁感应声光报警器(磁控开关,接220V)

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…

前端探索之旅

目录 简介:内容大纲:第一章 前端开发简介1.1 前端开发的定义和作用1.2 前端开发的职责1.3 前端开发的技能要求1.4 前端开发的发展前景总结&#xff1a; 第二章 HTML基础2.1 HTML基本结构2.2 常见HTML标签和元素 第三章 CSS基础3.1 CSS基本语法3.2 常见CSS选择器3.3 常见CSS属性…

基于Java+SpringBoot+Vue的网上图书商城设计与实现(源码+LW+部署文档等)

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

销售线索管理软件有哪些?4类线索管理平台推荐

一、销售线索管理&#xff0c;管的是什么&#xff1f; 销售线索&#xff0c;在营销术语里又被成为leads&#xff0c;一般是潜在客户的关键信息&#xff0c;如客户的名称、联系方式、行业、痛点或需求等&#xff0c;处在整个销售流程的最前端&#xff0c;是销售工作开展的基础。…

linux自启动程序

嵌入式linux下有软件需要自启动&#xff0c;只需要在/etc/init.d/rcS末尾添加所要启动的程序即可&#xff0c;开机就会自动运行 vi /etc/init.d/rcS在文件末尾添加 例&#xff1a;

Spring Data JPA 详解

目录 一、概述1.1 JPA简介1.2 Spring Data JPA简介 二、配置及应用2.1 环境配置2.2 依赖添加2.3 实体类创建2.4 Repository接口创建2.5 示例程序运行 三、实体映射3.1 注解3.2 关系映射 四、Repository接口4.1 基本增删改查4.2 自定义查询方法4.3 使用 Sort 和 Pageable 进行排…

八月组队学习来了!

Datawhale学习 联合主办&#xff1a;Datawhale&#xff0c;人民邮电出版社 本期学习由Datawhale和人民邮电出版社异步社区联合发起&#xff0c;学习大纲如下&#xff08;文末整理了这次学习的所有资料&#xff09;&#xff1a; 参与学习 ▶ 活动时间&#xff1a;学习活动 8月1…

Python(七十七)字符串的常用操作——字符串的查询操作

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

QT的信号槽的四种写法和五种链接方式

目录 四种信号槽写法&#xff1a; 五种连接方式&#xff1a; 实例&#xff1a; 常见错误及改正&#xff1a; 错误1: 未连接信号与槽 错误2: 信号和槽参数不匹配 错误3: 未使用Q_OBJECT宏 错误4: 跨线程连接未处理 在Qt中&#xff0c;信号&#xff08;Signal&#xff09…

【Three.js】遮挡剔除

背景 考虑到场景中模型顶点过多会让fps过低&#xff0c;所以想把相机看不到的模型从场景中移除&#xff0c;来提高渲染性能&#xff0c;但是后续测试结果让我恍然大悟。虽然场景中的顶点数降低了很多&#xff0c;但是每次渲染检查遮挡的过程本身就是一个消耗性能的行为&#x…

Ae 效果:CC Sphere

透视/CC Sphere Perspective/CC Sphere CC Sphere&#xff08;CC 球体&#xff09;效果可将图层映射到受光照的球体上。支持 Alpha 通道&#xff0c;球体可呈镂空状且能显示和调整内壁。 要注意&#xff0c;虽然本效果可生成一个非常生动的 3D 球体外观&#xff0c;但仍然是一个…

还在纠结QLC?Solidigm 61.44TB SSD交出了一份漂亮答卷

说起SSD&#xff0c;你最关心的是哪方面&#xff1f;容量大小&#xff1f;价格高低&#xff1f;性能快慢&#xff1f;寿命长短&#xff1f; 相信很多用户&#xff0c;尤其是懂技术、有追求的用户&#xff0c;还会非常在意NAND闪存颗粒的类型&#xff1a; SLC早已几乎销声匿迹&a…

为什么重写equals方法时必须重写hashcode方法

与 equals的区别 如果两个引用类型变量使用运算符&#xff0c;那么比较的是地址&#xff0c;它们分别指向的是否是同一地址的对象&#xff0c;结果一定是false&#xff0c;因为两个对象地址必然不同。 不能实现比较对象的值是否相同。 所有对象都有equals方法&#xff0c;默认…

车载Tbox-CAN终端数据采集实现方案

因工作关系有机会与一家做汽车数据采集公司的Tbox终端产品做数据对接。 这个产品通过can口与汽车总线交换数据&#xff0c;再将采集的数据打包通过4G以tcp报文发送到云端。云端通过解析、格式转换后保存到数据库。 本文介绍用nodejs实现tcp报文的解析&#xff0c;报文描述如下…

推荐 4 个 yyds 的 GitHub 项目

本期推荐开源项目目录&#xff1a; 1. 开源的 Markdown 编辑器 2. MetaGPT 3. SuperAGI 4. 一个舒适的笔记平台 01 开源的 Markdown 编辑器 Cherry 是腾讯开源的 Markdown 编辑器&#xff0c;基于 Javascript具有轻量简洁、易于扩展等特点&#xff0c; 它可以运行在浏览器或服…

SAP Fiori 问题收集

事务代码篇 启动工作台&#xff1a;/N/UI2/FLP 错误日志&#xff1a; /n/IWFND/ERROR_LOG 服务清单&#xff1a; /n/IWFND/MAINT_SERVICE 创建语义对象&#xff1a;/N/UI2/SEMOBJ 创建目录&#xff1a;/N/UI2/FLPD_CONF&#xff08;cross-client&#xff09;或 /N/UI2…