搭建简易堡垒机

笔记内容:搭建简易堡垒机
笔记日期:2018-01-18

  • 23.1 什么是堡垒机
  • 23.2 搭建简易堡垒机
  • 23.3 安装jailkit实现chroot
  • 23.4 日志审计

23.1 什么是堡垒机

堡垒机,是在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。

我们又把堡垒机叫做跳板机,简易的跳板机功能简单,主要核心功能是远程登录服务器和日志审计。运维堡垒机的理念起源于跳板机。2000年左右,高端行业用户为了对运维人员的远程登录进行集中管理,会在机房里部署跳板机。跳板机就是一台服务器,维护人员在维护过程中,首先要统一登录到这台服务器上,然后从这台服务器再登录到目标设备进行维护。

堡垒机从功能上讲,它综合了核心系统运维和安全审计管控两大主干功能,从技术实现上讲,通过切断终端计算机对网络和服务器资源的直接访问,而采用协议代理的方式,接管了终端计算机对网络和服务器的访问。形象地说,终端计算机对目标的访问,均需要经过运维安全审计的翻译。打一个比方,运维安全审计扮演着看门者的工作,所有对网络设备和服务器的请求都要从这扇大门经过。因此运维安全审计能够拦截非法访问,和恶意攻击,对不合法命令进行命令阻断,过滤掉所有对目标设备的非法访问行为,并对内部人员误操作和非法操作进行审计监控,以便事后责任追踪。

安全审计作为企业信息安全建设不可缺少的组成部分,逐渐受到用户的关注,是企业安全体系中的重要环节。同时,安全审计是事前预防、事中预警的有效风险控制手段,也是事后追溯的可靠证据来源。

为什么企业需要堡垒机?

近年来数据安全事故频发,包括斯诺登事件、希拉里邮件丑闻以及携程宕机事件等,数据安全与防止泄露成为政府和企业都非常关心的议题,因此云堡垒机也应运而生。

案例一:

让我们共同回顾最具代表性的数据泄露引发的安全事故,美国著名的斯诺登事件。2013年6月,美国《华盛顿邮报》报道,美国国家安全局和联邦调查局于2007年启动了一个代号为“棱镜”的秘密监控项目,直接进入美国网际网路公司的中心服务器里挖掘数据、收集情报。洩露这些绝密文件的并非国家安全局的内部员工,而是国家安全局的外聘人员爱德华·斯诺登。

斯诺登事件若放在今天,将不可能发生,因为我们有了云堡垒机!其中的管理员角色可以设置敏感操作的事前拦截、事中断开、事后审计,并且可以做到全程无代理实时监控。类似斯诺登这样的外聘人员将无法接触到这些敏感信息,更不用说泄露出来了。并且某些云堡垒机支持录屏功能也可以帮助用户进行审计和追责。

案例二:

2015年5月28日上午11点至晚上8点,在某旅游出行平台官网及APP上登录、下单或交易时,跳转均出现问题,导致操作无法顺利完成。造成直接经济损失巨大,按照其上一季度的财报公布的数据,宕机的损失为平均每小时106.48万美元。

最终,平台回应此事称系由于员工误操作删除了服务器上的执行代码导致。不论是因为黑客攻击还是员工误操作,真金白银800万美元的经验教训告诫我们对于数据的安全和备份必须要引起重视!云堡垒机能解决这2个问题,一是攻击面小,二是可定制双机备份。

以上事实说明,云堡垒机对安全的重要程度不言而喻。

比较优秀的用于搭建堡垒机的开源软件:jumpserver。主要功能有:认证、授权、审计、自动化、资产管理等。

商业堡垒机的功能比开源的要强大,比较出名的有:齐治,Citrix XenApp等。


23.2 搭建简易堡垒机思路

堡垒机需要具有公网IP以及内网IP,其中内网IP用于和机房其他机器通信。公网IP是用于在外部登录,通过公网IP登录到堡垒机后,才能访问内网的机器,这一点和跳板机一样。

