lizeqian1994

跳板机 /堡垒机

作用:操作审计  公司所有员工对服务器进行的操作记录下来或者直接进行录像,防止乱删除东西,在出现问题后可以找到责任人

1.跳板机(堡垒机)?
    现在一定规模互联网企业,往往都拥有大量服务器,如何安全并高效的管理这些服务器是每个系统运维或安全运维人员必要工作。现在比较常见的方案是搭建堡垒机环境作为线上服务器的入口,所有服务器只能通过堡垒机进行登陆访问。
2.Jumpserver
    是全球首款完全开源的堡垒机,使用GNU GPL v2.0开源协议,是符合4A的专业运维审计系统。
    使用Python/Django进行开发,遵循 Web2.0规范,配备了业界领先的Web Terminal 解决方案,交互界面美观、用户体验好。
    采纳分布式架构,支持多机房跨区域部署,中心节点提供 API,各机房部署登录节点,可横向扩展、无并发访问限制。

使用架构:nginx+docker镜像

安装部署

进去以后对虚拟机名和ip地址进行修改,因为已经在模板机安装一个脚本,我们可以用一下方法修改
sh hostname_ip.sh jumpserver 62
修改完成以后用xshell进行连接

1.同部时间

同步时间
yum install -y ntpdate
ntpdate ntp1.aliyun.com

设置定时任务
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1

2.安装docker

[root@jumpserver ~]# yum install docker  -y

定义docker工作目录
[root@jumpserver ~]# vim /etc/docker/daemon.json
{
"graph":"/data/docker"
}

[root@jumpserver ~]# cat /etc/docker/daemon.json
{
"graph":"/data/docker"
}

启动docker
[root@jumpserver ~]# systemctl   start  docker.service

查看docker是否启动成功
[root@jumpserver ~]# docker  ps  -a

3.下载jumpserver镜像

查看jumpserver有哪些镜像
[root@jumpserver ~]# docker search jumpserver

下载0.3.2版本的jumpserver镜像
[root@jumpserver ~]# docker pull docker.io/jiaxiangkong/jumpserver_docker:0.3.2

查看镜像
[root@jumpserver ~]# docker images

4.服务器上面部署邮件服务

使用163邮箱
设置 POP3/SMTP/IMAP 全部勾选
客户端授权密码:自己进行设置

[root@jumpserver ~]# yum install mailx -y
编写配置文件,将下方内容追加到文件底部

[root@jumpserver ~]# vim  /etc/mail.rc
set from=xxxxxx@163.com           #163邮箱
set smtp=smtp.163.com
set smtp-auth-user=xxxxxxx@163.com  #163邮箱
set smtp-auth-password=客户端授权码
set smtp-auth=login

启动邮件服务
[root@jumpserver ~]# systemctl  restart  postfix.service

测试邮件是否能发送成功
[root@jumpserver ~]# echo "test" | mail  -s   "hello" xxx@qq.com

5.创建docker相关的目录和文件

[root@jumpserver jumpserver]# vim Dockerfile
FROM docker.io/jiaxiangkong/jumpserver_docker:0.3.2
ADD run.sh /run.sh
ADD config_tmpl.conf /jumpserver/install/docker/config_tmpl.conf

[root@jumpserver jumpserver]# vim config_tmpl.conf
[base]
url = http://jumpserver-henry.com  #域名自己修改
key = 941enj9neshd1wes
ip = 0.0.0.0
port = 80
log = info

[db]
engine = MYSQL_ENGINE
host = MYSQL_HOST
port = MYSQL_PORT
user = MYSQL_USER
password = MYSQL_PASS
database = MYSQL_NAME

[mail]
mail_enable = true
email_host = smtp.163.com
email_port = 25          #QQ端口号465
email_host_user = lizeqian828@163.com    #自己的邮箱
email_host_password = lizeqian828   #自己的授权码
email_use_tls = false
email_use_ssl = false

[connect]
nav_sort_by = ip

[root@jumpserver jumpserver]# vim  run.sh
#!/bin/sh
cp -r /jumpserver/install/docker/config_tmpl.conf /jumpserver/jumpserver.conf
if [ ! -f "/etc/ssh/sshd_config" ]; then
        cp -r /jumpserver/install/docker/sshd_config /etc/ssh/sshd_config
fi
if [ ! -f "/etc/ssh/ssh_host_rsa_key" ]; then
  ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N \'\'
fi
if [ ! -f "/etc/ssh/ssh_host_dsa_key" ]; then
  ssh-keygen -t dsa -b 1024 -f /etc/ssh/ssh_host_dsa_key -N \'\'
fi
if [ ! -f "/etc/ssh/ssh_host_ecdsa_key" ]; then
  ssh-keygen -t ecdsa -b 521 -f /etc/ssh/ssh_host_ecdsa_key -N \'\'
fi
if [ ! -f "/etc/ssh/ssh_host_ed25519_key" ]; then
  ssh-keygen -t ed25519 -b 1024 -f /etc/ssh/ssh_host_ed25519_key -N \'\'
fi

/usr/sbin/sshd -E /data/logs/jumpserver.log
python /jumpserver/manage.py syncdb --noinput
if [ ! -f "/home/init.locked" ]; then
        python /jumpserver/manage.py loaddata install/initial_data.yaml
        date > /home/init.locked
fi
echo "alias "ll=ls -l"" >> /etc/profileecho "http://mirrors.aliyun.com/alpine/v3.4/main/" > /etc/apk/repositories
apk update &&\
python /jumpserver/manage.py crontab add >> /data/logs/jumpserver.log &
chmod -R 777 /data/logs/jumpserver.log
python /jumpserver/run_server.py >> /data/logs/jumpserver.log

