Fórumbeli kérésnek engedve, na meg aztán előbb-utóbb amúgy is sor került volna rá, most egy ftp szervert heggesztünk a router alá.
Oldalakat lehetne írni a dologról, mert elég tág a használhatóság és a beállíthatósági kör, de azért próbálkozunk
, szóval kezdjük is:
ipkg install xinetd vsftpd
Majd nyissuk meg a vsftpd.conf állományt:
vi /opt/etc/vsftpd.conf
A végére pedig illesszük be:
secure_chroot_dir=/opt/usr/share/empty
Ezután kreáljuk is meg a fenti könyvtárat:
mkdir -p /opt/usr/share/empty
Majd gyártsuk le a következő fájlt és persze szerkesszük is meg:
vi /opt/etc/xinetd.d/vsftp
Tartalma az alábbi legyen:
service ftp
{
disable = no
socket_type = stream
user = admin
server = /opt/sbin/vsftpd
server_args = /opt/etc/vsftpd.conf
wait = no
nice = 10
only_from = 0.0.0.0/0
}
Ezzel azt fogjuk elérni, hogy a vsftpd ne fusson feleslegesen a memóriában, amiből ugye kevés van sajna, hanem a xinetd fogja figyelni, hogy érkezik-e kérés ftp ügyben. Amennyiben igen, akkor szépen elindítja a vsftpd-t, majd minden szépen lezajlik, mintha a memóriában futott volna. Jönne a kérdés, de megnyugtatok mindenkit, a vsftpd gyorsan el fog indulni, gyakorlatilag nem kell rá várni, viszont nyertük egy pár bájtnyi szabad memórihelyet
El is indíthatjuk a xinetd-t, amelyet már majd a rendszer indulásakor automatikusan végrehajtódik:
/opt/etc/init.d/S10xinetd
Itt igazából már az alap konfiggal is működőképes a rendszer, ki is lehet próbálni egy a rendszerben jelenlévő felhasználóval. De azért gondolom senki sem szeretné, ha valaki kitalálná a root jelszót, aztán szépen elkezdené legyalulni a rendszert…
Szerintem szépen lassan haladjunk át a vsftpd.conf állományon, és nézzük meg a beállítási lehetőségeket, amelyek segítségével már mindenki sikeresen be tudja állítani a magának megfelelő konfigot:
anonymous_enable
YES esetén ezzel lehet engedélyezni az anonymous ftpt. Az anonymous
ftphez szükség van egy ftp nevű felhasználóra. Ennek a felhasználónak a home
könyvtára lesz az anonymous ftp terület.
local_enable
A normál felhasználókat engedjük-e bejelentkezni vagy sem.
write_enable
YES esetén a felhasználók állományokat tölthetnek fel, tehát az írás engedélyezett.
local_umask
A hozzáférési jogosultságokat szabályozza. Ez nem logikai értékű, azt mondja meg, hogy milyen umaskot használjon az új fájlok létrehozásakor. Az alapértelmezett 077 esetén például csak a
tulajdonos fogja tudni elérni az általa letett fájlokat. Elég sokat lehetne írni róla, bővebben itt tudsz róla olvasni.
anon_upload_enable
YES esetén anonymousként lehet-e feltölteni a szerverre. Kell hozzá a write_enable is.
anon_mkdir_write_enable
YES esetén anonymousként lehet új könyvtárat létrehozni. Kell
hozzá a write_enable is.
dirmessage_enable
YES esetén a szerver minden könyvtárban keresi - és ha van, kiírja - a .message állomány tartalmát.
xferlog_enable
YES esetén a szerver minden állományműveletet naplóz.
connect_from_port_20
A szokásos 20-as (ftp-data) portról menjen-e ki az adatkapcsolat. Erre érdemes igent (YES) beállítani.
chown_uploads
Az anonymousként feltöltött fájlok tulajdonosát megváltoztassa-e a szerver.
chown_username
Kinek a tulajdonává chown-olja a szerver az anonymousként feltöltött dolgokat.
vsftpd_log_file
A log file helyét adhatjuk meg. Az alapértelmezett érték az /opt/var/log/vsftpd.log fájl.
xferlog_std_format
YES esetén a log file a standard ftpd xferlog formátuma szerint fog felépülni.
idle_session_timeout
A szerver mennyi idő múlva bontsa a tétlen kapcsolatokat. Nem érdemes se túl nagyra, se túl kicsire állítani. A használható értékek valahol 60 és 600 másodperc közt lehetnek.
idle_session_timeout
A szerver mennyi idő múlva bontsa a tétlen kapcsolatokat. Nem érdemes se túl nagyra, se túl kicsire állítani. A használható értékek valahol 60 és 600 másodperc közt lehetnek.
data_connection_timeout
Az adatkapcsolatokat mennyi idő(másodperc) múlva bontsa a szerver, ha nincs rajta forgalom.
nopriv_user
Egy nem privilégizált, az ftp démon működtetéséhez fenntartott felhasználó neve. Nem érdemes nobodyt megadni, inkább új felhasználót kell hozzá létrehozni.
async_abor_enable
A szerver elfogadja-e az ABOR parancsot. A biztonság érdekében nem ajánlott YES értékre állítani.
ascii_upload_enable,ascii_download_enable
Engedélyezzük-e az ASCII fel/letöltést. Ez jó ötletnek tűnhet, de például egy ilyen módban történő
fájlméret-lekérdezéshez karakterenként végig kell olvasnia a szervernek a fájlt…
ftpd_banner
Bejelentkezéskori üdvözlőszöveg. Pl.: ftpd_banner=Udv az asus routeren
deny_email_enable,banned_email_file
Az első paraméter YES értékes esetén a második paraméterben megadott fájlban tárolt email címeket nem fogadja el a szerver anonymous csatlakozás esetén.
chroot_list_enable
E beállítás összefügg a chroot_local_user opcióval. Nézzük mik a variációk (ugye 3 lehetséges
)
1. Ha azt szeretnénk, hogy az FTP felhasználóink csak a saját tárhelyüket érjék el (tehát ne lássák a másét), akkor a következőt kell beírni:
chroot_local_user=YES
chroot_list_enable=NO
2. Ha nem minden felhasználót szeretnénk a saját mappájában tartani, akkor:
chroot_local_user=NO
chroot_list_enable=YES
Ezután hozzuk létre a /etc/vsftpd.chroot_list fájlt, amibe írjuk be azokat a felhasználókat, akik nem mehetnek ki a kezdőkönyvtárukból. Egy sorba egy felhasználónév.
3. Ha mindenki kiléphet a kezdőkönyvtárából, kivéve:
chroot_local_user=YES
chroot_list_enable=YES
Ezután hozzuk létre a /etc/vsftpd.chroot_list fájlt, amibe írjuk be azoknak a felhasználóknak a nevét, akik kiléphetnek a kezdőkönyvtárból. Egy sorba szintén egy felhasználónév.
Nagyjából ennyit akartam a részletes beállításokról, jó szórakozást mindenkinek
2 dologról kell még szót ejtenünk: a felhasználókról és a tűzfalról.
Felhasználókat az aduser, csoportokat pedig az addgroup paranccsal adhatunk a rendszerhez. Ha még nincs telepítve, akkor egyszerűen megtehető:
ipkg install adduser
Használata nagyon könnyű, nézzük meg a segítséget róla:
adduser –help
addgroup –help
Egy példa:
adduser -h /opt/etc/share ftp
A fenti példa egy ftp nevű felhasználót add hozzá a felhasználói adatbázishoz, a home könyvtára pedig az /opt/etc/share könyvtár lesz.
Ezzel még mindig nem vagyunk készen, biztosítani kell, hogy a router meg is jegyezze ezeket az adatokat.
Adjuk ki az alábbi két parancsot:
echo “/etc/passwd” >> /usr/local/.files
echo “/etc/group” >>/usr/local/.files
Ezután mentsük el a flashbe és dobjunk egy reboot-ot:
flashfs save && flashfs commit && flashfs enable && reboot
Ha szeretnénk nem elérhetővé tenni külső hálózatból(internet) ftp szerverünket, valamint az induláskori állapot is ez legyen, akkor az /usr/local/sbin/post-firewall fájlhoz az alábbi sort szúrjuk be:
iptables -I INPUT 1 -p tcp -i “$1″ –syn –dport 21 -j DROP
Ha a fenti fájlunk még üres, azaz még nincs benne egyetlenegy bejegyzés sem, akkor viszont így kell kinéznie:
#!/bin/sh
iptables -I INPUT 1 -p tcp -i “$1″ –syn –dport 21 -j DROP
Ha viszont tűzfalunk mindent tilt, de szeretnénk külső hálózatból elérni, akkor a következő kell nekünk:
#!/bin/sh
iptables -I INPUT 1 -p tcp -i “$1″ –syn –dport 21 -j ACCEPT
Jó ftp-zést mindenkinek
Read original blog post