linux系统中的防火墙(iptables与firewalld)——firewalld

防火墙

防火墙是整个数据包进入主机前的第一道关卡。防火墙主要通过Netfilter与TCPwrappers两个机制来管理的。
1)Netfilter:数据包过滤机制
2)TCP Wrappers:程序管理机制
关于数据包过滤机制有两个软件:firewalld与iptables
centos7/redhat7已经默认使用firewalld作为防火墙,其使用的方式已经变化,基于iptables的防火墙默认不启用,但是仍可以继续使用
注意:centos7/redhat7中有几种防火墙共存:firewalld、iptables、ebtablesd
默认使用的是firewalld作为防火墙,管理工具是firewalld

firewalld与iptables

firewalld

相关概念

firewalld提供了支持网络/防火墙**区域(zone)**定义网络链接以及接口安全等级的防火墙管理工具。拥有运行时配置和永久配置选项。它也支持允许服务或者应用程序直接添加防火墙规则的接口。以前的system-config-firewall防火墙模型是静态的,每次修改都要求防火墙完全重启。这个过程包括内核netfilter防火墙模块的卸载和新配置所需模块的装载等。 相反,firewall daemon动态管理防火墙,不需要重启整个防火墙便可应用更改。因而也就没有必要重载所有内核防火墙模块了。
在此版本的内核里防火墙的包过滤机制是firewalld,使用firewalld来管理netfilter,不过底层调用的还是iptables,因为这几种damon是冲突的,所以建议禁用其他服务
在这里插入图片描述
区域:
网路区域定义了网络连接的等级
在这里插入图片描述
数据包要想进入到内核里必须通过某一个区域zone中的一个区域,而不同的区域里定义的规则不一样(即信任度不一样,过滤签强度也不一样),可以根据网卡所连接的安全性来判断,这张网卡的流量到底使用哪一个区域。
例如: 上图网卡eth0的流量全部使用zone区域1过滤规则,网卡eth1的流量全部使用zone区域2过滤规则 。。。。。
注意:一张网卡只能绑定到一个区域,而一个区域可以绑定多块网卡
区域的概念:
firewalld分为九个区域,含义如下:

区域名称 含义
trust(信任) 可接受所有的网络连接
home(家庭) 用于家庭网络,仅接受ssh、mdns、ipp-client、samba-client或dhcpv6-client服务连接
internal(内部) 用于内部网络,仅接受ssh、ipp-client、mdns、samba-client或dhcpv6-client服务连接
work(工作区) 用于工作区,仅接受ssh、ipp-client、dhcpv6-client服务连接
public(公共) 用于公共区域的使用,仅接受ssh、dhcpv6-client服务,为firewalld的默认区域
external(外部区域) 出去的ipv4的网络连接经过此区域的伪装和转发,只支持ssh服务
dmz(非军事区) 仅接受ssh服务
block(限制) 拒绝所有的网络服务
drop(丢弃) 任何访问的网络数据包都会被丢弃,没有任何回应

firewalld的配置方法主要有三种:firewall-config、firewall-cmd和直接编辑xml文件,其中 firewall-config是图形化工具,firewall-cmd是命令行工具。

firewalld服务的主要控制命令

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 #######设定默认域 (dmz(非军事区)即只可允许ssh服务)
在这里插入图片描述
firewall-cmd --add-source=172.25.66.250 –zone=trusted ##将指定ip主机加入trusted域
firewall-cmd --list-all –zone=trusted ##列出所有域为trusted的信息
在这里插入图片描述
firewall-cmd --list-interfaces ##列出所有网卡接口
firewall-cmd --get-zone-of-interface=eth0 ##显示eth0的域
在这里插入图片描述
firewall-cmd --change-interface=eth0 --zone=trusted ##修改eth0的域为trusted
在这里插入图片描述
firewall-cmd --remove-interface=eth0 --zone=trusted ##移除eth0的域
在这里插入图片描述
firewall-cmd –permanent –add-source=172.25.66.250 --zone=trusted ## --permanent表示将该ip永久加入
使用–permanent参数后必须执行firewall-cmd --reload(刷新)后才能生效
在这里插入图片描述
firewall-cmd --add-port=8080/tcp --zone=public ## 将8080端口加入public域
在这里插入图片描述
firewall-cmd --permanebt –remove-service=ssh
firewall-cmd --reload 对移除之后的访问有影响,如果移除之前有主机通过ssh连接到本机,其不会被中断,在移除之后,其他主机则不能使用ssh连接本机
在这里插入图片描述
firewall-cmd --complete-reload 对移除之后和之前的访问都有影响,我们可以重新将ssh服务添加进火墙允许服务内,然后用其他主机ssh连接本机,然后在移除ssh服务,并使用此条命令重新加载
在这里插入图片描述
此刻,使用ssh连接本机的主机已经不能在本机做任何操作
在这里插入图片描述

firewalld相关实验操作

一、只允许特定ip访问特定服务(httpd)
1:查看火墙状态并开启火墙
2:下载httpd服务并打开
3:将172.25.66.250主机设定为可忽略火墙访问本机80端口(httpd服务)的主机
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 80 -s 172.25.66.250 -j ACCEPT
##ipv4(使用的网络协议) filter(表)、 INPUT(链)、 1(第一行)、 -p (使用的传输协议tcp/udp)、–dport(目标服务端口) 、-s(来源ip)、 -j(动作『ACCEPT /REJECT /DROP』)
firewall-cmd --direct --get-all-rules ###查看##
在这里插入图片描述
4:分别用250主机和另外一台主机访问本机http服务
172.25.66.250主机:
在这里插入图片描述
172.25.66.12主机:
在这里插入图片描述
二、端口转发
端口转发(Port forwarding),有时被叫做隧道,是安全壳(SSH) 为网络安全通信使用的一种方法。端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为,其使一个外部用户从外部经过一个被激活的NAT路由器到达一个在私有内部IP地址(局域网内部)上的一个端口。
1:在别人访问本主机ip的时候自动转入172.25.66.12主机
firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:tport=22:toaddr=172.25.66.12
在这里插入图片描述
2:打开masquerade
MASQUERADE,地址伪装
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload
在这里插入图片描述
在这里插入图片描述
3:到172.25.66.250主机
rm -fr ~/.ssh/know.host
ssh [email protected]
在这里插入图片描述
可以看到,火墙自动将本机的22端口转发到了172.25.66.12主机上
三、伪装(访问不同网段的主机ip,在目标主机中显示的ip为用来伪装的ip)
(一、)在本机172.25.66.11中
1:添加网卡并设置ip网段为172.25.0.*(0-255之间),重启网络
在这里插入图片描述
2:编辑/etc/sysctl.conf
写入:net.ipv4.ip_forward = 1
在这里插入图片描述
保存退出后执行:sysctl -p
在这里插入图片描述
(二、)在172.25.66.12主机中
1:编辑ifcfg-eth0
写入:GATEWAY=172.25.0.11
ip改为172.25.0.12
重启网络
在这里插入图片描述
在这里插入图片描述
2:ping 172.25.66.X
在这里插入图片描述
可以看到,172.25.0.12主机可以访问172.25.66.250主机,因为通过设置的网关是172.25.66.11主机的另一个IP地址,通过这个网关,172.25.0.12将自己伪装成了172.25.66.11主机,所以可以访问172.25.66.250主机

猜你喜欢

转载自blog.csdn.net/gd0306/article/details/83831768