Proftpd jest jednym z najpopularniejszych serwerów ftp dla Linuxa. Łatwy w konfiguracji, dość powiedzieć, że od razu po instalacji można z niego korzystać.
UWAGA:Po zainstalowaniu proftpd uzyskujemy pełny dostęp do plików i katalogów na serwerze!!! Dlatego odradzałbym pozostawienie proftpd w domyślnej konfiguracji.
Przed omówieniem podstawowej konfiguracji musimy sobie zadać pytanie: “kogo ma obsługiwać nasz serwer plików i jakie zasoby udostępniać?”
Mamy do wyboru:
- użytkownicy systemowi – użytkownicy mający dostęp do kont shell na naszym serwerze (zaufani)
- użytkownicy ftp – użytkownicy posiadający tylko dostęp do konta na ftp (mniej zaufani)
- użytkownicy anonimowi – użytkownicy posiadający dostęp to tzw. anonymous FTP, czyli przeważnie mogący ściągać pliki udostępnione przez administratora bez podawania loginu ani hasła
Domyślna konfiguracja jest zorientowana na użytkowników systemowych i na razie skupię się na niej.
Edytujemy plik proftpd.conf:
# Dołączamy konfigi ewentualnie aktywowanych modułów.
Include /etc/proftpd/modules.conf
# Tryb pracy serwera, uruchamiamy jako samodzielny proces.
ServerType standalone
# Określamy konfigurację jako domyślną
DefaultServer on
# Jesli nie używamy IPv6.
UseIPv6 off
# Te 3 opcje znacznie skracają czas logowania.
UseReverseDNS off
IdentLookups off
ServerIdent off
# Określamy nazwę naszego serwera, nie podajemy jego nazwy ani wersji.
ServerName "ftp by ulos.pl"
# Komunikat powitalny.
DisplayLogin welcome.msg
# Zezwalamy na komunikat powitalny dopiero po zalogowaniu.
DeferWelcome on
MultilineRFC2228 on
# Zezwalamy na wyświetlanie dowiązań.
ShowSymlinks on
# Czas w jakim zostanie przerwane połączenie z serwerem.
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayChdir .message true
DenyFilter \*.*/
# Blokada logowania użytkownikowi root.
RootLogin off
# Uwięzienie użytkownika w wyznaczonym katalogu, z którego nie będzie mógł się wydostać.
# znak ~ katalog domowy w systemie Linux.
DefaultRoot ~
# Opcje do listowania plików w trybie binarnym:
# "-a"="ls -a" , "+a"=blokada parametru a czyli plików ukrytych(z kropką).
ListOptions "+a"
# Sprawdzamy czy dany użytkownik, który się loguje
# posiada przypisaną w /etc/shells powłokę (szybka metoda do zablokowania).
RequireValidShell on
# Port na którym nasłuchuje proftpd.
Port 21
# Konfiguracja portów trybu pasywnego używanego przez przeglądarki (ftp://host.pl).
# PassivePorts 49152 65534
# Użyteczna opcja jeśli nasz komputer stoi za NAT-em.
# MasqueradeAddress 1.2.3.4
# This is useful for masquerading address with dynamic IPs:
# refresh any configured MasqueradeAddress directives every 8 hours
# DynMasqRefresh 28800
# Maksymalna liczba procesów demona FTP.
# Dzięki tej dyrektywie możemy ustrzec się przed atakami typu DoS.
MaxInstances 30
# Użytkownik i grupa do których będzie należał proces serwera.
User proftpd
Group nogroup
# Ustawienie prawa dostępu właściciela do modyfikacji pliku i katalogów.
# 022 => 755 , 077 => 700 , 002 => 775
Umask 022 022
# Pozwolenie na nadpisywanie plików.
AllowOverwrite on
# Konfiguracja logów.
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log
Oczywiście po zmianie w pliku proftpd.conf restartujemy serwer.
/etc/init.d/proftpd restart
Jest to przykład podstawowej konfiguracji proftpd z zachowaniem pewnych norm bezpieczęństwa dla użytkowników systemowych.
Należy wspomnień o jeszcze jednej istotnej sprawie, protokół ftp przesyła hasła i loginy w postaci niezaszyfrowanej , jako tzw.plain text co daje możliwość podsłuchania tych dość ważnych informacji.
Teraz zajmiemy się wirtualnymi użytkownikami, którzy będą tylko posiadali konto ftp.
Pierwszym krokiem będzie stworzenie katalogu dla wirtualnych użytkowników i nadanie mu odpowiednich praw.
mkdir /home/ftp chown proftpd:nobody /home/ftp chmod 751 /home/ftp
-
- Tworzenie użytkowników realizujemy za pomocą narzędzia ftpasswd:
ftpasswd --passwd --file /etc/proftpd/ftpd.passwd --name nazwa_usera --home /home/ftp/nazwa_katalogu -p -- uid id_usera_ftp --gid id_grupy_ftp --shell /bin/false
gdzie: id_usera_ftp i id_grupy_ftp są to z pliku proftpd.conf dyrektywy: User i Group
-
-
- Możemy
- się posłużyć prostym skryptem który uwolni nas od żmudnego pisania tylu parametrów:
-
mcedit ftpcreate.sh
#!/bin/sh if [ $# -lt 2 ] ; then echo "podaj jako pierwszy parametr nazwe uzytkownika, jako drugi parametr jego folder" else ftpasswd --passwd --file /etc/proftpd/.ftpd.passwd --name $1 --home /home/ftp/$2 -p --uid 106 --gid 65534 --shell /bin/false mkdir -p /home/ftp/$2 chown -R proftpd:nogroup /home/ftp/$2 chmod 751 /home/ftp/$2 fi
-
- Nadajemy odpowiednie uprawnienia:
chmod 700 ftpcreate.sh
-
- Korzystamy w następujący sposób: ./ftpcreate.sh nazwa_użytkownika jego_katalog, po czym padnie pytanie o hasło…
-
- Pamiętajmy również o modyfikacji uprawnień pliku ftpd.passwd:
chmod 600 .ftpd.passwd
-
-
- Następnie trzeba poddać lekkim modyfikacją główny plik konfiguracyjny proftpd.conf
Dodajemy ścieżkę do pliku z użytkownikami i hasłami, w naszym przypadku:
-
AuthUserFile /etc/proftpd/ftpd.passwd
-
- Zmieniamy dyrektywę: RequireValidShell on na
RequireValidShell off
W tym momencie serwer obsługuje użytkowników zarówno wirtualnych jak i systemowych.
źródło: ulos.pl
skibidi