SlackList
- Śmietnik - ChrootSsh + logowanie z kluczem
ChrootSsh
+ logowanie z kluczem
Opis ma na
celu pokazanie jak zrobić zamknięte (chrootowane)
środowisko dla userów logujących się przez ssh i autoryzacje z kluczem.
ChrootSsh
W sieci jest opisanych parę sposobów, ja wybrałem
patchowanie openssh. Patch lub już zpatchowane źródła openssh są na
stronie http://chrootssh.sourceforge.net
lub kopia lokalna z linków na dole strony.
Już zpatchowane źródełka należy rozpakować. W katalogu ze
źródłami wydać polecenie ./configure,
ja dla jak największej zgodności z paczka
ze slackware użyłem takich opcji:
./configure
--prefix=/usr \
--sysconfdir=/etc/ssh \
--without-pam \
--with-md5-passwords \
--with-tcp-wrappers \
--with-default-path=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
\
--with-ipv4-default \
--with-privsep-path=/var/empty \
--with-privsep-user=sshd \
--build=i486
Podsumowanie konfiguracji wygladało tak:
OpenSSH
has been configured with the following options:
User binaries: /usr/bin
System binaries: /usr/sbin
Configuration files: /etc/ssh
Askpass program: /usr/libexec/ssh-askpass
Manual pages:
/usr/man/manX
PID file: /var/run
Privilege separation chroot path: /var/empty
sshd default user PATH:
/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
Manpage
format: doc
PAM support: no
KerberosV support: no
Smartcard support: no
S/KEY support: no
TCP Wrappers support: yes
MD5 password support: yes
libedit support: no
IP address in $DISPLAY hack: no
Translate v4 in v6 hack: no
BSD Auth support: no
Random number source: OpenSSL
internal ONLY
Następnie
wydajemy polecenie make.
U mnie pojawiał się taki błąd:
openbsd-compat//libopenbsd-compat.a(xcrypt.o)(.text+0x36):
In function `xcrypt':
/usr/src/openssh-4.2p1-chroot/openbsd-compat/xcrypt.c:65:
undefined reference to `crypt'
collect2:
ld returned 1 exit status
make:
*** [sshd] Error 1
Rozwiązaniem jest zmiana w pliku Makefile, było:
LIBS=-lresolv
-lcrypto -lutil -lz –lnsl
powinno
być:
LIBS=-lresolv -lcrypto
-lcrypt -lutil -lz –lnsl
Teraz można wykonać kompilacje make
i zainstalować program
make
install. Zrobiłem paczkę dla slacka, link jest na dole
strony, wiec możesz
jej użyć instalując poleceniem installpkg
openssh-4.2p1-chroot-i486-1.tgz Nie
wiem czy będzie działać u Ciebie ja ją zainstalowałem bez
problemu na trzech komputerach. Jeżeli nie będzie działać to zrób
przynajmniej
./configure żeby zobaczyć jakich brakuje Ci bibliotek.
Chrootowane
srodowisko
Teraz można ubić pracujące sshd i uruchomić nowe. Jeżeli
wszystko działa tzn. można się zalogować normalnie po ssh to możesz
przygotować
środowisko dla chrootowanego usera.
Zaznaczenie że user ma pracować w chroocie trzeba zrobic w
pliku /etc/passwd dodając za ścieżką do katalogu domowego ./
(kropka i slash) .
filemonek:x:1119:100:Jan
Kotek:/home/filemonek/./:/bin/bash
Teraz w katalogu domowym należy zrobic odpowiednie katalogi
i skopiowac z systemu następujące pliki:
./bin:
bash* ls*
mkdir* pwd* rm*
./etc:
group hosts
passwd shadow
./lib:
ld-2.3.1.so* libcrypt.so.1@ libnsl-2.3.1.so*
libresolv-2.3.1.so* libtermcap.so.2@
ld-linux.so.2@ libc.so.6@ libnsl.so.1@ libresolv.so.2@ libtermcap.so.2.0.8*
libc-2.3.1.so* libdl-2.3.1.so* libpthread-0.10.so* librt-2.3.1.so* libutil-2.3.1.so*
libcrypt-2.3.1.so* libdl.so.2@
libpthread.so.0@ librt.so.1@ libutil.so.1@
./usr/bin:
env* id*
scp* sftp* ssh*
tty*
./usr/lib:
libcrypto.so.0@
libcrypto.so.0.9.7*
libz.so.1@ libz.so.1.1.4*
W plikach group passwd
shadow należy zostawić tylko formacje o chrootowanym
użytkowniku. Dla
wszystkich plików należy zadbać o właściwego właściela i grupę np. w
tym
przypadku było filemonek:users .
W tym momencie można już logować się do chrootowanego
środowiska.
Logowanie z kluczem
W pliku konfiguracyjnym /etc/ssh/sshd_config ustawiłem opcje
wymuszające logowanie z kluczem i wyłączające logowanie tylko za pomocą
hasła.
PubkeyAuthentication
yes
AuthorizedKeysFile
.ssh/id_rsa_pub
PasswordAuthentication no
Klucze dla usera
wygenerowałem pod windowsami za pomocą puttygen.exe (link na dole
strony).
Wgląda to tak:
Generowanie klucza i ustawienie hasła.

Export klucza prywatnego.

Zapisanie klucza publicznego.

Klucz publiczny powinien być umieszczony w katalogu domowym użytkownika
jako .ssh/id_rsa_pub
tylko ze zapisany jak wyżej klucz nie bardzo chce działać.
Należy go troszkę zmienić. Plik z kluczem musie mieć tylko jedna
linijkę,
zaczynać się od "ssh-rsa "
a kończyć na " rsa-key-tutaj_data".
Pomiędzy tymi
wpisami trzeba umieścić sam klucz. W edytorze Crimson Editor wygląda to tak:
Klucz wygenerowny.

Początek klucza i format pliku Unix.

Koniec klucza.

Teraz przy logowaniu przy pomocy putty należy w opcji
"Connection-SSH-Auth-Private
key.." wskazać klucz prywatny. Jeżeli wszystko poszło ok to
masz chrootowanego usera logujacego
się przy pomocy klucza.
Linki:
Projekt ChrootSsh - http://chrootssh.sourceforge.net
Lokalna kopia źródeł - openssh-4.2p1-chroot.tar.gz
Paczka z chrootssh dla slacka - openssh-4.2p1-chroot-i486-1.tgz
Projekt Putty - http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Crimson Editor - http://www.crimsoneditor.com
Olek Kwasniewski
, Warszawa, 2005-11-16
Grenlandia 2012