Wydrukuj tę dokumentację Pokaż jako slajdy
Spis Treści
Instalacja oraz konfiguracja serwera FTP
Usług FTP ma swoje mankamenty (zaszłości historyczne), niemniej z wykorzystaniem poniższych narzędzi można uruchomić bezpieczny serwer FTP:
OpenLDAP jako baza wirtualnych użytkowników (nie trzeba tworzyć użytkowników w samym systemie operacyjnym)
PureFTPd wspierający szyfrowanie transmisji za pomocą TLS oraz umiejący korzystać z kont zdefiniowanych w OpenLDAP.
ftp/pure-ftpd - instalacja
Z wykorzystaniem własnego repozytorium pakietów należy zainstalować PureFTPd:
pkg install -Uy pure-ftpd
Konfiguracja pureftpd
Domyślnie pliki konfiguracyjne są umieszczone w katalogu /usr/local/etc. Niemniej w celu uproszczenia zarządzaniem usługą całość została umieszczona w dedykowanym katalogu:
mkdir -p /usr/local/etc/pureftpd/
cp /tmp/ZACZYN.txt /usr/local/etc/pureftpd/pureftpd-ldap.conf
cp /tmp/ZACZYN.txt /usr/local/etc/pureftpd/pure-ftpd.conf
Z wykorzystaniem repozytorium skryptów należy dograć odpowiedni Makefile ułatwiający prace utrzymaniowe.
Zmiany w slapd.conf
W konfiguracji serwera OpenLDAP należy zapewnić następującą konfigurację:
include /usr/local/etc/openldap/schema/pureftpd.schema
# [...]
# Access Control List:
access to dn.subtree="ou=ftpd,dc=codenix,dc=pro"
by dn="uid=pureftpd,ou=admins,dc=codenix,dc=pro" read
by dn.exact="uid=lsyncmaster,ou=admins,dc=codenix,dc=pro" read
by dn="uid=saslauthd,ou=admins,dc=codenix,dc=pro" read
by self write
by * auth
pureftpd-ldap.conf
Zawartość konfiguracji do odpytywania drzewa OpenLDAP:
LDAPServer 127.0.0.1
LDAPPort 389
LDAPBaseDN ou=ftpd,dc=codenix,dc=pro
LDAPBindDN uid=pureftpd,ou=admins,dc=codenix,dc=pro
LDAPBindPW *******
pure-ftpd.conf
ChrootEveryone yes
BrokenClientsCompatibility no
MaxClientsNumber 50
Daemonize yes
MaxClientsPerIP 3
VerboseLog yes
DisplayDotFiles no
AnonymousOnly no # tu można sterować, czy serwer ma być anonimowy
NoAnonymous no # tu nie włączamy w ogóle takiej możliwości
SyslogFacility ftp
DontResolve yes
MaxIdleTime 15
LimitRecursion 2000 8
AnonymousCanCreateDirs no
AnonymousBandwidth ___USTALIC_LIMIT_DLA_ANONIMOWYCH__W_KiB___ # czyli to jest 8*bps
MaxLoad 4
AntiWarez yes
Umask 113:022
MinUID 100
AllowUserFXP no
AllowAnonymousFXP no
ProhibitDotFilesWrite no
ProhibitDotFilesRead no
AutoRename no
AnonymousCantUpload no
MaxDiskUsage 75 # Ponad tyle % zajętości dysku nie można robić anonimowego uploadu
CustomerProof yes
TLS 1
TLSCipherSuite HIGH:MEDIUM:+TLSv1.2:+TLSv1:!SSLv2:!SSLv3
LDAPConfigFile /usr/local/etc/pureftpd/pureftpd-ldap.conf
AltLog clf:/var/log/pureftpd/pureftpd.log
###AltLog stats:/var/log/pureftpd/pureftpd-stats.log
PassivePortRange 40000 40500
ForcePassiveIP __ADRES_IP_SERWERA__
FTP anonimowy
Wystarczy utworzyć użytkownika o nazwie ftp (oraz grupę tak dla porządku):
pw add group ftpd -g 21
pw add user ftp -u 21 -g ftpd -c "FTPd Anonymous Login" -s /sbin/nologin -d /var/ftpd/anon
Włączenie obsługi TLS
Jeżeli posiadamy certyfikat dla serwera, to jest możliwość włączenia obsługi TLS. W tym celu trzeba utworzyć plik z kluczem oraz hasłem w specjalnym katalogu:
mkdir -p /etc/ssl/private/
# tutaj trzeba podstawić odpowiednio nazwy plików z kluczem oraz certyfikatem
cat /usr/local/etc/ssl/server.key.pem /usr/local/etc/ssl/server.2048.dh.pem /usr/local/etc/ssl/server.crt.pem /etc/ssl/ca.crt.pem > /etc/ssl/private/pure-ftpd.pem
chmod 0600 /etc/ssl/private/pure-ftpd.pem
Generowanie certyfikatu PureFTPd z wykorzystaniem Let's Encrypt zostało umieszczone jako zadanie lokalnego Makefile.
rc.conf
W pliku /etc/rc.conf należy dodać następujące linie:
pureftpd_enable="YES"
pureftpd_config="/usr/local/etc/pureftpd/pure-ftpd.conf"
Albo też korzystając z repozytroium konfiguracji zainstalować plik /etc/rc.conf.d/pureftpd zmieniając wartość zmiennej pueftpd_enable na "YES".
Wykonanie katalogu na logi
Przed uruchomieniem serwera należy się upewnić, że jest wykonany katalog na logi:
mkdir -p /var/log/pureftpd
Uruchomienie serwera
Po wykonaniu całej konfiguracji pozostaje uruchomienie serwera:
service pureftpd start
(c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.
