堡垒机

news/2025/1/15 16:10:59/

 

 

 

一、堡垒机介绍

在一个特定网络环境下,为了保障网络和数据不受外界入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。
我们又把堡垒机叫做跳板机,简易的跳板机功能简单,主要核心功能是远程登录服务器和日志审计。
比较优秀的开源软件jumpserver,认证、授权、审计、自动化、资产管理。
商业堡垒机:齐治, Citrix XenApp

二、搭建简易堡垒机

具备堡垒机的条件是,该机器有公司和私网,其中私网和机房其他机器互通
设计堡垒机思路:
跳板机安全设置(iptables端口限制、登录限制sshd_config)
用户、命令权限限制(第三方软件:jailkit) http://blog.chinaunix.net/uid-28310119-id-3503318.html
客户机器日志审计 
http://www.68idc.cn/help/server/linux/2014042190951.html

三、搭建简易堡垒机 – 安装jailkit实现chroot

cd /usr/local/src/
wget https://olivier.sessink.nl/jailkit/jailkit-2.19.tar.bz2
tar jxvf jailkit-2.19.tar.bz2
cd jailkit-2.19
./configure
make && make install
mkdir /home/jail   
chmod 755 /home/jail        如果执行下面的报错在给权限即可把常用命令放到虚拟系统的目录下/home/jail
jk_init -v -j /home/jail/ basicshell            shell相关的
jk_init -v -j /home/jail/ editors                    编辑器vim
jk_init -v -j /home/jail/ netutils                网络相关的
jk_init -v -j /home/jail/ ssh                远程登陆的ssh
mkdir /home/jail/usr/sbin
cp /usr/sbin/jk_lsh /home/jail/usr/sbin/jk_lsh   相当于虚拟系统的shell,放到/usr/sbin下
创建多个用户,重复执行以下操作即可,没创建一个用户执行一次
useradd baoleiji   
passwd baoleiji
jk_jailuser -m -j /home/jail baoleiji            创建虚拟系统的用户

e01a706d21b664dff76f5123454268b36c7.jpg

vim /home/jail/etc/passwd //把baoleiji那一行的/usr/sbin/jk_lsh改为/bin/bash

b36641e1da5e35fc6ed5a8d6975af200679.jpg

登录baoleiji用户测试

175c1adbab3650835b7e602108ee94792b3.jpg

vim /etc/ssh/sshd_config  改成no只能用秘钥登陆

4aa211419be48715df605d2daaef490a031.jpg

登陆的源ip:vim /etc/hosts.allow        可以限制ip登陆,除了allow中限制的ip之外,其他的都不能登陆

限制来源ip,客户机只能用跳板机登陆,其他机器不能登录

vim /etc/hosts.allow

06a950fa658c73772d2970a88a897d5f019.jpg

vim /etc/hosts.deny

4283e3f9db8ac83747fbf21a8e65d57ed28.jpg

此时在连接002机器已无法正常连接,需要通过登录的跳板机连接,如果需要使用baoleiji账号登陆,需要在对方机器创建baoleiji这个用户

f20b45715bff0541053526b08960be9afba.jpg

四、搭建简易堡垒机 – 日志审计

以下操作是需要在所有被登录机器上做的:

mkdir /usr/local/records
chmod 777 /usr/local/records/
chmod +t /usr/local/records/   t权限,防删除

vim /etc/profile //添加

if [ ! -d  /usr/local/records/${LOGNAME} ]        #LOGNAME指的是登陆的用户名是哪个
then
mkdir -p /usr/local/records/${LOGNAME}            #创建这个用户的目录
chmod 300 /usr/local/records/${LOGNAME}            #给这个用户300权限,只能执行和写
fi
export HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history"        #指定记录历史记录的文件
export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE'   #执行的最后一条命令记录进去

daf2966a5c57555d37d7b80635352785c80.jpg

重新登陆客户端

6b743c2d4b558279fa169d079ecc8db5ef7.jpg

