firewall防火墙配置实战

基本操作

服务启停操作

#停止firewall
systemctl stop firewalld  #禁止firewall开机启动
systemctl disable firewalld #开启firewall
systemctl start firewalld #开机启动防火墙
systemctl enable firewalld   # 查看防火墙状态
firewall-cmd --state 
systemctl status firewalld

防火墙基础命令

基础命令分为 增删查

查询规则

查询所有的防火墙规则
 ~]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens192sources: services: dhcpv6-client sshports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: rule family="ipv4" source address="10.xx.200.0/24" acceptrule family="ipv4" source address="10.xx.100.0/24" accept
查询防火墙某个服务或是端口的策略
# 查询某个服务的状态~]# firewall-cmd --query-service=ssh 
yes# 查询某个端口的状态~]# firewall-cmd --query-port=8080/tcp 
yes

增加规则

放行单个端口号及放行端口号区间
# 防火墙放行端口号
~]#  firewall-cmd --add-port=3306/tcp --permanent
success
~]#  firewall-cmd --add-port=80/tcp --permanent
success
~]#  firewall-cmd --add-port=8080/tcp --permanent
success# 重新加载配置
~]# firewall-cmd --reload
success# 查看验证
~]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens192sources: services: dhcpv6-client sshports: 3306/tcp 80/tcp 8080/tcp
# 这里放行8080-9000端口区间
~]# firewall-cmd --add-port=8080-9000/tcp --permanent
success
~]# firewall-cmd --reload
success
~]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens192sources: services: dhcpv6-client sshports: 3306/tcp 80/tcp 8080/tcp 8080-9000/tcp
IP地址及IP地址段放行
# 只要是这个IP地址段内的IP来源可以访问本地所有的服务和端口
firewall-cmd --add-rich-rule="rule family="ipv4" source address="10.xxx.160.0/24"  accept" --permanent # 重新加载配置firewall-cmd --reload# 查看策略
~]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens192sources: services: dhcpv6-client sshports: 3306/tcp 80/tcp 8080/tcpprotocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: rule family="ipv4" source address="10.xxx.160.0/24" acceptrule family="ipv4" source address="10.xxx.161.0/24" accept
基于mac地址进行白名单过滤

客户端的mac地址

ether 00:50:56:9f:28:09  txqueuelen 1000  (Ethernet)
ether 2e:32:63:0d:c7:5f  txqueuelen 1000  (Ethernet)

服务端这边启动了一个Nginx可以正常访问,限制了某几个Mac地址可以访问。

服务端配置防火墙规则

]# firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m mac --mac-source 00:50:56:a2:43:cf -j ACCEPT
success
]# firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m mac --mac-source 00:50:56:9f:5b:2c -j ACCEPT
success
]# firewall-cmd --reload
success
]# sudo firewall-cmd --direct --get-rules ipv4 filter INPUT
0 -m mac --mac-source 04:56:E5:20:ED:93 -j ACCEPT
0 -m mac --mac-source 00:50:56:a2:43:cf -j ACCEPT
0 -m mac --mac-source 00:50:56:9f:28:09 -j ACCEPT
0 -m mac --mac-source 00:50:56:9f:5b:2c -j ACCEPT

验证客户端访问服务端 查看是否有被拦截

# 已添加到规则内的 mac地址  ether 00:50:56:9f:28:09 
# 访问服务端curl 10.xx.100.131:443
<h1>Welcome to nginx!</h1># 已添加到规则内的  mac地址 ether 00:50:56:9f:5b:2c
# 访问服务端curl 10.xx.100.131:443
<h1>Welcome to nginx!</h1># 非添加到规则内的 mac地址 ether 00:50:56:9f:06:11
# 访问服务端curl 10.xx.100.131:443
curl: (7) Failed connect to 10.xx.100.131:443; 没有到主机的路由
服务放行
# 把MySQL服务对外暴漏出去让客户端访问
~]# firewall-cmd --add-service=mysqld --permanent
success
~]# firewall-cmd --reload
success
~]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens192sources: services: dhcpv6-client mysqld ssh

注意这里如果是服务改了端口加完配置后不会随之改变的

# 注意:如果端口号修改,如ssh默认为22,修改为12222,
# 这时开放服务是没有用的,这条规则只会命中默认的22。
# 所以还是建议用放行端口或是IP地址段的方式,此种策略暂不建议,除非firewall的版本升级,修改了现在的问题。
firewall-cmd --add-rich-rule="rule family="ipv4" source address="10.xx.96.10" service name="ssh" accept"

删除策略

# 这里删除策略是 --remove删除策略
~]#  firewall-cmd --remove-port=3306/tcp --permanent
success~]# firewall-cmd --reload
success
~]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens192sources: services: dhcpv6-client mysqld sshports: 80/tcp 8080/tcp 8080-9000/tcp 8080-9999/tcp

防火墙黑名单配置

# A机器上配置防火墙策略 10.xxx.200.46
~]# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.xxx.2.0/24" service name="ssh"  reject" 
success
~]# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.xxx.200.47" service name="ssh"  reject" 
success~]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens192sources: services: dhcpv6-client mysqld sshports: 80/tcp 8080/tcp 8080-9000/tcp 8080-9999/tcpprotocols: masquerade: yesforward-ports: port=666:proto=tcp:toport=80:toaddr=10.1.200.47source-ports: icmp-blocks: rich rules: rule family="ipv4" source address="192.xxx.2.0/24" service name="ssh" rejectrule family="ipv4" source address="10.xxx.200.47" service name="ssh" reject# B机器IP地址10.xxx.200.47 用ssh访问B机器IP地址10.xxx.200.46,显示端口被拒绝
Last login: Sun Jan 29 17:18:11 2023 from 10.xxx.200.45
~]# ssh 10.xxx.200.46
ssh: connect to host 10.xxx.200.46 port 22: Connection refused

防火墙端口流量转发

命令格式

firewall-cmd --permanent --zone=public --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目的端口号>:toaddr=<目标地址、本机地址>
本地端口转发

example A访问B机器的888端口转发到22端口

example 访问目标888端口转发到22端口

firewall-cmd --permanent --add-forward-port=port=888:proto=tcp:toport=22:
#防火墙public区域,访问本机888端口的请求流量转发到22端口号,目标IP地址这里不写就是本机firewall-cmd --reload   #让永久生效策略不用重启当前立即生效ssh -p 888 192.xxx.2.1  #在客户机使用ssh命令尝试访问192.xxx.2.1主机的888端口,查看是否转发到了22端口,是否登录成功

A机器访问B机器的888端口转发到22端口上

# 在B机器上配置流量转发策略,访问888端口转发到22端口上
[root@shurongtest-010xx00046 ~]# firewall-cmd --permanent --add-forward-port=port=888:proto=tcp:toport=22:toaddr=10.xxx.200.46
success
[root@shurongtest-01xxx1200046 ~]# firewall-cmd --reload
success
[root@shurongtest-01xxx200046 ~]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens192sources: services: dhcpv6-client mysqld sshports: 80/tcp 8080/tcp 8080-9000/tcp 8080-9999/tcpprotocols: masquerade: noforward-ports: port=888:proto=tcp:toport=22:toaddr=10.xxx.200.46# 在A机器上ssh访问B机器的888端口,这里访问了888端口是可以正常登录的说明流量转发成功。
[root@shurongtest-010xxx200045 admin]# ssh 10.xxx.200.46 -p 888
Last login: Sun Jan 29 14:30:55 2023 from 10.xxx.200.45
[root@shurongtest-010xxx1200046 ~]# 

远程端口转发
# 开启IP伪装(也就是端口转发)
# firewall-cmd --permanent --add-masquerade# A机器访问B机器的999端口转发C机器的80端口上
# A机器IP地址10.xxx.100.133  B机器IP地址10.xxx.100.132  C机器IP地址10.xxx.100.131# 目标C机器端口80返回的页面是 
访问返回
Welcome to nginx!# 在B机器上测试访问C机器,看一下能否正常返回
curl 10.xxx.100.131
Welcome to nginx!# 核心配置 B机器上配置流量转发,其它主机访问888端口就会访问到C主机的 nginx欢迎页面
]# firewall-cmd --permanent --add-masquerade
success
]# firewall-cmd --permanent --add-forward-port=port=888:proto=tcp:toport=443:toaddr=10.xxx.100.131
success# 验证 A机器访问B机器的999端口
]# curl 10.xxx.100.132:888
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>