授权
[root@jumpserver jumpserver]# chmod +x  run.sh
[root@jumpserver jumpserver]# ll
total 12
-rw-r--r-- 1 root root  466 May 28 11:03 config_tmpl.conf
-rw-r--r-- 1 root root  136 May 28 11:01 Dockerfile
-rwxr-xr-x 1 root root 1213 May 28 11:04 run.sh

制作当前时间的镜像
[root@jumpserver jumpserver]# cd /data/Dockerfile/jumpserver/
[root@jumpserver jumpserver]# docker  build . -t  jumpserver:0.3.2_201905281433  #注意当前时间

检查是否成功
[root@jumpserver jumpserver]# docker  images

创建程序目录及文件, 下面命令直接执行
mkdir -p  /data/volume_docker/jumpserver/data
cd /data/volume_docker/jumpserver/
touch   db.sqlite3
chmod 666 db.sqlite3
cd data/
mkdir  home  ssh  keys logs
mkdir  logs/tty
chmod  777 logs/tty
cat /etc/shadow  >shadow
cat /etc/passwd  >passwd
chmod  666 passwd 
chmod  666 shadow

编写启动docker容器脚本
[root@jumpserver ~]# cd
[root@jumpserver ~]# vim start_jumpserver.sh
docker run -d \
  -p 22222:22 -p 7001:80 \
  -v /data/volume_docker/jumpserver/db.sqlite3:/jumpserver/db.sqlite3 \
  -v /data/volume_docker/jumpserver/data:/data \
  jumpserver:0.3.2_201905281433  #与上述自己制作的时间镜像一致

赋予执行权限
[root@jumpserver ~]# chmod +x  start_jumpserver.sh

执行脚本
[root@jumpserver ~]# sh start_jumpserver.sh

查看容器是否启动成功up表示成功
[root@jumpserver ~]# docker ps -a

6.安装nginx

下载nginx
[root@jumpserver ~]# yum install -y nginx  

编写nginx配置文件
[root@jumpserver ~]# cd /etc/nginx/conf.d/
[root@jumpserver conf.d]# vim  jumpserver.com.conf
server {
        listen 80;
        server_name jumpserver-henry.com;
        access_log   /var/log/nginx/jumpserver.log main;
        location / {
            proxy_set_header X-Real-IP remote_addr;
            proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;
            proxy_pass http://127.0.0.1:7001;
        }
}

检查语法,并启动nginx
[root@oldboy conf.d]# nginx -t
[root@oldboy conf.d]# systemctl  start  nginx

7 .配置本地host文件解析

在本地hosts文件进行ip解析C:\Windows\System32\drivers\etc\hosts
10.0.0.62  jumpserver-henry.com

8.浏览器域名进行访问测试

jumpserver-henry.com
#登录
进入jumpserver登录界面。登录,用户名:admin  密码:admin

#修改admin密码
进入界面以后用户管理 查看用户 将admin的密码进行修改

#创建用户组
用户管理 -> 查看用户组 -> 添加用户组 -> 超级管理员组 | 运维组 | 开发组 | 经理组 

#添加用户
用户管理 -> 查看用户 -> 添加用户 ->会往你填写的邮箱发送账号web登录密码,ssh秘钥文件密码
添加成功->下载秘钥

#xsheel连接跳板机
xsheel->工具->用户秘钥管理者->导入下载的秘钥文件->点击属性->更改密码

xshell在创建一个跳板机连接 ip依旧是跳板机ip 端口号是:22222
用户是创建的用户,用户秘钥->浏览->确定,密码:设置的用户秘钥密码

跳板机连接不上?
进入该目录进行修改用户密码文件
[root@jumpserver ~]# cd /data/volume_docker/jumpserver/data/
[root@jumpserver data]# vim shadow
egon:!:18044:0:99999:7:::        #找到对应的用户,将其密码占位符删除
egon::18044:0:99999:7:::        #修改之后
                                
登录成功会出现欢迎界面!

#web界面资产管理
资产管理 -> 查看资产组 -> 添加主机组
主机组名:web前端组
备注:web前端节点服务器
提交

主机名:负载均衡组
备注:负载均衡节点
提交

主机名:数据库组
备注:数据库节点
提交

查看资产 -> 添加资产 -> 单台添加 ->主机名web01 ->主机ip:内网地址 ->管理用户 账号 密码 ->端口:22 
        ->所属主机组 ->提交

#授权管理
授权管理 ->Sudo ->添加别名 -> 命令别名:ADMIN -> 系统命令:/bin/su ->备注:超级管理员权限 ->确认保存
授权管理 ->Sudo ->添加别名 -> 命令别名:DEV -> 系统命令:/bin/cat ->备注:只读权限 ->确认保存  
授权管理 ->Sudo -> 添加别名 -> 命令别名:PUTONG -> 系统命令:/bin/who ->备注:普通用户 ->确认保存  
            
授权管理 -> 系统用户 ->添加系统用户 ->添加成功 ->推送 ->选择资产,使用秘钥

推送用户以后会默认在推送的主机上创建出推送的用户
在主机上输入命令:id 用户名
    
授权管理 -> 授权规则

#跳板机上可以进行操作
p  #显示有权限的主机
输入主机对应的id号就会连接该主机
连接成功后输入命令:sudo -l #查看权限
su - root 登录,没有密码无法登录
如果有 /bin/su 权限
直接用 sudo su -root 就可以连接

#web界面日志审计
可以查看用户的操作

#在主机上
[root@jumpserver ~]# cd data/
[root@jumpserver ~]# cd logs/
[root@jumpserver ~]# cd 20190528/
可以查看该目录下log内容

 

分类:

技术点:

相关文章: