ProFTP

Allikas: Kuutõrvaja

Paigaldus

Proftpd teeb mugavaks tema modulaarne ehitus mis võimaldab koostada üsna keerukaid ftp teenuseid.

ProFTPD Version: 1.3.3g (maint)
  Scoreboard Version: 01040003
  Built: Mon Jan 14 2013 16:56:07 EET

Loaded modules:
  mod_lang/0.9
  mod_ctrls/0.9.4
  mod_cap/1.0
  mod_wrap/1.2.4
  mod_tls_shmcache/0.1
  mod_tls/2.4.2
  mod_ctrls_admin/0.9.6
  mod_clamav.c
  mod_facl/0.4
  mod_auth_pam/1.1
  mod_facts/0.1
  mod_delay/0.6
  mod_site.c
  mod_log.c
  mod_ls.c
  mod_auth.c
  mod_auth_unix.c
  mod_xfer.c
  mod_core.c

Seadistus mis autentib pami abil süsteemsete kasutajate vastu oleks

ServerName          "ftp.zoo.tartu.ee"
ServerType          standalone
DefaultServer       on
RequireValidShell   off
AuthPAM             on
AuthPAMConfig       ftp
Port				21

PassivePorts 49152 65535

#punktiga failidele
ListOptions "-a"

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask				022

MaxInstances			30

# Set the user and group under which the server will run.
User				ftp
Group				ftp

DebugLevel	5
# kasutaja lukustamine kodukausta
DefaultRoot	~

# Autendi esmalt systeemitabelitest
AuthOrder	mod_auth_unix.c

# Normally, we want files to be overwriteable.
<Directory />
  AllowOverwrite		on
</Directory>

Passiivsete ühenduste lubamiseks tuleb näiteks pf.conf lisada

pass in on $ext_if proto tcp from any to any port > 49151 keep state label "passive ftp"

Mysqlist autentimiseks tuleb lisada AuthOrder reale lisada mod_auth_unix.c kõrvale mod_sql.c

AuthOrder	mod_sql.c mod_auth_unix.c

Ja seadistada mysqliga suhtlemise kasutaja ning parool

# MySQL conf
SQLAuthTypes	Crypt
SQLAuthenticate	users
SQLConnectInfo	andmebaas@db.zoo.tartu.ee kasutaja parool
SQLDefaultUID	20000
SQLDefaultGID	20000
SQLMinUserUID	20000
SQLMinUserGID	20000
SQLUserInfo	users username passwd uid gid ftpdir homedir

Viimase reaga on defineeritud kasutajaid sisaldava tabeli struktuur.

TLS/SSL toe lisamiseks. ftpes:// ftp käib üle 21 pordi kasutades tlsi.

<IfModule mod_tls.c>
 TLSEngine                  on
 TLSLog                     /var/log/tls.log
 TLSProtocol                SSLv3 TLSv1
 TLSRSACertificateFile      /etc/proftpd/proftpd.cert.pem
 TLSRSACertificateKeyFile   /etc/proftpd/proftpd.key.pem
 TLSVerifyClient            off
 TLSRequired                off
 # ilma selleta filezilla ei toimi
 TLSOptions                 NoSessionReuseRequired
</IfModule>

Sertifikaatide tekitamine

# openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/proftpd.cert.pem -keyout \
/etc/proftpd/proftpd.key.pem

testimine

# openssl s_client -connect 127.0.0.1:21 -starttls ftp

FTPSi tekitamiseks eraldi pordile on samuti võimalus olemas

<IfModule mod_sftp.c>
        SFTPEngine on
        Port 2222
        SFTPLog /var/log/proftpd/sftp.log
        # Configure both the RSA and DSA host keys, using the same host key
        # files that OpenSSH uses.
        SFTPHostKey /etc/ssh/ssh_host_rsa_key
        SFTPHostKey /etc/ssh/ssh_host_dsa_key

        SFTPAuthMethods keyboard-interactive
        # Enable compression
        SFTPCompression delayed
</IfModule>

Ühendudes nüüd winscp'ga 2222 pordile peaks saama logida

https://www.digitalocean.com/community/tutorials/how-to-configure-proftpd-to-use-sftp-instead-of-ftp

Proftp failide kontroll läbi ClamAv viirusetõrje.

Mõned vastikud viirused kipuvad kasutajate arvutitest ftp paroole varastama ja laevad neid kasutades veebilehtedele üles nakatunud koodijuppe. Seega oleks mõistlik suuremas veebimajutusserveris kontrollida üleslaetavaid faile enne viirutsetõrjega.

Paigalda Clamav op-süsteemi töövahenditega. Paigalda samamoodi Proftp server koos mod_clamav toega

clamd.conf tuleb teha järgnevad muudatused, ehk tuleb lahti kommenteerida rida kus öeldakse, et ta töötaks deemonina ja kuulaks 3310 porti

# TCP port address.
# Default: no
TCPSocket 3310

proftpd.conf tuleks lisada <global></blobal> markerite vahele lõpuossa järgnev blokk

<IfModule mod_clamav.c>
   ClamAV on
   ClamServer localhost
   ClamPort 3310
   ClamMaxSize 5 Mb
</IfModule>

5Mb on maksimaalne failisuurus millest suuremaid faile ei kontrollita.

Mõlemad teenused restartida.

Testimiseks võib üritada ühte Eicar signatuuri sisaldavat faili üles laadida http://www.eicar.org/anti_virus_test_file.htm

# ftp zoo.tartu.ee
Connected to zoo.tartu.ee.
220 ProFTPD 1.3.3c Server (zoo.tartu.ee) [::ffff:192.168.1.22]
Name (zoo.tartu.ee:ants): ants
331 Password required for ants
Password:
230 User ants logged in
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put test
local: test remote: test
200 PORT command successful
150 Opening BINARY mode data connection for test
550 Virus Detected and Removed: Eicar-Test-Signature
71 bytes sent in 0.00 secs (745.5 kB/s)

Autentimisel passwds möödaminek

Kasutades nt http://kuutorvaja.eenet.ee/wiki/Sshd_mysql süsteemiga seotud mysqli võib tekkida olukord, et kuigi andmebaasis olevad kasutajad on seotud süsteemiga ei taha proftp kuuldagi neilt autentimisest. Aitab:

PersistentPasswd off

Mis lubab lisaks /etc/passwd failile ka muid pami autentimise katsetusi.

AuthPAM                         On
AuthPAMConfig                   ftp
AuthPAMAuthoritative            Off
PersistentPasswd                Off

Failioperatsioonide logimine syslogi

Tavaliseks logimiseks piisab

TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log

Soovides saata logi logiserverisse tuleb

LogFormat xfer "%h - %u %t\"%r\" %s %b"
ExtendedLog syslog:notice ALL xfer
TransferLog none

ja syslog-ng konfis hiljem

filter f_ftp { program("proftpd"); };

Rohkem juttu logimisest leiab tekstist Logi

Logi roteerimisel saab syslog-ng puhul anda deemonile nt järgmise signaali:

 # /bin/kill -HUP `cat /var/run/proftpd/proftpd.pid

FTP virtuaalsed kasutajad

Kõige lihtsam lahendus on tekitada süsteemi kasutaja, kelle shelliks oleks seadistatud nologin.

TODO

Näiteks FreeBSDs võiks kasutaja olla shelliga /usr/sbin/nologin ja see kasutaja näeb master.passwd failis välja järgmine

ove:$1$/G3e4x6$sdfYEaaYwmaasKtu2jJkV0:1015:45::0:0:jagamiseks:/home/ove:/usr/sbin/nologin