搭建堡垒机,首先需要限制端口,留出可以远程登录的端口,其他的端口都封闭掉。然后还需要配置白名单IP,规定只有哪些IP可以登录,以及禁止密码登录,只允许密钥登录等,做这些事情的目的是为了增加堡垒机的安全性。

除此之外,还需要限制登录的用户,限制为普通用户登录,和限制用户可以执行的命令等。

还需要在客户机器上做日志审计。


23.3 安装jailkit实现chroot

安装jailkit实现chroot的目的是为了限制登录的用户能够执行的命令,因为要防止登录的用户对堡垒机进行其他的操作。jailkit可以把用户限制在一个虚拟的系统中,这个虚拟系统的环境是chroot的,让用户无法直接操作真实系统。

编译安装jailkit:

[[email protected] ~]# cd /usr/local/src/
[[email protected] /usr/local/src]# wget https://olivier.sessink.nl/jailkit/jailkit-2.19.tar.bz2
[[email protected] /usr/local/src]# tar jxvf jailkit-2.19.tar.bz2
[[email protected] /usr/local/src]# cd jailkit-2.19
[[email protected] /usr/local/src/jailkit-2.19]# ./configure && make && make install
[[email protected] /usr/local/src/jailkit-2.19]# echo $?
0
[[email protected] /usr/local/src/jailkit-2.19]#

创建一个目录作为虚拟系统的根目录:

[[email protected] ~]# mkdir /home/jail

给虚拟系统初始化一些命令,让这个系统具有基本的文件结构、网络相关的以及常用命令等:

[[email protected] ~]# jk_init -v -j /home/jail/ basicshell
[[email protected] ~]# jk_init -v -j /home/jail/ editors
[[email protected] ~]# jk_init -v -j /home/jail/ netutils
[[email protected] ~]# jk_init -v -j /home/jail/ ssh

初始化完成后/home/jail/下会生成以下几个目录:

[[email protected] ~]# ls /home/jail/
bin  dev  etc  home  lib64  usr
[[email protected] ~]#

创建真实系统的用户:

[[email protected] ~]# useradd jailUser
[[email protected] ~]# passwd jailUser
更改用户 jailUser 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[[email protected] ~]#

创建虚拟系统的sbin目录,并拷贝虚拟系统的shell文件:

[[email protected] ~]# mkdir /home/jail/usr/sbin
[[email protected] ~]# cp /usr/sbin/jk_lsh /home/jail/usr/sbin/jk_lsh

创建虚拟系统的用户:

[[email protected] ~]# jk_jailuser -m -j /home/jail jailUser

编辑虚拟系统用户的密码文件内容如下:

[[email protected] ~]# vim /home/jail/etc/passwd
root:x:0:0:root:/root:/bin/bash
jailUser:x:1011:1011::/home/jailUser:/bin/bash  # 改成/bin/bash后才能被远程登录

完成以上操作后,远程登录一下jailUser这个账户:

登录成功:

如图可以看到,这个系统可以执行的命令只有118条。

能够成功登录后就可以生成密钥,添加密钥认证了,配置完密钥后,还需要在真实系统上编辑sshd_config文件把PasswordAuthentication的值改为no,这样就能禁止远程密码登录了。

真实系统上,还需要开启防火墙规则,除了远程登录端口外其他端口都需要封闭掉,这个很简单这里就不演示了。除此之外还需要配置白名单IP,这个在hosts.allow文件里配置,hosts.deny里也需要进行相应的配置,如下示例:

[[email protected] ~]# vim /etc/hosts.allow
sshd: 192.168.77.0/24 1.1.1.1 2.2.2.2  # 白名单ip配置在这里
[[email protected] ~]# vim /etc/hosts.deny
sshd: ALL  # 设置除了白名单ip外的ip都拒绝连接

23.4 日志审计

