什么是跳板机?什么是堡垒机?
跳板机和堡垒机其实就是内部的一台服务器,允许外面的机器可以ssh或者web连接进来,然后通过堡垒机或者跳板机再去访问内部的其他的服务器,而且其他的服务器也做上了安全上的限制,只允许跳板机或者堡垒机可以访问,这样做的目的是为了保护内网的服务器的安全。
JumpServer是一个非常好的堡垒机软件,可以帮助企业以更安全的方式管控和登录各种类型的资产,同时也支持事前授权、事中监察、事后审计,满足等保合规要求。
堡垒机实验的步骤:
准备机器环境:三台centos7.9的虚拟机(防火墙服务器、堡垒机、web服务器),2G内存/1核cpu/20Gc磁盘 、iptables、tcp wrappers、httpd、ssh
1.1给防火墙服务器和web服务器、堡垒机配置好ip地址和设置好主机名,内网使用hostonly网卡类型,防火墙的外网卡使用桥接类型
增加一个网卡用作LAN口
关闭firewalld和selinux
永久关闭selinux
1.2配置堡垒机和web服务器的ip地址、主机名、关闭selinux
修改主机名
配置ip地址
刷新网络服务
关闭防火墙同上
1.3配置web服务器ip地址、主机名、关闭防火墙
刷新网络服务同上
关闭防火墙同上
2.在防火墙服务器上配置SNAT和DNAT功能
写实现snat和dnat的脚本 snat_dnat.sh
查看脚本执行的策略
防火强服务器上没有相关的进程去监听9988和80、443端口,防火墙服务器只是检查,然后进行DNAT转发
加固防火墙服务器的ssh服务,修改端口号5566,禁用root用户登录,新建一个专门用户登录防火墙ssh服务的用户fwuser,并设置密码Sctl@123456
Port 5566
PermitRootLogin no
然后刷新ssh服务
开启路由功能
临时开启路由功能
永久开启路由功能
添加下面的配置
让linux内核加载上面的配置:sysctl -p
后面再连接防火墙服务器,请使用用户fwuser,密码是Sctl@123456,连接的端口是5566
设置snat.dnat.sh开机启动
添加bash snat.dnat.sh
授予文件可执行权限
3.加固堡垒机上的ssh服务,启用防火墙功能和web服务器建立免密通道
3.1加固堡垒机上的ssh服务
Port 8899
PermitRootLogin no
新建一个普通用户,用于ssh的远程登录
刷新ssh服务
3.2启用防火墙功能,只开放8899端口
设置防火墙的开机启动
3.3和web服务器建立免密通道
生成密钥对
[root@jumpserver ~]# cd /root/.ssh/
[root@jumpserver .ssh]# ls
id_rsa id_rsa.pub
[root@jumpserver .ssh]#
上传公钥到web服务器
[root@jumpserver .ssh]# ssh-copy-id -i id_rsa.pub root@192.168.5.80
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
The authenticity of host '192.168.5.80 (192.168.5.80)' can't be established.
ECDSA key fingerprint is SHA256:CE23O23CKzYi8umeR673VuPVdXQfUL5ytKAYDC81S/4.
ECDSA key fingerprint is MD5:78:ec:59:3c:d2:c3:b8:1f:8f:c1:a4:c1:92:93:f6:a6.
Are you sure you want to continue connecting (yes/no)? yes
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.5.80's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.5.80'"
and check to make sure that only the key(s) you wanted were added.
[root@jumpserver .ssh]#
测试堡垒机和web服务器之间的免密通道是否创建成功
[root@jumpserver iptables]# ssh 'root@192.168.5.80'
Last login: Tue Dec 19 14:38:50 2023 from 192.168.5.1
[root@web-server ~]#
4.在web服务器上安装web服务,配置tcp wrappers,ssh服务的加固
4.1安装web服务
[root@web-server ~]# yum install httpd -
启动httpd服务
[root@web-server ~]# service httpd restart
Redirecting to /bin/systemctl restart httpd.service
[root@web-server ~]#
[root@web-server ~]# ps aux|grep httpd
root 1662 0.1 0.2 230444 5216 ? Ss 16:23 0:00 /usr/sbin/httpd -DFOREGROUND
apache 1663 0.0 0.1 230444 2992 ? S 16:24 0:00 /usr/sbin/httpd -DFOREGROUND
apache 1664 0.0 0.1 230444 2992 ? S 16:24 0:00 /usr/sbin/httpd -DFOREGROUND
apache 1665 0.0 0.1 230444 2992 ? S 16:24 0:00 /usr/sbin/httpd -DFOREGROUND
apache 1666 0.0 0.1 230444 2992 ? S 16:24 0:00 /usr/sbin/httpd -DFOREGROUND
apache 1667 0.0 0.1 230444 2992 ? S 16:24 0:00 /usr/sbin/httpd -DFOREGROUND
root 1670 0.0 0.0 112824 980 pts/0 R+ 16:24 0:00 grep --color=auto httpd
查看端口
[root@web-server ~]# ss -anplut|grep httpd
tcp LISTEN 0 128 [::]:80 [::]:* users:(("httpd",pid=1667,fd=4),("httpd",pid=1666,fd=4),("httpd",pid=1665,fd=4),("httpd",pid=1664,fd=4),("httpd",pid=1663,fd=4),("httpd",pid=1662,fd=4))
[root@web-server ~]#
在windows机器上进行测试,访问web服务
配置tcp wrappers
[root@web-server ~]# vim /etc/hosts.allow
sshd:192.168.5.99
[root@web-server ~]# vim /etc/hosts.deny
sshd:ALL
在防火墙服务器上测试是否可以ssh到web服务器
[root@firewall nat]# ssh root@192.168.5.80
ssh_exchange_identification: read: Connection reset by peer
[root@firewall nat]#
连接失败,说明tcp wrappers设置成功
4.3 ssh服务的加固,修改端口号为6677,禁止密码登录
[root@web-server ~]# vim /etc/ssh/sshd_config
Port 6677
PasswordAuthentication no
刷新服务
[root@web-server ~]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service
[root@web-server ~]#
5. 验证DNAT功能和堡垒机的功能
5.1验证DNAT功能,发布的web服务器和堡垒机
需要在windows的机器上验证
访问防火墙服务器的WAN口的ip 192.168.1.113的80端口,看能否访问内网的web服务器
以上效果说明DNAT功能发布web服务器成功
验证堡垒机的功能,能否通过堡垒机ssh登录web服务器