1、堡垒机介绍html
在一个特定网络环境下,为了保障网络和数据不受外界入侵和破坏,而运用各类技术手段实时收集和监控网络环境中每个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。 咱们又把堡垒机叫作跳板机,简易的跳板机功能简单,主要核心功能是远程登陆服务器和日志审计。 比较优秀的开源软件jumpserver,认证、受权、审计、自动化、资产管理。 商业堡垒机:齐治, Citrix XenApp
2、搭建简易堡垒机linux
具有堡垒机的条件是,该机器有公司和私网,其中私网和机房其余机器互通 设计堡垒机思路: 跳板机安全设置(iptables端口限制、登陆限制sshd_config) 用户、命令权限限制(第三方软件:jailkit) http://blog.chinaunix.net/uid-28310119-id-3503318.html 客户机器日志审计 http://www.68idc.cn/help/server/linux/2014042190951.html
3、搭建简易堡垒机 – 安装jailkit实现chrootnginx
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 chmod 755 /home/jail 若是执行下面的报错在给权限便可 把经常使用命令放到虚拟系统的目录下/home/jail jk_init -v -j /home/jail/ basicshell shell相关的 jk_init -v -j /home/jail/ editors 编辑器vim jk_init -v -j /home/jail/ netutils 网络相关的 jk_init -v -j /home/jail/ ssh 远程登录的ssh mkdir /home/jail/usr/sbin cp /usr/sbin/jk_lsh /home/jail/usr/sbin/jk_lsh 至关于虚拟系统的shell,放到/usr/sbin下 建立多个用户,重复执行如下操做便可,没建立一个用户执行一次 useradd baoleiji passwd baoleiji jk_jailuser -m -j /home/jail baoleiji 建立虚拟系统的用户
vim /home/jail/etc/passwd //把baoleiji那一行的/usr/sbin/jk_lsh改成/bin/bash
登陆baoleiji用户测试web
vim /etc/ssh/sshd_config 改为no只能用秘钥登录shell
登录的源ip:vim /etc/hosts.allow 能够限制ip登录,除了allow中限制的ip以外,其余的都不能登录数据库
限制来源ip,客户机只能用跳板机登录,其余机器不能登陆vim
vim /etc/hosts.allow浏览器
vim /etc/hosts.deny安全
此时在链接002机器已没法正常链接,须要经过登陆的跳板机链接,若是须要使用baoleiji帐号登录,须要在对方机器建立baoleiji这个用户bash
4、搭建简易堡垒机 – 日志审计
如下操做是须要在全部被登陆机器上作的:
mkdir /usr/local/records chmod 777 /usr/local/records/ chmod +t /usr/local/records/ t权限,防删除
vim /etc/profile //添加
if [ ! -d /usr/local/records/${LOGNAME} ] #LOGNAME指的是登录的用户名是哪一个 then mkdir -p /usr/local/records/${LOGNAME} #建立这个用户的目录 chmod 300 /usr/local/records/${LOGNAME} #给这个用户300权限,只能执行和写 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' #执行的最后一条命令记录进去
从新登录客户端
建立用户,经过跳板机登录,作一些操做
回到002机器上,能够看到生成了zhangsan目录,和操做的记录
5、开源堡垒机jumpserver介绍
官网www.jumpserver.org Jumpserver是一款使用Python, Django开发的开源跳板机系统, 助力互联网企业高效 用户、资产、权限、审计 管理 Auth 统一认证 CMDB 资产管理 统一受权 日志审计 自动化运维(ansible)
6、安装jumpserver
具体安装步骤参考:https://blog.51cto.com/roben/2159929 和官方文档https://docs.jumpserver.org/zh/docs/step_by_step.html,两个文档能够互相参考,官方文档有的步骤没有,须要参考第一个连接
如下是文档中操做须要注意的地方: 注意连接中的配置文件名称和官方文档的配置文件名称不一样,不能直接使用
防火墙:selinux 关闭:setenforce 0 systemctl stop firewalld.service
运行Jumpserver
cd /opt/jumpserver ./jms start all -d # 后台运行使用 -d
运行coco:
cd /opt/coco ./cocod start -d # 后台运行使用 -d
vim config.yml 修改配置文件,SECRET_KEY可使用文件中的命令生成,并修改数据库配置信息 7js5bFUI3l3Ad7EDji0VEcdoMRpm13tCrygy4PBQDvDej5j1U
cd /opt/jumpserver/ ./jms start all -d 在后台运行,浏览器访问IP地址:8080 默认帐号:admin 密码:admin 下面表明运行成功,浏览器正常访问,线上环境须要把8080端口加入到白名单
vim /etc/rc.local 加入以下内容
source /opt/py3/bin/activate ; cd /opt/jumpserver; ./jms start all -d &>/dev/null 重启时 jumpserver自动启动
部署coco时,使用官方文档中的:正常部署 coco 组件
修改coco配置文件
cd /opt/coco cp config_example.yml config.yml vim config.yml
BOOTSTRAP_TOKEN 须要从 jumpserver/config.yml 里面获取, 保证一致
配置完成后,启动coco:./cocod start -d -d在后台运行
启动成功后,在页面上选择:会话管理->终端管理 能够看到
启动成功能够看到5000端口和2222端口
若是报以下错误,说明第一次启动时已经注册了,下次就不能再用这个名字,重启能够解决,或者在官方配置文件中使用官方文档中的:正常部署 coco 组件
测试:
本机访问: ssh -p2222 admin@localhost 密码是admin
使用Nginx作反向代理:
vim nginx.conf 把include下的内容全删除,留一个 } 而后到conf.d目录下,建立一个jumpserver.conf vim /etc/nginx/conf.d/jumpserver.conf 内容以下,也能够复制官方文档上的 server { listen 80; client_max_body_size 100m; # 录像及文件上传大小限制 location /luna/ { try_files $uri / /index.html; alias /opt/luna/; # luna 路径, 若是修改安装目录, 此处须要修改 } location /media/ { add_header Content-Encoding gzip; root /opt/jumpserver/data/; # 录像位置, 若是修改安装目录, 此处须要修改 } location /static/ { root /opt/jumpserver/data/; # 静态资源, 若是修改安装目录, 此处须要修改 } location /socket.io/ { proxy_pass http://localhost:5000/socket.io/; proxy_buffering off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; access_log off; } location /coco/ { proxy_pass http://localhost:5000/coco/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; access_log off; } location /guacamole/ { proxy_pass http://localhost:8081/; proxy_buffering off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; access_log off; } location / { proxy_pass http://localhost:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
检查语法并加载
nginx -t nginx -s reload
启动nginx,并开机启动
systemctl start nginx systemctl enable nginx
此时能够在浏览器使用80端口访问
服务所有启动后, 访问 jumpserver 服务器 nginx 代理的 80 端口, 不要经过8080端口访问
使用xshell链接
端口2222
使用密钥登录:
在我的信息中选择更改SSH密钥:
使用putty或者xshell生成密钥,并存放到authorized_keys,把公钥复制到页面上
在页面我的信息中选择更改SSh密钥,把公钥复制进来
提交后,使用admin用户登陆,使用2222端口
jumpserver用户用来登陆jumpserver(web界面、ssh登陆) 管理用户用来自动建立客户机上的系统用户、批量执行命令等操做 客户机上的系统用户,用来经过jumpserver去登陆每一台客户机的用户,最好和用户管理->用户列表中的一致
管理用户使用ssh私钥:
在192.168.183.133上手动生成: ssh-keygen -f jumpserver -f指定秘钥的名字
而后把jumpserver(私钥)可使用xshell中的sz下载到本机,而后把文件放到页面中去
建立新的资产,选择管理用户,管理用户须要到192.168.183.3这台机器上去建立,这个管理用户的意义我的理解就是访问服务器的帐号
由于建立管理用户时设置了私钥,因此须要在此处增长公钥,经过秘钥去链接jumpserver用户
步骤:
su - jumpserver mkdir .ssh chmod 700 .ssh cd .ssh 建立公钥 vim authorized_keys ,把生成的公钥放到此文件中 chmod 600 .ssh/authorized_keys 退出jumpserver用户,回到root下:visudo进行设置 测试链接: ssh -i jump user1@127.0.0.1 不提示输入密码即成功
在192.168.183.3上切换到jumpserver用户 : su - jumpserver 把刚刚在192.168.183.133机器上手动生成的公钥复制过来: (sudo) vi .ssh/authorized_keys
ssh -i jumpserver jumpserver@192.168.183.3 -i指定私钥,与183.3机器的公钥匹配便可,无需输入密码,上方提示输入密码说明配置有问题
若是须要输入密码,要查看对应用户的目录下/home/user1/.ssh/authorized_keys 该文件是否有足够的权限,还有生成的密钥对的权限 chmod 600 jump jump是私钥
管理用户要有root的权限
使用root用户,在192.168.183.3机器上修改: visudo 给予用户sudo权限
jumpserver ALL=(ALL) NOPASSWD: ALL
登录jumpserver用户
使用sudo命令
使用秘钥配对成功链接后,回到页面,更新硬件信息,会把链接的主机配置信息更新出来,任务进程能够在做业中心中查看
在权限管理->资产受权中添加规则
资产管理 -> 系统用户详情:
自动推送须要打开,此时会在受权规则的机器中自动推送此用户 登陆模式选自动登陆
建立资产受权前没有此用户,建立完成后,用户已下发
此时登录这个用户,输入对应主机的id进行链接,此处是经过密码登录的,若是修改了密码,会致使没法自动登陆