Linux下的防火墙服务

Firewalld 概述
动态防火墙后台程序 firewalld 提供了一个 动态管理的防火墙, 用以支持网络 “ zones” , 以分配对一个网络及其相关链接和界面一定程度的信任。它具备对 IP v4 和 IP v6 防火墙设
置的支持。它支持以太网桥 , 并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口
系统提供了图像化的配置工具 firewall-config 、 system-config-firewall, 提供命令行客户端 firewall-cmd, 用于配置 firewalld 永久性或非永久性运行时间的改变 : 它依次用iptables 工具与执行数据包筛选的内核中的 Netfilter 通信

firewalld 和 iptables 服务
firewalld 和 iptables 服务之间最本质的不同是 :iptables service 在 /etc/sysconfig/iptables 中储存配置
firewalld 将配置储存在 /usr/lib/firewalld/ 和/etc/firewalld/ 中的各种 XML 文件里 .

参数描述
source
指定源地址 , 可以是一个 ipv4/ipv6 的地址或网段 , 不支持使用主机名。
destination
指定目的地址 , 用法和 source 相同。
service
服务名称是 f irewalld 提供的其中一种服务。要获得被支持的服务的列
表 , 输入以下命令 :
firewall-cmd --get-services 命令为以下形式 :
service name=service_name

port
端口既可以是一个独立端口数字 , 又或者端口范围 , 例如 ,5060-5062 。协议可以指定为 tcp 或udp 。命令为以下形式 :port port=number_or_range protocol=protocolprotocol
协议值可以是一个协议 ID 数字 , 或者一个协议名。预知可用协议 , 请查阅 /et/protocols。
命令为以下形式 :
protocol value=protocol_name_or_ID

firewalld
启用 firewalld
yum install -y firewalld firewall-config ##安装firewalld以及firewalld的图形界面
systemctl start firewalld ##启动firewalld
systemctl enable firewalld ##将firewalld设置为开机自启
systemctl disable firewalld ##禁止firewalld
systemctl stop firewalld ##停止fireawlld

为了实验的可靠性提前将iptables关闭并锁定
systemctl stop iptables ##关闭iptables
systemctl mask iptables ##锁定iptables

在这里插入图片描述

firewall-config 进入firewalld图形界面

在这里插入图片描述

 在这里插入图片描述


可以看到现在firewalld默认的zone是public
在zone是public的情况下是不允许http连接的

在这里插入图片描述

我们来切换一下firewall的默认zone切换为trusted
点击左上角的options然后change default zone

在这里插入图片描述

trusted是信任的zone所有firewall上允许的服务都会被允许

在这里插入图片描述

在这里插入图片描述
http就被允许了

在zone中添加源
如何在zone不被允许的情况下进行服务
在trusedzone中加入源就可以实现
将zone切换回public,ssh服务会被拒绝,可以在trusted中添加源允许这个ip通过trusted这个zone访问ssh服务

在这里插入图片描述

在这里插入图片描述

 在这里插入图片描述

添加开放的端口
将firewall的zone设置为block服务全部关闭
在trusted zone上开放http端口

在这里插入图片描述

本地允许

在这里插入图片描述

上面的端口是连接的端口
下面的端口是实际接入的端口

在这里插入图片描述

允许特定的ip

在这里插入图片描述


使用命令行接口配置防火墙
firewall-cmd--state 查看火墙状态
firewall-cmd--get-active-zones 查看正在运行的域
firewall-cmd--get-default-zone 默认的域
firewall-cmd--get-zones 查看所有域
firewall-cmd--zone=public --list-all 查看特定域的详细信息
firewall-cmd--get-services 火墙允许的所有服务
firewall-cmd--list-all-zones 查看所有域的所有信息
firewall-cmd--set-default-zone=dmz 修改默认域

在这里插入图片描述

 在这里插入图片描述

 在这里插入图片描述

在这里插入图片描述

 在这里插入图片描述

 在这里插入图片描述

在一个双网卡的主机上配置两个不同网段的ip

在这里插入图片描述

