专栏首页Laoqi's Linux运维专列堡垒机–搭建简易的跳板机

堡垒机–搭建简易的跳板机

一、初识跳板机

跳板机属于内控堡垒机范畴,是一种用于单点登陆的主机应用系统。跳板机就是一台服务器,维护人员在维护过程中,首先要统一登录到这台服务器上,然后从这台服务器再登录到目标设备进行维护。

但跳板机并没有实现对运维人员操作行为的控制和审计,使用跳板机过程中还是会有误操作、违规操作导致的操作事故,一旦出现操作事故很难快速定位原因和责任人。此外,跳板机存在严重的安全风险,一旦跳板机系统被攻入,则将后端资源风险完全暴露无遗。

比较优秀的开源软件jumpserver,认证、授权、审计、自动化、资产管理。

商业堡垒机:齐治, Citrix XenApp

所以接下来我会继续安装配置jumpserver!!

具备堡垒机的条件是,该机器有公网IP和私网,其中私网和机房其他机器互通。

二、搭建简易堡垒机 – jailkit chroot

核心思路是:让一个用户登录我们的一个虚拟系统,仅仅允许使用几条命令,和环境。

2.1 环境搭建:
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        //虚拟系统根目录

//如下四条命令是把系统里面的基础命令copy到虚拟系统下:
jk_init -v -j /home/jail/ basicshell

jk_init -v -j /home/jail/ editors

jk_init -v -j /home/jail/ netutils

jk_init -v -j /home/jail/   ssh

mkdir /home/jail/usr/sbin

cp /usr/sbin/jk_lsh /home/jail/usr/sbin/jk_lsh

useradd zhangsan

passwd zhangsan

jk_jailuser -m -j /home/jail zhangsan   //在虚拟系统下创建一个用户

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

root:x:0:0:root:/root:/bin/bash
zhangsan:x:1011:1011::/home/zhangsan:/bin/bash
2.2 测试:
  • 创建一个新的登录窗口,使用刚刚创建的zhangsan用户登录:

连续按2下TAB我们可以看到zhangsan这个用户只可以用如下116个命令:

当然我们可以设置一些alias,例如ssh可以修改成lj,虽然没有什么实质性的安全举措,但是一点点的安全还是有的。

[[email protected] ~]$ cat .bash 
.bash_logout   .bash_profile  .bashrc

如何再次增加一个新的虚拟用户?(只需四步,可编辑成脚本!)

useradd lisi

passwd lisi

jk_jailuser -m -j /home/jail lisi   //在虚拟系统下创建一个用户

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

为了再次增加安全性,我们还需要再次修改只允许使用密钥认证登录:

在主机器操作:
  1. 修改密钥认证
[[email protected] jailkit-2.19]# vi /etc/ssh/sshd_config 
//编辑 PasswordAuthentication yes 为 PasswordAuthentication no   只允许密钥登录

然后我们去虚拟系统内添加公钥到我们的虚拟系统中即可!
  1. 关闭不用的端口和服务!
  2. 限定允许登录的机器IP或者局域网IP
[email protected] jailkit-2.19]# vim /etc/hosts.allow 
//在最底部增加
sshd: 192.168.59.0/24 221.224.0.190 2.2.2.2
----------------------------------
[email protected] jailkit-2.19]# vim /etc/hosts.deny
//在最底部增加
sshd: ALL

三、日志审计:

参照之前实验的总结:http://www.okay686.cn/711.html

但是如上我们设置完毕后,有缺陷:只有当用户正常退出终端后才会保存用户所操作的记录。所以要想搞一个完美的堡垒机,下节更精彩!!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Nginx为什么比Apache 高效

    什么是阻塞:就是线程在执行IO操作获取数据时,这个IO可能会需要一定的时间才能等到数据返回,然后才能接着执行下面的命令。那么,此时,这个线程的等待状态我们就把它...

    老七Linux
  • python3–元祖+列表+字典

    老七Linux
  • MySQL调优

    老七Linux
  • 40.python filter函数

    filter函数主要用来筛选数据,过滤掉不符合条件的元素,并返回一个迭代器对象,如果要转换为列表list或者元祖tuple,可以使用内置函数list() 或者内...

    猿说编程[Python和C]
  • 利用Java提供的Observer接口和Observable类实现观察者模式

    对于观察者模式,其实Java已经为我们提供了已有的接口和类。对于订阅者(Subscribe,观察者)Java为我们提供了一个接口,JDK源码如下: 1 pack...

    用户1148394
  • 线程池实现原理-2

    仔细理解一下这段代码,其实就能理解,当线程池处于RUNNING 接受新任务,并且处理进入队列的任务,处于SHUTDOWN 不接受新任务,处理进入队列的任务,剩余...

    Java识堂
  • 基于landmark的疲劳检测

            经查阅相关文献,疲劳在人体面部表情中表现出大致三个类型:打哈欠(嘴巴张大且相对较长时间保持这一状态)、眨眼(或眼睛微闭,此时眨眼次数增多,且眨眼...

    微风、掠过
  • PHP SPL(PHP 标准库)

    一、什么是spl库? SPL是用于解决典型问题(standard problems)的一组接口与类的集合。 此扩展只能在php 5.0以后使用,从PHP 5...

    NateHuang
  • C# 9.0新特性

    看到标题,是不是认为我把标题写错了?是的,C# 8.0还未正式发布,在官网它的最新版本还是Preview 5,通往C#9的漫长道路却已经开始.前写天收到了活跃在...

    码农阿宇
  • 新手学JAVA(十)-多线程----线程的创建和启动

    通过继承Thread类或实现Runnable、Callable接口都可以实现多线程。不过实现Runnable和实现Callable的方式基本相同,只不过Cal...

    令仔很忙

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动