89.简易的堡垒机 安装jailkit来实现chroot 日志审计

23.1 什么是堡垒机

23.2 搭建简易堡垒机

23.3 安装jailkit实现chroot

23.4 日志审计

 

 

 

 

 

23.1 什么是堡垒机

 

 

 

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

#堡垒机最大的功能是保证安全

2.我们又把堡垒机叫做跳板机,简易的跳板机功能简单,主要核心功能是远程登录服务器和日志审计。

#还可以记录机器的信息,通常叫做cmdb(资产管理)、监控、网络、用户授权等等

#针对一些用户组去做全下的规定,比如一个用户组有对这些机器,另外一个用户组又对另外一些机器有权限,想登陆普通用户拥有超级用户的权限

3.比较优秀的开源软件jumpserver,认证、授权、审计、自动化(批量的命令执行)、资产管理(比如机器在哪个机房等等类似的)。

#甚至可以把你对这台机器的操作都记录下来,就像录屏一样。不仅仅记录命令,结果也会记录下来

4.商业堡垒机:齐治, Citrix XenApp (思杰)

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

23.2 搭建简易堡垒机

 

 

 

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

#说白了也就是跳板机。跳板机上要有公网,跳板机通过内网与其他机器通信、连接

2.设计堡垒机思路

跳板机安全设置(iptables端口限制、登录限制sshd_config)

#比如ssh(22端口)开放,其他关闭。或者80端口以及其他用到的端口。为的是安全

#比如只允许某些IP去登录他,比如公司的、家里的。或出差的时候可以搞一个vpn。拨到公司,然后去登录他

用户、命令权限限制(jailkit) http://blog.chinaunix.net/uid-28310119-id-3503318.html

jailkit(也就是chroot),之前讲rsync的时候用到过。限制权限,限制登入的用户只能用哪些命令

3.客户机器日志审计 (到客户机去做,不能在跳板机做)

#比如用户执行的每一条命令都记录下来。大作业的时候也做过一个简单的命令审计

http://www.68idc.cn/help/server/linux/2014042190951.html

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

23.3 安装jailkit实现chroot

 

 

 

 

用jailkit软件实现chroot。我们要登录普通用户把这个普通用户限定在虚拟的系统里面,让他使用有限的命令和有限的环境。以此来保证系统的安全性,他因此不能使用更多的命令来更改跳板机的设置

1.wget https://olivier.sessink.nl/jailkit/jailkit-2.19.tar.bz2

2.tar jxvf jailkit-2.19.tar.bz2

3.cd jailkit-2.19

4../configure && make && make install

5.mkdir /home/jail #这个目录作为虚拟系统的根目录,也就是说chroot到这个目录下

6.jk_init -v -j /home/jail/ basicshell #把shell相关的库文件或命令搞过去

jk_init -v -j /home/jail/ editors #编辑器vi、vim

jk_init -v -j /home/jail/ netutils #网络相关的

jk_init -v -j /home/jail/ ssh #远程登录的时候用到的

#执行这几条命令的作用简单讲就是,把一些常用的命令像ssh、ls、等等,把它搞到虚拟系统根目录(home/jail)下去

7.mkdir /home/jail/usr/sbin #创建他的目的是为了要拷贝jk_sh(第8 步骤)

8.cp /usr/sbin/jk_lsh /home/jail/usr/sbin/jk_lsh

#/usr/sbin/jk_lsh是一个虚拟系统的shell,把它复制到这个目录下

9.useradd zhangsan !!如果需要多个用户,就从这一步继续做。上面的不用在执行了

10.passwd zhangsan

11.jk_jailuser -m -j /home/jail zhangsan

#虚拟的系统里面创建zhangsan用户

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

13.限制来源IP

/etc/hosts.alow

/etc/hosts.deny

 

 

 

实例:

[root@axinlinux-01 ~]# cd /usr/local/src/

[root@axinlinux-01 src]# wget https://olivier.sessink.nl/jailkit/jailkit-2.19.tar.bz2

[root@axinlinux-01 src]# tar -jxvf jailkit-2.19.tar.bz2

[root@axinlinux-01 src]# cd jailkit-2.19/

[root@axinlinux-01 jailkit-2.19]# ./configure

[root@axinlinux-01 jailkit-2.19]# make && make install

[root@axinlinux-01 jail]# mkdir /home/jail

[root@axinlinux-01 jail]# cd /home/jail

[root@axinlinux-01 jail]# jk_init -v -j /home/jail/ basicshell

[root@axinlinux-01 jail]# jk_init -v -j /home/jail/ editors

[root@axinlinux-01 jail]# jk_init -v -j /home/jail/ netutils

[root@axinlinux-01 jail]# jk_init -v -j /home/jail/ ssh

[root@axinlinux-01 jail]# useradd zhangsan

[root@axinlinux-01 jail]# passwd zhangsan

