目录
VPN: Virtual Private Network 虚拟专用网络:
1.在内网的web服务器上配置tcp wrappers策略,只允许jumpserver 能ssh过来,其他的机器都不可以
ssh 堡垒机实验
##堡垒机(跳板机)
什么是跳板机?什么是堡垒机?
跳板机和堡垒机其实就是内部的一台服务器,允许外面的机器可以ssh或者web连接进来,然后通过堡垒机或者跳板机再去访问内部其他的服务器,而且其他的服务器也做了安全上的限制,只允许堡垒机或者跳板机可以访问,这样做的目的是为了保护内网的服务器的安全。
外面的用户---》VPN-->进入公司内部---》ssh到跳板机---》内部的服务器上,进行控制
什么是dmz区?
DMZ(Demilitarized Zone)是指网络安全中的一个概念
jumpserver 是一个非常好的堡垒机软件
JumpServer 是什么?
JumpServer 堡垒机帮助企业以更安全的方式管控和登录各种类型的资产。
JumpServer 堡垒机支持事前授权、事中监察、事后审计,满足等保合规要求。
VPN: Virtual Private Network 虚拟专用网络:
虚拟专用网络(VPN)的功能是:在公用网络上建立专用网络,进行加密通讯。在企业网络中有广泛应用。VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访问。VPN可通过服务器、硬件、软件等多种方式实现。
VPN解决了什么问题? 其实就是让外网的用户访问到内网,需要对外网的用户进行认证,然后分配一个内部的ip地址,就可以访问内网了。
VPN网关: vpn服务器(硬件防火墙)
openvpn 可以实现vpn功能
ssh 服务: 远程控制linux系统的服务
sudo
iptables --->tcp wrappers
tcp wrappers 是一个端口过滤机制,可以理解为一个防火墙软件。
会对进出系统的数据包进行过滤
4、TCP_Wrappers访问策略
相关控制文件:/etc/hosts.allow(允许文件)、 /etc/hosts.deny(拒绝文件)
/etc/hosts.allow(允许文件) 白名单
/etc/hosts.deny(拒绝文件) 黑名单
访问策略的检查顺序:
1.先看hosts.allow里是否有允许的策略,如果有直接放行,如果没有,再去检查hosts.deny
2.如果hosts.deny里有拒绝的策略,直接拒绝,如果没有,则放行
[root@localhost ~]# vim /etc/hosts.allow
sshd:61.63.65.67,192.168.2.*
[root@localhost ~]# vim /etc/hosts.deny
sshd:ALL
====
iptables -A INPUT -s 192.168.5.99 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -P INPUT DROP
====
什么是dmz区?
隔离区域(非军事化区域)---》就是集成存放服务器的区域
堡垒机实验的步骤:
准备机器环境:
1.给防火墙服务器和web服务器、堡垒机配置好ip地址和设置好主机名,内网使用hostonly网卡类型,防火墙的外网卡使用桥接类型
注意: 你们自己规划的IP地址和网关一定要配置好,dns域名解析服务器可以配置8.8.8.8(谷歌的)
网卡配置方面要自己让路由器有两个网卡,外网卡设置桥接,内网的客户机的网卡都设置为仅主机模式
[root@feng ~]# hostnamectl set-hostname jumpserver
[root@feng ~]# su
[root@jumpserver ~]#
[root@web ~]# hostnamectl set-hostname web-server
[root@web ~]# su
[root@web-server ~]#
##本图片仅供参考
步骤:
1.在内网的web服务器上配置tcp wrappers策略,只允许jumpserver 能ssh过来,其他的机器都不可以
[root@web-server ~]# cat /etc/hosts.deny
sshd:ALL
[root@web-server ~]# cat /etc/hosts.allow
sshd:192.168.5.99,192.168.5.1
[root@web-server ~]#
2.确保堡垒机上的ssh服务是正常运行的
[root@jumpserver ~]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service
#ssh进程是否启动
[root@web-server ~]# ps -aux|egrep sshd
root 982 0.0 0.2 113004 4360 ? Ss 07:26 0:00 /usr/sbin/sshd -D
root 2180 0.0 0.3 161772 6124 ? Ss 16:18 0:00 sshd: root@pts/2
root 2619 0.0 0.3 161772 6120 ? Ss 22:21 0:00 sshd: root@pts/0
root 2834 0.0 0.3 161772 6124 ? Ss 22:36 0:00 sshd: root@pts/1
root 2927 0.0 0.0 112828 980 pts/1 S+ 22:45 0:00 grep -E --color=auto sshd
#查看端口号
[root@web-server ~]# netstat -anuplt|grep sshd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 982/sshd
tcp 0 0 192.168.142.2:22 192.168.142.1:63009 ESTABLISHED 2180/sshd: root@pts
tcp 0 36 192.168.142.2:22 192.168.142.1:50308 ESTABLISHED 2834/sshd: root@pts
tcp 0 0 192.168.142.2:22 192.168.142.1:57540 ESTABLISHED 2619/sshd: root@pts
tcp6 0 0 :::22 :::* LISTEN 982/sshd
修改主配置文件,将端口号修改为6677,并且禁用root用户登录
[root@jumpserver ~]# cd /etc/ssh/
[root@jumpserver ssh]# vim sshd_config
PermitRootLogin no
Port 6677
[root@jumpserver ssh]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service
[root@jumpserver ssh]#
新建一个普通用户,用于登录堡垒机
[root@jumpserver ssh]# useradd wangyalin
[root@jumpserver ssh]# echo 123456|passwd wangyalin --stdin
更改用户 wangyalin的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@jumpserver ssh]#
#root登录不了的效果
[wangyalin@jumpserver ~]$ service sshd restart
Redirecting to /bin/systemctl restart sshd.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: root
Password:
==== AUTHENTICATION COMPLETE ===
清空tcp wrappers里的配置,停止firewalld的服务
[root@jumpserver ssh]# vim /etc/hosts.allow
[root@jumpserver ssh]# vim /etc/hosts.deny
[root@jumpserver ssh]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@jumpserver ssh]#
3.在防火墙服务器上启用snat和dnat功能
[root@router nat]# cat snat_dnat.sh
#!/bin/bash
#关闭firewalld服务,关闭linux自带的防火墙服务
service firewalld stop
#开启路由功能 1表示开启路由功能 0 表示禁用路由功能
##暂时开启路由功能
echo 1 >/proc/sys/net/ipv4/ip_forward
#SNAT策略
#清除原来iptables 相关表里的规则
iptables -F
iptables -t nat -F
#添加snat策略
#iptables -t nat -A POSTROUTING -s 192.168.5.0/24 -o ens36 -j SNAT --to-source 192.168.1.146
iptables -t nat -A POSTROUTING -s 192.168.5.0/24 -o ens36 -j MASQUERADE
#添加DNAT策略,发布的是web服务器
iptables -t nat -A PREROUTING -d 192.168.1.146 -p tcp --dport 80 -i ens36 -j DNAT --to-destination 192.168.5.2
#发布mysql服务器
iptables -t nat -A PREROUTING -d 192.168.1.146 -p tcp --dport 3306 -i ens36 -j DNAT --to-destination 192.168.5.3
#redis服务器
iptables -t nat -A PREROUTING -d 192.168.1.146 -p tcp --dport 6379 -i ens36 -j DNAT --to-destination 192.168.5.4
#添加DNAT策略,发布的是web服务器
iptables -t nat -A PREROUTING -d 192.168.1.146 -p tcp --dport 8080 -i ens36 -j DNAT --to-destination 192.168.5.5:80
#dns服务器
iptables -t nat -A PREROUTING -d 192.168.1.146 -p udp --dport 53 -i ens36 -j DNAT --to-destination 192.168.5.8
#发布堡垒机
iptables -t nat -A PREROUTING -d 192.168.1.146 -p tcp --dport 2288 -i ens36 -j DNAT --to-destination 192.168.5.99:6677
[root@router nat]#
[root@router nat]# bash snat_dnat.sh 执行脚本
Redirecting to /bin/systemctl stop firewalld.service
[root@router nat]# iptables -t nat -L -n 查看效果
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- 0.0.0.0/0 192.168.1.146 tcp dpt:80 to:192.168.5.2
DNAT tcp -- 0.0.0.0/0 192.168.1.146 tcp dpt:3306 to:192.168.5.3
DNAT tcp -- 0.0.0.0/0 192.168.1.146 tcp dpt:6379 to:192.168.5.4
DNAT tcp -- 0.0.0.0/0 192.168.1.146 tcp dpt:8080 to:192.168.5.5:80
DNAT udp -- 0.0.0.0/0 192.168.1.146 udp dpt:53 to:192.168.5.8
DNAT tcp -- 0.0.0.0/0 192.168.1.146 tcp dpt:2288 to:192.168.5.99:6677
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 192.168.5.0/24 0.0.0.0/0
[root@router nat]#
在测试服务器上验证dnat功能和跳板机功能
在另外一台服务器上ssh到防火墙wan口的ip+22端口--》DNAT映射到跳板机,然后再在跳板机上ssh到内网的服务器
编写jump.sh脚本的目的是,方便在跳板机上ssh到对应的服务器,服务器资产过多,记不清,有脚本好分辨清楚。
##建立一个脚本来选择进入的机器
[wangyalin@jumpserver ~]$ cat jumpserver-choice.sh
#!/bin/bash
echo "1.连接web服务器"
echo "2.连接MySQL服务器"
echo "3.退出"
while true
do
read -p "请输入你的选择:" num
case $num in
1)
ssh root@192.168.142.2
;;
2)
ssh root@192.168.142.137
;;
3)
break
;;
*)
echo "输入不合法!"
esac
done
[wangyalin@jumpserver ~]$ bash jumpserver-choice.sh
1.连接web服务器
2.连接MySQL服务器
3.退出
请输入你的选择:1
root@192.168.142.2's password:
Last login: Tue Mar 5 22:36:15 2024 from 192.168.142.1
[root@web ~]#
##实验的过程中我改了很多的主机名可能导致我的主机名有问题,请各位看官见谅
#出现的问题
喜欢博主的请点个关注和免费的赞!!!!