Igény lett arra, hogy távoli rokonhoz fényképeket el tudjunk juttatni, innen jött az ötlet, hogy beállítok egy FTP szervert. A vsftpd-re esett a választásom, ami a very secure ftp daemon rövidítése, így számomra a neve is tetszetős. Telepítsük is gyorsan a programot, adjuk ki a sudo apt-get install vsftpd parancsot. Gyorsan feltelepül a program, és már kezdhetjük is beállítani! A fájl amit keresünk (linux mint és sok más esetben) a /etc/vsftpd.conf nevet viseli. Igazából kis angol tudással és utána olvasással nagyon egyszerűen testre szabható a program. Pár beállítást azért megemlítenék a teljesség igénye nélkül amiket én használtam, megjegyezve, hogy hitelesítéssel, csak letöltésre használom a szervert.
local_enable=YES - Ezzel engedélyezzük a helyi felhasználóknak a belépést az FTP szerverre.
#write_enable=YES - Én itt meghagytam a kettős keresztet azaz ez a rész kommentnek számít, mivel én nem szeretném ha írnának a szerverre, innen csak letöltenek.
anonymous_enable=NO - Nem szeretném ha bárki be tudna lépni, hitelesítse magát.
Létrehoztam egy külön user-t aminek a nevében fut majd a daemon: useradd -r -s /bin/false USERNAME az r kapcsoló azt mondja meg, hogy ez egy rendszer fiók, a -s kapcsoló után pedig megadom a bejelentkező shell-jét ami nem kell neki.
nopriv_user=username amit csináltál előbb
ftpd_banner=A hatalmas Zeus udvozletet kuldi! - Ezt azért, mert tetszett.
local_root=/srv/ftp - Megadom az FTP root mappáját, mert nem szeretném, ha mindenki a home-jába fel/le töltene, hanem egy adott helyről töltsenek le.
userlist_enable=YES – maga után vonja a következő opciót is – csak azok léphetnek be akik ezen a listán szerepelnek
userlist_deny=NO – Ez a beállítás pontosan azt takarja, hogy a letiltott vagy az engedélyezett user listát használunk-e. NO opciót választok, mivel én az engedélyezett usereket szeretném megadni.
log_ftp_protocol=YES – szeretnék logolást beállítani /var/log/vsftpd.log
chroot_local_users=YES - Itt adom meg hogy az általam megadott /srv/ftp mappából ne tudjanak kitallózni. Ha ez nincs bekapcsolva az egész fájlrendszer tudják tallózni, ami annyira nem egészséges.
chmod_enable=NO – Felhasználók tudjanak módosítani jogosultságokat? Heh, még mit nem.
pam_service_name=vsftpd – Legjobb beállítás. Mi legyen a neve a szolgáltatásnak? Kit érdekel, legyen default. Aha így hagytam, beléptem egyik felhasználóval minden rendben. Aztán valamiért rápróbáltam egy másikra is, 530-as hiba login incorrect. Hmm passwd új jelszó login incorrect. Googli, majd megoldásként azt mondták írjam át ezt a beállítást ftp-re, restart, és működik. Nem akarom tudni miért, haladjunk.
User list. Bekapcsoltam, service restart, connect, beírom felhasználónevet OFFLINE hibaüzenet. Hát mondom mi van?! Megnézem service fut, configot átnézem elírást nem látok, rápróbálok másik felhasználóval offline. Elfelejtettem megadni magát a listát, az FTP üzenetből látszott. Létrehoztam a vsftpd.user_list fájlt beleírtam a két embert akit akartam, úgy hogy username <enter> username, save semmi vessző vagy valami más. Service restart, és láss csodát elindult.
Ezen kívül még a kedvenc programomat a fail2ban-t is ráengedtem, bekapcsoltam a vsftpd jailt, amit úgy állítottam be, hogy ha még kis is találja a támadó a felhasználó nevét, négy téves próbálkozás után (10 percen belül) kibannolja a p*csába.
Végszóként csatolok egy minta konfigurációs fájlt:
# Allow anonymous FTP?
anonymous_enable=NO
#
# Allow local users to log in?
local_enable=YES
#
# Allow any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=0000
file_open_mode=0220
#
# Allow the anonymous FTP user to upload files?
anon_upload_enable=NO
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=NO
#
# Activate logging of uploads/downloads?
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data)?
connect_from_port_20=YES
#
# Log file in standard ftpd xferlog format?
xferlog_std_format=NO
#
# User for vsftpd to run as?
nopriv_user=vsftpd
#
# Login banner string:
ftpd_banner=ILikeJam FTP server. Logs are being monitored.
#
# chroot local users (only allow users to see their directory)?
chroot_local_user=YES
#
# PAM service name?
pam_service_name=vsftpd
#
# Enable user_list (see next option)?
userlist_enable=YES
#
# Should the user_list file specify users to deny(=YES) or to allow(=NO)
userlist_deny=NO
#
# Standalone (not run through xinetd) listen mode?
listen=YES
#
#
tcp_wrappers=NO
#
# Log all ftp actions (not just transfers)?
log_ftp_protocol=YES
#
# Show file ownership as ftp:ftp instead of real users?
hide_ids=YES
#
# Allow ftp users to change permissions of files?
chmod_enable=NO
#
# Use local time?
use_localtime=YES
#
# List of raw FTP commands which are allowed (some commands may be a security hazard):
cmds_allowed=ABOR,QUIT,LIST,PASV,RETR,CWD,STOR,TYPE,PWD,SIZE,NLST,PORT,SYST,PRET,MDTM
Konfig fájl forrása itt érhető el, FTP parancsok részletesebb magyarázata itt.
Itt találtok még egy részletesebb leírást a konfig opciókról.
És persze a manualban :)