Linux下的防火墙管理(包含图形和命令、伪装和转发)
一、防火墙概述
1. 防火墙定义
防火墙(Firewall),也称防护墙,是由Check Point创立者Gil Shwed于1993年发明并引入国际互联网。防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出。 防火墙是系统的第一道防线,其作用是防止非法用户的进入。
2. 防火墙分类
从结构上来分,防火墙有两种:
即代理主机结构和路由器+过滤器结构,后一种结构如下所示:内部网络过滤器(Filter)路由器(Router)Internet
从原理上来分,防火墙则可以分成4种类型: 特殊设计的硬件防火墙、数据包过滤型、电路层网关和应用级网关。安全性能高的防火墙系统都是组合运用多种类型防火墙,构筑多道防火墙“防御工事”。
3. 防火墙类型
(1)网络层防火墙
网络层防火墙可视为一种 IP封包过滤器,运作在底层的TCP/IP协议堆栈上。我们可以以枚举的方式,只允许符合特定规则的封包通过,其余的一概禁止穿越防火墙(病毒除外,防火墙不能防止病毒侵入)。这些规则通常可以经由管理员定义或修改,不过某些防火墙设备可能只能套用内置的规则。
我们也能以另一种较宽松的角度来制定防火墙规则,只要封包不符合任何一项“否定规则”就予以放行。操作系统及网络设备大多已内置防火墙功能。
较新的防火墙能利用封包的多样属性来进行过滤,例如:来源 IP地址、来源端口号、目的 IP 地址或端口号、服务类型(如 HTTP 或是 FTP)。也能经由通信协议、TTL 值、来源的网域名称或网段…等属性来进行过滤。
(2)应用层防火墙
应用层防火墙是在 TCP/IP 堆栈的“应用层”上运作,您使用浏览器时所产生的数据流或是使用 FTP 时的数据流都是属于这一层。应用层防火墙可以拦截进出某应用程序的所有封包,并且封锁其他的封包(通常是直接将封包丢弃)。理论上,这一类的防火墙可以完全阻绝外部的数据流进到受保护的机器里。
防火墙借由监测所有的封包并找出不符规则的内容,可以防范电脑蠕虫或是木马程序的快速蔓延。不过就实现而言,这个方法既烦且杂(软件有千千百百种啊),所以大部分的防火墙都不会考虑以这种方法设计。
XML 防火墙是一种新型态的应用层防火墙。 根据侧重不同,可分为:包过滤型防火墙、应用层网关型防火墙、服务器型防火墙。
(3)数据库防火墙
数据库防火墙是一款基于数据库协议分析与控制技术的数据库安全防护系统。基于主动防御机制,实现数据库的访问行为控制、危险操作阻断、可疑行为审计。
数据库防火墙通过SQL协议分析,根据预定义的禁止和许可策略让合法的SQL操作通过,阻断非法违规操作,形成数据库的外围防御圈,实现SQL危险操作的主动预防、实时审计。
数据库防火墙面对来自于外部的入侵行为,提供SQL注入禁止和数据库虚拟补丁包功能。
(4)防火墙的基本特性
(一)内部网络和外部网络之间的所有网络数据流都必须经过防火墙
(二)只有符合安全策略的数据流才能通过防火墙
(三)防火墙自身应具有非常强的抗攻击免疫力
(四)应用层防火墙具备更细致的防护能力
(五)数据库防火墙针对数据库恶意攻击的阻断能力
二、实验环境搭建
1.在真机中重置虚拟机desktop
2.给虚拟机配置网络,设置虚拟机的ip为172.25.254.112
3.在虚拟机desktop上搭建yum源
4. 搜索并安装firewalld服务
5. 开启firewalld的火墙服务,并使其开机自启动,关闭iptables的火墙
6. 安装httpd服务
7. 重启httpd服务,并使其开机自启动
8.进入apache的默认发布目录,并编辑发布文件
9. 重启apache服务,如下所示:
10. 在真机测试,发现不能访问到发布文件
出现此问题是因为虚拟机火墙中的域不允许,为了解决这个问题,我们需要可以利用图形管理firewalld的方式进行后面的操作,以此来让访问发布文件。
三、使用图形界面管理firewalld防火墙
1. 首先了解firewalld域中的网络区名称
网络区名称 | 默认配置 |
---|---|
trusted(信任) | 可接受所有的网络连接 |
home(家庭) | 用于家庭网络,仅接受ssh、mdns、ipp-client、samba-client、或dhcpv6-client服务连接 |
internal(内部) | 用于内部网络,用于家庭网络,仅接受ssh、mdns、ipp-client、samba-client、或dhcpv6-client服务连接 |
work(工作) | 用于工作区,仅接受ssh、ipp-client或dhcpv6-client服务连接 |
public(公共) | 在公共区域内使用,仅接受ssh或dhcpv6-client服务连接,为firewalld的默认区域 |
external(外部) | 出去的ipv4网络连接通过此区域的伪装和转发,仅接受ssh服务连接 |
dmz(非军事区) | 仅接受ssh服务连接 |
block(限制) | 拒绝所有网络连接 |
drop(丢弃) | 接受任何的网络数据包都被丢弃,没有任何回复 |
2. 图形管理firewalld防火墙
1.在虚拟机desktop中输入firewall-config命令,此时的域为默认的public,如下图所示:
2. 在默认的firewalld域为public的情况下,我们去真机访问desktop的apache,发现访问不到,如下所示:
3. 在public的域中,在真机ssh连接虚拟机,能连接上,因为public域中接受ssh服务连接,如下所示:
4. 将默认的public公共域改为trusted,如下所示:
5. 当火墙为trusted的域时,在真机浏览器中访问apache的发布文件,发现能访问到,如下所示:
6. 在trusted的域中,在真机ssh连接虚拟机,能连接上,因为trusted域中接受ssh服务连接,如下所示:
7. 将上面的trusted域改为block的域,如下所示:
8. 在真机中ssh连接虚拟机desktop,发现连接不上(因为block是拒绝一切服务连接),如下所示:
四、使用命令管理firewalld防火墙
1. 防火墙命令及各命令含义
firewall-config | 开启火墙的图形管理 |
---|---|
firewall-cmd --state | 查看火墙的当前状态 |
firewall-cmd --get-active-zones | 查看正在工作的域,用的是哪个就是哪个 |
firewall-cmd --get-default-zone | 查看默认使用的域,与正在工作的域可以不同 |
firewall-cmd --get-zones | 查看所有的域 |
firewall-cmd --zone=public --list-all | public域里的设置 |
firewall-cmd --list-all-zones | 查看所有域的所有设置 |
firewall-cmd --get-services | 所有支持可以直接添加使用的服务名称 |
firewall-cmd --set-default-zone=public | 改变默认域 |
2. 命令具体操作及含义
3. 使用命令指定火墙的域
1.在desktop的虚拟机上更改火墙的域,使火墙的域为默认的public域,如下图所示:
2.在真机上测试,在浏览器中输入172.25.254.112,此时访问不到,因为火墙的策略中没有添加apache的服务,如下所示:
3. 在desktop的虚拟机上添加数据包属性,即指定外来的主机172.25.254.12走自己的trusted域
4. 此时在真机的浏览器中去输入172.25.254.112,发现能访问到虚拟机desktop上的发布文件,如下所示:
5. 但是在虚拟机server(ip为172.25.254.212)上输入172.25.254.112却访问不到(因为在desktop的火墙策略中没有添加这个服务),如下图所示:
4. 指定firewalld防火墙的服务
实验环境搭建及需求:
1.desktop虚拟机两块网卡:eth0 (172.25.254.112)和eht1( 1.1.1.112)
2.server虚拟机一块网卡:eth0( 1.1.1.212 )
3.在serevr上面:ping 1.1.1.112可以,打开浏览器输入1.1.1.112访问desktop的apache,访问不到
因为此时desktop的eth1(1.1.1.112)在public里面
实验具体操作如下:
1.在desktop上面查看发现eth0和eth1都在public的域中,不允许外来主机访问apache,将eth1从public的域中移走,再次查看发现public的域中只有eth0,如下所示:
2. 将移走的eth1添加到trusted的域中,如下所示:
3. 在server的虚拟机上打开浏览器进行测试,输入1.1.1.112发现可以访问,如下所示:
4. 在desktop的虚拟机上将添加到trusted域中的eth1改回到public的域中并查看,如下所示
5. 再次去server的虚拟机上打开浏览器中输入1.1.1.112测试,发现不能访问,如下所示:
5. firewalld防火墙常见的修改命令
firewall-cmd --permanent --zone=internal --add-source=172.25.0.0/24指定服务firewall-cmd --permanent --zone=internal --remove-source=172.25.0.0/24移走服务firewall-cmd --permanent --zone=internal --add-interface=eth0添加网卡所在的域firewall-cmd --permanent --zone=internal --change-interface=eth0改变网卡所在的域firewall-cmd --permanent --zone-internal --remove-interface=eth0将eth0网卡从internal域上面移走firewall-cmd --permanent --zone=public --add-service=smtp永久添加服务firewall-cmd --permanent --zone=public --remove-service=smtp永久移走服务firewall-cmd --zone=public --list-ports列出允许的端口firewall-cmd --permanent --zone=public --add-port=8080/tcp永久添加,开机依然生效firewall-cmd --permanent --zone=public --remove-port=8080/tcp永久移走,开机依然生效
如果改域里面的服务不加permanent的话,直接改,直接查就会生效,reload后,就会返回原来的状态
设置防火墙规则:
firewall-cmd --reload 改完重新加载使其生效,但是不会断开已经连接的firewall-cmd --complete-relode 改完加载,并且断开所有的连接
具体实验操作如下:
1. 移走火墙中的ssh服务并查看,如下所示:
2. 在真机上面测试发现能连接上,如下所示: 3. 加载使其生效,如下所示:
4. 在真机上发现刚才的连接并没有断开,因为此时没有使用desktop的22端口,如下所示:
5. 在desktop的虚拟机上面,使其完全加载,如下所示:
6. 此时发现真机上面的ssh已经断开连接,不能进行任何操作,如下:
7. 在真机中打开一个shell,输入命令killall -9 ssh,此时发现虚拟机退出ssh连接的卡住模式,如下所示:
8.在火墙的配置文件下,进入默认域的配置文件下查看这个域的服务,如下所示:
进入public.xml.old之前的服务(比较人性化)查看,如下所示:
添加ssh服务,不加载,进入public.xml(此时没有ssh),如下所示:
再次进入public.xml.old之前的服务(比较人性化)查看,如下所示:
加载使其生效,再次进入public.xml的文件发现有ssh,如下所示:
加载后再次进入public.xml.old发现没有了ssh,如下所示:
9. 进入火墙的函数库下的配置文件下查看,并进入ssh.xml发现服务与端口是绑定在一起的,如下所示:
当服务的端口为22时,去真机ssh连接,发现能连接上,如下所示:
将服务的端口22—>23改端口,并重启防火墙,使其加载生效
测试,发现此时真机不能ssh连接虚拟机desktop,如下所示:
因为ssh连接默认会找desktop的22端口,此时desktop的ssh服务是23端口,因此连接不上
6. 火墙指定访问权限设置
实验需求:
现在只想要172.25.254.12真机ssh访问desktop(服务端指定什么人访问什么服务)
服务端的三个动作:
accept | 接受客户端的请求 |
---|---|
reject | 拒绝请求,但是给客户端有回应,客户端不再访问 |
drop | 丢弃,没有回应,客户端会一直发数据包,加大负载 |
实验步骤如下:
1.在desktop上面发现有ssh服务,如下所示:
2. 在真机和虚拟机server上都可以ssh连接虚拟机desktop,如下所示:
实验需求:真机可以ssh连接虚拟机desktop,server不可以,如下所示:
1.添加防火墙规则,并移除ssh服务,如下所示:
2. 测试,发现真机能连接,虚拟机server不能连接,如下所示:
3. 修改火墙策略,如下所示:
4. 再次去测试,发现真机不能ssh连接,虚拟机可以ssh连接,如下所示:
7. firewalld的地址伪装和端口转发
实验前提:
1.查看desktop和server的ip,如下所示:
2. 用server虚拟机去ping虚拟机desktop的172.25.254.112,发现ping不通(两者不在同一网端),如下所示:
实验具体步骤如下:
地址伪装步骤:
1.在server虚拟机上desktop的ip作为网关,如下所示:
2.重启网络并查看网关,如下所示:
3.开启火墙防伪装功能,如下所示:
4.在server虚拟机上查看eth0是否在public域中,如果不在去添加,如下所示:
5. 测试,发现虚拟机server(1.1.1.212)能ping通虚拟desktop(172.25.254.112),如下所示:
端口转发步骤:
1.真机去直接连接1.1.1.212,发现链不上(不在同一网端),如下所示:
2. 查看并开启端口转发功能,如下所示:
3.测试,在真机上ssh root@172.25.254.112发现连接的是虚server(1.1.1.212),如下所示:
4.此时去ping虚拟机server发现能ping通,如下所示:
Linux下的防火墙管理(包含图形和命令、伪装和转发)相关推荐
- linux输入一个用户看是否在工作,linux下的用户管理详解
linux下的用户管理详解 useradd 命令详解 添加用户 想要对linux下面的帐号了解的话首先必须要了解的4个配置文件[root@localhost /]# cat /etc/passwd 首 ...
- linux分区管理,Linux下磁盘分区管理
Linux下磁盘分区管理 发布时间:2009-04-11 10:29:37来源:红联作者:lvshengming 在Linux下对IDE的设备是以hd命名的,第一个ide设备是hda,第二个是hdb, ...
- linux下sudo权限管理
linux下sudo权限管理 1.修改/etc/sudoers下文件 2.文件格式为 user_flag host_flag=(runlevel_flag) command_flag 分别代表用户名 ...
- linux系统中建立网络白名单,Linux下设置防火墙白名单(RHEL 6和CentOS 7)的步骤
进入Linux 命令行,编辑防火墙规则配置文件 iptables vi /etc/sysconfig/iptables 下面是一个白名单设置的例子: # Firewall configuration ...
- linux下mysql日志管理及mysql备份还原
linux下mysql日志管理及mysql备份还原 1.SHOW GLOBAL VARIABLES LIKE '%log%'; 显示所有日志相关的选项 2.错误日志:log_error和log_wa ...
- 【dubbo-2.5.x】Linux下dubbo-admin监控/管理平台部署详细教程
前言 Dubbo-Admin是Dubbo控制台管理的工具,是Dubbo组件之一,需要Dubbo-Admin管理平台来实时对服务调用情况进行调整,比如控制分布式服务的调用权重等,通过调整调整调用权重来控 ...
- 5.Linux下的权限管理
5.Linux下的权限管理 一.权限查看及读取 1.权限查看 ls -l file 查看文件权限 ls -ld dir 查看目录权限 2.权限读取 二.文件用户用户组管理 chown chown us ...
- 3 款 Linux 下的照片管理软件
Linux 下的照片管理软件大家熟悉的大致有十来个.网上搜索一下就能看到相关的文章介绍.本站以前也介绍过:六款优秀的 Linux 照片管理软件,LinuxLink 也有:7 of the Best F ...
- linux下查看防火墙状态、关闭防火墙、开放关闭端口等
linux下查看防火墙状态.关闭防火墙.开放关闭端口等 1. 查看防火墙状态 2. 关闭防火墙 3. 开启防火墙 4. 关闭.开启防火墙示例看图 5. 查看防火墙开放的端口.设置开放端口 5.1 查看 ...
最新文章
- USEARCH —— 最简单易学的扩增子分析流程
- 院士张钹:AI奇迹短期难再现 深度学习技术潜力已近天花板
- C#.NET通用权限管理在DB2数据库上运行的脚本参考 - 序列创建脚本参考
- 实战SSM_O2O商铺_36【商品】商品列表之Dao+Service+Controller层的实现
- php mysql 正则_MySQL 正则表达式
- 记录一次SQL优化,增加索引,随便写的当笔记了
- JavaScript中错误正确处理方式,你用对了吗? 1
- VS2015 VisualSVN的 破解方法
- wsdl文件 服务器地址,webservice 的wsdl文件详解
- QQ 邮箱设置自定义域名邮箱
- 一部火了20年的音乐剧,到底有何魅力?
- Web开发之分页功能
- 肖明计算机网络答案,袭肖明
- ICLR 2022最佳论文解读
- mysql之连接查询
- 文件夹选择框 文件选择框
- 我我我我终于理解闭包了,哈哈哈哈(仰天长啸)(JavaScript闭包理解)
- 处理VUE移动端输入法遮挡input输入框的问题
- 河北省唐山市谷歌高清卫星地图下载
- html+抽奖游戏,网页版抽奖HTML+CSS+javaScript
热门文章
- DataBseDesign工作笔记005---将excel中的表导入到powerdesigner中
- IOS学习笔记06---C语言函数
- linux 启动ftp服务,sftp服务
- redhat java配置
- 结束占用端口号进程(pid)
- centos 7 菜鸟第一天 装软件
- 一台交换机可以有多个ip段吗_网络设备:中继器、集线器、网桥、交换机、路由器、网关的总结!...
- java骨架_基于Mat变换的骨架提取Java
- 大二物竞金牌转北大计算机,物理竞赛保送去北大还是清华?
- 牛顿下山法python_一文看懂牛顿法(附Python实现)