linux中的firewalld防火墙策略和iptables防火墙策略

防火墙,也相当于一个内核上的插件
两种编写防火墙策略的工具ip table,firewalld
防火墙策略,控制进出

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丢弃			任何接受的网络数据包都被丢弃,没有任何回复

启用和关闭firewalld

yum install -y firewalld firewall-config
systemctl start firewalld
systemctl enable firewalld
systemctl disable firewalld
systemctl stop firewalld

在这里插入图片描述
启用和关闭iptables

yum install -y iptables-services
systemctl start iptables
systemctl start ip6tables
systemctl enable iptables
systemctl enable ip4tables
iptables -nL

使用命令行接口配置防火墙

firewall-cmd --state					##查看防火墙状态
firewall-cmd --get-active-zones			##查看现在的信息
firewall-cmd --get-default-zone			##查看防火墙现在的域
firewall-cmd --get-zones				##查看防火墙所有域
firewall-cmd --zone=pub --list-all		##查看pub域支持的服务
firewall-cmd --get-services				##查看防火墙可以开启的服务
firewall-cmd --list-all-zones			##查看所有域支持的服务
firewall-cmd --set-default-zone=dmz		##更改防火墙的域

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

五种状态 input output preouting(路由前做SNAT) postouting(路由后做DNAT) forward
filter	访问本机服务(内核)	input  output forward
net	经过防火墙但与内核无关		input  output	preouting  postouting
mangle	除了前两种			input  output	preouting  postouting  forward

设置防火墙的信任ip,防火墙不开启ssh,但信任ip依旧可以ssh连接

firewall-cmd --permanent --zone=trusted  --add-source=172.25.254.26
firewall-cmd --get-active-zones
firewall-cmd --permanent --zone=trusted  --remove-source=172.25.254.26

在这里插入图片描述
在这里插入图片描述
实验效果
在这里插入图片描述
设置一个网卡可访问

firewall-cmd  --zone=public  --remove-interface=eth0	##将eth0从public域的取出
firewall-cmd  --zone=trusted  --add-interface=eth0		##将eth0放入trusted域
firewall-cmd --reload									##重启防火墙
firewall-cmd --list-all --zone=trusted					##查看trusted支持的信息					

firewall-cmd  --zone=trusted  --remove-interface=eth0	
firewall-cmd  --zone=public  --add-interface=eth0		##恢复

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看出即使火墙策略没有apache服务,仍然可通过访问信任网卡ip,访问httpd
在这里插入图片描述

firewall-cmd - --zone=public   --remove-service=ssh	 ##临时阻止ssh服务(刷新后恢复)
firewall-cmd --permanent --zone=public   --list-ports##查看防火墙永久允许的端口
firewall-cmd  --zone=public   --list-ports			 ##查看防火墙临时允许的端口
firewall-cmd --permanent --zone=public   --add-port=8080/tcp##永久添加防火墙允许的端口
firewall-cmd - --zone=public   --add-port=8080/tcp	 ##临时添加防火墙允许的端口
firewall-cmd --permanent --zone=public   --remove-port=8080/tcp##删除永久允许端口

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

firewall-cmd --reload					##刷新:不会中断当前已连接的服务
firewall-cmd --complete-reload			##完全刷新:切断所有正在连接的服务

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

firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.26 -j ACCEPT##为26主机开启22端口(ssh服务的端口)
firewall-cmd --direct --get-all-rules##查看所有规则
firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.26 -j ACCEPT##删除开启端口
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22 ! -s 172.25.254.26 -j ACCEPT##为除了26主机的其他主机开启22端口(ssh服务的端口)

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

防火墙的伪装与转发
(1)伪装

服务端(两块网卡。一个1.1.1.126一个172.25.254.226):
firewall-cmd --permanent --add-masquerade		##开启防火墙伪装功能
firewall-cmd --reload
firewall-cmd --list-all

在这里插入图片描述

