ProFTPD - serwer ftp na Linuxa (wirtualni użytkownicy)
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
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.
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
- Tworzenie użytkowników realizujemy za pomocą narzędzia ftpasswd:
chown proftpd:nobody /home/ftp
chmod 751 /home/ftp
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:
#!/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
Zmieniamy dyrektywę: RequireValidShell on na RequireValidShell off
W tym momencie serwer obsługuje użytkowników zarówno wirtualnych jak i systemowych.
Powrót »