配置 firewall 防火墙的地址伪装和端口转发实例

网关服务器和网站服务器都采用centos 7操作系统;
网关服务器安装3块千兆网卡,分别连接在Internet、企业内网、网站服务器。

要求如下:
网关服务器连接互联网卡ens33配置为公网IP地址,分配到firewall的external区域;连接内网网卡ens37地址为192.168.1.1,分配到firewall的trusted区域;连接服务器网卡ens38地址为192.168.2.1,分配到firewall的DMZ区域。
网站服务器和网关服务器都通过SSH来远程管理,为了安全,将SSH默认端口改为12345。
网站服务器开启https,过滤未加密的http流量。
网站服务器拒绝ping,网关服务器拒绝来自互联网上的ping。
内网用户需要通过网关服务器共享上网。
互联网用户需要访问网站服务器。
基本的环境配置:
网关服务器配置 网卡 :

[[email protected] network-scripts]# ip a  = ip addr
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:fc:60:4b brd ff:ff:ff:ff:ff:ff
    inet 100.0.0.1/8 brd 100.255.255.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::5f65:9c3d:d218:7cea/64 scope link
       valid_lft forever preferred_lft forever
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:fc:60:55 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.1/24 brd 192.168.1.255 scope global ens36
       valid_lft forever preferred_lft forever
    inet6 fe80::7456:2bbc:dc20:31bd/64 scope link
       valid_lft forever preferred_lft forever
4: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:fc:60:5f brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.1/24 brd 192.168.2.255 scope global ens37
       valid_lft forever preferred_lft forever
    inet6 fe80::1e90:6601:56c2:c9ba/64 scope link
       valid_lft forever preferred_lft forever

启动网关服务器上的路由转发功能:

[[email protected] /]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[[email protected] /]# sysctl -p
net.ipv4.ip_forward = 1

配置 web 服务器的网卡:

[[email protected] /]# ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:2f:24:4b brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.10/24 brd 192.168.2.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::19de:d9a7:568a:f34f/64 scope link
       valid_lft forever preferred_lft forever
[[email protected] /]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.2.1     0.0.0.0         UG    100    0        0 ens33

Internet 测试机网卡配置:

[[email protected] /]# ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:45:66:64 brd ff:ff:ff:ff:ff:ff
    inet 100.0.0.10/8 brd 100.255.255.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::3ebc:8f75:cd28:e516/64 scope link tentative
       valid_lft forever preferred_lft forever

web 服务器环境搭建:

[[email protected] ~]# systemctl start firewalld           #启动防火墙
[[email protected] ~]# yum -y install httpd mod_ssl          #安装httpd和mod_ssl
[[email protected] ~]# systemctl start httpd   #启动httpd服务
[[email protected] ~]# systemctl enable httpd          #设置为开机自启
[[email protected] ~]# vim /var/www/html/index.html          #新建网站测试首页文件
<h1>test.com </h1>
[[email protected] ~]# vim /etc/ssh/sshd_config              #更改SSH的侦听端口(需关闭SELinux):
          ................
Port 12345
         ................
[[email protected] ~]# systemctl restart sshd

在网站服务器上配置firewalld防火墙:
1、设置默认区域为dmz区域:

[[email protected] ~]# firewall-cmd --set-default-zone=dmz
success

2、为dmz区域打开https服务并添加tcp的12345端口:

[[email protected] ~]# firewall-cmd --zone=dmz --add-service=https --permanent
success
[[email protected] ~]# firewall-cmd --zone=dmz --add-port=12345/tcp --permanent
success

3、禁止ping:

[[email protected] ~]# firewall-cmd --add-icmp-block=echo-request --zone=dmz --permanent
success

4、因为已经更改了预定义SSH服务的默认端口,所以将预定义SSH服务移除:

[[email protected] ~]# firewall-cmd --zone=dmz --remove-service=ssh --permanent
success

5、重新加载firewalld配置,并查看之前的配置:

