堡垒机

 

 

 

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整合各组件


使用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端口访问

7、Jumpserver使用

使用xshell链接

端口2222

使用密钥登录:

在我的信息中选择更改SSH密钥:

使用putty或者xshell生成密钥,并存放到authorized_keys,把公钥复制到页面上

在页面我的信息中选择更改SSh密钥,把公钥复制进来

提交后,使用admin用户登陆,使用2222端口

8、Jumpserver里面的用户管理

jumpserver用户用来登陆jumpserver(web界面、ssh登陆)
 管理用户用来自动建立客户机上的系统用户、批量执行命令等操做
 客户机上的系统用户,用来经过jumpserver去登陆每一台客户机的用户,最好和用户管理->用户列表中的一致

管理用户使用ssh私钥:

在192.168.183.133上手动生成:        ssh-keygen -f jumpserver        -f指定秘钥的名字

而后把jumpserver(私钥)可使用xshell中的sz下载到本机,而后把文件放到页面中去

9、资产管理

建立新的资产,选择管理用户,管理用户须要到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进行链接,此处是经过密码登录的,若是修改了密码,会致使没法自动登陆

相关文章
相关标签/搜索