堡垒机介绍
- 在一个特定网络环境下,为了保障网络和数据不受外界入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每>一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。
- 我们又把堡垒机叫做跳板机,简易的跳板机功能简单,主要核心功能是远程登录服务器和日志审计。
- 比较优秀的开源软件jumpserver,认证、授权、审计、自动化、资产管理。
- 商业堡垒机:齐治, Citrix XenApp
设计堡垒机思路
- 跳板机安全设置(iptables端口限制、登录限制sshd_config)
堡垒机只开通需要的端口保证安全;
限制sshd登陆的帐号的权限,使用特定的帐号登陆,设置只能用密钥认证等; - 用户、命令权限限制(jailkit) http://blog.chinaunix.net/uid-28310119-id-3503318.html
- 客户机器日志审计
http://www.68idc.cn/help/server/linux/2014042190951.html
搭建简易堡垒机 – jailkit chroot
<root@linux0 /usr/local/src>$ wget https://olivier.sessink.nl/jailkit/jailkit-2.19.tar.bz2
<root@linux0 /usr/local/src>$ tar jxvf jailkit-2.19.tar.bz2
<root@linux0 /usr/local/src>$ cd jailkit-2.19
<root@linux0 /usr/local/src/jailkit-2.19>$ ./configure && make && make install
<root@linux0 /usr/local/src/jailkit-2.19>$ mkdir /home/jail #限制用户的根目录;
<root@linux0 /usr/local/src/jailkit-2.19>$ jk_init -v -j /home/jail/ basicshell #初始化一些命令给限制用户使用;
<root@linux0 /usr/local/src/jailkit-2.19>$ jk_init -v -j /home/jail/ editors
<root@linux0 /usr/local/src/jailkit-2.19>$ jk_init -v -j /home/jail/ netutils
<root@linux0 /usr/local/src/jailkit-2.19>$ jk_init -v -j /home/jail/ ssh
<root@linux0 /usr/local/src/jailkit-2.19>$ mkdir /home/jail/usr/sbin
<root@linux0 /usr/local/src/jailkit-2.19>$ cp /usr/sbin/jk_lsh /home/jail/usr/sbin/jk_lsh #使用另外一个shell;
<root@linux0 /usr/local/src/jailkit-2.19>$ useradd zhangsan #添加使用跳板机的用户;
<root@linux0 /usr/local/src/jailkit-2.19>$ passwd zhangsan
<root@linux0 /usr/local/src/jailkit-2.19>$ jk_jailuser -m -j /home/jail zhangsan #对应的限制用户;
<root@linux0 /usr/local/src/jailkit-2.19>$ vim /home/jail/etc/passwd #修改shell;
#把zhangsan那一行的/usr/sbin/jk_lsh改为/bin/bash;
- end
- end
- end
TanydeMacBook-Air:~ tanytan$ ssh zhangsan@192.168.87.149 #登陆限制用户;
zhangsan@192.168.87.149's password:
bash: /usr/bin/id: No such file or directory
bash: /usr/bin/id: No such file or directory
[zhangsan@linux0 ~]$ ls -la #用户根目录内容;
total 12
drwx------ 2 zhangsan zhangsan 62 Jan 16 04:20 .
drwxr-xr-x 3 root root 22 Jan 16 04:20 ..
-rw-r--r-- 1 zhangsan zhangsan 18 Oct 30 2018 .bash_logout
-rw-r--r-- 1 zhangsan zhangsan 193 Oct 30 2018 .bash_profile
-rw-r--r-- 1 zhangsan zhangsan 231 Oct 30 2018 .bashrc
[zhangsan@linux0 ~]$ ls -la / #系统的根目录只有一部份;
total 0
drwxr-xr-x 6 root root 75 Jan 16 04:20 .
drwxr-xr-x 6 root root 75 Jan 16 04:20 ..
lrwxrwxrwx 1 root root 7 Jan 16 04:17 bin -> usr/bin
drwxr-xr-x 2 root root 44 Jan 16 04:18 dev
drwxr-xr-x 2 root root 240 Jan 16 04:21 etc
drwxr-xr-x 3 root root 22 Jan 16 04:20 home
lrwxrwxrwx 1 root root 9 Jan 16 04:17 lib64 -> usr/lib64
drwxr-xr-x 7 root root 70 Jan 16 04:19 usr
[zhangsan@linux0 ~]$
Display all 117 possibilities? (y or n) #只有一部份命令;
! case dd exec gzip ls return ssh ulimit
./ cat declare exit hash mapfile rm suspend umask
: cd dirs export help mkdir rmdir sync unalias
[ chmod disown false history mktemp rsync tar unset
[[ command do fc host more scp test until
]] compgen done fg if mv sed then vi
alias complete echo fgrep in popd select time vim
bash compopt egrep fi jobs printf set times wait
bg continue elif for kill pushd sh touch wget
bind coproc else function let pwd shift trap while
break cp enable getopts ln read shopt true zcat
builtin cpio esac grep local readarray sleep type {
caller date eval gunzip logout readonly source typeset }
[zhangsan@linux0 ~]$
[zhangsan@linux0 ~]$ ls /etc
bashrc host.conf issue ld.so.conf nsswitch.conf profile resolv.conf vimrc
group hosts ld.so.cache motd passwd protocols services
- end
- end
- end
搭建简易堡垒机 – 日志审计
以下操作是需要在所有被登录机器上做的
1.mkdir -p /usr/local/domob/records/ #新建命令的保存目录;
chmod 777 /usr/local/domob/records/ #让所有用户都可以读写;
chmod +t /usr/local/domob/records/ #t权限,只能让本用户删除文件;
2.vi /etc/profile 在最后添加下面的代码
if [ ! -d /usr/local/domob/records/${LOGNAME} ] #生成子目录,保存命令记录,以用户名名字生成;
then
mkdir -p /usr/local/domob/records/${LOGNAME}
chmod 300 /usr/local/domob/records/${LOGNAME} #修改权限只能写入;
fi
export HISTORY_FILE="/usr/local/domob/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' #使用date命令输出时间,文本和变量;$()可输出命令的结果;注意read x cmd的意思,可看以下链接;另外就是各种引号,大括号和分号的使用;
- end
- end
- end
这个命令你看得懂么
http://blog.lishiming.net/?p=484
hosts.allow & hosts.deny
- 使用这两个文件允许或禁止ssh操作
- 如下配置
/etc/hosts.allow
sshd: 192.168.133.0/24 1.1.1.1 2.2.2.2 #空格分隔可连接IP;
/etc/hosts.deny
sshd: ALL #deny其他;