[[email protected] ~]# firewall-cmd --reload
success
[[email protected] ~]# firewall-cmd --list-all
dmz (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources:
  services: https
  ports: 12345/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks: echo-request
  rich rules: 

网关服务器上配置firewalld防火墙:
1、将网卡添加至指定区域:

[[email protected] /]# systemctl start firewalld                     #启用防火墙
[[email protected] /]# firewall-cmd --set-default-zone=external          #设置默认区域为external
success
[[email protected] /]# firewall-cmd --change-interface=ens37 --zone=trusted    #将ens37添加至trusted区域
The interface is under control of NetworkManager, setting zone to ‘trusted‘.
success
[[email protected] /]# firewall-cmd --change-interface=ens38 --zone=dmz     #将ens38添加至dmz区域
The interface is under control of NetworkManager, setting zone to ‘dmz‘.
success

2、查看配置,并保存为永久

[[email protected] /]# firewall-cmd --get-active-zones
dmz
  interfaces: ens37
external
  interfaces: ens33
trusted
  interfaces: ens36
[[email protected] /]# firewall-cmd --runtime-to-permanent          # 将当前的配置保存到文件中
success

3、在企业内部主机上测试:

4、更改SSH的侦听端口,并重启服务(需关闭SELinux):

[[email protected] ~]# vim /etc/ssh/sshd_config
          ................
Port 12345
         ................
[[email protected] ~]# systemctl restart sshd

5、配置external区域添加tcp的12345端口:

[[email protected] /]# firewall-cmd --zone=external --add-port=12345/tcp --permanent
success

6、external区域移除SSH服务:

[[email protected] /]# firewall-cmd --zone=external --remove-service=ssh --permanent
success

7、配置external区域禁止ping:

[[email protected] /]# firewall-cmd --zone=external --add-icmp-block=echo-request --permanent
success

8、重新加载防火墙配置:

[[email protected] /]# firewall-cmd --reload
success

测试ssh连接:
在 Internet 测试机通过SSH连接网关服务器的外部接口地址的12345端口:

[[email protected] /]# ssh -p 12345 100.0.0.1
The authenticity of host ‘[100.0.0.1]:12345 ([100.0.0.1]:12345)‘ can‘t be established.
ECDSA key fingerprint is 68:df:0f:ac:c7:75:df:02:88:7d:36:6a:1a:ae:27:23.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘[100.0.0.1]:12345‘ (ECDSA) to the list of known hosts.
[email protected]‘s password:
Last login: Sun Sep  1 16:36:33 2019
[[email protected] ~]# 

使用内网测试机SSH登录web网站服务器的12345端口:

[[email protected] /]# ssh -p 12345 192.168.2.10
The authenticity of host ‘[192.168.2.10]:12345 ([192.168.2.10]:12345)‘ can‘t be established.
ECDSA key fingerprint is 68:df:0f:ac:c7:75:df:02:88:7d:36:6a:1a:ae:27:23.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘[192.168.2.10]:12345‘ (ECDSA) to the list of known hosts.
[email protected]‘s password:
Last login: Sun Sep  1 16:36:39 2019
[[email protected] ~]# 

实现 IP 伪装与端口转发:
1、在Internet测试机上搭建web服务,用来测试:

[[email protected] ~]# yum -y install httpd
[[email protected] ~]# vim /var/www/html/index.html
<h1> www.baidu.com</h1>
[[email protected] ~]# systemctl enable httpd
[[email protected] ~]# systemctl start httpd

2、在内部测试机和dmz的网站服务区都可以访问外网的网站(若访问不了,则可能是公网测试机的防火墙配置问题,可先将公网测试机的防火墙关闭,或放行相关服务的流量即可):

3、查看网关服务器的external区域是否开启了地址伪装:

[[email protected] /]# firewall-cmd --list-all --zone=external
external (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources:
  services:
  ports: 12345/tcp
  protocols:
  masquerade: yes                     # 表示地址伪装已启用
  forward-ports:
  sourceports:
  icmp-blocks: echo-request
  rich rules: 

4、只为源地址192.168.1.0/24网段的地址开启地址IP伪装。
在网关服务器上关闭external默认的地址伪装,添加富规则,要求external区域内,源地址为192.168.1.0/24网段的地址开启地址IP伪装:

[[email protected] ~]# firewall-cmd --remove-masquerade --zone=external
success
[[email protected] ~]# firewall-cmd --zone=external --add-rich-rule=‘rule family=ipv4 source address=192.168.1.0/24 masquerade‘
success

在dmz区域上测试访问发现无法访问,但内网主机却可以:

[[email protected] /]# curl http://100.0.0.10
curl: (7) Failed connect to 100.0.0.10:80; No route to host

5、配置端口转发实现互联网用户可以访问内部web服务器:
在网关服务器上配置:

[[email protected] /]# firewall-cmd --zone=external --add-forward-port=port=443:proto=tcp:toaddr=192.168.2.10
success

在Internet测试机上访问内网的web服务器成功:

六、使用富规则实现端口转发:

上述配置完成后,若现在公司申请了一个新的公网ip地址100.0.0.254,那么就需要重新做端口转发了:

1、将新申请的公网地址100.0.0.254配置在网关服务器的外网接口ens33上,作为第二个IP地址:

[[email protected] /]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
IPADDR0=100.0.0.1                                 # 改到下四行
PREFIX0=24
IPADDR1=100.0.0.254
PREFIX1=24                                           # 添加成两个IP
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
DEVICE=ens33
ONBOOT=yes
ZONE=external

[[email protected] /]# ifdown ens33;ifup ens33             # 重启网卡使配置生效
[[email protected] /]# ip a                           # 查看配置是否成功
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:fc:60:4b brd ff:ff:ff:ff:ff:ff
    inet 100.0.0.1/24 brd 100.0.0.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 100.0.0.254/24 brd 100.0.0.255 scope global secondary ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::5f65:9c3d:d218:7cea/64 scope link
       valid_lft forever preferred_lft forever

2、使用富规则配置端口转发:

[[email protected] /]# firewall-cmd --zone=external --add-rich-rule=‘rule family=ipv4 destination address=100.0.0.254/24 forward-port port=443 protocol=tcp to-addr=192.168.2.10‘
success

3、验证:

原文地址:https://blog.51cto.com/14227204/2434539

时间: 2024-10-07 22:32:04

配置 firewall 防火墙的地址伪装和端口转发实例的相关文章

centos 7配置firewall防火墙的地址伪装和端口转发实例

环境如下图所示,网关服务器和网站服务器都采用centos 7操作系统,网关服务器安装3块千兆网卡,分别连接Internet.企业内网.网站服务器. 网关服务器连接互联网卡ens33配置为公网IP地址,分配到firewall的external区域:连接内网网卡ens37地址为192.168.1.1,分配到firewall的trusted区域:连接服务器网卡ens38地址为192.168.2.1,分配到firewall的DMZ区域. 网站服务器和网关服务器都通过SSH来远程管理,为了安全,将SSH默

保证Linux系统安全之firewalld防火墙配置地址伪装和端口转发详解

通过保证Linux系统安全之firewalld防火墙入门详解认识Linux系统firewalld防火墙,并可以编写一些相对简单一些的防火墙规则.Linux防火墙可以充当路由器(网关).路由器上的NAT技术,同样可以通过Linux防火墙来实现.地址伪装和端口转发说白了就是路由器中的NAT技术. 一.地址伪装和端口转发简介 firewalld防火墙支持两种类型的NAT: (1)地址伪装 地址伪装:基于源地址进行转换,通过地址伪装,NAT设备将经过设备的数据包转发到指定接收方,同时将通过的数据包的源地

centos 7的firewalld防火墙配置IP伪装和端口转发(内附配置案例)

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

pfSense2.32端口转发设置

pfSense上的端口转发是一个相当简单的过程.以前版本添加端口转发时,还必须添加防火墙规则,以便流量转发到端口指定的内部IP地址. 现在在创建端口转发定义时可以自动添加此规则,并且默认情况下已启用该选项. 端口转发设置 导航到Firewall>NAT>Port Forward. 下面对端口转发设置的各个字段进行逐一解释: Disabled:     允许端口转发条目被禁用,而不从配置中删除它. No  RDR: 反向重定向流量匹配这里指定的内容. 对于高级配置,通常应该取消选中. Inter

Linux版VMware使用DHCP为虚拟机分配固定IP及实现NAT网络端口转发

首先介绍一下环境: 1. Host(宿主计算机)的操作系统是Scientific Linux,内核版本2.6.18,主机名SPVM02,IP地址135.100.101.102,部署的是VMware Workstation 8. 2. Guest(虚拟机)这边安装的操作系统是Windows 7. 3. Guest使用vmnet8这块网卡,通过NAT协议实现上网. 需要实现的功能是Host网络中的其他计算机使用Microsoft Remote Desktop远程登录Guest桌面.所以探索如何通过配

linux使用rinetd快速实现端口转发

linux下使用iptables实现端口转发,配置较为复杂,使用rinetd工具可以实现快速配置和修改端口转发. 例:本机ip:1.1.1.1 需要实现访问本机的8080端口,自动转发到2.2.2.2 80 下载软件: wget http://www.boutell.com/rinetd/http/rinetd.tar.gz 安装软件: tar xzvf rinetd.tar.gz cd rinetd make make install ps:执行make install时可能出现错误:缺少目录

如何修改SecureCRT中的端口转发过滤器?

SecureCRT具有过滤器,可控制谁可以连接到已在SecureCRT中设置的端口转发.默认情况下,只有来自运行SecureCRT的计算机的连接才能连接到端口转发. 您可以按照以下步骤更改端口转发过滤器. 如果SecureCRT正在运行,请在继续之前退出程序. 找到与要修改的会话关联的.ini文件..ini文件位于名为Sessions的子文件夹下的SecureCRT Config文件夹中." 全局选项"对话框还会在" 配置文件夹"字段中显示SecureCRT Con

CentOS7 下使用 Firewall防火墙系统封禁允许IP和端口的访问 端口转发 IP转发方法

CENTOS7的防火墙系统默认已经从iptable改成了firewall,使用方法也有所不同,下面是详细介绍 一.管理端口 列出 dmz 级别的被允许的进入端口 # firewall-cmd --zone=dmz --list-ports 允许 tcp 端口 8080 至 dmz 级别 # firewall-cmd --zone=dmz --add-port=8080/tcp 允许某范围的 udp 端口至 public 级别,并永久生效 # firewall-cmd --zone=public 

CentOS7中firewall防火墙详解和配置

官方文档地址: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html#sec-Introduction_to_firewalld1 cd /usr/lib/firewalld/services 目录中存放定义好的网络服务和端口参数,系统参数,不能修改. cd /etc/firewalld/services/ syst