(Viszonylag) Biztonságos pure-ftpd virtuális felhasználókkal

A premissza az lenne, hogy természetesen nem lehet titkosított ftp-t üzemeltetni, mivel az a klienseknek néhány új fogalom, technika megtanulását és alkalmazását igényelné. Minimális absztrakciós képesség híján (Értsd: ha x programban a host mezőbe egy ip-t kell, írni akkor vajon y program host mezőjébe mit kell? Talán egy irányítószámot?) ez mint kizáró tényező jelentkezik.

(Admin error: nekem a vsftpd kínai.)

  1. Szükséges use flag-ek beállítása:
    # flagedit net-ftp/pure-ftpd mysql vchroot

[*]Ftp csoport és felhasználó létrehozása:

groupadd -g 5000 ftpgroup
useradd -u 5000 -s /bin/false -d /bin/null -g ftpgroup ftpuser

(uid és gid 5000; login shell: /bin/false; home könyvtár nincs; ftpuser tagja az ftpgroup-nak.)

[*]MySQL adatbázis és tábla létrehozása:

mysql -u root -p
CREATE DATABASE pureftpd;
GRANT ALL ON pureftpd.* TO 'ftpuser@localhost' IDENTIFIED BY '<jelszó>';
\u pureftpd

CREATE TABLE users (
  User VARCHAR(16) BINARY NOT NULL,
  Password VARCHAR(64) BINARY NOT NULL,
  Dir VARCHAR(128) BINARY NOT NULL,
  PRIMARY KEY  (User)
);

[*]/etc/pure-ftpd/pure-ftpd-mysql-conf:


MYSQLServer     localhost
MYSQLPort       3306
MYSQLSocket     /tmp/mysql.sock
MYSQLUser       ftpuser
MYSQLPassword   <jelszó>
MYSQLDatabase   pureftpd
MYSQLCrypt      cleartext
MYSQLGetPW      SZELEKT Password FROM users WHERE User="\L"
MYSQLGetDir     SZELEKT Dir FROM users WHERE User="\L"
MYSQLDefaultUID 5000
MYSQLDefaultGID 5000

(A SZELEKT az természetesen SELECT, csak nem szeret a drupal érte.)

[*]/etc/conf.d/pure-ftpd (fontosabb változások):


IS_CONFIGURED="yes"
AUTH="-l mysql:/etc/pure-ftpd/pure-ftpd-mysql.conf"
MISC_OTHER="-A -j -R -E"

A: Minden virtuális felhasználó chroot-olt környezetbe kerül
j: Ha nem létezik a felhasználó home dir-je, akkor automatikusan létrehozni
R: Senki nem használhatja a chmod parancsot
E: Csak authentikált felhasználók léphetnek be (nincs anonymous login).

[*]Opcionális: logolás külön file-ba. /etc/syslog-ng/syslog-ng.conf:


destination pure-ftpd { file("/var/log/pure-ftpd"); };
filter f_pure-ftpd { facility(ftp); };
log { source(src); filter(f_pure-ftpd); destination(pure-ftpd); };

[*]És én még lyukat is ütök az alapból drop policy-vel rendelkező iptables-be:


iptables -t filter -A INPUT --protocol tcp --destination-port 21 -j ACCEPT

[/list]

Ha van valami hiba, vagy jobb ötletetek, akkor ne habozzatok megosztani velem.

Hozzászólások

Pedig egyszerű vsftpd-vel is virtuális júzereket kezelni és még mysql se kell hozzá. Szerintem totál felesleges. Főleg, hogy gentoo alatt akarod. Hardened gentoo, chrootolt környezet, vsftpd és csókol anyád vilma.

--
A nyúl egy igazi jellem. Ott ül a fűben, de akkor sem szívja!

Hardened gentoo nálam is alap, ennek a vsftpd-nek utána fogok nézni jobban, mert ez lett volna elsőre is a cél, csak egy pár dolog nagyon nem volt világos nekem. MySQL néhány program miatt alapból is fut, gondoltam nem oszt nem szoroz, hogy akkor már ez is onnan veszi az adatokat.

Ezt a mini-howto-t mé' nem a Wiki-be írod? De komolyan kérdezem.

Wiki eszembe sem jutott. Meg úgy gondolom, hogy oda egzaktabb, általánosabb megoldások kellenének. De ha úgy gondoljátok, hogy érdemes szívesen felrakom.

Az, hogy non-rootként fut mit jelent nálad pontosan? Mert szerintem az én megoldásom sem root jogokkal fut.

Hello!

Ezt a megoldast kiegeszitendo, meg lehet oldani, hogy a virtual ftp userek kulon homeok-ba keruljenek, es onnan ne tudjanak kilepni?

secret