我们还需要在客户机上做一个简单的日志审计,记录在该机器执行过的命令,以下操作是需要在所有被登录机器上做的:
1.首先配置hosts.allow以及hosts.deny文件,设置仅允许堡垒机的IP登录,其他的一律拒绝登录:

[[email protected] ~]# vim /etc/hosts.allow
sshd: 192.168.77.130  # 堡垒机的IP
[[email protected] ~]# vim /etc/hosts.deny
sshd: ALL  # 拒绝堡垒机以外的IP登录

然后在堡垒机上看看能否进行登录:

如图,能够成功登录,代表没问题。

2.配置日志审计:

[[email protected] ~]# mkdir /usr/local/records # 创建日志文件存放的目录
[[email protected] ~]# chmod 777 !$
chmod 777 /usr/local/records
[[email protected] ~]# chmod +t !$
chmod +t /usr/local/records
[[email protected] ~]# vim /etc/profile  # 文件末尾增加以下内容
if [ ! -d  /usr/local/records/${LOGNAME} ]
then
    mkdir -p /usr/local/records/${LOGNAME}
    chmod 300 /usr/local/records/${LOGNAME}
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‘
[[email protected] ~]# source /etc/profile  # 让profile的配置生效

配置完成后,查看是否有生成相应的记录文件:

[[email protected] ~]# ls /usr/local/records/
root
[[email protected] ~]# ls /usr/local/records/root/
bash_history
[[email protected] ~]# cat /usr/local/records/root/bash_history
2018-01-18 21:09:56 ##### root pts/0 (192.168.77.1) #### source /etc/profile
2018-01-18 21:10:41 ##### root pts/0 (192.168.77.1) #### ls /usr/local/records/
2018-01-18 21:10:44 ##### root pts/0 (192.168.77.1) #### ls /usr/local/records/root/
2018-01-18 21:10:46 ##### root pts/0 (192.168.77.1) #### ls /usr/local/records/root/
[[email protected] ~]# 

如上,可以看到,生成的bash_history 文件中已经记录了我刚刚敲过的命令,这样就能够记录哪个用户在哪个时间点上在这台机器上敲过的命令。

到此,一个简易的堡垒机就搭建完成了,也算不上真正意义的堡垒机吧,只能算是个跳板机。因为我们还没有使用专业的工具去搭建,所以还不太符合堡垒机的概念,但是如果机器不是那么多,只有几台,而且要求也没那么高的话,这种跳板机也就够用了。

原文地址:http://blog.51cto.com/zero01/2062618

时间: 2024-10-07 00:34:44

搭建简易堡垒机的相关文章

搭建开源堡垒机的5个常见理解误区

当企业选择搭建开源堡垒机时,便拥有初始投入少.使用灵活等特点.但是搭建开源堡垒机并不是真的完全免费并且安全可靠的.小编发现,用户在对搭建开源堡垒机的理解上,存在以下5个常见的误区,一起来看看. 误区一:开源堡垒机完全免费吗? 其实开源堡垒机只有最基本的功能或者部分使用配额是免费的,一旦涉及到企业更深层次的安全需求,就需要向开源堡垒机厂商支付额外的费用,以获得更高的使用配额和完整的堡垒机功能. 误区二:开源堡垒机安全吗? 开源堡垒机也意味着存在开放带来的安全威胁与潜在漏洞,就像Dedecms,不是

基于Docker搭建Jumpserver堡垒机操作实践

一.背景 笔者最近想起此前公司使用过的堡垒机系统,觉得用的很方便,而现在的公司并没有搭建此类系统,想着以后说不定可以用上:而且最近也有点时间,因此来了搭建堡垒机系统的兴趣,在搭建过程中参考了比较多的文档,其中最详细的还是官方文档,地址如下所示: Jumpserver 文档 二.操作概要 1. 系统运行 2. 配置入门 3. 测试验证 三.系统运行 在官方文档中安装堡垒机有很多种方法,这让笔者有些纠结,另外而且在不同系统中安装方法也不一致,不过正在徘徊不定时,发现一种通用的安装方法,便是采用doc

