Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Tutorial di chroot SSH/SFTP (Debian Etch)

Questo tutorial descrive due modi come dare agli utenti accesso SSH chroot. Con questa configurazione, si può dare agli utenti accesso alla shell senza dover temere che riescono a vedere l’intero sistema. Gli utenti saranno essere imprigionati in una directory specifica che non saranno in grado di rompere su. Gli utenti saranno anche in grado di utilizzare SFTP nelle loro prigioni di chroot.

Questo documento viene fornito senza garanzia di alcun tipo! Voglio dire che questo non è l’unico modo di impostazione di un tale sistema. Ci sono molti modi per raggiungere questo obiettivo, ma questo è il modo di che prendere. Io non rilasciano alcuna garanzia che questo funziona per voi!

 

1 Nota preliminare

Questa configurazione si basa su un sistema Debian Etch (Debian 4.0).

Il primo modo per impostare la pagina di chroot SSH è a mano e molto simile al metodo illustrato in questa esercitazione per Debian Sarge: http://www.howtoforge.com/chrooted_ssh_howto_debianIl chroot SSH verrà installato in modo tale che utilizzerà ancora i file di configurazione del pacchetto Debian OpenSSH standard che si trovano in/etc/ssh /, e sarete in grado di utilizzare il standard OpenSSH Debian init script /etc/init.d/sshNon è pertanto necessario creare il proprio file di configurazione e script di init.

Il secondo modo consiste nell’utilizzare lo script di make_chroot_jail.sh da http://www.fuschlberger.net/programs/ssh-scp-sftp-chroot-jail/Questa configurazione è diversa da quello primo in quanto non abbiamo bisogno di ricompilare OpenSSH. Invece di/bin/sh o/bin/bash, gli utenti di chroot utilizzano /bin/chroot-shell che utilizza i comandi sudo e chroot chroot gli utenti. Questo metodo è diverso in quanto gli utenti non hanno un punto in loro homedirs in/etc/passwd (pertanto non può essere utilizzato da pannelli di controllo quali ISPConfig, che non è un problema con il primo metodo). Si prega di dare un’occhiata a http://www.fuschlberger.net/programs/ssh-scp-sftp-chroot-jail/ per vedere cosa questo script può fare per voi e che cosa non.

Si dovrebbe decidere per l’andata – si prega di non utilizzare entrambi i modi contemporaneamente!

 

2 primo metodo (a mano)

2.1 installare OpenSSH il chroot

Prima installiamo alcuni prerequisiti:

CD/tmp
installare apt-get libpam0g-dev openssl libcrypto + +-dev libssl0.9.7 libssl-dev ssh bzip2 build-essential

Quindi scarichiamo i sorgenti di OpenSSH con patch, e abbiamo configurarli con /usr/usr come directory per i file eseguibili di SSH, con /etc/ssh come la directory dove il chroot SSH andrà a cercare i file di configurazione, e permettiamo anche PAM autenticazione:

wget http://chrootssh.sourceforge.net/download/openssh-4.5p1-chroot.tar.bz2
tar xvfj openssh-4.5p1-chroot.tar.bz2
CD openssh-4.5p1-chroot
. / configure–exec-prefix = / usr – sysconfdir = / etc/ssh–con-pam
fare
fare installare

 

2.2 creare l’ambiente Chroot

Successivamente creare un ambiente chroot sotto /home/chrootQuesta è la directory in cui tutti gli utenti di chroot SSH saranno ottenere imprigionati in, cioè non sarà in grado di vedere qualsiasi file o directory di fuori /home/chroot.

Devo creare alcune directory in /home/chroot, e devo copiare alcuni file binari come/bin/bash/bin/ls, ecc., nonché le librerie di cui questi binari dipendono nell’ambiente chroot modo che siano disponibili a qualsiasi utente di chroot.

mkdir -p/home/chroot/home /
CD/home/chroot
mkdir -p usr/lib/openssh
mkdir ecc
mkdir etc/pam.d/
mkdir bin
mkdir lib
mkdir usr/bin
mkdir dev
mknod dev/null: c 1 3
mknod dev/zero c 1 5

