用lshell+脚本实现堡垒机(跳转机)功能

简介: 堡垒机的基本功能: 多用户权限管理 限制登录用户所处的目录 限制登录用户有使用的命令 记录登录用户执行的命令

堡垒机的基本功能:
多用户权限管理
限制登录用户所处的目录
限制登录用户有使用的命令
记录登录用户执行的命令

可以限制用户登录到堡垒机后只能使用ssh和passwd两个命令,根据实际情况进行限制。
ssh要远程到要实际登录的服务器上。
passwd修改自己用户的密码。

可以通过编写一些脚本来替换掉原来的ssh命令文件,达到一些自己想要的功能。
比如执行ssh命令需要一个密码才能执行;判断一下要登录的IP地址是否存在。

1、安装系统
安装一个最简系统纯文本系统,多余的东西都不要安装,后面需要什么再安装什么。
安装完,还可以禁用或删除各种不需要的服务、文件。
开防火墙
开SELinux

2、分配账号

根据不同的岗位创建不同用户组、不同的用户,每个人一个账号。
创建三个用户组:
admin:运维人员
dba:数据库人员
web:开发
#groupadd admin
#groupadd dba
#groupadd web

再把用户分别分配到三个用户组中:
#useradd admin1 -g admin
#useradd admin2 -g admin
#useradd admin2 -g admin

3、安装lshell工具
gif主页:https://github.com/ghantoos/lshell

如果堡垒机没有联网,可以从别的地方下载安装文件,再复制过来。

git clone https://github.com/ghantoos/lshell.git
cd lshell
python setup.py install –no-compile –install-scripts=/usr/bin/

如果没报错,即安装成功。

4、配置conf
配置好这个文件,就能达到很好的效果。
vim /etc/lshell.conf

1
2
3
4
5
6
7
8
[root] #开放root用户
allowed : 'all' #允许执行所有命令
path : [ '/' ] #允许登录所有目录
 
[grp:dba] #设置一个组的权限
allowed : 'all' - [ 'su' ] - 表示排除,除了su不能执行,其它都可以
path : [ '/etc' , '/usr' ] - [ '/usr/local' ] #排除/usr/local不能进入
home_path : '/home/oracle' #用户登录后所在的目录

4、改变用户默认shell,使用lshell作为默认shell:
# cp /etc/lshell.conf /usr/local/etc/
# chsh -s /usr/bin/lshell user_name 这个命令只能修改某个用户的,可以写个脚本来批量修改

5、开启日志
为了记录用户日志,需要创建相关目录
# addgroup –system lshell
# mkdir /var/log/lshell
# chown :lshell /var/log/lshell
# chmod 770 /var/log/lshell

然后增加用户到lshell group:
# usermod -aG lshell user_name

/etc/lshell.conf配置详解:
四个小节:
[global] -> lshell的系统配置 (only 1)

[default] -> lshell的默认用户配置 (only 1)

[foo] -> 指定UNIX的系统用户”foo”的特别的配置

[grp:bar] -> 指定UNIX用户组”bar”的特别的配置

当加载参数的时候遵循以下顺序:
1- User configuration
2- Group configuration
3- Default configuration

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
[ global ]
 
#日志路径 (默认是/ var /log/lshell/)
logpath
 
#日志记录级别
loglevel
0, 1, 2, 3 or 4 (0: no logs -> 4: logs everything)
 
#日志名字
logfilename
- 如果设置成syslog关键字,则表示日志记录到syslog中
- 如果设置成一个文件名, e.g. %u-%y%m%d (i.e foo-20091009.log):
%u -> username
%d -> day [1..31]
%m -> month [1..12]
%y -> year [00..99]
%h -> time [00:00..23:59]
 
#这个日志会记录登录、退出时间。要记录日志还需要做设置,后面有详细说明
 
syslogname
如果你打算记录进syslog中,则要设置你的syslog名称,默认是lshell
 
[ default ] 或者 [username] 或者 [grp:groupname] 三个小节可用的配置项
 
#命令别名
aliases
 
#一个允许执行的命令列表,或者设置成all,则允许在user PATH中的所有命令可用
allowed
 
#一个路径组成的列表,所有在路径中的可执行文件都被允许
allowed_cmd_path
 
#更新用户的环境变量PATH
env_path
 
#设置用户的环境变量
env_vars
 
#一个非法字符或者命令组成的列表
forbidden
 
#history的文件名
history_file
%u -> username (e.g. '/home/%u/.lhistory' )
 
#history文件记录的maximum size (in lines)
history_size
 
#登录后所处目录
home_path (deprecated)
默认是 $HOME ,不赞成使用,下一版会取消
%u -> username (e.g. '/home/%u' )
 
#在登陆时打印出入门信息
intro
 
#用户登陆时执行的脚本
login_script
 
#指定用户的密码 ( default is empty )
passwd
 
#限制能访问的目录
path
严格限制用户可以去的地理位置,可以使用通配符list of path to restrict the user geographically. It is possible to use wildcards (e.g. '/var/log/ap*' ).
 
#设置提示符
prompt
设置用户的prompt格式( default : username)
%u -> username
%h -> hostname
 
prompt_short
set sort prompt current directory update - set to 1 or 0 overssh list of command allowed to execute
 
#允许远程ssh直接执行的命令。默认是不能执行
over ssh (e.g. rsync, rdiff-backup, scp, etc.)
 
#允许或者禁止使用scp连接 - set to 1 or 0
scp
 
#强制文件通过scp传输到一个特定目录
scpforce
 
#设置成0,则禁止scp下载( default is 1)
scp_download
 
#设置成0,则禁止scp上传( default is 1)
scp_upload
 
#允许或者禁止使用sftp连接 - set to 1 or 0
sftp
 
#一组命令组成的列表,用户可以执行sudo
sudo_commands
 
会话维持的秒数
timer
 
strict
日志严格记录,如果设置成1,任何unknow的命令都被禁止,并且降低用户警告数,如果设置成0,unknow命令只是警告。 (i.e. *** unknown synthax)
 
#警告次数
warning_counter
如果用户达到该警告次数,则会被强制退出lshell,设置成-1,则禁止计数。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
运维 安全 数据安全/隐私保护
堡垒机的功能之解决账号密码管理不规范问题
随着企业IT系统规模的不断扩大,业务范围的快速扩张,运维工作量也随之增多,企业账号密码的安全性越来越无法得到保障。作为IT系统看门人的行云管家运维堡垒机,如何解决企业运维账号密码管理不规范的问题呢? 企业运维存在账号密码管理不规范问题 当前企业的支撑系统中存在大量主机系统、应用系统。
2047 0
|
6月前
|
运维 安全 Linux
实现远程访问Linux堡垒机:通过JumpServer系统进行安全的服务器管理
实现远程访问Linux堡垒机:通过JumpServer系统进行安全的服务器管理
|
9月前
|
运维 安全 Linux
Jumpserver堡垒机部署和基本使用
Jumpserver堡垒机部署和基本使用
600 2
|
1月前
|
运维 安全 Linux
如何在Linux部署JumpServer堡垒机并实现远程访问本地服务
如何在Linux部署JumpServer堡垒机并实现远程访问本地服务
|
3月前
|
运维 安全 Linux
开源堡垒机JumpServer本地安装并配置公网访问地址
开源堡垒机JumpServer本地安装并配置公网访问地址
113 0
|
4月前
|
运维 安全 Linux
Linux JumpServer 堡垒机远程访问
Linux JumpServer 堡垒机远程访问
|
8月前
|
网络协议 NoSQL 关系型数据库
jumpserver堡垒机
jumpserver堡垒机
|
10月前
|
网络安全 数据安全/隐私保护
【JumpServer-初识篇】一键搭建JumpServer堡垒机、对接server服务器主机(下)
【JumpServer-初识篇】一键搭建JumpServer堡垒机、对接server服务器主机(下)
298 0
|
10月前
|
运维 Kubernetes 监控
【JumpServer-初识篇】一键搭建JumpServer堡垒机、对接server服务器主机(上)
【JumpServer-初识篇】一键搭建JumpServer堡垒机、对接server服务器主机
487 0
|
缓存 数据安全/隐私保护
JumpServer堡垒机(二)
JumpServer堡垒机(二)
206 0
JumpServer堡垒机(二)