IP地址伪装与端口转发:
Firewalld支持两种类型的NAT:1,IP地址伪装和2,端口转发
1.地址伪装:过的数据包的源地址更改通过地址伪装NAT设备经过设备的包转发到指定接收方同时将通为其自己的接口地址。当返回的数据包达到时会将目的地址修改为原始主机的地址并做路由。地址伪装可以实现局域网多个地址共享单一公网地址上,类似于NAT技术中的端口多路复用(PAT)。IP地址伪装仅支持IPv4,不支持IPv6.
2.端口转发:也称为目的地址转换或端口映射。通过端口转发,将指定IP及端口的流量转发到相同计算机的不同端口上。企业内网的服务器一般都采用私网地址,可以通过端口转发将使用私网 地址的服务器发布到公网,以便让互联网用户访问。
firewalld-cmd高级配置:
1.firewalld中理解直接规则
firewalld 提供了“direct interface”(直接接口),它允许管理员手动编写的iptables,ip6tables和ebtables规则插入firewalld管理区域中,适用于应用程序,而不是用户,firewalld保持对所增加项目的追踪,所以它还能质询firewalld 和发现使用直接端口模式的程序造成的更改。直接端口通过fierwall-cmd命令中的–dieect选项现实。除非直接规则显示插入firewalld管理的区域否则将首先解析直接规则,然后解析其他firewalld的规则。
执行以下命令即可添加一些直接规则已将摸个IP范围列入黑名单
firewall-cmd --direct --permanent --add-chain ipv4 raw blacklist
firewall-cmd --direct --permanent --add-rule ipv4 raw PREROUTING 0 -s 192.168.0.0/24 -j blacklist
firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 0 -m limt --limt 1/min -j LOG --log-prefix “blacklisted”
firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 1 -j DROP
2.使用富语言
富语言提供了一种不需要了解iptables语法的通过高级语言配置复杂IPV4和IPV6防火墙规则的机制
用于表达基本的允许/拒绝规则、配置记录,也可用与配置记录,以及端口转发,伪装和速率限制
基本语法:
rule [family=""]
[ source address="
" [invert=“True”] ]
[ destination address="" [invert=“True”] ]
[ ]
[ log [prefix=""] [level=""] [limit value=“rate/duration”] ]
[ audit ]
[ accept|reject|drop ]
3. 理解富规则命令:
firewall-cmd处理富规则的常用选项
选项 说明
–add-rich-rule='RULE‘ //向指定区域中添加RULE,如果没有指定区域,则为默认区域
–remove-rich-rule=’RULE‘ //从指定区域中删除RULE,如果没有指定区域,则为默认区域
–query-rich-rule=’RULE‘ //查询RULE是否已添加到指定区域,如果未指定区域,则为默认区域。规则存在,则返回0,反之1 --list-rich-rules //输出指定区域所有富规则,如果未指定区域,则为默认区域
配置firewall防火墙的地址伪装和端口转发示例:
实现:
1.网关服务器连接互联网网卡ens33地址为100.1.1.10,为公网IP地址,分配到firewall的external区域;连接内网网卡ens37地2.址为192.168.1.1,分配到firewall的trusted区域;连接服务器网卡ens38地址为192.168.2.1,分配到firewall的dmz区域
3.网站服务器和网关服务器均通过SSH来远程管理,为了安全,将SSH默认端口改为12345
4.网站服务器开启 https,过滤未加密的http流量
5.网站务器拒绝ping,网关服务器拒绝来自互联网上的ping
6.公司内网用户需要通过网关服务器共享上网
7.互联网用户需要访问网站服务器
基本环境配置:
(1)在网关服务器上配置主机名及器添加网卡
hostname
cat /etc/hostname
ip addr //ens33:100.1.1.10/24 ,ens37:192.168.1.1,ens38:192.168.2.1
(2)开启网关服务器
vim /etc/sysctl.conf的路由转发功能
添加net.ipv4.ip_forward = 1
sysctl -p
(3)配置web服务器主机名及器添加网卡
cat /etc/hostname
ip addr //ens33:192.168.2.10/24
网站服务器环境搭建:
(1)验证firewalld在网站服务器上是否运行
systemctl status firewalld //关闭需要开启
(2) 安装httpd和mod_ssl包
yum –y install https mod_ssl
启用并启动httpd,server服务
创建网页测试页
vim /var/www/html/index.html
this is a test web
更改SSH的侦听端口,并重启服务 (需关闭selinux)
vim /etc/ssh/sshd_config
更改port 12345
在网站服务器上配置firewalld防火墙
(1)设置默认区域为dmz区域
firewall-cmd --set-default-zone=dmz
(2)打开https服务及添加tcp的12345端口
firewall-cmd --zone=dmz --add-service=https --permanent
firewall-cmd --zone=dmz --add-service=https --permanent
firewall-cmd --zone=dmz --add-port-12345/tcp --permanent
firewall-cmd --zone=dmz --add-port-80/tcp --permanent
(3)禁止ping
firewall-cmd --add-icmp-block=echo-request --zone=dmz --permanent
(4)将ssh服务移除
fitewall-cmd --zone=dmz --remove-service=ssh --permanent
(5)重载firewalld配置
friewall-cmd --reload
在网关服务器配置firewalld防火墙:
(1)设置区域为external区域
firewall-cmd --set-default-zone=external
firewall-cmd --list-all
(2)将ens37配置为trusted区,ens38配置为dmz区
firewall-cmd --change-interface=ens37 --zone=truusted
firewall-cmd --change-interface=ens38 --zone=dmz
(3)更改ssh的端口,并重启服务(关闭selinux)
vim /etc/ssh/ssh_config
更改port 12345
systemctl restart sshd
(4)配置external区域添加tcp的12345端口
firewall-cmd --zone=external --add-port=12345/tcp --permanent
(5)移除ssh服务
firewall-cmd --zone=external --remove-service=ssh --permanent
(6)external区域禁止ping
firewall-cmd --zone=external --add-icmp-block=echo-request --permanent
(7)重载防火墙
firewall-cmd --reload
(8)测试网关ssh网站服务器
ssh 12345 -p 192.168.2.10
配置IP伪装与端口转发
(1)外网测试机上搭建网站服务,并添加测试页内容
yum -y install httpd
vim /var/www/html/index.html
echo " www.benet.com " >/var/www/html/index.html
systemctl enable httpd
systemctl start httpd
(2)在DMZ的网站服务器上测试
curl http://100.1.1.20
(3)网关关闭伪装,添加富规则,external区的192.168.1.0/24网段开启地址ip伪装
firewall-cmd --remove-masquerade --zone=external
firewall-cmd --zone=external --add-rich-rule=‘rule family=ipv4 source address=192.168.1.0/24 masquerade’
(4)在DMZ的网站服务器测试,发现无法访问外网网站
curl https://100.1.1.20
配置端口转发实现互联网用户访问内部web服务器
(1)在网关服务器上配置
firewall-cmd --zone=external --add-forward-port=port=443:proto=tcp:toaddr=192.168.2.10
(2)在互联网测试机访问内部web访问成功
网关配置
(1)vim /etc/sysconfig/network-scripts.ifcfg-ens33
更改IPADDR1=100.1.1.15
PREFIX1=24
IPADDR0=100.1.1.10
PREFIX=24
systemctl restart network
(2)使用富规则配置端口转发
firewall-cmd --zone=external --add-rich-rule=‘rule family=ipv4 destination address=100.1.1.15/32 forward-port prt=443
protocol=tcp to-addr=192.168.2.10’
(3)在互联网测试机上访问测试结果
curl https://100.1.1.15