搭建jumpserver堡垒机

环境 系统: CentOS 7 IP: 192.168.244.144 关闭 selinux 和防火墙 # CentOS 7 $ setenforce 0  # 可以设置配置文件永久关闭 $ systemctl stop iptables.service $ systemctl stop firewalld.service # 修改字符集,否则可能报 input/output error的问题,因为日志里打印了中文 $ localedef -c -f UTF-8 -i zh_CN zh_CN.U

centos 7 搭建开源堡垒机 Teleport 遇到的问题解决

不得不说 centos7 的环境版本就是高,没有再出现6.5下那些依赖组件的版本支持过低的错误了,所以说现在个人用户还是推荐用7,企业生产环境的话,可能6.5适合一些,至少2年前是这样. 安装过程: https://docs.tp4a.com/install/#_1 https://www.cnblogs.com/xuegqcto/p/9052009.html   这个有 mariadb(mysql)的安装和配置过程 https://blog.csdn.net/noonncmzba/articl

如何搭建jumpserver堡垒机?

一.准备环境$ firewall-cmd --zone=public --add-port=80/tcp --permanent # nginx 端口$ firewall-cmd --zone=public --add-port=2222/tcp --permanent # 用户SSH登录端口 coco $ firewall-cmd --reload # 重新载入规则 $ setenforce 0$ sed -i "s/enforcing/disabled/g" /etc/selinu

jumpserver 堡垒机环境搭建(图文详解)

Jumpserver 是一款由python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能.基于ssh协议来管理,客户端无需安装agent. 特点: 完全开源,GPL授权 Python编写,容易再次开发 实现了跳板机基本功能,认证.授权.审计 集成了Ansible,批量命令等 支持WebTerminal Bootstrap编写,界面美观 自动收集硬件信息 录像回放 命令搜索 实时监控 批量上传下载 jumpserver 3.0 安装 相对于 jumpserver 2.0 版本,在新的版本

手把手教你用jumpserver搭建堡垒机!

首先,jumpserver是什么呢? Jumpserver 是一款由Python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能.基于ssh协议来管理,客户端无需安装agent. 特点: 完全开源,GPL授权 Python编写,容易再次开发 实现了跳板机基本功能,认证.授权.审计 集成了Ansible,批量命令等 支持WebTerminal Bootstrap编写,界面美观 自动收集硬件信息 录像回放 命令搜索 实时监控 批量上传下载 jumpserver 3.0 安装 相对于 jumps

让运维不再背锅的利器jumpserver堡垒机

由于来源身份不明.越权操作.密码泄露.数据被窃.违规操作等因素 都可能会使运营的业务系统面临严重威胁,一旦发生事故,如果不能快速定位事故原因,运维人员往往就会背黑锅. 几种常见的背黑锅场景 1.由于不明身份利用远程运维通道攻击服务器造成业务系统出现异常 但是运维人员无法明确攻击来源,那么领导很生气.后果很严重 2.只有张三能管理的服务器,被李四登录过并且做了违规操作 但是没有证据是李四登录的,那么张三只能背黑锅了. 3.运维人员不小心泄露了服务器的密码.一旦发生安全事故,那么后果不堪设想. 4.

jumpserver 堡垒机

来源:知乎 Jumpserver 是一款由Python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能.基于ssh协议来管理,客户端无需安装agent. 特点: 完全开源,GPL授权 Python编写,容易再次开发 实现了跳板机基本功能,认证.授权.审计 集成了Ansible,批量命令等 支持WebTerminal Bootstrap编写,界面美观 自动收集硬件信息 录像回放 命令搜索 实时监控 批量上传下载 jumpserver 3.0 安装 相对于 jumpserver 2.0 版本,