更改用户 zhangsan 的密码 。

新的 密码: wangxin789

[root@axinlinux-01 jail]# mkdir /home/jail/usr/sbin

[root@axinlinux-01 jail]# cp /usr/sbin/jk_lsh /home/jail/usr/sbin/jk_lsh

[root@axinlinux-01 jail]# jk_jailuser -m -j /home/jail zhangsan

[root@axinlinux-01 jail]# vim etc/passwd

zhangsan:x:1011:1011::/home/zhangsan:/bin/bash #末尾改为/bin/bash

然后我们就可以用张三这个用户去登录了(在xshell上新建会话,登录)

会提示/usr/bin/id没有,是因为他要去执行一个/etc/profile,里面就有这个命令。不必关心

如果要使用秘钥登录:

[root@axinlinux-01 jail]# vim /etc/ssh/sshd_config

PasswordAuthentication yes #这里改为no。也就只能秘钥登录了

[root@axinlinux-01 jail]# ssh-keygen #ssh-keygen生成密钥对

[root@axinlinux-01 jail]# vim /root/.ssh/authorized_keys #将公钥(pub)放到这个文件里

还要改一下iptables,不用的服务限制掉

[root@axinlinux-01 jail]# vim /etc/hosts.allow #还要设置一下信任的登录的ip

sshd: 192.168.208.0/24 1.1.1.1 2.2.2.2 #信任哪些网段、IP

[root@axinlinux-01 jail]# vim /etc/hosts.deny #除了allow的,其他的全部deny掉

sshd: ALL

也就是除了信任的网段、IP,其他的都不能远程登录了。大大的增加跳板机的安全系数

 

 

13.下面的步骤就是到各个客户机上做限制,其中有一项就是限制来源的IP。你想想我们的客户机只能用跳板机登录,其他的机器全不能登录:

[root@axinlinux-02 ~]# vim /etc/hosts.allow #比如02机器是我们的客户机。首先要限制一下allow

sshd: 192.168.208.128 #我们的跳板机是128。也及时只有这个ip能等128机器(其他的都登不进来)

[root@axinlinux-02 ~]# vim /etc/hosts.deny #其他的全部deny掉

sshd: ALL

这个时候我们再登录02机器,就登不进来了。但是我们可以用128机器(跳板机)登

这样我们就做成了一个跳板机。但是最好在登录的时候,用张三用户去登录,那么对方机器(客户机)也要创建一个张三的用户。如果想让张三能有root的命令,可以让他拥有su的权限,跳到root下

 

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

 

23.4 日志审计

 

 

 

非常关键,某个人登录了我们的机器,都做了哪些操作,我们需要去做一下记录

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

1.mkdir /usr/local/records

2.chmod 777 !$

3.chmod +t !$ #-t防删除

4.vi /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@axinlinux-02 ~]# mkdir /usr/local/records

[root@axinlinux-02 ~]# chmod 777 /usr/local/records

[root@axinlinux-02 ~]# chmod +t /usr/local/records

 

if [ ! -d /usr/local/records/${LOGNAME} ] #logname指的是你登录哪个用户就是哪个用户的用户名,比如张三。在/usr/local/recoreds这个目录下生成一个zhangsan的目录

then

mkdir -p /usr/local/records/${LOGNAME} #创建这个目录之后

chmod 300 /usr/local/records/${LOGNAME} #设置权限300。也就是只有这个用户能执行和写。不能读

fi

export HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history" #指定记录命令历史的文件。也就是张三用户下的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@axinlinux-02 ~]# cd /usr/local/records/

[root@axinlinux-02 records]# ls #就会有一个root目录了。因为我们是root登录的

root

[root@axinlinux-02 records]# cd root/ #进入到root

[root@axinlinux-02 root]# ls

bash_history

[root@axinlinux-02 root]# cat bash_history #查看这个文件。以下,就是我们敲过的命令

2018-11-28 22:53:59 ##### root pts/0 (192.168.208.1) #### vim /etc/hosts.allow

用户是谁 来源IP 敲过的命令

2018-11-28 22:54:14 ##### root pts/0 (192.168.208.1) #### ls /usr/local/records/

2018-11-28 22:54:41 ##### root pts/0 (192.168.208.1) #### cd /usr/local/records/

2018-11-28 22:54:42 ##### root pts/0 (192.168.208.1) #### ls

2018-11-28 22:54:45 ##### root pts/0 (192.168.208.1) #### cd root/

2018-11-28 22:54:46 ##### root pts/0 (192.168.208.1) #### ls

这个记录的不像我们系统里的history,他只记录正常退出的命令。而我们做的这个就可以

 

 

 

 

 

以上这两节操作其实并不完善,容易被破解。还需要借助一些开源的软件来做,比如接下来的jumpserver

 

 

 

 

转载于:https://my.oschina.net/u/3866149/blog/3030842

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值