堡垒机

目录

一、堡垒机介绍
二、搭建简易堡垒机思路
三、搭建简易堡垒机 - 安装jailkit实现chroot
四、搭建简易堡垒机 - 日志审计
五、jumpserver介绍
六、安装jumpserver
七、使用jumpserver
八、用户管理
九、资产管理
十、客户端登录jumpserver

一、堡垒机介绍

在一个特定网络环境下,为了保障网络和数据不受外界入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。
我们又把堡垒机叫做跳板机,简易的跳板机功能简单,主要核心功能是远程登录服务器和日志审计。
比较优秀的开源软件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

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
jk_init -v -j /home/jail/ editors
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
useradd lisi
passwd lisi
jk_jailuser -m -j /home/jail lisi
vim /home/jail/etc/passwd //把lisi那一行的/usr/sbin/jk_lsh改为/bin/bash

#下载安装jailkit
[root@minglinux-01 /usr/local/src] wget https://olivier.sessink.nl/jailkit/jailkit-2.19.tar.bz2
[root@minglinux-01 /usr/local/src] tar jxvf jailkit-2.19.tar.bz2 
[root@minglinux-01 /usr/local/src] cd jailkit-2.19/
[root@minglinux-01 /usr/local/src/jailkit-2.19] ./configure 
[root@minglinux-01 /usr/local/src/jailkit-2.19] make && make install

#创建虚拟系统的根目录,chroot到该目录下
[root@minglinux-01 /usr/local/src/jailkit-2.19] mkdir /home/jail
#分别执行以下命令,目的是将一些基础指令和库文件搞到/home/jail里面去
[root@minglinux-01 /usr/local/src/jailkit-2.19] jk_init -v -j /home/jail/ basicshell
[root@minglinux-01 /usr/local/src/jailkit-2.19] jk_init -v -j /home/jail/ editors
[root@minglinux-01 /usr/local/src/jailkit-2.19] jk_init -v -j /home/jail/ netutils
[root@minglinux-01 /usr/local/src/jailkit-2.19] jk_init -v -j /home/jail/ ssh

#拷贝虚拟系统shell
[root@minglinux-01 /usr/local/src/jailkit-2.19] mkdir /home/jail/usr/sbin
[root@minglinux-01 /usr/local/src/jailkit-2.19] cp /usr/sbin/jk_lsh /home/jail/usr/sbin/jk_lsh

#在源系统创建用户
[root@minglinux-01 /usr/local/src/jailkit-2.19] useradd lisi  #123456
[root@minglinux-01 /usr/local/src/jailkit-2.19] passwd lisi
更改用户 lisi 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

#在虚拟系统创建用户
[root@minglinux-01 /usr/local/src/jailkit-2.19] jk_jailuser -m -j /home/jail/ lisi

#修改虚拟系统passwd
[root@minglinux-01 /usr/local/src/jailkit-2.19] vim /home/jail/etc/passwd
#把zhalixi那一行的/usr/sbin/jk_lsh改为/bin/bash,这样lisi才可以登录
  1 root:x:0:0:root:/root:/bin/bash
  2 lisi:x:1021:1021::/home/lisi:/bin/bash

#使用用户lisi登录到虚拟系统,查看系统信息
[lisi@minglinux-01 ~]$ ls
[lisi@minglinux-01 ~]$ ls -l /
total 0
lrwxrwxrwx 1 root root   7 Mar 14 06:14 bin -> usr/bin
drwxr-xr-x 2 root root  44 Mar 14 06:14 dev
drwxr-xr-x 2 root root 240 Mar 14 06:40 etc
drwxr-xr-x 3 root root  18 Mar 14 06:37 home
lrwxrwxrwx 1 root root   9 Mar 14 06:14 lib64 -> usr/lib64
drwxr-xr-x 7 root root  70 Mar 14 06:22 usr
[lisi@minglinux-01 ~]$ 
Display all 117 possibilities? (y or n)
!          caller     cpio       enable     function   kill       printf     select     then       until
./         case       date       esac       getopts    let        pushd      set        time       vi
:          cat        dd         eval       grep       ln         pwd        sh         times      vim
[          cd         declare    exec       gunzip     local      read       shift      touch      wait
[[         chmod      dirs       exit       gzip       logout     readarray  shopt      trap       wget
]]         command    disown     export     hash       ls         readonly   sleep      true       while
alias      compgen    do         false      help       mapfile    return     source     type       zcat
bash       complete   done       fc         history    mkdir      rm         ssh        typeset    {
bg         compopt    echo       fg         host       mktemp     rmdir      suspend    ulimit     }
bind       continue   egrep      fgrep      if         more       rsync      sync       umask      
break      coproc     elif       fi         in         mv         scp        tar        unalias                                   
builtin    cp         else       for        jobs       popd       sed        test       unset      
[lisi@minglinux-01 ~]$ ls /etc/
bashrc  host.conf  issue    ld.so.conf  nsswitch.conf  profile    resolv.conf  vimrc
group   hosts      ld.so.cache  motd        passwd     protocols  services
#虚拟系统搭建完成
#源系统(跳板机)安全设置

#1.跳板机创建authorized_keys文件并放入对应客户端机器或ssh客户端密钥,设置密钥登录
[lisi@minglinux-01 ~]$ vim ssh/authorized_keys 

#2.在跳板机里设置只允许密钥登录,即跳板机需要密钥认证登录虚拟系统
[root@minglinux-01 /home/jail] vim /etc/ssh/sshd_config 
··· 
 65 PasswordAuthentication no  #将改行该为禁止密码登录

#3.跳板机设置添加iptables规则,比如把不需要的端口或服务全部关闭

#4.跳板机设置限制登录源ip,除了192.168.162.0/24网段外其他ip都不能远程登录跳板机
[root@minglinux-01 /home/jail] vim /etc/hosts.allow 
11 sshd: 192.168.162.0/24
[root@minglinux-01 /home/jail] vim /etc/hosts.deny 
14 sshd: ALL

四、搭建简易堡垒机 - 日志审计

以下操作是需要在所有被登录机器上做的
mkdir /usr/local/records
chmod 777 !$
chmod +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'

#开启minglinux-02作为客户机,进行一些设置
##设置仅允许跳板机ip远程登录
[root@minglinux-02 ~] vim /etc/hosts.allow 
sshd: 192.168.162.130  192.168.162.1  #后面ip是为了方便windows远程连接
[root@minglinux-02 ~] vim /etc/hosts.deny 
sshd: ALL
#客户机也应该创建lisi账户来登录跳板机比较好,可以加上sudo权限
#在minglinux-02上设置日志审计
[root@minglinux-02 ~] mkdir /usr/local/records
[root@minglinux-02 ~] chmod 777 !$
chmod 777 /usr/local/records
[root@minglinux-02 ~] chmod +t !$  #加t权限防删除
chmod +t /usr/local/records
[root@minglinux-02 ~] vim /etc/profile
#加入以下内容
···
if [ ! -d  /usr/local/records/${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'
···


五、jumpserver介绍

官网www.jumpserver.org
Jumpserver是一款使用Python, Django开发的开源跳板机系统, 助力互联网企业高效 用户、资产、权限、审计 管理
Auth 统一认证
CMDB 资产管理
统一授权
日志审计
自动化运维(ansible)

六、安装jumpserver

参考http://docs.jumpserver.org/zh/docs/step_by_step.html
我记录一晚上的安装过程因为关了一次浏览器而丢失了,历史版本直接回到昨天下午了。安装过程挺长的,系统最好是干净一点,我用安装了rediis、nginx的机器安装时出现的问题很难找到答案,最后换了干净点的机器才安装成功。

image.png
#启动命令
source /opt/py3/bin/activate
cd /opt/jumpserver
./jms start all -d
cd /opt/coco
./cocod start -d

#设置开机启动
[root@minglinux-04 ~]# vim /etc/rc.local

#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
source /opt/py3/bin/activate ; cd /opt/jumpserver ; ./jms start all -d &> /dev/null

七、使用jumpserver

浏览器输入ip:8080 访问jumpserver
默认用户名是admin,密码是minglinux
点击用户管理,选择用户,点击右侧Administrator的个人信息,然后点更新,设置密码
创建用户组 运维
创建用户 ming
点击设置,默认管理用户,该用户为管理员用户,应该有sudo权限,需要在每一台客户机上创建该用户(用户名自定义,jump)
在一台linux机器上生成一个密钥对,用来作为该管理用户的密钥对
把私钥粘贴到默认密钥下面
在客户机上创建jump用户,并设置sudo权限,把刚刚生成的密钥对里面的公钥放到该客户机的jump用户家目录.ssh/authorized_keys文件里
资产管理,查看资产组,添加资产组(如,dev)
资产管理,查看资产,添加资产,填写各项信息
授权管理,系统用户,添加系统用户,该用户为我们登录所有客户机的用户
授权规则,添加规则,创建授权规则

image.png

八、用户管理

jumpserver用户用来登录jumpserver(web界面、ssh登录)
管理用户用来自动创建客户机上的系统用户、批量执行命令等操作
客户机上的系统用户,用来通过jumpserver去登录每一台客户机的用户

无标题.png

九、资产管理

十、客户端登录jumpserver

普通用户的密码以及密钥下载地址、密钥密码都会通过邮件的方式发送给用户
浏览器登录普通用户,可以查看有权限的主机,也可以在web界面下登录主机、上传和下载文件
xshell创建新的连接
ip为jumpserver的ip,端口为22
用户名为普通用户名字
设置密钥认证
连接后,出现登录页面,数据p查看所有被授权主机

输入主机前面的数字可以登录到对应的主机下面

  • 将公钥拷贝到jumpserver
image.png

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容