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

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.mzph.cn/news/40752.shtml

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

相关文章

神经网络基础-神经网络补充概念-31-参数与超参数

概念 参数&#xff08;Parameters&#xff09;&#xff1a; 参数是模型内部学习的变量&#xff0c;它们通过训练过程自动调整以最小化损失函数。在神经网络中&#xff0c;参数通常是连接权重&#xff08;weights&#xff09;和偏置&#xff08;biases&#xff09;&#xff0c;…

ChatGLM2-6B安装部署(详尽版)

1、环境部署 安装Anaconda3 安装GIT 安装GUDA 11.8 安装NVIDIA 图形化驱动 522.25版本&#xff0c;如果电脑本身是更高版本则不用更新 1.1、检查CUDA 运行cmd或者Anaconda&#xff0c;运行以下命令 nvidia-smi CUDA Version是版本信息&#xff0c;Dricer Version是图形化…

LeetCode 160.相交链表

文章目录 &#x1f4a1;题目分析&#x1f4a1;解题思路&#x1f6a9;步骤一&#xff1a;找尾节点&#x1f6a9;步骤二&#xff1a;判断尾节点是否相等&#x1f6a9;步骤三&#xff1a;找交点&#x1f344;思路1&#x1f344;思路2 &#x1f514;接口源码 题目链接&#x1f449;…

Ubuntu下mysql安装及远程连接支持配置

1.安装 下载mysql-server&#xff08;必须加sudo&#xff09; sudo apt update sudo apt install mysql-server 查看mysql的状态 sudo service mysql status 通过如下命令开启mysql sudo service mysql start 2.配置 第一次安装mysql后&#xff0c;为root设置一个密码 …

Linux -- 进阶 Autofs应用 : 光驱自动挂载 操作详解

服务端自动挂载光驱 第一步 &#xff1a; 关闭安全软件&#xff0c;安装自动挂载软件 [rootserver ~]# setenforce 0 [rootserver ~]# systemctl stop firewalld [rootserver ~]# yum install autofs -y 第二步 &#xff1a; 修改 autofs 主配置文件&#xff0c; 计划挂载光…

C++之map的emplace与pair插入键值对用例(一百七十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

213、仿真-基于51单片机智能电表电能表用电量电费报警Proteus仿真设计(程序+Proteus仿真+原理图+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件设计 二、设计功能 三、Proteus仿真图 四、原理图 五、程序源码 资料包括&#xff1a; 需要完整的资料可以点击下面的名片加下我&#xff0c;找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选…

uniapp tabbar 浏览器调试显示 真机不显示

解决方案&#xff0c;把tabBar里面的单位全改为px&#xff0c;rpx是不会显示的&#xff01; 注意了&#xff0c;改完一定要重新运行&#xff0c;不然无效&#xff0c;坑爹 "tabBar": {"borderStyle": "black","selectedColor": &quo…

java-JVM内存区域JVM运行时内存

一. JVM 内存区域 JVM 内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地方法区】、线程共享区域【JAVA 堆、方法区】、直接内存。线程私有数据区域生命周期与线程相同, 依赖用户线程的启动/结束 而 创建/销毁(在 HotspotVM 内, 每个线程都与操作系统的本地线程直接映…

SwiftUI 动画进阶:实现行星绕圆周轨道运动

0. 概览 SwiftUI 动画对于优秀 App 可以说是布帛菽粟。利用美妙的动画我们不仅可以活跃界面元素,更可以单独打造出一整套生动有机的世界,激活无限可能。 如上图所示,我们用动画粗略实现了一个小太阳系:8大行星围绕太阳旋转,而卫星们围绕各个行星旋转。 在本篇博文中,您将…

vue3实现防抖、单页面引入、全局引入、全局挂载

文章目录 代码实现单页面引入全局引入使用 代码实现 const debounce (fn: any, delay: number) > {let timer: any undefined;return (item: any) > {if (timer) clearTimeout(timer);timer setTimeout(() > fn(item), delay);} };export default debounce;单页面…

Python + Selenium 处理浏览器Cookie

工作中遇到这么一个场景&#xff1a;自动化测试登录的时候需要输入动态验证码&#xff0c;由于某些原因&#xff0c;需要从一个已登录的机器上&#xff0c;复制cookie过来&#xff0c;到自动化这边绕过登录。 浏览器的F12里复制出来的cookie内容是文本格式的&#xff1a; uui…

【第二讲---初识SLAM】

SLAM简介 视觉SLAM&#xff0c;主要指的是利用相机完成建图和定位问题。如果传感器是激光&#xff0c;那么就称为激光SLAM。 定位&#xff08;明白自身状态&#xff08;即位置&#xff09;&#xff09;建图&#xff08;了解外在环境&#xff09;。 视觉SLAM中使用的相机与常见…

VB+SQL银行设备管理系统设计与实现

摘要 随着银行卡的普及,很多地方安装了大量的存款机、取款机和POS机等银行自助设备。银行设备管理系统可以有效的记录银行设备的安装和使用情况,规范对自助设备的管理,从而为用户提供更加稳定和优质的服务。 本文介绍了银行设备管理系统的设计和开发过程,详细阐述了整个应…

Flink之Task解析

Flink之Task解析 对Flink的Task进行解析前,我们首先要清楚几个角色TaskManager、Slot、Task、Subtask、TaskChain分别是什么 角色注释TaskManager在Flink中TaskManager就是一个管理task的进程,每个节点只有一个TaskManagerSlotSlot就是TaskManager中的槽位,一个TaskManager中可…

数据结构单链表

单链表 1 链表的概念及结构 概念&#xff1a;链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链 接次序实现的 。 在我们开始讲链表之前&#xff0c;我们是写了顺序表&#xff0c;顺序表就是类似一个数组的东西&#xff0…

上海虚拟展厅制作平台怎么选,蛙色3DVR 助力行业发展

引言&#xff1a; 在数字化时代&#xff0c;虚拟展厅成为了企业宣传的重要手段。而作为一家位于上海的实力平台&#xff0c;上海蛙色3DVR凭借其卓越的功能和创新的技术&#xff0c;成为了企业展示和宣传的首选。 一、虚拟展厅的优势 虚拟展厅的崛起是指随着科技的进步&#x…

36_windows环境debug Nginx 源码-使用 VSCode 和WSL

文章目录 配置 WSL编译 NginxVSCode 安装插件launch.json配置 WSL sudo apt-get -y install gcc cmake sudo apt-get -y install pcre sudo apt-get -y install libpcre3 libpcre3-dev sudo apt-get

手机商城网站的分析与设计(论文+源码)_kaic

目录 摘 要 1 1 绪论 2 1.1选题背景意义 2 1.2国内外研究现状 2 1.2.1国内研究现状 2 1.2.2国外研究现状 3 1.3研究内容 3 2 网上手机商城网站相关技术 4 2.1.NET框架 4 2.2Access数据库 4 2.3 JavaScript技术 4 3网上手机商城网站分析与设…

Grafana+Prometheus技术文档-进阶使用-监控spring-boot项目

阿丹&#xff1a; 之前已经实现了使用Prometheus来对服务器进行了监控和仪表盘的创建&#xff0c;现在就需要对这些监控方法使用在spring-boot中去。 实现思路&#xff1a; 1、集成Actuator 2、加入Prometheus的依赖 3、配置开放端口、以及开放监控 4、配置Prometheus中的配置…