在一个双网卡的主机上配置两个不同网段的ip
安装http写发布目录并启动http
将一个网卡放在public另一个在trusted
用另外两个主机(ip的网段不同)测试
并使用下面指令
firewall-cmd --list-all  查看
firewall-cmd --list-all --zone=trusted 查看特定域
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 删除网卡

http发布文件

在这里插入图片描述
查看
在这里插入图片描述
因为两块网卡都在public域下,所以http服务是不被允许连接的

在这里插入图片描述

 在这里插入图片描述


将eth1这块网卡转到trusted域下

在这里插入图片描述

 在这里插入图片描述

 在这里插入图片描述

则1.1.1.开头的网段可以进行访问

在这里插入图片描述

172开头的不行

在这里插入图片描述

将eth1从zone中删除

在这里插入图片描述

在这里插入图片描述
在zone上添加源
刚才172网段的ip不能通过http访问
现在添加一个源在trusted

 在这里插入图片描述

测试

在这里插入图片描述

在这里插入图片描述
防火墙上服务的操作

 在这里插入图片描述

两块网卡都可以进行ssh服务

在这里插入图片描述

在public中删除ssh

在这里插入图片描述

在这里插入图片描述
将火墙服务刷新和完全刷新

 在这里插入图片描述

将不能进行ssh服务
在删除服务后会在 /etc/firewalld/zones生成一个文件public.xml.old

在这里插入图片描述

在这里插入图片描述
public.xml是现在public这个zone上开启服务的说明文件

 在这里插入图片描述

因为删除了ssh服务所以服务中没有ssh
public.xml.old是之前修改之前的服务说明文件

在这里插入图片描述

将ssh服务添加回来

在这里插入图片描述

在这里插入图片描述
在/lib/firewalld下的services下可以看到ssh服务

 在这里插入图片描述

修改ssh.xml
修改ssh服务的端口

在这里插入图片描述

重启firewalld

在这里插入图片描述

如果正有设备使用ssh连接主机那么连接的那台主机会产生死机
解决方法
重新开启一个shell使用kill -9 ssh强行停止服务

在这里插入图片描述

再次连接失败

在这里插入图片描述

查看ssh服务在火墙的默认开启端口还是22

在这里插入图片描述

Direct Rules
通过 firewall-cmd 工具 , 可以使用 --direct 选项在运行
时间里增加或者移除链。如果不熟悉 iptables , 使用直接接口
非常危险 , 因为您可能无意间导致防火墙被入侵。直接端口模式
适用于服务或者程序 , 以便在运行时间内增加特定的防火墙规则。
直接端口模式添加的规则优先应用

firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.183 -p tcp --dport 22 -j ACCEPT允许183ssh
firewall-cmd --remove-service=ssh  在public上删除ssh服务
firewall-cmd --list-all 查看
firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -s 172.25.254.183 -p tcp --dport 22 -j ACCEPT 删除特殊规则
firewall-cmd --direct --get-all-rules 查看所有规则

在火墙上添加一个特殊的规则,并删除ssh服务
用过写入内核文件来给ip添加ssh权限

在这里插入图片描述

查看所有特殊规则

在这里插入图片描述

测试

在这里插入图片描述

规则写入的ip可以访问

在这里插入图片描述

没写入的不能访问
删除特殊规则

在这里插入图片描述

将特殊规则修改为特定的ip不能进行ssh

在这里插入图片描述

测试

在这里插入图片描述

 在这里插入图片描述


伪装
将1.1.1网段的ip伪装成172开头的可以对172网段进行ssh
首先是需要在双网卡主机上开启伪装服务
firewall-cmd --add-masquerade 以及
sysctl -a | grep ip_forward  查看ip_forward是否为1

在这里插入图片描述
在单网卡主机上添加双网卡主机的网关

 在这里插入图片描述

 在这里插入图片描述


在双网卡主机上输入
firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.126 添加规则

在这里插入图片描述

测试

在这里插入图片描述


iptables
IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。
防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中。在数据包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 数据包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。
虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。
netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否则需要下载该工具并安装使用它。
系统优点
netfilter/iptables 的最大优点是它可以配置有状态的防火墙,这是 ipfwadm 和 ipchains 等以前的工具都无法提供的一种重要功能。有状态的防火墙能够指定并记住为发送或接收信息包所建立的连接的状态。防火墙可以从信息包的连接跟踪状态获得该信息。在决定新的信息包过滤时,防火墙所使用的这些状态信息可以增加其效率和速度。这里有四种有效状态,名称分别为 ESTABLISHED 、 INVALID 、 NEW 和 RELATED。

