Wydrukuj tę dokumentację Pokaż jako slajdy


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:

  1. OpenLDAP jako baza wirtualnych użytkowników (nie trzeba tworzyć użytkowników w samym systemie operacyjnym)

  2. 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


{i}  (c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.

SerwerPureFtpd (ostatnio edytowane 2018-09-11 13:21:09 przez wtps0n)