客户端测试:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR0=1.1.1.126
GATEWAY0=1.1.1.126
systemctl restart network
route -n
ssh [email protected]>w -i			##查看谁在连接

在这里插入图片描述
(2)转发
服务端

firewall-cmd --permanent --zone=public --add-forward-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.126	##转发22端口的请求服务到1.1.1.226
firewall-cmd --reload
firewall-cmd --list-all

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

ssh [email protected]>ifconfig##查看以连接的客户端ip--->w -i##查看谁在连接

在这里插入图片描述

二.iptables
1.服务部署:

yum install -y iptables-services
systemctl stop firewalld
systemctl disable firewalld
systemctl start iptables
systemctl enable iptables

在这里插入图片描述
2.常用命令

iptable 
	-t			##指定表名称
	-n			##不做解析
	-L			##列出指定表中的策略
	-A			##增加策略
	-p			##网络协议
	--dport		##端口
	-s			##数据来源
	-j			##动作
	ACCEPT		##允许
	REJECT		##拒绝
	DROP		##丢弃
	-N			##增加链
	-E			##修改链名称
	-X			##删除链
	-D			##删除指定策略
	-I			##插入
	-R			##修改策略
	-P			##修改默认策略

iptables的策略

iptables -t filter -nL		##查看filter表中的策略
iptables -nL 				##查看所有策略
service iptables save		##保存当前策略
vim /etc/sysconfig/iptables	##策略保存文件
iptables -F 				##刷掉filter表中所有策略,的那个-t没有指定,默认为filter
iptables -nL
systemctl restart iptables	
iptables -nL				##如果刷掉之前保存过策略,重启服务后,会恢复

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
设定iptables的策略表

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 445 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 3260 -j ACCEPT
iptables -A INPUT -m state --state NEW -j REJECT
iptables -nL

在这里插入图片描述
测试是否生效
在这里插入图片描述
iptables的工作模式

iptables -P INPUT DROP		##更改INPUT工作模式为丢掉所有的包,并不回复
iptables -nL			
iptables -P INPUT ACCEPT	##更改INPUT工作模式为允许所有
iptables -nL

在这里插入图片描述
drop模式,ssh连接时,会连接超时
在这里插入图片描述
设回accept工作模式时,便可以连接
在这里插入图片描述

iptables -P INPUT DROP
iptables -A INPUT -p tcp --dport 22 -s 172.25.254.26 -j ACCEPT##允许172.25.254.26
的22端口发来的tcp请求通过
iptables -nL		

在这里插入图片描述
当DROP模式时,添加允许ip的端口,这时特定ip便可连接
在这里插入图片描述

iptables -D INPUT 1 ##删除INPUT的第一条策略
iptables -nL
在这里插入图片描述

iptables -I INPUT 1 -s 172.25.254.26 -p tcp --dport 22 -j ACCEPT##添加策略到指定顺序
iptables -nL
iptables -R INPUT 1 -s 172.25.254.226 -p tcp --dport 22 -j ACCEPT##更改指定位置的策略
iptables -nL

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

iptables -N redhat					##添加策略表
iptables -E redhat westos			##更改策略表名称
iptables -X westos					##删除策略表
iptables -nL

在这里插入图片描述
在这里插入图片描述
iptables的伪装与转发

(1)iptables的伪装
服务端:

iptables -t nat -nL
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.226
在nat表中添加,若一个ip连接26时,通过本主机的eth0伪装成172.25.254.226这个ip去连接的策略
iptables -nL -t nat

在这里插入图片描述
客户端测试(ip为1.1.1.126)

ssh [email protected]  --->w -i

在这里插入图片描述
在这里插入图片描述
(2)iptables的转发

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to 1.1.1.126
##将给eth0的22端口发来的请求转发给1.1.1.126
iptables -nL -t nat

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

ssh [email protected] ----> w -y---->ifconfig

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qwqq233/article/details/87988026