在这里插入图片描述

状态 ESTABLISHED 指出该信息包属于已建立的连接,该连接一直用于发送和接收信息包并且完全有效。INVALID 状态指出该信息包与任何已知的流或连接都不相关联,它可能包含错误的数据或头。状态 NEW 意味着该信息包已经或将启动新的连接,或者它与尚未用于发送和接收信息包的连接相关联。最后, RELATED 表示该信息包正在启动新连接,以及它与已建立的连接相关联。
netfilter/iptables 的另一个重要优点是,它使用户可以完全控制防火墙配置和信息包过滤。您可以定制自己的规则来满足您的特定需求,从而只允许您想要的网络流量进入系统。
另外,netfilter/iptables 是免费的,这对于那些想要节省费用的人来说十分理想,它可以代替昂贵的防火墙解决方案。
iptables
-t ##指定表名称
-n ##不作解析
-L ##列出指定表中的策略
-A ##增加策略
-p ##网络协议
–dport ##端口
-s ##数据来源
-j ##动作
ACCEPT ##允许
REJECT ##拒绝
DROP ##丢弃
-N ##增加链
-E ##修改链名称
-X ##删除链
-D ##删除指定策略
-I ##插入
-R ##修改策略
-P ##修改默认策略

iptables -t filter -nL #查看filter表中的策略
iptable -F #刷掉filter表中的所有策略,当没有用-t指定表名称时默认时filter
service iptables save #保存当前策略
iptables -A INPUT -i lo -j ACCEPT #允许lo
iptables -A INPUT -s 172.25.254.250 -j ACCEPT ##允许250主机访问本机所有端口
iptables -A INPUT -j REJECT ##拒绝所有主机的数据来源
iptables -N redhat ##增加链redhat
iptables -E redhat westos ##改变链名称
iptables -X westos ##删除westos链
iptable -D INPUT 2 ##删除INPUT链中的第二条策略
iptables -I INPUT -p tcp --dport 80 -j REJECT ##插入策略到INPUT中的第一条
iptables -R INPUT 1 -p tcp --dport 80 -j ACCEPT ##修改第一条策略
iptable -P INPUT DROP ##把INPUT表中的默认策略改为drop

相关操作
首先关闭firewall 开启iptables

在这里插入图片描述

查看filter表

在这里插入图片描述

查看nat表

在这里插入图片描述

查看mangle表

在这里插入图片描述

查看默认的表,默认为filter

在这里插入图片描述

刷新

在这里插入图片描述
查看实际的表
/etc/sysconfig/iptables

在这里插入图片描述

保存当前策略

在这里插入图片描述

iptables -A INPUT -i lo -j ACCEPT #允许lo

在这里插入图片描述

iptables -A INPUT -s 172.25.254.250 -j ACCEPT ##允许250主机访问本机所有端口

在这里插入图片描述

拒绝

在这里插入图片描述

 在这里插入图片描述

iptable -D INPUT 3 ##删除INPUT链中的第3条策略

在这里插入图片描述

`iptables -I INPUT 2 -p -s 172.25.254.18 -p tcp --dport 22 -j ACCEPT ##插入策略到INPUT中的第2条

在这里插入图片描述
iptable -P INPUT DROP ##把INPUT表中的默认策略改为drop

 在这里插入图片描述

改为accept

在这里插入图片描述

测试

在这里插入图片描述

在这里插入图片描述
iptables -N westos ##增加链westos

 在这里插入图片描述

iptables -E redhat WESTOS ##改变链名称

在这里插入图片描述
iptables -X westos ##删除westos链

 在这里插入图片描述

伪装

在这里插入图片描述


第二种方式

在这里插入图片描述

ssh服务如果过慢
可以修改ssh配置文件

/etc/ssh/sshd_config对其进行修改

在这里插入图片描述

 

将130行注释去掉并将yes改成no

在这里插入图片描述

 

再进行测试
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值