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
Linux下的防火墙服务_第1张图片
firewall-config进入firewalld图形界面
在这里插入图片描述
Linux下的防火墙服务_第2张图片
可以看到现在firewalld默认的zone是public
在zone是public的情况下是不允许http连接的
Linux下的防火墙服务_第3张图片
我们来切换一下firewall的默认zone切换为trusted
点击左上角的options然后change default zone
Linux下的防火墙服务_第4张图片
trusted是信任的zone所有firewall上允许的服务都会被允许
Linux下的防火墙服务_第5张图片
Linux下的防火墙服务_第6张图片
http就被允许了

在zone中添加源
如何在zone不被允许的情况下进行服务
在trusedzone中加入源就可以实现
将zone切换回public,ssh服务会被拒绝,可以在trusted中添加源允许这个ip通过trusted这个zone访问ssh服务
Linux下的防火墙服务_第7张图片
Linux下的防火墙服务_第8张图片
Linux下的防火墙服务_第9张图片
添加开放的端口
将firewall的zone设置为block服务全部关闭
在trusted zone上开放http端口
Linux下的防火墙服务_第10张图片
本地允许
Linux下的防火墙服务_第11张图片
上面的端口是连接的端口
下面的端口是实际接入的端口
Linux下的防火墙服务_第12张图片
允许特定的ip
Linux下的防火墙服务_第13张图片

使用命令行接口配置防火墙
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 修改默认域

在这里插入图片描述
Linux下的防火墙服务_第14张图片
Linux下的防火墙服务_第15张图片
Linux下的防火墙服务_第16张图片
Linux下的防火墙服务_第17张图片
在这里插入图片描述
在一个双网卡的主机上配置两个不同网段的ip
Linux下的防火墙服务_第18张图片
在一个双网卡的主机上配置两个不同网段的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发布文件
Linux下的防火墙服务_第19张图片

查看
在这里插入图片描述
因为两块网卡都在public域下,所以http服务是不被允许连接的
Linux下的防火墙服务_第20张图片
Linux下的防火墙服务_第21张图片
将eth1这块网卡转到trusted域下
在这里插入图片描述
Linux下的防火墙服务_第22张图片
Linux下的防火墙服务_第23张图片
则1.1.1.开头的网段可以进行访问
Linux下的防火墙服务_第24张图片
172开头的不行
Linux下的防火墙服务_第25张图片
将eth1从zone中删除
Linux下的防火墙服务_第26张图片
Linux下的防火墙服务_第27张图片
在zone上添加源
刚才172网段的ip不能通过http访问
现在添加一个源在trusted
在这里插入图片描述
测试
Linux下的防火墙服务_第28张图片
Linux下的防火墙服务_第29张图片
火墙上服务的操作
Linux下的防火墙服务_第30张图片
两块网卡都可以进行ssh服务
Linux下的防火墙服务_第31张图片
在public中删除ssh
Linux下的防火墙服务_第32张图片
Linux下的防火墙服务_第33张图片
将火墙服务刷新和完全刷新
Linux下的防火墙服务_第34张图片
将不能进行ssh服务
在删除服务后会在 /etc/firewalld/zones生成一个文件public.xml.old
Linux下的防火墙服务_第35张图片
Linux下的防火墙服务_第36张图片
public.xml是现在public这个zone上开启服务的说明文件
Linux下的防火墙服务_第37张图片
因为删除了ssh服务所以服务中没有ssh
public.xml.old是之前修改之前的服务说明文件
Linux下的防火墙服务_第38张图片
将ssh服务添加回来
Linux下的防火墙服务_第39张图片
Linux下的防火墙服务_第40张图片
在/lib/firewalld下的services下可以看到ssh服务
Linux下的防火墙服务_第41张图片
修改ssh.xml
修改ssh服务的端口
Linux下的防火墙服务_第42张图片
重启firewalld
Linux下的防火墙服务_第43张图片
如果正有设备使用ssh连接主机那么连接的那台主机会产生死机
解决方法
重新开启一个shell使用kill -9 ssh强行停止服务
Linux下的防火墙服务_第44张图片
再次连接失败
Linux下的防火墙服务_第45张图片
查看ssh服务在火墙的默认开启端口还是22
Linux下的防火墙服务_第46张图片
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权限
Linux下的防火墙服务_第47张图片
查看所有特殊规则
Linux下的防火墙服务_第48张图片
测试
Linux下的防火墙服务_第49张图片
规则写入的ip可以访问
Linux下的防火墙服务_第50张图片
没写入的不能访问
删除特殊规则
Linux下的防火墙服务_第51张图片
将特殊规则修改为特定的ip不能进行ssh
Linux下的防火墙服务_第52张图片
测试
Linux下的防火墙服务_第53张图片
Linux下的防火墙服务_第54张图片
伪装
将1.1.1网段的ip伪装成172开头的可以对172网段进行ssh
首先是需要在双网卡主机上开启伪装服务
firewall-cmd --add-masquerade 以及
sysctl -a | grep ip_forward 查看ip_forward是否为1

Linux下的防火墙服务_第55张图片
在单网卡主机上添加双网卡主机的网关
Linux下的防火墙服务_第56张图片
Linux下的防火墙服务_第57张图片
在双网卡主机上输入
firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.126 添加规则
Linux下的防火墙服务_第58张图片
测试
Linux下的防火墙服务_第59张图片

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。
Linux下的防火墙服务_第60张图片
状态 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
Linux下的防火墙服务_第61张图片
查看filter表
Linux下的防火墙服务_第62张图片
查看nat表
Linux下的防火墙服务_第63张图片
查看mangle表
Linux下的防火墙服务_第64张图片
查看默认的表,默认为filter
Linux下的防火墙服务_第65张图片
刷新
Linux下的防火墙服务_第66张图片查看实际的表
/etc/sysconfig/iptables
Linux下的防火墙服务_第67张图片
保存当前策略
Linux下的防火墙服务_第68张图片
iptables -A INPUT -i lo -j ACCEPT #允许lo
Linux下的防火墙服务_第69张图片
iptables -A INPUT -s 172.25.254.250 -j ACCEPT ##允许250主机访问本机所有端口
Linux下的防火墙服务_第70张图片
拒绝
Linux下的防火墙服务_第71张图片
Linux下的防火墙服务_第72张图片

iptable -D INPUT 3 ##删除INPUT链中的第3条策略
Linux下的防火墙服务_第73张图片
`iptables -I INPUT 2 -p -s 172.25.254.18 -p tcp --dport 22 -j ACCEPT ##插入策略到INPUT中的第2条
Linux下的防火墙服务_第74张图片

iptable -P INPUT DROP ##把INPUT表中的默认策略改为drop
在这里插入图片描述
改为accept
Linux下的防火墙服务_第75张图片
测试
Linux下的防火墙服务_第76张图片
Linux下的防火墙服务_第77张图片
iptables -N westos ##增加链westos
Linux下的防火墙服务_第78张图片
iptables -E redhat WESTOS ##改变链名称

Linux下的防火墙服务_第79张图片
iptables -X westos ##删除westos链
Linux下的防火墙服务_第80张图片
伪装

Linux下的防火墙服务_第81张图片
第二种方式
Linux下的防火墙服务_第82张图片
ssh服务如果过慢
可以修改ssh配置文件

/etc/ssh/sshd_config对其进行修改
Linux下的防火墙服务_第83张图片
将130行注释去掉并将yes改成no
Linux下的防火墙服务_第84张图片
再进行测试

你可能感兴趣的:(Linux下的防火墙服务)