Linux下防火墙服务:firewalld服务以及iptables服务的部署与相关命令

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/Leslie_qlh/article/details/99711283

防火墙服务

1.配置

在服务端:

添加两块网卡:
eth0 172.25.254.228
eth1 192.168.0.228

在客户端:

配置与服务端相同网络段的网卡
eth0 192.168.0.128

2.Firewalld的域

trusted(信任) 可接受所有网络连接
home(家庭) 用于家庭网络,仅接受ssh、mdns、ipp-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(丢弃) 任何接收的网络数据包都被丢弃,没有任何回复

3.Firewalld设置

firewall-cmd --stat 				查看防火墙的状态
firewall-cmd --get-active-zones 	查看正在使用的域
firewall-cmd --get-default-zone 	查看系统默认的域
firewall-cmd --get-zones 			查看系统所有的域
firewall-cmd --zone=public --list-all 	查看public域所有信息
firewall-cmd --get-services 		查看系统中所有可以直接设置的服务名称
firewall-cmd --list-all-zones 		显示所有域信息
firewall-cmd --list-service 		查看当前火墙开启的服务
firewall-cmd --set-default-zone=public  	设置系统默认域为public
firewall-config						图形化管理防火墙
firewall-cmd --reload				刷新火墙状态

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文件

/usr/lib/firewalld/services/ 火墙工作时访问的策略
/etc/firewalld/zones/  封装了服务所开启的数据

4.Firewalld中网卡与ip设置

(1)网卡设置:

firewall-cmd --permanent --add-interface=eth0 --zone=trusted	永久添加eth0网卡为信任接口
firewall-cmd --permanent --remove-interface=eth0 --zone=public	永久将eth0网卡从信任接口中移除
firewall-cmd --permanent --change-interface=eth0 --zone=public	永久改变eth0为public域
测试:

在服务端:

firewall-cmd --list-all			查看防火墙信息
firewall-cmd --permanent --zone=public --remove-interface=eth1	将eth1(192.168.0.228)从public域移除
firewall-cmd --reload			刷新火墙状态
systemctl restart firewalld.service 	 重启火墙服务

在这里插入图片描述

在服务端:

firewall-cmd --list-all			查看防火墙信息
firewall-cmd --permanent --zone=trusted --add-interface=eth1	添加eth1(192.168.0.228)为信任接口
firewall-cmd --reload			刷新火墙状态
systemctl restart firewalld.service 	 重启火墙服务

在这里插入图片描述
在这里插入图片描述
在服务端:

firewall-cmd --permanent --zone=public --change-interface=eth1	将eth1(192.168.0.228)变为public域
firewall-cmd --reload			刷新火墙状态
systemctl restart firewalld.service 	 重启火墙服务

在这里插入图片描述
在这里插入图片描述

(2)ip设置

firewall-cmd  --permanent --add-source=172.25.254.28/24 --zone=trusted		永久添加172.25.254.28为信任ip
firewall-cmd  --permanent --remove-source=172.25.254.28/24 --zone=trusted	永久将172.25.254.28从信任ip中移除
测试:

在服务端:

关闭火墙中的http、https服务
firewall-cmd --permanent --remove-service=http		关闭火墙中http服务
firewall-cmd --permanent --remove-service=https		关闭火墙中https服务
firewall-cmd --reload			刷新火墙状态

在这里插入图片描述

在测试机浏览器访问http://192.168.0.228进行测试,此时无法访问

在这里插入图片描述

在服务端:

systemctl restart httpd			重启httpd服务
firewall-cmd --add-source=172.25.254.28/24 --zone=trusted 添加172.25.254.28为信任ip	

在这里插入图片描述

在真机浏览器访问http://172.25.254.228进行测试

在这里插入图片描述

在服务端:

firewall-cmd --remove-source=172.25.254.28/24 --zone=trusted	将172.25.254.28从信任名单中删除

在这里插入图片描述

在真机浏览器访问http://172.25.254.228进行测试,此时无法访问

在这里插入图片描述

5.火墙添加服务:

当默认使用的域为public时:

命令添加:

firewall-cmd --permanent --add-service=http  	在火墙中永久添加http服务
firewall-cmd --reload  							刷新当前的状态
firewall-cmd --list-all							查看火墙信息

在这里插入图片描述

文件添加:

vim /etc/firewalld/zones/public.xml				编辑public域配置文件,添加https服务

<service name="https"/>

firewall-cmd --reload							重启火墙
firewall-cmd --list-all							查看火墙信息

在这里插入图片描述
在这里插入图片描述

6.火墙中的端口修改

(1)临时修改

firewall-cmd --list-ports  			查看火墙上开启的端口
firewall-cmd --add-port=8080/tcp  		添加端口
firewall-cmd --list-ports  			再次查看,此时已开启
firewall-cmd --remove-port==8080/tcp		删除端口
firewall-cmd --list-ports  			再次查看,此时已删除

在这里插入图片描述

(2)永久修改

命令修改:
firewall-cmd --permanent  --add-port=8080/tcp 	永久添加端口
systemctl restart firewalld.service 		重启服务
firewall-cmd --list-ports 			查看端口

在这里插入图片描述

文件修改:
vim /etc/firewalld/zones/public.xml			编辑public域配置文件

<port protocol="tcp" port="8080"/> 			添加8080端口(协议、端口)
firewall-cmd --list-ports 			查看端口
firewall-cmd --permanent  --remove-port=8080/tcp		永久删除端口
systemctl restart firewalld.service 		重启服务
firewall-cmd --list-ports 			查看端口

在这里插入图片描述

在这里插入图片描述

7.火墙的刷新

fiewall-cmd --reload   				刷新当前火墙状态,但不会断掉已有连接
firewall-cmd --complete-reload 		刷新当前火墙状态,但会断掉当前连接
测试:

在客户端:

ssh [email protected]				此时可以正常连接

在这里插入图片描述

在服务端:

firewall-cmd --permanent  --remove-service=ssh		从火墙中删除ssh服务
fiewall-cmd --reload				reload刷新火墙状态

在这里插入图片描述

在客户端:

touch file					尝试建立文件,此时可以建立文件

在这里插入图片描述

服务端:

firewall-cmd --complete-reload			complete-reload刷新火墙状态

客户端:

此时客户端已经断开连接,不能进行任何操作

在这里插入图片描述

8、火墙的三表五链

(1)filter表

input	 forward	output 		filter表的三条链

内核上开启服务时需要inout从外边传输数据给内核,然后ouput从内核将结果传送出来

而forward时指从本机进来绕过本机服务,从本机出来,经过了内核,但不使用内核服务,不是把数据给内核,只是做转换。

(2)nat表

input	 postouting		preouting 	output 	nat表的三条链

inputoutput都不经过内核
postouting 路由之后,做原地址封装,数据访问目的地主机output时在路由端口做NAT转换,发生在路由之后
preouting 路由之前,数据从目的地主机传回时经过路由,在路由端口转换

(3)mangle表

input	prerouting	forward	postrouting	output
mangle表的五条链

**数据传输:**数据input—>prerouting做NAT转换—>forward内核操作—>postrouting—>output

-s 数据来源
-o 协议
-dport 目的地端口
-sport 数据端口
-j 行为
–direct 后边跟规则
–add-rule 添加规则
filter
INPUT 表中规则
1 排在第一个
DROP 拒绝不提醒
ACCEPT 接收
REJECT 拒绝提醒,不停加载,不提示

9、地址伪装和端口转发

在服务端:

firewall-cmd --permanent --add-masquerade 		开启地址伪装功能
success					
firewall-cmd --reload 				刷新
success					
firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.29		设置ssh身份转换,即在客户端使用ssh服务访问服务端时自动转移到172.25.254.29的主机
success		
firewall-cmd --list-all			查看火墙信息
public (default, active)
  interfaces: eth0 eth1
  sources: 
  services: dhcpv6-client http ssh
  ports: 
  masquerade: yes
  forward-ports: port=22:proto=tcp:toport=22:toaddr=172.25.254.29	此时功能已开启
  icmp-blocks: 
  rich rules: 


在这里插入图片描述

对以下文件进行编辑:

vim /etc/sysctl.conf	

在此文件的最后一行输入:

net.ipv4.ip_forward=1						打开路由器功能

在这里插入图片描述

在客户机:

配置一个与服务端相同ip的网关

GATEWAY=192.268.0.228
ping 192.168.0.228		可以ping服务端第一个网卡

ping 172.25.254.228		可以Ping服务端第二个网卡
ssh [email protected]或者ssh [email protected]	尝试连接到服务端主机,但是此时已经被服务端转至172.25.254.29主机。因此输入密码时应输入172.25.254.29的root用户登录密码。

在这里插入图片描述

10.iptables火墙服务

(1)安装部属

systemctl stop firewalld				关闭firewalld服务
systemctl disable firewalld				关闭自启动
systemctl mask firewalld				锁住firewalld服务
systemctl start iptables				开启iptables服务
systemctl enable iptables				开启自启动

在这里插入图片描述

iptables -nL  							默认查看filter
iptables -t filter -nL					查看filter
iptables -t nab -nL						查看nab

在这里插入图片描述
在这里插入图片描述

(2)相关命令

【1】连接命令

iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT(REJECT|DROP) 	指定filter表添加输入,遵循tcp协议,目的地端口为22,接收(拒绝|丢弃)连接
-t 指定表	-p 协议	-j 指定行为
iptables -nL	查看防火墙策略

在这里插入图片描述

【2】防火墙iptables命令参数

-A 		添加
-D		删除
-C		检查策略
-I		插入
-R		替换
-F 		刷新,清除所有
-N 		添加新链
-X 		删除链
-E	 	替换名称
-S		查看规则中的命令
-P		修改默认规则,无REJECT
-Z		刷新
测试:
iptables -D 1			删除第一条策略
iptables -t filter -A INPUT -s 172.25.254.28 -p tcp --dport 22 -j ACCEPT 	指定主机可ssh连接
iptables -nL			查看策略

在这里插入图片描述

iptables -t filter -I INPUT 1 -p tcp --dport 22 -j ACCEPT  	允许所有主机可以通过ssh连接,并且将此条策略插入到第一位
iptables -nL			查看策略

在这里插入图片描述

iptables -S INPUT	查看INPUT中的所有使用过的命令

在这里插入图片描述

iptables -N redhat 		添加新链,并默认添加到filter表中
iptables -nL			查看策略

在这里插入图片描述

iptables -E redhat westos  修改链名
iptables -nL			查看策略

在这里插入图片描述

iptables -X westos   	删除westos链
iptables -nL 			查看策略

在这里插入图片描述

iptables -P INPUT DROP	修改filter表中的INPUT链的规则为DROP(丢弃)
iptables -nL			查看策略

在这里插入图片描述

iptables -F		删除所有策略

【3】调整查询速度

设置原来连接过的连接时不需要依次读取,新的依次查找
netstat -antlupe #查看所有可开启的端口
-i 接口
-p 协议
-m 状态
state

【4】iptables服务火墙的地址伪装与转换

在服务端:

vim /etc/sysctl.conf		编辑配置文件开启路由功能

net.ipv4.ip_forward=1		设置路由功能开启

sysctl -p			查看路由功能是否开启

在这里插入图片描述

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.228		将封装后来自eth0网卡的连接转到172.25.254.228上(开启地址伪装)(先将来自客户端(192.168.0网端)的连接信号在内核进行封装,转换为172.25.254.228,然后将从内核出来的连接信号传输到172.25.254.228网卡上,实现客户端连接服务端172.25.254网端的连接)
iptables -t nat -nL		查看nat表策略

在这里插入图片描述

在客户端:

ssh [email protected]			尝试ssh连接服务端172.25.254网段的IP,可以成功连接

在这里插入图片描述

在服务端:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-dest 192.168.0.128:22		将来自eth0的ssh连接转到192.168.0.128主机上
iptables -t nat -nL		查看nat表策略

在这里插入图片描述
在真机:

ssh [email protected]			尝试ssh连接服务端,但是会连接到客户端(192.168.0.128)上
w -i			查看连接信息

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Leslie_qlh/article/details/99711283