十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
一、堡垒机介绍
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、虚拟空间、营销软件、网站建设、西充网站维护、网站推广。
在一个特定网络环境下,为了保障网络和数据不受外界破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。
我们又把堡垒机叫做跳板机,简易的跳板机功能简单,主要核心功能是远程登录服务器和日志审计。
比较优秀的开源软件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 //创建一个目录,作为虚拟系统的根目录
下面这四条命令就是把常用的一些命令、文件搞到虚拟系统的目录里去。
# 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 //远程登录时用到的。 # mkdir /home/jail/usr/sbin # cp /usr/sbin/jk_lsh /home/jail/usr/sbin/jk_lsh //相当于是虚拟系统的一个shell,把它复制过去。 1、# useradd zhangsan //原系统创建一个用户,如果需要创建多个用户,就从这一步开始,执行这四步:1-4。 2、# passwd zhangsan 3、# jk_jailuser -m -j /home/jail zhangsan //在虚拟系统里创建一个用户 # cd /home/jail/ [root@wbs jail]# cat etc/passwd //虚拟用户zhangsan root:x:0:0:root:/root:/bin/bash zhangsan:x:1122:1122::/home/zhangsan:/usr/sbin/jk_lsh //usr/sbin/jk_lsh这个shell是虚拟系统的shell,这个shell不能登录,所以需要改成/bin/bash,这样才能登录虚拟用户zhangsan 4、# vim /home/jail/etc/passwd //把zhangsan那一行的/usr/sbin/jk_lsh改为/bin/bash # ls /home/jail/ //可以看到常用的命令,库文件都在虚拟系统的根目录下了。 bin dev etc home lib64 usr
新建一个会话窗口,IP即本机的IP,用户名zhangsan,密码zhangsan,登录,会看到两行“bash: /usr/bin/id: No such file or directory”,因为要执行/etc/profile,在这个里面没有这个命令,不用关心。
$ ls -l / //可以看到只有那6个目录
按两下Tab键可以看到只有117个可用的命令,就都是bin下的命令。
创建密钥登录,在.ssh目录下添加密钥,还需要在原系统的# vi /etc/ssh/sshd_config设定只允许密钥登录,将PasswordAuthentication yes改为no。
还要限定iptables规则,把不需要的端口全部限制,不用的服务关掉。
还要限定登录的源IP: # vi /etc/hosts.allow 新增: sshd: 192.168.149.0/24 1.1.1.1 2.2.2.2 # vi /etc/hosts.deny //除了允许的网段和IP,其他的全部拒绝,这样就可以增加机器的安全系数。 sshd: ALL
四、日志审计
下面的操作是在客户端上做的一些限制,限制来源IP。
到另一台机器,先限制/etc/hosts.allow和deny
在hosts.allow里新增sshd: 192.168.149.133 (跳板机IP)
在hosts.deny里新增sshd: ALL
这时候再重新登录这一台机器就不能登录了。
到zhangsan那一台可以登录:
# sshroot@192.168.149.129
这样就做成了一个跳板机。
登录对方用户的时候用zhangsan,因为现在这台机器是zhangsan,所以对方机器也需要创建一个zhangsan的用户。
以下操作是需要在所有被登录机器上做的
# mkdir /usr/local/records # chmod 777 !$ # chmod +t !$ # vi /etc/profile //添加 if [ ! -d /usr/local/records/${LOGNAME} ] //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' 重新再登录这台机器 # cd /usr/local/records/ [root@MRX records]# ls root [root@MRX records]# cd root/ [root@MRX root]# ls bash_history [root@MRX root]# tail bash_history 2019-10-01 19:32:06 ##### root pts/0 (192.168.149.1) #### 2019/10/01 19:19:58 vim /etc/profile 2019-10-01 19:32:17 ##### root pts/0 (192.168.149.1) #### 2019/10/01 19:32:17 ls 2019-10-01 19:32:34 ##### root pts/0 (192.168.149.1) #### 2019/10/01 19:32:34 cd /usr/local/records/ 2019-10-01 19:32:35 ##### root pts/0 (192.168.149.1) #### 2019/10/01 19:32:35 ls 2019-10-01 19:32:37 ##### root pts/0 (192.168.149.1) #### 2019/10/01 19:32:37 cd root/ 2019-10-01 19:32:38 ##### root pts/0 (192.168.149.1) #### 2019/10/01 19:32:38 ls
这个不像系统里history,它只有在你正常退出这个终端后才会记录这些命令,敲过的命令仅仅只是保存在内存里的,并没有记录到文件里,要想记录到文件里,必须要正常的退出,如果断电了或者其他原因退出了,这些命令就记不进去。但是这个日志审计就没问题。
[root@MRX root]# useradd zhangsan //创建一个zhangsan用户 [root@MRX root]# passwd zhangsan
再到跳板机登录它:
[zhangsan@wbs ~]$ ssh zhangsan@192.168.149.129
//然后随意执行一些命令,再到客户端上看,就可以看到zhangsan用户敲过的命令。
[root@MRX records]# ls root zhangsan
这种方法并不完美,是可以破解的,这只是一个简单的堡垒机,要想做一个完美的堡垒机,还需要借助一些专业的工具、软件。