firewalld防火墙高级配置

IP伪装与端口转发

当用户数据包经过NAT设备时,NAT设备将源地址替换为公网IP地址,而返回的数据包就可以被路由。NAT技术一般都是在企业边界路由器或防火墙上配置。

  • IP地址伪装:通过地址伪装,NAT设备将经过设备的包转发到指定接收方,同时将通过的数据包的源地址更改为其自己的接口地址。当返回的数据包到达时,会将目的地址修改改为原始的地址并做路由。地址伪装可以实现局域网多个地址共享单一公网地址上网,类似于NAT技术中的端口多路复用(PAT).IP地址伪装仅支持IPV4,不支持IPV6。
  • 端口转发:也称为目的地址转换或端口映射。通过端口转发,将指定IP地址及端口的流量转发到相同计算机上的不同端口,或不同计算机上的端口

firewall中理解直接规则

firewalld提供了“”direct  interface“(直接接口),它允许管理员手动编写的iptables、ip6tables和ebtables规则插入firewalld管理的区域中,适用用于应用程序,而不是用户。直接端口通过firewall-cmd命令中的--direct选项实现。除非将直接规则显式插入firewalld管理的区域,否则将首先解析直接规则,然后解析其他firewalld规则。

使用富语言

firewalld的富语言提供了一种不需要了解iptables语法的通过高级语言配置 复杂IPV4和IPV6防火墙规则的机制,为管理员提供了一种表达性语言,通过这种语言可以表达firewalld的基本语法中未涵盖的自定义防火墙规则。富规则可用于表达基本的允许/拒绝规则,也可以用于配置记录(面向syslog和auditd),以及端口转发、伪装和速率限制

规则的每个单一元素都能够以option=value的形式来采用附加参数

理解富规则命令

firewall-cmd有四个选项可以用于处理富规则,所有这些选项都可以同常规的--permanent或--zone=<ZONE>选项组合使用

选项 说明
--add-rich-rule='RULE' 向指定区域中添加RULE,如果没有指定区域,则为默认区域
--remove-rich-rule='RULE' 从指定区域中删除RULE,如果没有指定区域,则为默认区域
--query-rich-rule='RULE' 查询RULE是否已添加到指定区域,如果未指定区域,则为默认区域。规则存在,则返回0,否则返回1

--list-rich-rules

输出指定区域的所有富规则,如果未指定区域,则为默认区域

1.准备一台网关服务器
一台企业服务器
一台企业内测试机
一台Internet测试用机
一台网站服务器
2.在网关服务器上配置主机名及网卡地址
hostname
cat /etc/hostname
ip addr
3.开启网关服务器的路由转发功能。
vim /etc/sysctl.conf    添加net.ipv4.ip_forward = 1
sysctl -p       添加net.ipv4.ip_forward = 1
4.配置wed服务器主机名及网卡地址
cat /etc/hostname     web
ip addr
route -n
5.配置网站服务器环境搭建
systemctl status Firewalld
yum install -y httpd mod_ssl     安装httpd和mod_ssl软件包
启用并启动httpd.servi服务
systemctl enable httpd
systemctl start httpd、
创建网页首页测试index.html
vim /var/www/html/index.html
更改ssh的侦听端口,并启用服务
firewall-cmd --set-default-zone=dmz
firewall-cmd --zone=dez --zdd-service=https --permanent
firewall-cmd --zone=dez --add-port=12345/tcp --permanent
firewall-cmd --zone=dez --add-port=80/tcp --permanent
firewall-cmd --add-icmp-block=echo-request --zone=dez --permanent
firewall-cmd --zone=dmz --remove-service=ssh --permanent
firewall-cmd --reload
在网关服务器上配置Firewalld防火墙
systemctl status Firewalld
firewall-cmd --set-default-zone=external
firewall-cmd --list-all
firewalld-cm --change-interface=ens37 --zone=trusted
firewall-cmd --change-interface=ens38 --zone=dmz
firewall-cmd --get-active-zones
vim /etc/ssh/sshd_config
systemctl restart sshd
firewall-cmd --zone=external --add-port=12345/tcp --permanent
firewall-cmd --zone=external --add-icmp-block=echo-request --permsnent
firewall-cmd --reload
互联网测试机上
ssh -p 12345 测试机IP
ssh -p 12345 webIp
网关服务器
hostname internet
yum install -y httpd 
vi /var/www/html/lndex.html
systemctl enable httpd
systemctl start httpd
在DMZ的网站上测试
查看网卡服务器的external区域是否开启了地址伪装
firewall-cmd --list-all --zone=external
firewall-cmd --remove-masquerade --zone=external
firewall-cmd --zone=external --add-rich-rule='rule family=ipv4 source address=ip地址/24 masquerade'
在DMZ网站测试。发现无法访问外网网站
curl ip地址
网关服务器上做
firewall-cmd --zone=external --add-forward-port=port=443:poroto=tcp:toaddr=IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network
ip add
firewall-cmd --zone=external --add-rich-rule='rule family=ipv4 destination address=IP地址/32 forward-port port=443 protocol=tcp to-addr=IP地址'

猜你喜欢

转载自blog.csdn.net/Huangzh1992/article/details/86160352