HTML

Hasznos dolgok

Főleg olyan dolgokról szeretnék irni, amik saját tapasztalataimon alapulnak. Lesznek itt a tervek szerint tesztek, receptek, stb

Friss topikok

Linkblog

Chroot környezet kialakítása ssh Centos 5.5 (Final)

2010.09.19. 08:31 HasznosMano

Hello mindenkinek,

Régóta foglalkoztatott , hogy hogyan lehet megoldani azt, hogy egy ssh-val be engedett felhasználót, hogyan tudunk oly módon bezárni a saját kis világába, hogy az alaprendszert ne veszélyeztesse, de szabadon tudjon dolgozni.

Sokáig keresgéltem az interneten, és a chroot megoldás tűnt a legjobbnak. A chroot egy olyan virtuális környezetet tud biztosítani ssh hozzáférés esetén amelyben a távoli felhasználó korlátok nélkül tevékenykedhet szinte bármit megcsinálhat, és az üzemeltető szerveren mégsem tesz kárt.

Megpróbálok minden részletre kiterjedő leírást adni. Leírom a chroot környezet kialakítását, az sshd démon konfigurációját , valamint a pam.d démon beállítását chroot környezeti felhasználó számára.


croot környezet kialakítása

Mivel én Centos rendszert használtam (RedHat klón) ezért a rendszerhez kapcsolodó programokat és rendszerelemeket használtam. A yum csomagkezelő lehetővé teszi, hogy az rpm csomagokat egy tetszőleges helyre telepítsük. A tetszőleges könyvtár jelen esetben a chroot környezet maga. Ez a gépen bárhol lehet, ajánlott mégis egy olyan helyre tenni amit utána könnyen tudunk kezelni.

$ssh_user   - a felhasználó akit be szeretnél zárni.

$chroot_dir  - a könyvtár ahova az

 

[root@host /] chroot_dir=/home/temp/chroot/

[root@host /] yum -c /etc/yum.conf --installroot=$chroot_dir install rootfiles

[root@host /] yum -c /etc/yum.conf  --installroot=$chroot_dir install shadow-utils bind-utils gnupg vim-enhanced vixie-cron crontabs passwd which kudzu dhclient pciutils eject alsa-utils mkisofs

 

A $chroot_dir/etc/passwd fájlból el kell távolítani a root usert. EZ NAGYON FONTOS HA EZT NEM TESZED MEG HIÁBA VOLT MINDEN !!!

Az új környezethez még létre kell hozni egy két szükséges device-t és processzt. 
 

[root@host /] cd $chroot_dir

[root@host /] mount null -t proc proc

[root@host /] mount null -t sysfs sys

[root@host /] mount --bind /dev dev/

[root@host /] mount devpts -t devpts dev/pts

Ezeket a gyökér fájlrendszerből csatoljuk be. A proc a dev és a sys a chroot környezet működéséhez kell. A pts fájlrendszert először nem csatlakoztattam, ha ezt nem teszzük meg akkor távoli elérés esetén az alábbi hibaüzenet jelenleh meg a /var/log/secure logban.

Accepted password for $ssh_user from $remote_ip port 50884 ssh2
pam_unix(sshd:session): session opened for user $ssh_user by (uid=0)
pam_chroot(sshd:session): chroot(/$chroot_dir) succeeded
error: openpty: No such file or directory
error: session_pty_req: session 0 alloc failed
 

A root fájl rendszerből még egy két konfigurációs állományt át kell másolnunk 

[root@host /] cp /etc/sysconfig/authconfig $chroot_dir/etc/sysconfig/

Ezek után biztonság kedvéért távolítsuk el az ssh programot valamint az rpm csomagkezelőt a chroot környezetből. Természetesen ha ezekre szükségetek van akkor nem kell eltávolítani, nekem nem volt rá szükségem ezért eltávolítottam.

[root@host /] yum -c /etc/yum.conf --installroot=$chroot_dir remove rpm

[root@host /] yum -c /etc/yum.conf --installroot=$chroot_dir remove openssh-clients

[root@host /] yum -c /etc/yum.conf --installroot=$chroot_dir remove openssh

A chroot környezet jogosultságait az alábbiak szerint állítsuk be. A $chroot_dir arra könyvtárra mutat ahova a useert be akarjuk zárni, ennek a szülő könyvtárát a root userhez kell hozzárendelni. Nekem a chroot környezet a /$dir1/$dir2/$dir3/ alatt volt

[root@host /$chroot_dir] cd .. ; ls -latr

drwxr-xr-x 4 root root 4096 Sep 16 13:53 ..
drwxr-xr-x 3 root root 4096 Sep 16 14:15 .
drwxr-xr-x 21 root root 4096 Sep 16 14:28 $dir3

[root@host /$dir1/$dir2/$dir3/] ls -latr 

drwxrwxrwx 21 root root 4096 Sep 16 14:28 tmp
drwxr-xr-x   21 root root 4096 Sep 16 14:28 srv
drwxr-xr-x   21 root root 4096 Sep 16 14:28 selinux
drwxr-xr-x   21 root root 4096 Sep 16 14:28 mnt
drwxr-xr-x   21 root root 4096 Sep 16 14:28 media
drwxr-xr-x   21 root root 4096 Sep 16 14:28 boot
drwxr-xr-x   21 root root                    4096 Sep 16 14:28 ..
drwxr-xr-x   21 root root                    4096 Sep 16 14:28
drwxr-xr-x   21 root root 4096 Sep 16 14:28 var
.......
.......
.......
drwxr-xr-x   21 root root 4096 Sep 16 14:28 dev
drwxr-xr-x   21 root root 4096 Sep 16 14:28 etc
 

Ezek után rá térhetünk a root környezetben lévő chroot konfigurációs állományra (/etc/security/chroot.conf)

[root@host /] more /etc/security/chroot.conf
# Itt lesznek sorok és a fájl végére be kel szúrni a chroot-olt userhez tartozó beállítást
# A $chroot_dir teljes elérési útat jelent. pl: /home/tmp/chroot/
#
$ssh_user                  $chroot_dir

Be kell még állítani az ssh session-hoz tartozó pam konfigurációt (/etc/pam.d/ssh)
 

 [root@host /] more /etc/pam.d/ssh
# a fájl végére szúrd be a következő sort
session       required         pam_chroot.so

Ha a $ssh_user command promptját is akarod módosítani akkor a felhasználó bashrc fájlját kell módosítani. A PS1 változó beállításáról itt találsz további információt

[root@host /$chroot_dir/home/$ssh_user] more .bashrc
# a fájl végére szúrd be a következő sort
PS1="JailSyS: [\u@\H: \W] $"

[$ssh_user@hostname: $aktuális könyvtár nem teljes útvonalla] $

Szólj hozzá!

A bejegyzés trackback címe:

https://tapasztalatok.blog.hu/api/trackback/id/tr882306738

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása