Sziasztok,
A feladat: Csinalj ket SFTP szervert OpenSSHval ugy, hogy a tobb szaz usered a kozos NFS sharen levo homedirjebe legyen chrootolva. A filemuveletek loggolasa elengedhetetlen.
IP
/\
/ \
A B
\ /
\ /
NFS
A recept:
- Csinalj egy groupot amibe az sftp usereket rakod
- Modositsd az sshd konfigjat
Subsystem sftp internal-sftp -l VERBOSE
Match Group sftponly
ChrootDirectory /chroot-sftp/%u
ForceCommand internal-sftp -l VERBOSE
AllowTcpForwarding no
X11Forwarding no
- Keszits egy log devicet az NFS sharere:
mkdir -pm 751 /chroot-sftp/dev
cd /chroot-sftp/dev
mknod log c 21 5
- Vedd ra a syslog daemont, h figyeljen erre a log devicera (pl rsyslog eseten):
- Inditsd ujra a syslog daemont :)
$AddUnixListenSocket /chroot-sftp/dev/log
- Csinalj egy hardlinket a userek dev konyvtaraba, hogy ki tudd szedni a logokat a chrootbol
find /chroot-sftp/user* -iname dev -exec ln /chroot-sftp/dev/log '{}'/log \;
- A syslog daemon initscriptjebe rakd bele, hogy ujraindulaskor krealja le ujra a hardlinket, kulonben nem fog menni a logging...
find /chroot-sftp/user* -iname log -exec rm '{}' \;
find /chroot-sftp/user* -iname dev -exec ln /chroot-sftp/dev/log '{}'/log \;
Namarmost ez a setup nagyszeruen mukodik egy szerver eseten. Ugyanakkor a loggolas nem fog az elvart modon mukodni ha ket - vagy tobb szervered - van. Mindig csak ott lesz log, ahol a hardlinket krealtad. Otlet arra, hogy ezen hogy lehetne tullepni?
A masik kandidalo szoftver a feladatra a proftpd sftp modullal, de azt - sejtheto okokbol - nem feltetlenul szeretnem hasznalni.
UPDATE:
Sajnos a felhasznalhato eszkozok tekinteteben meg van kotve a kezem - ha valami nincs RHEL5-6ban akkor nem hasznalhato - ugyhogy valoszinuleg proftpd lesz a vege, pedig en nagyon szerettem volna OpenSSHt hasznalni..
Azert hrgy84 otlete alapjan dafke is megcsinaltam a dolgot pam_scripttel, masok okulasara ittvan a hogyan:
Minden szervernek kell egy kulon dev/log file az NFS sharen, mert cross-device hardlinket nem lehet letrehozni:
mkdir -pm 751 /chroot-sftp/_DEVA/dev/; cd /chroot-sftp/_DEVA/dev/
mknod log c 21 5
mkdir -pm 751 /chroot-sftp/_DEVB/dev/; cd /chroot-sftp/_DEVB/dev/
mknod log c 21 5
pam_script:
http://sourceforge.net/projects/pam-script/
tar -xvzf pam-script-1.1.4.tar.gz
cd pam-script-1.1.4
./configure
make
make install
*nalam:
cp ~/pam-script-1.1.4/.libs/pam_script.so /lib64/security/
/etc/pam.d/sshd
...
auth required pam_script.so dir=/usr/local/etc/
session required pam_script.so dir=/usr/local/etc/
...
- Elmegy a pam_script konyvtaraba es megirja a scripteket
cd /usr/local/etc/pam-script.d
sftp-session_open:
#! /bin/sh
ln /chroot-sftp/_DEVA/dev/log /chroot-sftp/$PAM_USER/dev/log
# success
exit 0
sftp-session_close:
#! /bin/sh
rm /chroot-sftp/$PAM_USER/dev/log
# success
exit 0
A masik szerveren ertelemszeruen _DEVA helyett _DEVB
chmod 755 sftp-session_open
chmod 755 sftp-session_close
cd ..
ln -sf pam-script.d/sftp-session_open pam_script_acct
ln -sf pam-script.d/sftp-session_open pam_script_auth
ln -sf pam-script.d/sftp-session_open pam_script_passwd
ln -sf pam-script.d/sftp-session_open pam_script_ses_open
ln -sf pam-script.d/sftp-session_close pam_script_ses_close