应急模式

注意 这个模式谨慎使用会断开一切网络连接包括ssh,需要有控制台或是现场机房可以

# 谨慎使用,除非人员在本地,可以控制服务器
# 启动/关闭firewalld防火墙服务的应急状况模式,阻断一切网络连接(当远程控制服务器时慎用)firewall-cmd  --panic-on     #开启防火墙服务的应急状况模式,阻止一切网络连接firewall-cmd  --panic-off    #关闭防火墙服务的应急状况模式,恢复一切网络连接                            

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

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

相关文章

springboot文件上传需要的配置

总结一下文件上传需要的配置信息&#xff1a; ①在springboot的配置文件中指定请求大小及文件大小&#xff0c;默认大小较小&#xff0c;可能不够 spring.servlet.multipart.max-file-size512MB spring.servlet.multipart.max-request-size512MB ②在springboot的配置文件中…

实现VLAN间通信以太网链路聚合与交换机堆叠、集群华为ICT网络赛道

10.实现VLAN间通信 10.1.使用路由器实现VLAN间通信 使用路由器物理接口 路由器三层接口作为网关&#xff0c;转发本网段前往其它网段的流量。 路由器三层接口无法处理携带VLAN Tag的数据帧&#xff0c;因此交换机上联路由器的接口需配置为Access. 路由器的一个物理接口作为一…

easyx devc++ 开发具有导出文件夹DLC的瓦片地图编辑器

1. F1保存为 DLC 输出为当前文件目录下。 2. 瓦片的边框利用绘制到 -1 -1 把边框绘制到外部 3. 利用 1 实现网格保留 #include <graphics.h> #include <stdio.h> #include <string.h> #include <io.h> // 保存游戏地图贴图数据 void savegamemap(in…

python常见的数据类型与数据结构(一)数字类型 字符串类型 布尔类型 列表 集合 字典 的定义与常规操作方法

python常见的数据类型与数据结构&#xff08;一&#xff09;数字类型 字符串类型 布尔类型 列表 集合 字典 的定义与常规操作方法 数据类型数字类型字符串类型布尔类型 数据结构列表集合字典 数据类型 数字类型 数字类型有int(整数)&#xff0c;float(浮点数)和complex(复数型…

异步任务超时机制

