Instalacja i konfiguracja Proftpd

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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Translate »