23.1什么是堡垒机
堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、记录、分析、处理的一种技术手段。
我们又把堡垒机叫做跳板机,简易的跳板机功能简单,主要核心功能是远程登录服务器和日志审计。
开源堡垒机:麒麟堡垒机 、jumpserver堡垒机 、GateOne堡垒机
商业堡垒机:昂楷科技 、尚思卓越的尚维堡垒机 、齐志堡垒机 、LanSecS(莱恩赛克)堡垒机、Citri、XenApp
其从功能上讲,它综合了核心系统运维和安全审计管控两大主干功能,从技术实现上讲,通过切断终端计算机对网络和服务器资源的直接访问,而采用协议代理的方式,接管了终端计算机对网络和服务器的访问。形象地说,终端计算机对目标的访问,均需要经过运维安全审计的翻译。打一个比方,运维安全审计扮演着看门者的工作,所有对网络设备和服务器的请求都要从这扇大门经过。因此运维安全审计能够拦截非法访问,和恶意攻击,对不合法命令进行命令阻断,过滤掉所有对目标设备的非法访问行为,并对内部人员误操作和非法操作进行审计监控,以便事后责任追踪。
安全审计作为企业信息安全建设不可缺少的组成部分,逐渐受到用户的关注,是企业安全体系中的重要环节。同时,安全审计是事前预防、事中预警的有效风险控制手段,也是事后追溯的可靠证据来源。
堡垒机产生的原因
随着企事业单位IT系统的不断发展,网络规模和设备数量迅速扩大,日趋复杂的IT系统与不同背景的运维人员的行为给信息系统安全带来较大风险,主要表现在:
1.多个用户使用同一个账号。这种情况主要出现在同一工作组中,由于工作需要,同时系统管理账号唯一,因此只能多用户共享同一账号。如果发生安全事故,不仅难以定位账号的实际使用者和责任人,而且无法对账号的使用范围进行有效控制,存在较大安全风险和隐患。
2.一个用户使用多个账号。目前,一个维护人员使用多个账号是较为普遍的情况,用户需要记忆多套口令同时在多套主机系统、网络设备之间切换,降低工作效率,增加工作复杂度。如下图所示:
3. 缺少统一的权限管理平台,权限管理日趋繁重和无序;而且维护人员的权限大多是粗放管理,无法基于最小权限分配原则的用户权限管理,难以实现更细粒度的命令级权限控制,系统安全性无法充分保证。
4. 无法制定统一的访问审计策略,审计粒度粗。各网络设备、主机系统、数据库是分别单独审计记录访问行为,由于没有统一审计策略,并且各系统自身审计日志内容深浅不一,难以及时通过系统自身审计发现违规操作行为和追查取证。
5. 传统的网络安全审计系统无法对维护人员经常使用的SSH、RDP等加密、图形操作协议进行内容审计。
堡垒机的使用
https://wenku.baidu.com/view/27fba3ad970590c69ec3d5bbfd0a79563c1ed4b7.html
23.2、搭建简易堡垒机
- 具备堡垒机的条件是,该机器有公网和私网,其中私网和机房其他机器互通
- 设计堡垒机思路
- 跳板机安全设置(iptables端口限制、登录限制sshd_config)
- 用户、命令权限限制(jaikit)http://blog.chinaunix.net/uid-28310119-id-3503318.html
- 客户机器日志审计(只能在客户器上操作,不能在跳板机上操作)
- http://www.68idc.cn/help/server/linux/2014042190951
- 安装过程:
- cd /usr/local #软件安装的目录
- cd /src
- wget http://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/jailkit
- jk_init -v -j /home/jail/basicshe
- jk_init -v -j /home/jail/editors
- jk_init -v -j /home/jail/netutils
- jk_init -v -j /home/jail ssh
- useradd wang
- passwd wang
- mkdir /home/jail/usr/sbin
- cp /usr/sbin/jk_lsh /home/jail/usr/sbin/jk_lsh
- jk_jailuser -m -j /home/jail wang #在虚拟系统里面创建wang用户
- cd /home/jail #切换到jail 目录中
- cat etc/passwd #查看添加的用户wang
- vi /home/jail/etc/passwd=vi /etc/passwd #把wang那一行的/usr/sbin/jk_lsh改为/bin/bash
- 使用xshell5远程连接wang主机
- 登录成功后,使用命令:ls -l /, 两下tab键 ,命令:$查看可用的命令
- 给普通用户设置秘钥登陆,应该到普通用户的 家目录里 .ssh/authorized_keys文件里添加秘钥
- vi /etc/ssh/sshd_config #在/etc/ssh/sshd_config 中设置只允许秘钥登录,输入/passaword,定位到passwd的那一行。把PasswordAuthentication yes底下的两个yes,改成no。
- vi /etc/hosts.allow #限制不需要的IP和服务。在最底下添加限制的IP,比如添加:sshd: 192.168.133.0/24 1.1.1.1 2.2.2.2
- vi /etc/hosts.deny #在最底下添加一行:sshd:ALL
- cat /etc/hosts.deny #查看有没有设置成功
实例:
使用 wget下载,
当登录wang主机时,显示没有/usr/bin/id时,使用命令:ls -l /,查看根目录
编辑vi .bashrc或者vi .bash-profile中添加。
23.4搭建简易堡垒机---日志审计
•以下操作是需要在所有被登录机器上做的
• mkdir /usr/local/records
• chmod 777 !$
• chmod +t !$ #t防删
• 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'
注意:if ....;then中间;号;
fi前面也有
实例:第一步,限制deny,IP地址是跳板机的IP,使用命令:vi /etc/hosts.all
第二部,vi /etc/hosts.deny
然后再重新登录一下,再另一个服务器上使用命令:ssh root@192.168.133.132,链接跳板机。
在服务器上添加本机windows的ip地址
添加完成后,重新链接,这台机器,使用命令:w,查看有没有添加成功。
编辑vi /etc/profile
在服务端,添加一个张三的用户,然后再跳板机上链接,使用命令:ssh zhangsan@192.168.133.132
在服务端,使用命令:cd .. ls
注意:系统的history命令只能查看正常操作退出的命令历史,如果是断电,或者掉线退出终端命令历史是无法记录到history中去的
常见问题:
windows的ip
2、在设置客户端机器aming-02的时候,有一个ip地址 192.168.133.1 这个是那个虚拟机的ip地址?为什么添加192.168.133.1就可以通过root登陆 aminng-02了,我记得aming-02这个虚拟机的ip地址是192.168.133.132吧?然后,跳板记得ip地址是192.168.133.130,对吧。不明白192.168.133.1这个ip地址是什么?
答:
133.1 是我windows的ip,也就是客户端的ip地址。
你用哪个ip去连这台机器,就设置哪个ip为白名单ip。
如果你要用132去连这台机器,那就添加这个132ip为白名单。
你用哪个ip去连这台机器,就设置哪个ip为白名单ip。
如果你要用132去连这台机器,那就添加这个132ip为白名单。
3、现在我的需求是跳板机使用密钥登录服务器。但是zhangsna这个用户已经使用不了ssh-keygen这个命令了,这个应该怎么解决。还是说我们在限制用户之前就生成公钥备用?
答:可以用root给它生成啊 私钥放哪里都无所谓,它登录的时候指定私钥位置就行了。
ssh -i 后面指定私钥路径
常见问题:
解压不了?下载gcc已解决
2、
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
请输入管理员用户名 [admin]:
请输入管理员密码: [5Lov@wife]:
请再次输入管理员密码: [5Lov@wife]:
Starting jumpserver service: [FAILED]
安装成功,Web登录请访问http://ip:8000, 祝你使用愉快。
请访问 https://github.com/jumpserver/jumpserver/wiki 查看文档
[root@master-ansible-220 install]# cd ..
[root@master-ansible-220 jumpserver-0.3.3]# ./service.sh restart
Stopping jumpserver service: [FAILED]
Starting jumpserver service: [FAILED]
启动jumpserver失败
答:查看一下你的系统中是不是已经有监听80或者 8000端口。 服务没启动,没查看到监听8000端口,查一下它的日志吧
3、对比docker安装的视频我看了一下,下载的是yum install -y docker-ce,怎么我们安装堡垒机用的是yum install -y docker 。这两个之间有区别吗?
答:版本不一样。
4、
[root@localhost ~]# yum install -y docker
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.cn99.com
* extras: mirrors.cn99.com
* updates: mirrors.cn99.com
软件包 2:docker-1.13.1-53.git774336d.el7.centos.x86_64 已安装并且是最新版本
无须任何处理
[root@localhost ~]# systemctl enable docker
[root@localhost ~]# systemctl start docker
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
我参照PPT里面安装了一下0.4.0的版本,启动的时候怎么总是报错?
答:之前的版本卸载掉。
5、
File "install.py", line 307, in <module>
pre_setup.start()
File "install.py", line 299, in start
self._input_mysql()
File "install.py", line 267, in _input_mysql
if self._test_db_conn():
File "install.py", line 192, in _test_db_conn
import MySQLdb
ImportError: No module named MySQLdb
安装的时候报这种错误。用的centos6.6 python2.7,不知道是不是版本问题。
答:
试试这个命令
yum install MySQL-python
6、
[root@jishan-2 jumpserver]# ls
apps config_example.py data docs LICENSE logs README.md requirements run_server.py tmp utils
在克隆之后怎么没有install安装目录,老师这个我怎么处理。
答:
版本不对,你这个4.0版本,安装方法可以参考我ppt里面的方法(docker)
你要想下载3的版本,可以到这里来下载 https://github.com/jumpserver/jumpserver/tree/0.3.3 下载zip格式的。