chmod 666 dev/null
chmod 666 dev/zero

Ora che abbiamo creato le directory necessarie, ci accingiamo a copiare alcuni file binari e tutte le librerie da cui dipendono l’ambiente chroot. Questo è un Estratto di uno script che ho trovato su http://mail.incredimail.com/howto/openssh/create_chroot_env che fa questo. Ho modificato un po ‘:

vi /usr/local/sbin/create_chroot_env
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

APPS="/bin/sh /bin/bash /bin/cp /bin/ls /bin/mkdir /bin/mv /bin/pwd /bin/rm /bin/rmdir /usr/bin/id /usr/bin/ssh /bin/ping /usr/bin/dircolors /usr/bin/vi /usr/bin/sftp /usr/lib/openssh/sftp-server"
for prog in $APPS;  do
        mkdir -p ./`dirname $prog` > /dev/null 2>&1
        cp $prog ./$prog

        # obtain a list of related libraries
        ldd $prog > /dev/null
        if [ "$?" = 0 ] ; then
                LIBS=`ldd $prog | awk '{ print $3 }'`
                for l in $LIBS; do
                        mkdir -p ./`dirname $l` > /dev/null 2>&1
                        cp $l ./$l  > /dev/null 2>&1
                done
        fi
done

(Se si desidera rendere più programmi disponibili agli utenti chroot, basta aggiungere questi programmi per la linea di applicazioni ).

Ora abbiamo rendere lo script eseguibile e lanciarlo:

chmod 700 /usr/local/sbin/create_chroot_env
create_chroot_env

Avanti che dobbiamo copiare alcuni file aggiuntivi e librerie per la gabbia chroot:

cp /lib/libnss_compat.so.2 /lib/libnsl.so.1 /lib/libnss_files.so.2 /lib/ld-linux.so.2 /lib/libcap.so.1 /lib/libnss_dns.so.2 ./lib/

cp/etc/hosts ecc /
cp /etc/resolv.conf ecc /
cp /etc/pam.d/* etc/pam.d/
CP – r/lib/protezione lib /
CP – r/etc/protezione ecc /
cp /etc/login.defs ecc /

cp /usr/lib/libgssapi_krb5.so.2 usr/lib /
cp /usr/lib/libkrb5.so.3 usr/lib /
cp /usr/lib/libk5crypto.so.3 usr/lib /
lib /lib/libcom_err.so.2 CP /
cp /usr/lib/libkrb5support.so.0 usr/lib /

Quindi facciamo questo:

echo ‘ #! / bin/bash ‘ > usr/bin/gruppi
echo “id -Gn” >> usr/bin/gruppi
toccare etc/passwd
grep/etc/passwd -e “^ radice” > etc/passwd

È necessario copiare anche la linea del gruppo in cui si creerà nuovi utenti da/etc/group per /home/chroot/etc/groupIn questo tutorial creeremo gli utenti nel gruppo utenti, così facciamo questo:

grep /etc/group -e "^root" -e "^users" > etc/group

e riavviare OpenSSH:

/etc/init.d/ssh restart

 

2.3 creare un utente di chroot

Anche con il chroot SSH che abbiamo appena installato è possibile accedere senza essere chroot (che ha un senso se Esegui il login come root, ad esempio). Ora, come il chroot SSH decide quale da chroot e chi non? Che è facile: il chroot SSH consente di cercare l’utente che sta cercando di fare il login in/etc/passwdSe la directory home dell’utente in/etc/passwd è un. (dot) in esso, quindi l’utente sta sotto chroot.


Esempio (da/etc/passwd):

user_a:x:2002:100:User A:/home/user_a:/bin/bash

Questo utente non sarà chroot.

user_b:x:2003:100:User B:/home/chroot/./home/user_b:/bin/bash

Questo utente sarà chroot.


Ora creiamo l’ utente testuser con la directory home /home/chroot/./home/testuser e il gruppo di utenti (che sono il gruppo predefinito per gli utenti di Debian, quindi non è necessario specificarlo in modo esplicito):

useradd -s /bin/bash -m -d /home/chroot/./home/testuser -c "testuser" -g users testuser

Then we give testuser a password:

passwd testuser

Finally, we have to copy the line for testuser in /etc/passwd to /home/chroot/etc/passwd:

grep /etc/passwd -e "^testuser" >> /home/chroot/etc/passwd

Abbiamo già copiato la linea del gruppo di utenti da/etc/group per /home/chroot/etc/group quindi non dobbiamo farlo di nuovo qui. Se si crea un utente chroot in un altro gruppo di utenti, aggiungere questo gruppo al /home/chroot/etc/group:

grep /etc/group -e "^othergroup" >> /home/chroot/etc/group

Ora si tenta di accedere a SSH o SFTP come testuserSi dovrebbe essere sotto chroot e non essere in grado di sfogliare file/directory di fuori /home/chroot.

3 secondo metodo (Per Script)

C’è uno script chiamato make_chroot_jail.sh suhttp://www.fuschlberger.net/programs/ssh-scp-sftp-chroot-jail/ che automatizza la configurazione di Jail chroot SSH/SFTP. Funziona perfettamente su Debian Etch.

 

3.1 ottenere lo Script

In primo luogo, abbiamo bisogno di installare alcuni prerequisiti:

apt-get install sudo debianutils coreutils

Poi scaricare make_chroot_jail.sh in /usr/local/sbin e renderlo eseguibile per l’utente root:

cd /usr/local/sbin.
wget http://www.fuschlberger.net/programs/ssh-scp-sftp-chroot-jail/make_chroot_jail.sh
chmod 700 /usr/local/sbin/make_chroot_jail.sh

 

3.2 uso make_chroot_jail.sh

Ora possiamo già usare lo script. L’utilizzo è come segue:

make_chroot_jail.sh username [/path/to/chroot-shell [/path/to/chroot]]   

Non importa se l’utente è già esistente o non. Se egli è esistente, egli verrà aggiornato; in caso contrario, egli verrà creato. Se non si specifica il percorso di chroot-shell e il percorso per la gabbia chroot, l’impostazione predefinita i valori /bin/chroot-shell e /home/jail verrà utilizzati, ad esempio:

make_chroot_jail.sh testuser 

Voglio usare /home/chroot come la gabbia chroot, pertanto è necessario specificare il percorso di chroot shell pure:

make_chroot_jail.sh testuser /bin/chroot-shell /home/chroot

Questo verrà creare/aggiornare l’utente testuser con il chroot jail /home/chroot.

Per aggiornare tutti i file/librerie nel carcere chroot, eseguire

make_chroot_jail.sh update

o

 make_chroot_jail.sh update  /bin/chroot-shell /home/chroot

a seconda di come hai creato gli utenti.

 

3.3 ProFTPd

Se si utilizza ProFTPd, si dovrebbe leggere questo:

Come accennato il http://www.fuschlberger.net/programs/ssh-scp-sftp-chroot-jail/, non è necessario aggiungere /bin/chroot-shell a/etc/shells perché che permetterebbe agli utenti di evadere di prigione il chroot. Questo è un problema per ProFTPd, perché nella configurazione standard di ProFTPd, solo gli utenti con un guscio elencati in/etc/shells possono utilizzare ProFTPd. Questo significa, che gli utenti che utilizzano /bin/chroot-shell possono utilizzare ProFTPd.

Per modificare questa impostazione, aprire /etc/proftpd/proftpd.conf e aggiungere:

vi /etc/proftpd/proftpd.conf
[...]
RequireValidShell               off
[...]

Quindi riavviare ProFTPd:

/etc/init.d/proftpd restart

Ora tutti gli utenti possono utilizzare ProFTPd, indipendentemente da quale shell hanno, che ancora potrebbe non essere qualcosa che si desidera. Ma la soluzione migliore sarebbe quella di semplicemente usare SFTP and drop normale FTP.

Piaciuto l'articolo? Condividilo sui social!

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on whatsapp
WhatsApp