GNU/Linux >> Znalost Linux >  >> Linux

Jak omezit přístup SSH pro uživatele pomocí LShell (Limited Shell)

LShell nebo Limited Shell je napsán v pythonu pro omezení uživatele pro konkrétní sadu příkazů a adresářů. Můžete vytvořit uživatelské prostředí s omezeným přístupem, můžete také povolit zakázání příkazů přes SSH přístup.

Instalovat Limited Shell

Pomocí následujícího příkazu nainstalujte balíček LShell na váš systém založený na Debianu. V případě jiného operačního systému si musíte na Googlu vyhledat balíček lshell pro vaši distribuci.

$ sudo apt-get install lshell

Přepnout uživatele na LShell

Nyní nastavte LShell jako výchozí prostředí pro uživatele, pro které jste vyžadováni. Například pro změnu shellu uživatele sarah.

$ sudo chsh sarah

Changing the login shell for sarah
Enter the new value, or press ENTER for the default
	Login Shell [/bin/lshell]: /usr/bin/lshell 

Můžete také nastavit lshell jako výchozí shell pro uživatele během vytváření uživatelského účtu, jak je uvedeno níže.

$ sudo adduser --shell /usr/bin/lshell raj

Nakonfigurujte LShell

Nyní začněte s konfigurací lshell. Upravte konfigurační soubor lshell /etc/lshell.conf . V konfiguračním souboru jsou 4 základní sekce.

  • [globální] : V této sekci definujeme nastavení, která platí globálně. Například protokoly.
  • [výchozí] : V této sekci nastavíme výchozí hodnoty, které aplikují všechny uživatele a skupiny. Nastavení této sekce lze přepsat nastavením specifickým pro uživatele a skupinu.
  • [USERNAME] : V této sekci specifikujeme uživatelská specifická nastavení. Nastavení této sekce platí pouze pro uživatele
  • [grp:GROUPNAME] : V této části specifikujeme nastavení specifická pro skupinu. Nastavení této sekce platí pro všechny uživatele skupiny

A [výchozí] profil je použit pro všechny uživatele používající lshell. Můžete vytvořit [uživatelské jméno] sekce nebo skupina [grp:groupname] k přizpůsobení specifických preferencí uživatelů a skupin.

Pořadí priority je Uživatel>> Skupina>> Výchozí . Uživatelská sekce má nejvyšší prioritu a Výchozí má nejnižší prioritu.

[global]
logpath         : /var/log/lshell/
loglevel        : 2

[default]
allowed         : ['ls','pwd','cd','cat','cp']
forbidden       : [';', '&', '|','`','>','<', '$(', '${']
sudo_commands   : ['ls', 'more']
warning_counter : 2
aliases         : {'ll':'ls -l', 'vim':'rvim'}
prompt          : "%[email protected]%h"
timer           : 0
path            : ['/home', '/usr']
env_path        : ':/usr/bin/usr/local/bin'
env_vars        : {'foo':1, 'bar':'helloworld'}
scp             : 1 # or 0
sftp            : 1 # or 0
overssh         : ['rsync','ls']
strict          : 0
history_file    : "/home/%u/.lshell_history"

[grp:wheel]
warning_counter : 5
overssh         : - ['ls']

[raj]
allowed         : 'all' - ['su','rm','mv']
path            : ['/etc', '/usr'] - ['/usr/local']
home_path       : '/home/raj'

[sarah]
allowed         : + ['ping'] - ['ls']
path            : - ['/usr/local']
strict          : 1
scpforce        : '/home/sarah/uploads/'

Například uživatel „rja“ a uživatel „sarah“ oba patří do skupiny UNIX „wheel“:
Skupinové kolo:

  • Uživatelé skupiny kol mají varovné počítadlo nastaveno na 5
  • Uživatelé skupiny kol nemají povolen příkaz „ls“.

Uživatelský raj:

  • Má přístup k /etc a /var, ale ne k /usr/local
  • Má přístup ke všem příkazům ve své PATH kromě příkazů – su, rm, vm
  • má počítadlo varování nastaveno na 5 [výchozí]
  • má svou domovskou cestu nastavenou na „/home/raj“

Uživatelka sarah:

  • Má přístup k /home a /usr, ale ne k /usr/local
  • je povolen výchozí příkaz ‚ping‘, ale ne ‚ls‘
  • přísnost je nastavena na 1 (nesmí zadat neznámý příkaz)
Název možnosti Vysvětlení
cesta protokolu adresář protokolu (výchozí /var/log/lshell/ )
úroveň protokolu nastavit úroveň protokolu na 0, 1, 2, 3 nebo 4 (0:žádné protokoly, 1:nejméně podrobné, 4:protokolovat všechny příkazy)
název souboru protokolu nakonfigurujte název souboru protokolu (výchozí je %u, tj. uživatelské jméno.log)
povoleno seznam povolených příkazů nebo „all“ pro povolení všech příkazů v uživatelské PATH
zakázané seznam zakázaných znaků nebo příkazů – zakázat vim, protože umožňuje uniknout lshell
příkazy sudo seznam povolených příkazů k použití se sudo(8)
warning_counter počet varování, když uživatel zadá zakázanou hodnotu před opuštěním prostředí lshell, deaktivuje se nastavením na -1.
aliasy seznam aliasů příkazů (podobně jako bashova direktiva aliasů)
úvod úvodní text k tisku (při zadávání lshell)
výzva nakonfigurujte svůj promt pomocí %u nebo %h (výchozí:uživatelské jméno)
prompt_short nastavit výzvu k řazení aktuální aktualizaci adresáře (výchozí:0)
časovač hodnota v sekundách pro časovač relace
cesta seznam cest k omezení uživatele „geograficky“
domovská_cesta nastavte domovskou složku vašeho uživatele
env_path nastavte proměnnou prostředí $PATH uživatele
allowed_cmd_path seznam cest; všechny spustitelné soubory v této cestě budou povoleny
env_vars přidat proměnné prostředí
scp povolit nebo zakázat použití scp (nastaveno na 1 nebo 0)
scp_upload zakázat nahrávání scp
scp_download zakázat stahování scp
sftp povolit nebo zakázat použití sftp (nastaveno na 1 nebo 0)
overssh seznam příkazů, které je možné provést přes ssh
přísné přísnost protokolování. 1 pro jakýkoli neznámý příkaz je považován za zakázaný a 0 za neznámý
scpforce vynutit soubory zasílané přes scp do konkrétního adresáře
history_size maximální velikost souboru historie
soubor_historie nastavit název souboru historie (výchozí je /home/%u/.lhistory)
login_script definujte skript pro spuštění při přihlášení uživatele

Linux
  1. Jak mohu vytvořit uživatele s přístupem pouze pro čtení ke všem souborům? (tj. root bez oprávnění k zápisu)

  2. Jak omezit uživatele SSH, aby povolil pouze tunelování SSH?

  3. ssh tunelování pouze přístup

  1. Linux – Jak omezit přístup k internetu pro konkrétního uživatele v síti LAN pomocí Iptables v Linuxu?

  2. Jak vytvořit nového uživatele s přístupem Ssh?

  3. Povolit přístup k shellu SSH, ale zakázat přístup SFTP

  1. Jak vytvořit uživatele SFTP bez Shell Access na CentOS 8

  2. Jak poskytnout ssh přístup uživateli v Ubuntu

  3. Jak omezit uživatele SSH na předdefinovanou sadu příkazů po přihlášení?