当前位置: 首页 > 工具软件 > lshell > 使用案例 >

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

程成天
2023-12-01

堡垒机的基本功能:

多用户权限管理

限制登录用户所处的目录

限制登录用户有使用的命令

记录登录用户执行的命令

可以限制用户登录到堡垒机后只能使用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[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[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,则禁止计数。

 类似资料: