Jak ograniczyć dostęp do SSH dla użytkownika za pomocą Lshell (Limited Shell)

Jak ograniczyć dostęp do SSH dla użytkownika za pomocą Lshell (Limited Shell)

Lshell lub Limited Shell jest napisane w Pythonie w celu ograniczenia użytkownika dla określonego zestawu poleceń i katalogów. Możesz tworzyć środowisko użytkownika z ograniczonym dostępem, możesz również włączyć polecenia wyłączające się z dostępem do SSH.

Zainstaluj ograniczoną powłokę

Użyj następującego polecenia, aby zainstalować pakiet LSHell w systemie opartym na debian. W przypadku innego systemu operacyjnego musisz do Google, aby uzyskać pakiet LSHELL, aby uzyskać dystrybucję.

$ sudo apt-get instaluj lshell 

Przełącz użytkownika na Lshell

Teraz ustaw Lshell jako domyślną powłokę dla użytkowników, dla których jesteś wymagany. Na przykład, aby zmienić powłokę użytkownika Sarah.

$ sudo chsh Sarah Zmiana powłoki logowania dla Sarah Wprowadź nową wartość lub naciśnij Enter, aby uzyskać domyślną powłokę logowania [/bin/lshell]:/usr/bin/lshell  

Możesz także ustawić LShell jako domyślną powłokę dla użytkownika podczas tworzenia konta użytkownika jako następujące.

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

Skonfiguruj Lshell

Teraz zacznij od konfiguracji Lshell. Edytuj plik konfiguracyjny Lshell /etc/lshell.conf. Istnieją 4 podstawowe sekcje w pliku konfiguracyjnym.

  • [globalny]: W tej sekcji definiujemy ustawienia, które stosowały się na całym świecie. Na przykład dzienniki.
  • [domyślny] : W tej sekcji ustawiamy wartości domyślne, które zastosowały wszystkich użytkowników i grupy. Ustawienia tej sekcji można zastąpić ustawieniami dla użytkownika i grupy.
  • [NAZWA UŻYTKOWNIKA] : W tej sekcji określamy ustawienia specyficzne dla użytkownika. Niniejsze ustawienia sekcji dotyczyły tylko użytkownika
  • [GRP: nazwa grupy]: W tej sekcji określamy ustawienia grupy. Niniejsze ustawienia sekcji zastosowane dla wszystkich użytkowników grupy

A [domyślny] Profil jest stosowany dla wszystkich użytkowników korzystających z LSHELL. Możesz stworzyć [nazwa użytkownika] sekcja lub grupa [GRP: GroupName] Sekcja w celu dostosowania użytkowników i grupowych preferencji.

Priorytetem jest Użytkownik >> Grupa >> Domyślny. Sekcja użytkownika ma najwyższy priorytet, a domyślnie ma najniższy priorytet.

[światowy] logpath:/var/log/lshell/loglevel: 2 [domyślny] dozwolone: ​​[„ls”, „pwd”, „cd”, „cat”, „cp”] zabronione: [”; ',' & ',' | ',",'> ',', '<', '$(', '$'] 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] ostrzeżenie_kountera: 5 Orssh: - [„ls”] [Raj] dozwolone: ​​„all” - ['su', 'rm', 'mv'] ścieżka: ['/etc', '/usr'] - ['/usr/local'] home_path: '/home/raj' [Sarah] dozwolone: ​​+ ['ping'] - ['ls'] ścieżka: - ['/usr/local'] surowe: 1 scpforce: '/home/sarah/uploads/' 

Na przykład użytkownik „RJA” i użytkownika „Sarah” należą do grupy „Wheel”:
Koło grupy:

  • Użytkownicy Grupy Wheel ma zestaw ostrzegawczy na 5
  • Użytkownicy grupy kół jest niedozwolone polecenie „LS”.

Użytkownik Raj:

  • Może uzyskać dostęp /etc i /var, ale nie /usr /lokalny
  • Może uzyskać dostęp do wszystkich poleceń w jego poleceniach Path Execpt - Su, Rm, VM
  • ma licznik ostrzegawczy ustawiony na 5 [domyślnie]
  • ma swoją domową ścieżkę na „/Home/Raj”

Użytkownik Sarah:

  • Może uzyskać dostęp /dom i /usr, ale nie /usr /lokalny
  • jest dozwolone domyślne polecenie „ping”, ale nie „ls”
  • Surowość jest ustawiona na 1 (nie wolno mu pisać nieznanego polecenia)
Nazwa opcjiWyjaśnienie
logpath Katalog dziennika (domyślny/var/log/lshell/)
Loglevel Ustaw poziom dziennika na 0, 1, 2, 3 lub 4 (0: Brak dzienników, 1: najmniej sprawdzony, 4: Zaloguj wszystkie polecenia)
LogFileName Skonfiguruj nazwę pliku dziennika (domyślnie to %u i.mi. nazwa użytkownika.dziennik)
dozwolony lista dozwolonych poleceń lub „wszystkie”, aby umożliwić wszystkie polecenia na ścieżce użytkownika
zabroniony Lista zakazanego charakteru lub poleceń - zaprzecz vimowi, ponieważ pozwala uciec
sudo_commands lista dozwolonych polecenia do użycia z sudo (8)
ostrzeżenie_kounter Liczba ostrzeżeń, gdy użytkownik wprowadza zakazaną wartość przed wyjściem z Lshell, ustawiona na -1, aby wyłączyć.
skróty Lista aliasów poleceń (podobna do dyrektywy Alias ​​Bash)
Wprowadzenie WPROWADZENIE Tekst do wydrukowania (podczas wchodzenia do Lshell)
podpowiedź Skonfiguruj PROM, używając %u lub %h (domyślnie: nazwa użytkownika)
monit_short Ustaw aktualizację prądu SORT Current Directory (domyślnie: 0)
regulator czasowy wartość w sekundach dla czasu sesji
ścieżka lista ścieżki do ograniczenia użytkownika „geograficznego”
home_path Ustaw folder domowy swojego użytkownika
env_path Ustaw ścieżkę zmienną środowiskową $
dozwolony_cmd_path lista ścieżki; Wszystkie pliki wykonywalne w tej ścieżce będą dozwolone
env_vars Dodaj zmienne środowiskowe
SCP Zezwalaj lub zabraniaj użycia SCP (ustawiony na 1 lub 0)
scp_upload Zakaz przesłania SCP
scp_download Zakaz pobierania SCP
sftp Pozwól zabranianie użycia SFTP (ustawione na 1 lub 0)
Orssh Lista poleceń pozwalająca wykonywać SSH
ścisły rejestrowanie surowości. 1 Dla każdego nieznanego polecenia jest uważane za zabronione i 0 za nieznane
scpforce Force pliki wysłane przez SCP do konkretnego katalogu
History_Size Plik historii maksymalny rozmiar
History_file Ustaw nazwę pliku historii (domyślnie jest/home/%u/.lhistory)
login_script Zdefiniuj skrypt do uruchomienia przy logowaniu użytkownika