当前位置: 首页 > news >正文

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    #关闭防火墙服务的应急状况模式,恢复一切网络连接                            

相关文章:

  • 宝塔nginx配置SpringBoot服务集群代理
  • 【教程】autojs使用Intent打开相机拍照并指定存储路径
  • virtualbox虚拟机运行中断,启动报错“获取 VirtualBox COM 对象失败”
  • element 表单提交图片(表单上传图片)
  • 扫盲:什么是webGPU,和webGL对比哪些优点?
  • Java——Stream流的学习
  • 分享一个学英语的网站
  • 若依不分离版本部署流程
  • 【工作记录】基于docker+mysql部署单机版nacos2.0.4@20240219
  • 淘宝商品采集API通过商品id获取商品详情信息
  • 网络安全-一句话木马
  • steam搬砖项目真的假的,2024年到底还能不能做?
  • Linux——网络通信TCP通信常用的接口和tcp服务demo
  • 【springboot+vue项目(十五)】基于Oauth2的SSO单点登录(二)vue-element-admin框架改造整合Oauth2.0
  • SQL-2
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • CSS盒模型深入
  • HTTP那些事
  • Java,console输出实时的转向GUI textbox
  • js对象的深浅拷贝
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • SQLServer之索引简介
  • Vue实战(四)登录/注册页的实现
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 聚簇索引和非聚簇索引
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 阿里云服务器如何修改远程端口?
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • # 计算机视觉入门
  • #include
  • #includecmath
  • (02)Hive SQL编译成MapReduce任务的过程
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (转)为C# Windows服务添加安装程序
  • ..回顾17,展望18
  • .axf 转化 .bin文件 的方法
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET Core 中插件式开发实现
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .net网站发布-允许更新此预编译站点
  • @Autowired多个相同类型bean装配问题
  • @RequestParam,@RequestBody和@PathVariable 区别
  • [ACTF2020 新生赛]Upload 1
  • [Avalon] Avalon中的Conditional Formatting.
  • [C#]winform部署yolov5-onnx模型
  • [CVPR 2023:3D Gaussian Splatting:实时的神经场渲染]
  • [C语言]——内存函数