目录
目录
三:堡垒机功能配置
1.步骤流程图
先进行一个规划,再去做项目会更加有头绪有逻辑,知道每一步之后该干嘛
2.加固堡垒机的ssh服务
直接原因是仅主机模式导致不能上网,所以vim功能还没有,虽然之前打通了dnat/snat,但是整体还没有搭建好项目。需要直接使用vi
加固ssh服务就是1:禁止root用户登录 2:改了之前设计好了的端口(不再是ssh常用的22端口)
[root@jumpserver ~]# cd /etc/ssh/
[root@jumpserver ssh]# vi sshd_config
Port 8899
PermitRootLogin no
3.新建用户
既然禁用了root用户,肯定就需要创建一个普通用户来登录。
[root@jumpserver ssh]# useradd scjump
[root@jumpserver ssh]# echo "Sctl@123456"|passwd scjump --stdin ##这一条命令将密码直接给新建用户
更改用户 scjump 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@jumpserver ssh]#
刷新ssh服务
[root@jumpserver ssh]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service
[root@jumpserver ssh]#
4.启用防火墙功能,只开放8899端口
[root@jumpserver ssh]# mkdir /iptables
[root@jumpserver ssh]# cd /iptables/
[root@jumpserver iptables]# vi rule.sh
#!/bin/bash
#开放8899端口
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
#考虑防火墙dnat映射转发到堡垒机的8899端口的数据能进来
iptables -A INPUT -p tcp --dport 8899 -j ACCEPT
#允许ping(icmp协议就是与Ping命令紧密相连),设置完这条规则以后就可以Pingweb服务器了
iptables -A INPUT -p icmp -j ACCEPT
#考虑的是堡垒机访问web服务器的数据可以回来
iptables -A INPUT -p tcp --sport 22 -j ACCEPT
iptables -A INPUT -p tcp --sport 6677 -j ACCEPT
#设置INPUT链默认规则为DROP
iptables -P INPUT DROP
[root@jumpserver iptables]#
设置防火墙规则开机启动,修改/etc/rc.local文件
[root@jumpserver iptables]# vi /etc/rc.local
bash /iptables/rule.sh
##设置开机就启动这个写好的脚本
[root@jumpserver iptables]# pwd
/iptables
[root@jumpserver iptables]# ls
rule.sh
[root@jumpserver iptables]#
授予/etc/rc.d/rc.local 文件可执行权限
[root@jumpserver iptables]# chmod +x /etc/rc.d/rc.local
[root@jumpserver iptables]#
重启服务器,验证以上配置是否开机生效
[root@jumpserver iptables]# reboot
启动后登录
[scjump@jumpserver ~]$ su - root
密码:
上一次登录:二 12月 19 14:38:47 CST 2023从 192.168.5.1pts/0 上
[root@jumpserver iptables]# iptables -L -n
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8899
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:6677
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@jumpserver iptables]#
以上效果证明配置全部生效
1:这个时候加固了ssh以后Xshell里堡垒机同防火墙一样,要更改用户登录和端口(同上),
2:登录的时候再切换root用户扩大自身权限即可
#考虑的是堡垒机访问web服务器的数据可以回来
iptables -A INPUT -p tcp --sport 22 -j ACCEPT
iptables -A INPUT -p tcp --sport 6677 -j ACCEPT
这里是为了能把公钥传过去!!!
5.和web服务器建立免密通道
[root@jumpserver ~]# su - root
上一次登录:二 12月 19 15:02:49 CST 2023pts/0 上
生成密钥对##直接ssh-keygen,再敲两下回车
[root@jumpserver ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:FtmZcpjAamqqdRZv3GJdsaTr06z8o1yG1XXq0GINByE root@jumpserver
The key's randomart image is:
+---[RSA 2048]----+
| .. E o. |
| .. = + . |
| . * B . o .|
| o * + * o |
| o. S + = + |
| o + + = . + |
| o. o * =oo . |
|.. o o =.o+ |
|o *=.. |
+----[SHA256]-----+
##查看生成的密钥对
[root@jumpserver ~]# cd /root/.ssh/
[root@jumpserver .ssh]# ls
id_rsa id_rsa.pub
上传公钥到web服务器的root用户上
[root@jumpserver .ssh]# ssh-copy-id -i id_rsa.pub root@192.168.5.80
##这里只要对方用的22端口就可以,不用自身一定是22端口
/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 ~]#
如果这个时候,我直接输入命令ssh ‘root@192.168.5.80’
不用密码就能直接脸上说明免密通道已经打通了
四:web服务器功能配置
1.步骤流程图
2.安装web服务
[root@web-server ~]# yum install httpd -y
[root@web-server ~]# service httpd restart ##启动httpd服务
Redirecting to /bin/systemctl restart httpd.service
[root@web-server ~]# ps aux|grep httpd ##查看进程
[root@web-server ~]# ss -anplut|grep httpd ###查看端口
tcp LISTEN 0 128 [::]:80 [::]:*
##可以看到此时http监听的是80端口
在windows机器上进行测试,访问web服务
3.配置tcp wrappers
只允许堡垒机访问web,其他ip都不允许。记住这里要加入自己的windows机器ip地址,因为windos是通过Xshell连接的,allow除开跳板机ip以外要加入自己的ip地址
[root@web-server ~]# vim /etc/hosts.allow
sshd:192.168.5.99,192.168.1.113
[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.ssh服务的加固
root用户不用禁止,因为当时建立web与jump server的免密通道是用root用户之间进行的
[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
这个时候Xshell也自动断开了,重新连接需要1:用6677端口 2:用密钥认证而不是密码登录
5.禁用防火墙
五:验证DNAT功能和堡垒机的功能
1.验证DNAT功能,发布的web服务器和堡垒机
需要在windows的机器上验证
访问防火墙服务器的WAN口的ip 192.168.1.113的80端口,看能否访问内网的web服务器
注意:这里与之前访问的不同,之前是访问web说明http服务器安装成功,这里访问的是WAN口,如果能访问就说明DNAT功能发布web服务器发表成功
以上效果说明DNAT功能发布web服务器成功
2.验证堡垒机的功能,能否通过堡垒机ssh登录web服务器
Xshell用防火墙的WAN口ip能登录堡垒机的用户成功,说明跳板成功。说明你的DNAT里的堡垒机发布成功
这里用的防火墙的ip以及特定的9988端口
输入堡垒机上的运行ssh远程登录的用户scjump和密码Sctl@123456
说明堡垒机发布成功了,再切换到root用户,用防火墙的ip堡垒机的用户进行ssh连接到web服务器
[scjump@jumpserver ~]$ su - root
密码:
上一次登录:二 12月 19 15:05:37 CST 2023pts/0 上
[root@jumpserver ~]#
登录web服务器,指定端口号为6677
[root@jumpserver ~]# ssh -p 6677 root@192.168.5.80
Last login: Tue Dec 19 16:10:34 2023 from 192.168.5.99
[root@web-server ~]#
[root@web-server ~]# exit
登出
Connection to 192.168.5.80 closed.
六:编写一个可以ssh登录其他机器的脚本jump.sh
该脚本方便记忆有哪些机器需要登录,以及它们开放的ssh的端口号
并给出选项,输入四个选项并给出对应步骤
[root@jumpserver iptables]# vim jump.sh ##编写脚本
#!/bin/bash
echo "1. 连接web服务器"
echo "2. 连接redis服务器"
echo "3. 连接mysql服务器"
echo "4. 退出"
read -p "请输入你的选项,输入1~4之间的数字:" num
case $num in
1)
ssh -p 6677 root@192.168.5.80
;;
2)
ssh root@192.168.5.36
;;
3)
ssh root@192.168.5.37
;;
*)
exit
;;
esac
使用脚本
[root@jumpserver iptables]# bash jump.sh
1. 连接web服务器
2. 连接redis服务器
3. 连接mysql服务器
4. 退出
请输入你的选项,输入1~4之间的数字:1
Last login: Tue Dec 19 16:45:00 2023 from 192.168.5.99
[root@web-server ~]#
[root@web-server ~]#
[root@web-server ~]# ls
anaconda-ks.cfg
[root@web-server ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:89:52:35 brd ff:ff:ff:ff:ff:ff
inet 192.168.5.80/24 brd 192.168.5.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe89:5235/64 scope link
valid_lft forever preferred_lft forever
[root@web-server ~]# exit
登出
Connection to 192.168.5.80 closed.
[root@jumpserver iptables]#
至此,项目的步骤基本完成。这中途遇到的问题已经放入每个步骤的中间并给出解决方案。