GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare le jail chroot di Linux

Il termine prigione chroot è stato utilizzato per la prima volta nel 1992, in un articolo di un importante ricercatore di sicurezza, Bill Cheswick, (il che è interessante se ti piacciono queste cose, puoi trovare l'articolo qui). Le prigioni Chroot hanno iniziato ad apparire nel 2003, con applicazioni come IRC e FTP. Nel 2005, Sun ha introdotto la sua tecnologia "Container" chiamata Zone, che a sua volta è stata un precursore del concetto di spazi dei nomi , che è una tecnologia di base utilizzata con i contenitori.

Nozioni di base su Chroot

Chroot consente a un amministratore di controllare l'accesso a un servizio o filesystem controllando l'esposizione all'ambiente del server sottostante. I due esempi comuni che potresti incontrare sono durante la sequenza di avvio e la "shell di emergenza" su sistemi Red Hat/CentOS/Fedora e in Secure FTP (SFTP).

Il comando si presenta così:

chroot <newroot> [[command][arguments]]

Simile a sudo comando, il chroot comando cambia l'ambiente del comando seguente. In altre parole, ti cambierà in newroot directory e rende anche quella directory la directory "di lavoro". Il command quindi viene eseguito in quella posizione, utile per operazioni come il salvataggio di un sistema che non si avvia.

A differenza di sudo , sarai "nella" directory. Questa pratica, ancora una volta, è utile se esegui l'avvio da un supporto esterno ma devi accedere a un file system o a un comando "locale" per funzionare.

L'altro uso comune di chroot consiste nel limitare un servizio o un utente utilizzando un wrapper per nascondere il resto del filesystem, limitando quindi la visualizzazione dei dati di altri utenti da parte di un utente remoto. Un'implementazione popolare che utilizza questo approccio SFTP.

Esempio

Prima di iniziare a lavorare su questo esempio, dovresti assicurarti di disporre dei backup. In questo caso, esegui il backup di /etc/ssh/sshd_config file perché apporterai modifiche a quello in particolare:

[root@showme1 ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Per ora, limiterai solo gli utenti SFTP alle loro home directory sul server. Questo requisito significa che dovrai aggiungere utenti e inserirli in un gruppo:

[root@showme1 ~]# useradd -g sftpusers -s /sbin/nologin -p nick nick

Nota che in questo modo assegnerai nick un account senza shell di accesso. Questa tecnica è sia pratica che una buona pratica di sicurezza:se sta usando solo SFTP, non dovrebbe avere i privilegi di accesso. Discuterò di fornire una shell agli utenti remoti nel prossimo articolo.

Ora devi dire a ssh servizio cosa fare quando gli utenti SFTP accedono. Apri il /etc/ssh/sshd_config file e alla fine aggiungi quanto segue:

Subsystem sftp internal-sftp

Match Group sftpusers
ForceCommand internal-sftp
ChrootDirectory /home
X11Forwarding no
AllowTcpForwarding no

È importante aggiungere queste impostazioni come un insieme separato di voci e utilizzare il Match sintassi per indicare che questa sezione solo si applica agli utenti di questo gruppo. Se hai apportato le modifiche alle voci esistenti, si applicherebbero a tutte Utenti SSH, che potrebbero interrompere l'accesso remoto.

Le righe di configurazione sono suddivise come segue:

  • Il ForceCommand rende ssh scegli la sua struttura integrata per fornire il servizio SFTP (che puoi controllare in modo indipendente).
  • ChrootDirectory dice a sshd dove limitare l'utente a.
  • Subsystem sftp internal-sftp dice a sshd per caricare il sftp interno servizio e renderlo disponibile.

Potrebbe essere necessario assicurarsi che questo Subsystem non è già definito commentando questa riga in precedenza nel file di configurazione:

# override default of no subsystems
# Subsystem sftp /usr/libexec/openssh/sftp-server

Dopo aver apportato le modifiche e controllato l'ortografia, vai avanti e salva le modifiche. Quindi, riavvia sshd :

[root@showme1 ~]# systemctl restart sshd

Testa il nuovo utente:

[skipworthy@milo ~]$ sftp nick@showme
nick@showme's password:
Connected to nick@showme.
sftp> ls
accounting   ansible   fred   jason   kenny   lisa    
nick
sftp> pwd
Remote working directory: /
sftp> exit

Spiacenti, aspetta solo un minuto:sembra che tu possa vedere anche tutte le directory degli altri utenti. Tuttavia, non puoi accedere a quelle directory:

sftp> cd fred
sftp> ls
remote readdir("/fred"): Permission denied

Puoi indirizzare l'utente in chroot alla propria home directory modificando ChrootDirectory riga nel sshd_config file come questo:

ChrootDirectory /

Questa rapida modifica fa sembrare a Nick come se fosse nella sua home directory e non sarà in grado di vedere i file di nessun altro utente:

sftp> pwd
Remote working directory: /home/nick
sftp>
sftp> exit
[skipworthy@milo ~]$ touch test.txt
[skipworthy@milo ~]$ sftp nick@showme
nick@showme's password:
Connected to nick@showme.
sftp> put test.txt
Uploading test.txt to /home/nick/test.txt
test.txt 100% 0 0.0KB/s 00:00
sftp> ls
test.txt
sftp>

Dov'è andato? Dai un'occhiata:

[root@showme1 ~]# ls /home/nick
test.txt

Nota che una chroot jail è non considerata di per sé un'adeguata restrizione di sicurezza. Sebbene impedisca a un utente di uscire da una directory con restrizioni, ci sono modi per aggirare questo problema (l'idea generale è indicata in chroot(2) pagina man, a cui dovresti dare un'occhiata se stai pensando di utilizzare questo trucco in un contesto critico per la produzione o per l'azienda.)

Conclusione (per ora)

Quindi puoi vedere quel chroot può essere uno strumento piuttosto utile. Nella parte 2, esaminerò maggiormente l'assegnazione di directory specifiche agli utenti e la fornitura di un ambiente shell a un utente remoto senza esporre il resto del server.

Nuovo per i container? Scarica Containers Primer e impara le basi dei container Linux.


Linux
  1. Come impostare o modificare il nome host del sistema in Linux

  2. Fare un tuffo più approfondito nelle prigioni chroot di Linux

  3. Come impostare o modificare il fuso orario in Linux

  4. Come configurare Chroot SFTP in Linux (consenti solo SFTP, non SSH)

  5. CentOS / RHEL:come configurare SFTP chroot jail

Come impostare o modificare il nome host su Linux

Come configurare SFTP in chroot in Linux

Come modificare o impostare la password utente in Linux

Come configurare un firewall con GUFW su Linux

Come impostare data e ora su Linux

Come abilitare sFTP in un VPS Linux?