创建用户,通过跳板机登陆,做一些操作

9b6a55ec7c0edae3739bd4c363d3db9bc77.jpg74d4504dd7763539387e513700bdfa8cc3c.jpg

回到002机器上,可以看到生成了zhangsan目录,和操作的记录

22a4bd16fa32406d317796036412153f946.jpg

五、开源堡垒机jumpserver介绍

官网www.jumpserver.org
Jumpserver是一款使用Python, Django开发的开源跳板机系统, 助力互联网企业高效 用户、资产、权限、审计 管理
Auth 统一认证
CMDB 资产管理
统一授权
日志审计
自动化运维(ansible)

六、安装jumpserver

具体安装步骤参考:https://blog.51cto.com/roben/2159929    和官方文档https://docs.jumpserver.org/zh/docs/step_by_step.html,两个文档可以互相参考,官方文档有的步骤没有,需要参考第一个链接

以下是文档中操作需要注意的地方:   注意链接中的配置文件名称和官方文档的配置文件名称不同,不能直接使用

防火墙:selinux 关闭:setenforce 0systemctl stop firewalld.service

运行Jumpserver

cd /opt/jumpserver
./jms start all -d    # 后台运行使用 -d

运行coco:

cd /opt/coco
./cocod start -d  # 后台运行使用 -d
vim config.yml   修改配置文件,SECRET_KEY可以使用文件中的命令生成,并修改数据库配置信息7js5bFUI3l3Ad7EDji0VEcdoMRpm13tCrygy4PBQDvDej5j1U

2341f14852ba13c38448dea924690044543.jpg

d9a4060acb82c7d632fbed606fbb15304ea.jpg

cd /opt/jumpserver/
./jms start all -d  在后台运行,浏览器访问IP地址:8080 默认账号:admin 密码:admin下面代表运行成功,浏览器正常访问,线上环境需要把8080端口加入到白名单

e8266e5918c4d577cc7378f389915457d0f.jpgcfce5f25d010ad0fed0aa0d3c223230b39f.jpg

0428b93f67a22246ffea5572beed42d9e16.jpg

vim /etc/rc.local  加入如下内容

source /opt/py3/bin/activate ; cd /opt/jumpserver; ./jms start all -d  &>/dev/null       重启时 jumpserver自动启动

 

部署coco时,使用官方文档中的:正常部署 coco 组件

修改coco配置文件

cd /opt/coco
cp config_example.yml config.yml
vim config.yml
BOOTSTRAP_TOKEN 需要从 jumpserver/config.yml 里面获取, 保证一致

fa330f551c25119269cebacc020cca8f7fe.jpg

配置完成后,启动coco:./cocod start -d      -d在后台运行

启动成功后,在页面上选择:会话管理->终端管理 可以看到

e2b5e05adeafc63c1271672007e2b42d54f.jpg

启动成功可以看到5000端口和2222端口

6da9a60f2b5e1847072d14aed78544e3d08.jpg

如果报如下错误,说明第一次启动时已经注册了,下次就不能再用这个名字,重启可以解决,或者在官方配置文件中使用官方文档中的:正常部署 coco 组件

c1c9ebb785a67d523c68744c93f090c9153.jpg

测试:

本机访问:    ssh -p2222 admin@localhost   密码是admin

1cff3a2076f43fc85324c69d93cc56c6b49.jpg

配置Nginx整合各组件


使用Nginx做反向代理:

vim nginx.conf
把include下的内容全删除,留一个 } 
然后到conf.d目录下,创建一个jumpserver.conf
vim /etc/nginx/conf.d/jumpserver.conf  内容如下,也可以复制官方文档上的server {listen 80;client_max_body_size 100m;  # 录像及文件上传大小限制location /luna/ {try_files $uri / /index.html;alias /opt/luna/;  # luna 路径, 如果修改安装目录, 此处需要修改}location /media/ {add_header Content-Encoding gzip;root /opt/jumpserver/data/;  # 录像位置, 如果修改安装目录, 此处需要修改}location /static/ {root /opt/jumpserver/data/;  # 静态资源, 如果修改安装目录, 此处需要修改}location /socket.io/ {proxy_pass       http://localhost:5000/socket.io/;proxy_buffering off;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;access_log off;}location /coco/ {proxy_pass       http://localhost:5000/coco/;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;access_log off;}location /guacamole/ {proxy_pass       http://localhost:8081/;proxy_buffering off;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $http_connection;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;access_log off;}location / {proxy_pass http://localhost:8080;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}

检查语法并加载

nginx -t
nginx -s reload

启动nginx,并开机启动

systemctl start nginx
systemctl enable nginx

此时可以在浏览器使用80端口访问
服务全部启动后, 访问 jumpserver 服务器 nginx 代理的 80 端口, 不要通过8080端口访问

七、Jumpserver使用

使用xshell连接

端口2222

1f20d56e016c09629a2ed5d34345b9783d8.jpg

f9842988c10663684a5b087dd7870358b47.jpg17bc731e87899c0a0ba10f7cf0b90c5049f.jpg

使用密钥登陆:

在个人信息中选择更改SSH密钥:

使用putty或者xshell生成密钥,并存放到authorized_keys,把公钥复制到页面上

03ac5f985632ae66e69304cdb8145ab60e4.jpg

在页面个人信息中选择更改SSh密钥,把公钥复制进来

提交后,使用admin用户登录,使用2222端口

ec016084074a54e64962542228b6c0b0e12.jpg

八、Jumpserver里面的用户管理

jumpserver用户用来登录jumpserver(web界面、ssh登录)管理用户用来自动创建客户机上的系统用户、批量执行命令等操作客户机上的系统用户,用来通过jumpserver去登录每一台客户机的用户,最好和用户管理->用户列表中的一致

管理用户使用ssh私钥:

在192.168.183.133上手动生成:        ssh-keygen -f jumpserver        -f指定秘钥的名字然后把jumpserver(私钥)可以使用xshell中的sz下载到本机,然后把文件放到页面中去

311d70fb42888656850e21a7bead4cb7d2f.jpgb39b2b19c30fddf3ca6347d0ebb3474d442.jpg

九、资产管理

创建新的资产,选择管理用户,管理用户需要到192.168.183.3这台机器上去创建,这个管理用户的意义个人理解就是访问服务器的账号

93a11ccc6ad78d221c747b7295b01cd10dd.jpg

58f4d0297e4a71d831b0324a3570722be84.jpg

 

因为创建管理用户时设置了私钥,所以需要在此处增加公钥,通过秘钥去连接jumpserver用户

步骤:

su - jumpserver
mkdir .ssh
chmod 700 .ssh
cd .ssh
创建公钥    vim authorized_keys ,把生成的公钥放到此文件中
chmod 600 .ssh/authorized_keys
退出jumpserver用户,回到root下:visudo进行设置
测试连接:    ssh -i jump user1@127.0.0.1   不提示输入密码即成功
在192.168.183.3上切换到jumpserver用户  :    su - jumpserver把刚刚在192.168.183.133机器上手动生成的公钥复制过来:     (sudo) vi .ssh/authorized_keys

7ed2c54335cc36c6896c1f58e9397272565.jpg

ssh -i jumpserver jumpserver@192.168.183.3       -i指定私钥,与183.3机器的公钥匹配即可,无需输入密码,上方提示输入密码说明配置有问题

如果需要输入密码,要查看对应用户的目录下/home/user1/.ssh/authorized_keys  该文件是否有足够的权限,还有生成的密钥对的权限 chmod 600 jump  jump是私钥

cb74cd12a4508c73016ac828cc0c65061d9.jpg

 

管理用户要有root的权限

使用root用户,在192.168.183.3机器上修改:    visudo 给予用户sudo权限

jumpserver ALL=(ALL)    NOPASSWD: ALL

efaeabba6c6422970c1489ebd1d12a36812.jpg

登陆jumpserver用户

使用sudo命令

f8e02325a378d6a0ac6c7d5650404435a7f.jpg

使用秘钥配对成功连接后,回到页面,更新硬件信息,会把连接的主机配置信息更新出来,任务进程可以在作业中心中查看

acd55359f4573e0b5b33355417fcc6253c6.jpg

2a0d1c3cc85afa6e23e168ab9eb72d9d072.jpg

系统用户需要下发到资产列表中的主机里:

在权限管理->资产授权中添加规则

0f14ef9401e2c16bf76489a20cd47abeb57.jpg
资产管理 ->  系统用户详情:

自动推送需要打开,此时会在授权规则的机器中自动推送此用户登录模式选自动登录

3bda9e2664a29eb26f924c55cf9a0a65fe7.jpg

创建资产授权前没有此用户,创建完成后,用户已下发

1d1f95a42af507aeab317e71841ad12dff1.jpg

此时登陆这个用户,输入对应主机的id进行连接,此处是通过密码登陆的,如果修改了密码,会导致无法自动登录

c931c581e14f1a36d668c694dc6291fad60.jpg

 

转载于:https://my.oschina.net/u/4093217/blog/3082383


http://www.ppmy.cn/news/550797.html

相关文章

通过Xshell连接有跳板机/堡垒机的服务器

通过Xshell连接有跳板机/堡垒机的服务器 什么是跳板机通过跳板机连接服务器添加登录脚本直接进入指定ip的服务器通过Public Key的形式连接服务器文章参考 什么是跳板机 在服务器众多的企业里,通常运维会把某台机器开放外网访问权限,其他服务器通过该机器…

前置机到底是什么?

比如银行, 银行肯定有后台核心处理系统, 该系统肯定对外提供接口服务的吧, 想直接通过外部网络来访问他们的后台系统肯定是不被允许的, 怎么办?开发一个软件,运行在他们内网上的一台计算机上, 然…

自动编码机

自动编码机(Autodencoder) 自动编码机(Autoencoder)属于非监督学习,不需要对训练样本进行标记。自动编码机(Autoencoder)由三层网络组成,其中输入层神经元数量与输出层神经元数量相等,中间层神…

堡垒机的主要功能是什么?为什么需要堡垒机?

堡垒机是一种用于管理和控制服务器的工具,其主要功能是为管理人员提供安全、便捷的远程管理和操作方式。为什么需要堡垒机呢?下面我们将详细阐述堡垒机的主要功能和必要性。 一、堡垒机的主要功能: ①、用户认证和授权管理:堡垒机…

企业开发名词解析 — — 前置机、跳板机、堡垒机、网闸

企业开发名词解析 — — 前置机、跳板机、堡垒机 1 前置机 1.1 概念 前置机是指用于现场的中间设备前置机一般是存在于前台客户端和后台服务器之间,扮演适配器的角色,即:在不同的通信协议、数据格式或语言之间相互转换。它还起着管理和调度…

什么是跳板机(堡垒机)

堡垒机(跳板机)? 现在一定规模互联网企业,往往都拥有大量服务器,如何安全并高效的管理这些服务器是每个系统运维或安全运维人员必要工作。现在比较常见的方案是搭建堡垒机环境作为线上服务器的入口,所有服…

堡垒机跳板机

堡垒机是从跳板机(也叫前置机)的概念演变过来的。早在2000年左右,一些中大型企业为了能对运维人员的远程登录进行集中管理,会在机房部署一台跳板机。跳板机其实就是一台unix/windows操作系统的服务器,所有运维人员都需…

什么是上位机

1.上位机与下位机 上位机,与下位机对应,用来给下位机发送指令以及从下位机接收反馈数据。 一般作为上位机的就是电脑,通过电脑上运行的软件(称为上位机软件)来控制下位机。 上位机软件要实现串口通信才能够给下位机发指…