目录
3:编写实现snat和dnat的脚本snat_dnat.sh(重要)
项目名称
堡垒机构建和发布搭建
项目架构图
项目环境
centos7.9 、iptables、tcp wrappers、httpd、ssh
项目描述
模拟企业里的环境,构建一个防火墙服务器实现内部网络上网,发布内网的web服务和堡垒机,构建堡垒机帮助企业以更安全的方式管控和登录各种类型的资产。
项目步骤:
1.规划设计项目拓扑图,并且规划好ip地址和各项工作的顺序
2.给防火墙服务器、堡垒机、web服务器等安装好centos7.9的系统,并且配置好ip地址和主机名,禁用selinux和firewalld服务。
3.在防火墙服务器编写脚本实现SNAT和DNAT功能,开启路由功能,加固ssh服务(修改端口号、禁用root用户登录),同时设置开机启动执行SNAT和DNAT的脚本。
4.在堡垒机上加固了ssh服务(修改端口号、禁用root用户登录),开启iptables防火墙功能,只允许访问固定的端口(8899),其他端口都进行封闭。和web服务器之间建立免密通道,编辑登录脚本jump.sh。
5.在web服务器上搭建httpd服务,加固ssh服务(修改端口号、禁用密码登录)、配置tcp wrappers功能,只允许堡垒机的ip地址可以访问ssh服务。
6.测试SNAT和DNAT,堡垒机的功能
项目心得(搭建完项目后写在前面)
1.提升了整个项目规划的能力,将计算机网络和linux各种网络配置、编写脚本进行融合
2.提升故障排除的能力
3.对防火墙和堡垒机在安全上的使用进一步加深
4.对ssh服务进一步熟悉
5.沟通能力的提升等
6.今后考虑深入研究下开源的jumpserve
一:搭建环境(整体规划)
本项目从最基本的环境配置(虚拟机创建)开始搭建,一步一步落实到位
1:防火墙服务器
原理图:(局部)
看清楚:配置两块网卡(网络适配器),WAN口使用桥接模式,LAN口使用仅主机模式
具体操作(新建虚拟机)
没有图显示默认为下一步:
1:版本centOS7 64位
2:网卡模式(待会还会添加)
3:继续添加一块网卡,设置为hostonly模式
4:总体配置如图(注意此时有了两块网卡了)
5:放入镜像(操作系统)
因为当时是自定义设置的,需要再手工配置镜像,别遗漏!!!
6:打开虚拟机进去安装centos7系统来到配置界面
7:网络连接打开(很重要,之前漏过这一步导致不能连接网络)记住防火墙两个网卡都连接一下!
同时注意:最小安装(不安装图形化界面) 和 安装位置的自动分区
8:设置root用户的密码
9:自动安装成功点击重启
10:安装成功(显示此界面则成功)
2:其他虚拟机的安装
继续安装上述步骤安装即可,注意其他两台服务器都是用的仅主机模式,
一台命名为centos7-jumpserver,另一台命名为centos7-web
3:各虚拟机网卡的ip配置
各自用root用户登录进入以后第一步先ip add
可以看到ens33没有ip地址,此时用ifup ens33 来激活网卡的ip地址
改一下主机名(方便区分,而不只是用不同ip来区分不同机器)
[root@localhost ~]# hostnamectl set-hostname firewall
[root@localhost ~]# su
[root@firewall ~]#
可以看到此时就网卡ens33激活了ip地址,之后的操作就需要用到之前写过的博客:配置静态IP地址
[root@firewall ~]# cd /etc/sysconfig/network-scripts/
[root@firewall network-scripts]# ls
ifcfg-ens33 ifdown-eth ifdown-ppp ifdown-tunnel ifup-ippp ifup-post ifup-TeamPort network-functions-ipv6
ifcfg-ens34 ifdown-ippp ifdown-routes ifup ifup-ipv6 ifup-ppp ifup-tunnel
ifcfg-lo ifdown-ipv6 ifdown-sit ifup-aliases ifup-isdn ifup-routes ifup-wireless
此时可以看到有两个网卡,再编辑一下对应的配置文件即可。
需用vim编辑命令,记住先yum install vim -y下载
配置好第1块网卡的ip地址、子网掩码、网关和dns服务器地址
[root@firewall network-scripts]# vim ifcfg-ens33
BOOTPROTO="none"
NAME="ens33"
UUID="1dd5fb76-8c91-43d8-ae43-f921aab4f836"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.1.113
PREFIX=24
GATEWAY=192.168.1.1
DNS1=114.114.114.114
编辑ens36 网卡配置文件,设置好ip地址和子网掩码
[root@firewall network-scripts]# vim ifcfg-ens36
BOOTPROTO=none
NAME=ens36
UUID=bfcbc028-8b94-4753-b7f9-af378b162dba
DEVICE=ens3
ONBOOT=yes
IPADDR=192.168.5.254
PREFIX=24
再刷新网络 service network restart
这里有个问题:如果刷新网络成功了,因为ens33网卡ip地址修改了,需要重新连接一个Xshell终端去登录新的WAN口的IP地址也就是192.168.1.113,最后成功结果如图(已修改好两个网卡的ip地址等)
配网卡的一些问题(重要)
1:这里的网卡一定只有ifcfg-ens33 ifcfg-ens36,多余的一定要删除。
多余的文件,如果有错误配置,也会导致网络配置失败
2:ens33和ens36的UID号注意一定不能一样,要删除!
这里发现一样的用Vim编辑器删除,注意dd直接删除该行
3:IP地址要设置在确定的段
先看原理:真实机器有很多网卡,而用的是Vmnet1网卡通过Xshell来与交换机相连从而与防火墙跳板机内部服务器相连,而且Vmnet1对应的是仅主机模式,因此LAN口的IP地址要配与真实机器VMnet1网段的IP
桥接模式要配与真实机器所用的IP,而我真实机器用的是无线网WLAN
所以这里的ens36要换成192.168.102.*
4:关闭firewalled和setlinux服务
SELinux(Security-Enhanced Linux)是一个安全子系统,和防火墙firewalled类似
Firewall是一种网络安全设备或软件,用于监控、过滤和控制网络流量,以防止未经授权的访问和攻击。
注意查看注释内容有对应的代码
[root@jumpserver ~]# service firewalld stop ##防火墙关闭服务
Redirecting to /bin/systemctl stop firewalld.service
[root@jumpserver ~]# systemctl disable firewalld ###开机以后防火墙不再开启
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@jumpserver ~]# getenforce ###查看setlinux状态
Enforcing
[root@jumpserver ~]# setenforce 0 #######短暂关闭setlinux
[root@jumpserver ~]#
[root@jumpserver ~]# vi /etc/selinux/config ########查看setlinux配置文件
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled #######打开以后只要设置成disabled即可
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
重启才能生效
[root@jumpserver ~]# reboot
二:在防火墙服务器上配置SNAT和DNAT功能
1:步骤流程图
2:永久开启路由功能
进入配置文件添加net.ipv4.ip_forward = 1
[root@firewall nat]# vim /etc/sysctl.conf
#添加下面的配置永久开启路由功能
net.ipv4.ip_forward = 1
[root@firewall nat]# sysctl -p ##让linux内核加载上面的配置,即生效
net.ipv4.ip_forward = 1
[root@firewall nat]#
这样才能永久生效
3:编写实现snat和dnat的脚本snat_dnat.sh(重要)
在防火墙服务器打通snat/dnat之前,web/jump server都是上不了网的,ping百度的官网或者是
yum install vim -y都是失败的,这时需要开启路由打通snat/dnat来开启上网功能
#临时开启路由功能,因为前面已经永久开启了,这个只是提醒,需要开启路由功能
echo 1 >/proc/sys/net/ipv4/ip_forward
#开启SNAT功能
iptables -F #清除一下原来的规则,确保规则都是全新额
iptables -X ##清除自定义链
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.5.0/24 -o ens33 -j MASQUERADE
##snat是postrouting链(出去的)
##MASQUERADE就不用接ens33的ip地址了
#dnat 发布堡垒机
iptables -t nat -A PREROUTING -d 192.168.1.113 -p tcp --dport 9988 -i ens33 -j DNAT --to-destination 192.168.5.99:8899
##dnat是prerouting链(进来),同时dnat发布堡垒机的端口是9988,这个时候为了安全不设置为常用端口,
访问了9988端口号后会映射到堡垒机的ip的8899端口号上去,这是最重要的一条命令配置
#dnat 发布web服务的80和443端口
iptables -t nat -A PREROUTING -d 192.168.1.113 -p tcp --dport 80 -i ens33 -j DNAT --to-destination 192.168.5.80:80
iptables -t nat -A PREROUTING -d 192.168.1.113 -p tcp --dport 443 -i ens33 -j DNAT --to-destination 192.168.5.80:443
重要指令讲解
iptables -t nat -A PREROUTING -d 192.168.1.113 -p tcp --dport 9988 -i ens33 -j DNAT --to-destination 192.168.5.99:8899
这条命令的作用是将来自192.168.1.113地址,目标端口为9988的TCP数据包,通过ens33接口转发到目标地址192.168.5.99的8899端口。
这条iptables规则使用了目标地址转换(DNAT),也称为端口转发。它将数据包的目标地址和端口从192.168.1.113:9988转换为192.168.5.99:8899,从而实现了网络地址转换(NAT)映射。
换句话说,它允许对特定目标IP和端口的传入请求进行地址转换,以便将流量路由到另一个内部网络中的不同地址和端口。
4:加固ssh服务
修改端口号5566,禁用root用户登录,新建一个专门用户登录防火墙ssh服务的用户fwuser,并且设置密码Sctl@123456
[root@firewall nat]# vim /etc/ssh/sshd_config #进入配置文件修改
Port 5566
PermitRootLogin no
[root@firewall nat]# service sshd restart #每次改了配置文件一定要记得刷新服务
注意:此处如果失败了注意是否关闭了setlinux
检验效果:
此时出现5566就说明端口号修改成功了。
同时:后面再用Xshell连接防火墙服务器,请使用用户fwuser,密码是Sctl@123456 连接的端口是5566,这样就只能用这个普通用户登录5566端口了,22端口不能登录了如图:
5.设置防火墙开机的时候就启动dnat/snat
[fwuser@firewall nat]$ su - root ######切换至root用户
密码:
上一次登录:二 12月 19 11:46:55 CST 2023从 192.168.1.180pts/1 上
[root@firewall ~]#
设置snat_dnat.sh开机启动
[root@firewall nat]# vim /etc/rc.local
bash /nat/snat_dnat.sh ########在配置文件中加入一条命令
[root@firewall nat]# pwd
/nat
[root@firewall nat]# ls
snat_dnat.sh
[root@firewall nat]#
授予/etc/rc.d/rc.local 文件可执行权限
[root@firewall nat]# chmod +x /etc/rc.d/rc.local
[root@firewall nat]# reboot
这样防火墙上的工作就完成了