Linux防火墙实战演练
文章目录
- 一、实验内容
- 网络规划
- 实验要求
- 二、操作步骤
- 1.网络规划
- 2.防火墙配置
- 2.1配置防火墙的各个网卡ip并禁用自身的firewalld和selinux
- 2.2打开firewall路由转发
- 2.3配置内网环境
- 2.4配置服务器
- 2.5配置外网
- 3.内部网络中的pc1采用SNAT访问外部互联网,但是无法ping到内部网关
- 4.内部网络服务器s1通过DNAT发布服务到互联网
- 5.互联网主机pc2能够访问S1服务器,但是不能够进行ping和ssh连接
- `提示:防火墙的参数多,该实验一定要反复练习目的是会应用在各个场景下:`
一、实验内容
网络规划
- 内部PC1位于内网区域,地址段为: 192.168.1.0/24,pc1地址为:192.168.1.1/24,网关地址为:192.168.1.254/24
- 服务器S1位于服务器区域,地址段为: 192.168.2.0/24,pc1地址为:192.168.2.1/24,网关地址为:192.168.2.254/24
- PC2位于互联网区域,模拟外部互联网,地址段为:10.0.0.0/8,pc2地址为:10.0.0.1/8
- Linux防火墙的三块网卡为别连接不同的网络区域,地址分别为 :ens33 192.168.1.254/24;ens34 10.0.0.100/8;ens35 192.168.2.254/24
实验要求
- 内部网络中的pc1采用SNAT访问外部互联网,但是无法ping到内部网关。
- 内部网络服务器s1通过DNAT发布服务到互联网。
- 互联网主机pc2能够访问DMZ区域的服务器,但是不能够进行ping和ssh连接。
二、操作步骤
1.网络规划
说明:内网:
ip地址:192.168.1.1 ; 网卡连接 Vmnet1 ; 网卡:ens224; 要连接的防火墙网关为192.168.1.254
外网:
ip地址:10.0.0.1 ; 网卡连接 Vmnet3 ; 网卡:ens161; 要连接的防火墙网关为10.0.0.100
服务器:
ip地址:192.168.2.1 ; 网卡连接 Vmnet2 ; 网卡:ens256; 要连接的防火墙网关为192.168.2.254
防火墙的虚拟机配置:
还要保证在同一局域网下:
点击更改设置,添加后去掉图中方框中的勾选项(三个都需要去掉)
2.防火墙配置
2.1配置防火墙的各个网卡ip并禁用自身的firewalld和selinux
[root@SF1 ~] systemctl stop firewalld.service
[root@SF1 ~] setenforce 0
[root@SF1 ~] ifconfig ens224 192.168.1.254/24
[root@SF1 ~] ifconfig ens161 10.0.0.100/8
[root@SF1 ~] ifconfig ens256 192.168.2.254
使用ip a查看配置
2.2打开firewall路由转发
编辑路由文件
vim /etc/sysctl.conf
查看路由功能
sysctl -p
2.3配置内网环境
配置ip地址并禁用firewalld和selinux
[root@PC1 ~] systemctl stop firewalld.service
[root@PC1 ~] setenforce 0
[root@PC1 ~] ifconfig ens160 192.168.1.1/24
配置网关
[root@PC1 ~] route add -net 0/0 gw 192.168.1.254
[root@PC1 ~] route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 ens160
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens160
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
永久配置:
vim /etc/sysconfig/network-scripts/ifcfg-ens224
查看地址和网关
下载nginx,并开通服务
我采用的是无网下载,之前的博客有,可以参考下
[root@S1 yum.repos.d] yum -y install nginx
[root@S1 yum.repos.d] systemctl restart nginx
2.4配置服务器
和配置内网步骤一样,完成后同样启动nginx服务
2.5配置外网
操作步骤还是和上面一样,只是不用配置网关,也不用管nginx服务
环境检测:
使用ping
3.内部网络中的pc1采用SNAT访问外部互联网,但是无法ping到内部网关
思考:内网可以联通防火墙,外网可以联通防火墙,所以内网可以转换协议连接到外网所对应的防火墙的网关
iptables -t nat -A POSTROUTING -s 192.168.1.1/24 -o ens161 -j MASQUERADE
**-t nat
操作 nat 表(Network Address Translation),专门处理地址转换规则。
-A POSTROUTING
-A:追加规则到指定链(POSTROUTING)。
POSTROUTING 链:在数据包 离开本机前 修改源地址(路由决策之后)。
-s 192.168.1.0/24
-s:匹配 源 IP 地址。
192.168.1.0/24:表示内网网段(IP 范围 192.168.1.1 ~ 192.168.1.254)。
-o ens161
-o:匹配 出口网络接口(数据包离开的网卡)。
ens34:通常是网关连接 外网 的接口(如公网网卡)。
-j MASQUERADE**
-j:跳转到目标动作。
MASQUERADE:动态将内网设备的 源 IP 替换为 ens34 接口的 当前公网 IP。
给防火墙添加规则
检测:
iptables -A INPUT -s 192.168.1.1 -d 192.168.1.254 -j DROP
-A INPUT
-A:追加规则到指定链(INPUT 链)
INPUT 链:处理 进入本机的数据包(目标地址是本机 IP)
**-s 192.168.1.1
-s:匹配 源 IP 地址
192.168.1.1:发送数据包的来源主机 IP
-d 192.168.1.254
-d:匹配 目标 IP 地址
192.168.1.254:数据包要发送到的目标主机 IP(通常是本机或其他设备)
-j DROP**
-j:跳转到目标动作
DROP:直接丢弃数据包(不发送任何响应,发送方会等待直到超时)
检测:
4.内部网络服务器s1通过DNAT发布服务到互联网
先检查nginx是否启动,如果没有启动的话会显示拒绝连接
echo ly_2505 >/usr/share/nginx/html/index.html
手写自定义内容
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.2.1:80
**-t nat**
操作 **nat 表**(Network Address Translation),专门处理地址转换规则。
**-A PREROUTING**
-A:追加规则到指定链(PREROUTING 链)
PREROUTING 链:在数据包 进入本机前 修改目的地址(路由决策之前)
**-p tcp**
匹配 TCP 协议 的数据包
**--dport 80**
匹配 目的端口 80(HTTP 服务的标准端口)
**-j DNAT**
跳转到 DNAT 动作(Destination Network Address Translation)
**--to-destination 192.168.2.1:80**
将目的地址重写为 192.168.2.1,端口重写为 80
检测
5.互联网主机pc2能够访问S1服务器,但是不能够进行ping和ssh连接
在第二个要求中,已经实现了PC2可以通过访问网关来转发到S1服务器,所以这一步使其不能ping 10.0.0.100 和进行ssh连接
iptables -I INPUT -p tcp --dport 22 -j DROP
## ssh 的端口号是22,禁用掉22端口号iptables -A INPUT -s 10.0.0.1 -j DROP##不能与自己连接
检测: