堡垒机
目录
一、堡垒机介绍
二、搭建简易堡垒机思路
三、搭建简易堡垒机 - 安装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
image.png参考http://docs.jumpserver.org/zh/docs/step_by_step.html
我记录一晚上的安装过程因为关了一次浏览器而丢失了,历史版本直接回到昨天下午了。安装过程挺长的,系统最好是干净一点,我用安装了rediis、nginx的机器安装时出现的问题很难找到答案,最后换了干净点的机器才安装成功。
#启动命令
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
image.png浏览器输入ip:8080 访问jumpserver
默认用户名是admin,密码是minglinux
点击用户管理,选择用户,点击右侧Administrator的个人信息,然后点更新,设置密码
创建用户组 运维
创建用户 ming
点击设置,默认管理用户,该用户为管理员用户,应该有sudo权限,需要在每一台客户机上创建该用户(用户名自定义,jump)
在一台linux机器上生成一个密钥对,用来作为该管理用户的密钥对
把私钥粘贴到默认密钥下面
在客户机上创建jump用户,并设置sudo权限,把刚刚生成的密钥对里面的公钥放到该客户机的jump用户家目录.ssh/authorized_keys文件里
资产管理,查看资产组,添加资产组(如,dev)
资产管理,查看资产,添加资产,填写各项信息
授权管理,系统用户,添加系统用户,该用户为我们登录所有客户机的用户
授权规则,添加规则,创建授权规则
八、用户管理
无标题.pngjumpserver用户用来登录jumpserver(web界面、ssh登录)
管理用户用来自动创建客户机上的系统用户、批量执行命令等操作
客户机上的系统用户,用来通过jumpserver去登录每一台客户机的用户
九、资产管理
十、客户端登录jumpserver
普通用户的密码以及密钥下载地址、密钥密码都会通过邮件的方式发送给用户
浏览器登录普通用户,可以查看有权限的主机,也可以在web界面下登录主机、上传和下载文件
xshell创建新的连接
ip为jumpserver的ip,端口为22
用户名为普通用户名字
设置密钥认证
连接后,出现登录页面,数据p查看所有被授权主机
输入主机前面的数字可以登录到对应的主机下面
- 将公钥拷贝到jumpserver
image.png