目录 1、Thread.Join(timeout) 2、Task.WhenAny(task,Task.Delay(timeout)) 3、WaitAsync(timeout) 需主动取消 4、CancellationTokenSource(timeout) 1、Thread.Join(timeout) var thread new Thread(() > {try {Console.WriteLine("Foo start...");Thread…

vue 使用docx库生成word表格文档

在Vue.js中生成Word表格文档&#xff0c;可以通过前端库来实现。这些库可以帮助我们轻松地将HTML表格转换为Word文档&#xff08;通常是.docx格式&#xff09;。以下是一些流行的前端库&#xff0c;它们可以用于在Vue项目中生成Word表格文档&#xff1a; docx…

保险购买的渠道

买保险的渠道 1.代理人。这个是保险公司传统的渠道&#xff0c;代理人的队伍非常庞大&#xff0c;许多人都碰到过保险代理人。 保险代理人的优势是"线下""1对1"&#xff0c;业务员如果非常专业&#xff0c;就能够给我们提供非常好的体验。由于大多数人接…

跨境电商无货源如何实现自动化对接1688货源商品上架?1688商品采集API来帮你

阿里巴巴集团旗下的B2B电子商务网站&#xff0c;提供海量优质商品&#xff0c;为采购商和供应商提供交流、合作、采购等服务&#xff0c;是很多没有货源优势的电商卖家首选的货源途径&#xff0c;也是国内最大、货源种类最齐全的货源网站。 不少做跨境电商无货源的朋友都想要直…

优思学院|精益思想如何识别价值流?【案例分析】

精益思想是一种为了提高效率、减少浪费的管理哲学&#xff0c;精益思想强调在整个生产过程中识别并消除一切不创造价值的步骤。 价值流分析是精益思想中的一个核心概念&#xff0c;通过深入分析特定产品从原材料到最终交付给顾客的全过程&#xff0c;来识别并削减浪费&#xf…

Win11专业版安装集成了谷歌框架的安卓子系统,包含谷歌商店

1.摘要 上一篇博客讲述了使用微软商店安装安卓子系统的教程 https://blog.csdn.net/RudeTomatoes/article/details/135958882 上述方法的优点是安装过程简单&#xff0c;但是&#xff0c;由于Windows安卓子系统是微软与亚马逊联合开发&#xff0c;默认没有安装谷歌框架。我尝试…

实现一个Windows环境一键启停Oracle的bat脚本

Oracle数据库有许多优点,其中一些最重要的包括: 可靠性和稳定性: Oracle数据库经过长期的发展和测试,被广泛认为是非常可靠和稳定的数据库管理系统。它在大型企业和关键业务环境中被广泛应用,能够处理高负载和大规模的数据。 高性能: Oracle数据库具有优化的查询处理器和…

Pytorch框架-----torch.tensor(创建张量)

文章目录 前言一、torch.Tensor二、构建tensor1.从Python的list或序列构建2.空张量3.索引和切片来获取和修改一个张量tensor中的内容 前言 torch.Tensor 是包的核心类。如果将其属性 .requires_grad 设置为 True&#xff0c;则会开始跟踪针对 tensor的所有操作。完成计算后&am…

线程相关整理

一 常用的线程手段 1 synchronized 有方法&#xff0c;和方法块&#xff0c;新的java版本 内部实现已经包含了多种方案&#xff0c;并动态调整方案&#xff0c;因此不是特别需求的化&#xff0c;建议直接用此方式 2 reentrantlock 可以构造公平锁 以上两种 代码片段应该是没得选…

开箱即用之 redis键值失效通知后端进行业务操作

引入redis依赖 <!--Spring boot Redis--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency>配置类编写 import com.alibaba.fastjson.support.sp…

蓝牙攻击工具集合与使用说明

bluez - 蓝牙协议栈&#xff0c;提供了蓝牙设备管理和通信的基本功能。btscanner - 用于发现和扫描蓝牙设备的工具。bluetoothctl - 蓝牙控制终端工具&#xff0c;用于管理蓝牙设备和进行配对等操作。spooftooph - 用于欺骗和伪造蓝牙设备的MAC地址的工具。ubertooth - 用于无线…

设计模式一:单例模式

1、单例模式的实现方式 /*** 1、饿汉模式*/ public class Singleton1 {private static AtomicInteger count new AtomicInteger(0);private static final Singleton1 instance new Singleton1();public static Singleton1 getInstance(){return instance;} }/*** 2、懒汉模式…

学习总结19

# 奶牛的耳语 ## 题目描述 在你的养牛场&#xff0c;所有的奶牛都养在一排呈直线的牛栏中。一共有 n 头奶牛&#xff0c;其中第 i 头牛在直线上所处的位置可以用一个整数坐标 pi(0< pi < 10^8) 来表示。在无聊的日子里&#xff0c;奶牛们常常在自己的牛栏里与其它奶牛交…

设计模式-面试题

一、实际应用 项目中使用到的设计模式 模板方法模式、工厂方法模式、外观模式、建造者模式Spring中使用到的设计模式 代理模式、单例模式、观察者模式二、设计模式分类 设计模式(Design Pattern)是一套被反复使用、代码设计经验的总结。使用设计模式是为了可重用代码、让代码…

vue3项目配置按需自动导入API组件unplugin-auto-import

场景应用&#xff1a;避免写一大堆的import&#xff0c;比如关于Vue和Vue Router的 1、安装unplugin-auto-import npm i -D unplugin-auto-import 2、配置vite.config import AutoImport from unplugin-auto-import/vite//按需自动加载API插件 AutoImport({ imports: ["…

c++学习记录 普通函数与函数模板调用规则

普通函数与函数模板调用规则 如果函数模板和普通函数都可以调用&#xff0c;优先调用普通函数可以通过空模板参数列表 强制调用函数模板函数模板可以发生函数重载如果函数模板可以产生更好的匹配&#xff0c;优先调用函数模板 #include<iostream> using namespace std;…