Linux Centos7 搭建简易堡垒机安装jailkit实现chroot

一.什么是堡垒机

堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段监控和记录运维人员对网络内的服务器、网络设备、安全设备、数据库等设备的操作行为,以便集中报警、及时处理及审计定责。
就是为了实现对于跳板机登录的信息审查和人员操作情况,并通过配置黑白名单来限制特定IP登录情况,实现审计4A标准。
4A是指:认证Authentication、授权Authorization、账号Account、审计Audit,中文名称为统一安全管理平台解决方案。即将身份认证、授权、记账和审计定义为网络安全的四大组成部分,从而确立了身份认证在整个网络安全系统中的地位与作用。

1.核心功能

折叠登录功能
支持对X11、linux、unix、数据库、网络设备、安全设备等一系列授权账号进行密码的自动化周期更改,简化密码管理,让使用者无需记忆众多系统密码,即可实现自动登录目标设备,便捷安全。
折叠账号管理
设备支持统一账户管理策略,能够实现对所有服务器、网络设备、安全设备等账号进行集中管理,完成对账号整个生命周期的监控,并且可以对设备进行特殊角色设置如:审计巡检员、运维操作员、设备管理员等自定义设置,以满足审计需求
折叠身份认证
设备提供统一的认证接口,对用户进行认证,支持身份认证模式包括 动态口令、静态密码、硬件key 、生物特征等多种认证方式,设备具有灵活的定制接口,可以与其他第三方认证服务器之间结合;安全的认证模式,有效提高了认证的安全性和可靠性。
折叠资源授权
设备提供基于用户、目标设备、时间、协议类型IP、行为等要素实现细粒度的操作授权,最大限度保护用户资源的安全 折叠访问控制
设备支持对不同用户进行不同策略的制定,细粒度的访问控制能够最大限度的保护用户资源的安全,严防非法、越权访问事件的发生。 折叠操作审计
设备能够对字符串、图形、文件传输、数据库等全程操作行为审计;通过设备录像方式实时监控运维人员对操作系统、安全设备、网络设备、数据库等进行的各种操作,对违规行为进行事中控制。对终端指令信息能够进行精确搜索,进行录像精确定位。

2.价值

堡垒机的核心思路是逻辑上将人与目标设备分离,建立"人-〉主账号(堡垒机用户账号)-〉授权->从> > 账号(目标设备账号)的模式;在这种模式下,基于身份标识,通过集中管控安全策略的账号管理、授权> > 管理和审计,建立针对维护人员的"主账号-〉登录-〉访问操作-〉退出"的全过程完整审计管理,实现对> 各种运维加密/非加密、图形操作协议的命令级审计。 所有账号在一个平台进行操作可以查看操作指令,和信息,方便进行监控。

总而言之堡垒机就是一个环境,也叫作跳板机,就是让人员不能够直接接触内部网络,在堡垒机和跳板机上进行操作,更加安全,方便管理,也就是一个相对独立的环境,对于堡垒机的安装可以参考:
https://docs.jumpserver.org/zh/master/install/setup_by_fast/

三.简易堡垒机搭建基于安装jailkit实现chroot

1.安装配置

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

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

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

[root@localhost ~]# mkdir /home/jail

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

[root@localhost ~]# jk_init -v -j /home/jail/ basicshell
[root@localhost ~]# jk_init -v -j /home/jail/ editors
[root@localhost ~]# jk_init -v -j /home/jail/ netutils
[root@localhost ~]# jk_init -v -j /home/jail/ ssh

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

[root@localhost ~]# ls /home/jail/
bin  dev  etc  home  lib64  usr
[root@localhost ~]#

创建真实系统的用户:

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

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

[root@localhost ~]# mkdir /home/jail/usr/sbin
[root@localhost ~]# cp /usr/sbin/jk_lsh /home/jail/usr/sbin/jk_lsh

创建虚拟系统的用户:

root@localhost ~]# jk_jailuser -m -j /home/jail jailUser

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

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

真实系统上,还需要开启防火墙规则,除了远程登录端口外其他端口都需要封闭掉:

#开放22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#开放21端口(FTP)
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
#开放80端口(HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#开放443端口(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#允许ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
#允许接受本机请求之后的返回数据 RELATED,是为FTP设置的
iptables -A INPUT -m state --state  RELATED,ESTABLISHED -j ACCEPT
#其他入站一律丢弃
iptables -P INPUT DROP
#所有出站一律绿灯
iptables -P OUTPUT ACCEPT
#所有转发一律丢弃
iptables -P FORWARD DROP
 

其他规则设定

#如果要添加内网ip信任(接受其所有TCP请求)
iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
#过滤所有非以上规则的请求
iptables -P INPUT DROP
#要封停一个IP,使用下面这条命令:
iptables -I INPUT -s ***.***.***.*** -j DROP
#要解封一个IP,使用下面这条命令:
iptables -D INPUT -s ***.***.***.*** -j DROP

除此之外还需要配置白名单IP,这个在hosts.allow文件里配置,hosts.deny里也需要进行相应的配置,如下示例:

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

2.日志审计

1.首先配置hosts.allow以及hosts.deny文件,设置仅允许堡垒机的IP登录,其他的一律拒绝登录:

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

2.配置日志审计:

[root@localhost ~]# mkdir /usr/local/records # 创建日志文件存放的目录
[root@localhost ~]# chmod 777 !$
chmod 777 /usr/local/records
[root@localhost ~]# chmod +t !$
chmod +t /usr/local/records
[root@localhost ~]# 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'
[root@localhost ~]# source /etc/profile  # 让profile的配置生效

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

[root@localhost ~]# ls /usr/local/records/
root
[root@localhost ~]# ls /usr/local/records/root/
bash_history
[root@localhost records]# ls
dhy  root
[root@localhost records]# cat dhy/bash_history 
2021-05-11 11:03:41 ##### dhy pts/3 (192.168.100.11) #### 
2021-05-11 11:03:45 ##### dhy pts/3 (192.168.100.11) #### pwd
2021-05-11 11:04:48 ##### dhy pts/3 (192.168.100.11) #### who ami
2021-05-11 11:04:51 ##### dhy pts/3 (192.168.100.11) #### whoami
2021-05-11 11:05:19 ##### dhy pts/3 (192.168.100.11) #### cat /usr/local/records/root/bash_history
2021-05-11 11:05:26 ##### dhy pts/3 (192.168.100.11) #### sudo jailUser
2021-05-11 11:05:32 ##### dhy pts/3 (192.168.100.11) #### cat /usr/local/records/root/bash_history
2021-05-11 11:16:21 ##### dhy pts/4 (192.168.100.11) #### 
2021-05-11 11:16:24 ##### dhy pts/4 (192.168.100.11) #### ls
2021-05-11 11:16:40 ##### dhy pts/3 (192.168.100.11) #### ssh dhy@192.168.100.11
2021-05-11 11:17:31 ##### dhy pts/3 (192.168.100.11) #### ssh dhy@192.168.100.22

可以看到生成了相应的操作记录文件,并没有使用系统的专业的堡垒机软件,只能是建立了一个相对独立的环境。
安装指示操作来源:
https://blog.51cto.com/zero01/2062618