Fórum Ubuntu CZ/SK
Ostatní => Ubuntu Server => Téma založeno: Welblaud 01 Července 2014, 08:29:19
-
Ahoj všem,
tak tohle mi hlava nebere. Na virtuálu se mi daří naprosto v pohodě nastavit anonymní ftp. Jakmile chci zprovoznit ftp jinak, nikam to nevede. Rád bych měl server, kam se bude hlásit jeden univerzální uživatel ftp, a to v režimu chroot, nikam nepoleze, žádné vyšší adresáře nevypíše, zapisovat nemůže. Případně pak vytvářet uživatele virtuální (tuhle vyšší dívčí zatím asi můžu nechat stranou). Důležitý požadavek je ten, aby šlo na server přistupovat z prohlížeče.
Už když nastavím podle základních instrukcí:
listen_enable=YES
anonymous_enable=NO
write_enable=NO
connect_from_port_20=YES
chroot_local_user=YES
… což by podle všeho prostě mělo chodit jako základ, nepřihlásím se. Přihlásím se pouze v secure režimu (sftp) přes filezillu, navíc můžu lézt všude po systému. Když vytvořím nějakého ukázkového uživatele, přidám ho do skupiny ftp, pro sichr mu home nastavím právě do svojí ftp složky, kterou mu zároveň i přivlastním, přihlásím se opět přes sftp režim ve filezille, chrootne mě to správně, ale opět můžu lézt všude a vypisovat všechny adresáře. Tady mě udivilo, že to jde pouze v režimu Sftp, přičemž zabezpečení jsem v konfiguráku vůbec zatím nechtěl řešit. Zkoušel jsem používat i chroot_list, a to při paměti na možnost, že jím zahrnuju i vylučuju uživatele z chrootu, ale pořád nic.
Firewall vypnutý. Složka ftp umístěná v mém vlastním /home, práva má onoho fiktivního uživatele (user:user), ten je i ve skupině ftp.
Neví někdo? Rád pak poctivě pastnu konfiguráky, které budou chodit. :)
-
Tak teď fakt nevím, v čem je vlastně bordel… Zkusil jsem s novou instalací naprosto od začátku:
konfigurák:
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
#passwd_chroot_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
#secure_chroot_dir=/var/run/vsftpd/empty
#pam_service_name=vsftpd
#rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
#rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
Zakomentované možnosti jsem pro jistotu zkoušel taky, nic.
Cílovým adresářem je /home/ftp, přičemž onen adresář je v majetku uživatele transfer, skupiny ftpgroup (transfer je pro sichr i ve skupině ftp).
Samotný uživatel transfer má /home/ftp nastaven jako svoje home:
transfer:x:1001:1001::/home/ftp:/dev/null
Firewall neběží.
Při pokusu o přihlášení přes prohlížeč jen vyskakuje dialog k zadání hesla (zas a znovu). Při pokusu o přihlášení z FileZilly hlásí jak režim ftp (port 21), tak režim sftp (port 22) kritickou chybu, takže se nepřihlásím. ALE! přihlásím se pod svým vlastním adniním jménem/heslem na portu 22, pak jsem přihlášen, ale můžu lézt všude (možnost, že chroot u vsftpd zatím pořád nefunguje, teď vypouštím). Poohlížel jsem se ze zoufalosti už i po jiných ftp serverech, ale tam je konfigurace ještě složitější.
Přitom cíl je skromný ;D, a to mít jednu mnou určenou složku, do které budu do podsložek pouštět virtuální uživatele. Sakra práce… Chápal bych to, kdybych měl nějak sbastlený systém, ale zkouším na naprosto čisté instalaci podle základních návodů. Tudíž jsou blbě buď návody, nebo je to zabugovaná věc, kterou nikdo moc neřeší (možnost, že jsem blbej já, zatím neberu v úvahu).
-
Osobně provozuju ProFTPD, ale jukni na nějaké videa .
-
Díky, pěkně instruktážní bylo tohle:
Bohužel, pořád stejná písnička. Když to zkouším přes defaultního uživatele, jediná reakce, kterou z toho dostanu, je nabídka k přijetí nového klíče, když to zkusím přes port 22, spojení je ale stejně odmítnuto (FileZilla stále hlásí kritickou chybu).
A pořád stejně: nový install vsftpd, ufw vypnuto, zkoušel jsem i přidat pravidlo přes tradiční IPtables.
Vlastně jediné, co šlo, byl vstup do /srv/ftp uživatelem ftp, když jsem nechal povoleného pouze anonymous. Celé vsftpd mi zatím bylo k velkému dobru pouze pro anonymní stahování :D
::)
-
connect_from_port_20=YES
A zkoušel jsi se spojit přes port 20?
-
To se přiznám, že nezkoušel, jednoduše proto, že mám zato, že ta volba souvisí s klasickým scénářem, kdy se na portu 21 otevírá sezení a data tečou před port 20.
-
Myslím, že bys v té pidi konfuguraci měl mít i listen_port, na kterém má naslouchat.
P.S. Schválně jsem si zkusil ve virtuálu nainstalovat VSFTPD a s defaultní konfigurací + lokálním userem to jelo na první šup. Zkusil jsem chroot, tam mi vyskočila chyba "500 OOPS: vsftpd: refusing to run with writable root inside chroot()" a k tomu jsem našel, že stačí přidat do konfiguráku "allow_writeable_chroot=YES", potom už jsem s adresáře nahoru nevyskočil.
-
Díky, ten parametr allow writeable chroot, zdá se, pomáhá. Zatím se ale přihlásím jen já jako admin, jiného usera to pořád odmítá. Nevím, čím to může být. Práva na složce má, složku má přiřazenou jako home, přihlášení ale pořád nejde. Budu bádat.
-
Větší část vyřešena! Veliké díky. Když to rozchodím celé, dám sem návod.
Velmi důležitá volba je tedy:
allow_writeable_chroot=YES
a pak
pam_service_name=ftp (defaultní je vsftpd).
Obojí doporučení pochází z doby vydání Ubuntu 12.04, kdy se objevily problémy právě s vsftpd a uživatelům chvíli trvalo, než kompatibilitu vyřešili (proč to je nutné a jak a proč si Ubuntu s vsftpd v drobnostech nerozumí, nevím).
http://askubuntu.com/questions/128180/vsftpd-stopped-working-after-update#_=_ (http://askubuntu.com/questions/128180/vsftpd-stopped-working-after-update#_=_)
-
Takže, zatím tedy funguje bez chyby:
listen=YES
anonymous_enable=NO
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
chroot_local_user=YES
allow_writeable_chroot=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=ftp
Myslím, že dirmessage by šlo taky vynechat podobně jako logování (xferlog). Zajímavé je, že když zakomentuju to jméno PAM, nelze se přihlásit. Jediný, kdo se pak přihlásí, jsem já sám (jakožto admin asi). Nevím, jestli to nemá co do činění se zařazením do skupin… ale asi už v tom nebudu šťourat. Později zkusím virtuální uživatele.
-
ešte sa pohraj s chroot
do /etc/vsftpd.chroot_list dáš užívateľa ktorému chceš povoliť prístup
Už to je dávno čo som to riešil, tak to ber s rezervou ;)
edit: treba do konfigu potom vložiť riadky s
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list