Instalacja i konfiguracja serwera vsFTPd
Platforma: openSUSE 12
Jest to prawdopodobnie najbezpieczniejszy i najszybszy UNIX’owy serwer FTP. Jego zaletami są m.in. prostota konfiguracji, bezpieczeństwo i szybkość (transfer jest o wiele większy niż w przypadku innych serwerów ftp). Dodatkowo warto wspomnieć, że w jego kodzie nie znaleziono “błędów krytycznych”. Używany jest m.in. na serwerach ftp.suse.com, ftp.kde.org, ftp.debian.org, ftp.gnome.org, ftp.gnu.org i inne, co potwierdza tezę, że vsftpd jest zaufanym i dojrzałym narzędziem. Sama nazwa mówi za siebie – “vs” jest skrótem od Very Secure. Jeżeli chcesz mieć bezpieczny, wydajny i stabilny serwer FTP, powinieneś spróbować vsftpd. Vsftpd loguje wszystkie połączenia i przesłania plików – jest to bardzo dobra praktyka, pozwala potem na identyfikację ew. źródła włamania. Średni transfer 10MB/s
Na sam początek musimy pobrać serwer ftp. Otwieramy „Yast2” (programy>Narzędzia systemowe>YaST),wprowadzamy hasło root’a, wybieramy „Zarządzanie oprogramowaniem” i w okienku „Znajdź” wpisujemy vsftpd. Wyświetli nam się dostępny pakiet, zaznaczamy go, wybieramy na dole „Apply”, potwierdzamy „Zastosuj” i czekamy aż proces instalacji się zakończy.
vsFTPd został już zainstalowany, ale aby działał trzeba go włączyć w xinetd(Extended internet Daemon), czyli narzędziu udostępniającym usługi w sieci. Aby tego dokonać:
otwieramy Terminal(programy>akcesoria>Terminal GNOME), logujemy się jako root poleceniem „su –„.
Przechodzimy do katalogu poleceniem „cd /etc/xinetd.d/
Edytujemy plik poleceniem „vi vsftpd”, naciskamy INSERT zmieniamy w status disable na „no”, naciskamy ESC i wpisujemy „:wq” . vsftpd działa (ewentualnie należy jeszcze wyłączyć w vsftpd.conf nasłuchiwanie ipv6 (listen_ipv6=NO)
Rysunek włączanie usługi
Cała konfiguracja serwera zawarta jest w pliku: „vsftpd.conf” znajdującym się w „/etc”.
Plik „vsftpd.conf” zawiera następujące wiersze konfiguracyjne:
zezwolenie na zapis
write_enable=YES
wiadomości katalogowe
dirmessage_enable=YES
Poziom z którego zostaje uruchomiony serwer
nopriv_user=ftpsecure
Baner
ftpd_banner=Welcome to blach FTP service
Gdy jest włączona, każdy użytkownik anonimowy korzystania z haseł e-mail z vsftpd.banned_emails:
Denny_email_enable=YES
Zezwolenie na logowanie się użytkownikom lokalnym
local_enable=NO
Umask (w większości serwerów używany jest 022)
local_umask=022
Ograniczenie użytkownikom do poruszania się jedynie w obrębie katalogu domowego
chroot_local_user=YES
Dodanie użytkowników, którzy mogą poruszać się poza katalogiem domowym
chroot_list_enable=YES
limit szybkości podawany jest w bajtach na sekundę, jeśli jest ustawiony na 0 to brak jakiegokolwiek limitu.
local_max_rate=7200
Zabronienie na logowanie się użytkownikom anonimowym
anonymous_enable=YES
Pozwala ograniczyć transfer dla anonimowych
anon_max_rate=7200
Pozwalamy na download plików, które będą miały ustawione prawa do odczytu (readable):
anon_world_readable_only=YES
Umask dotyczący anonimowych
anon_umask=022
Zabraniamy na upload plików:
anon_upload_enable=YES
Pozwala na tworzenie katalogów
anon_mkdir_write_enable=YES
Pozwala na kasowanie i zmienianie nazw katalogów przez anonimowych
anon_other_write_enable=YES
Po włączeniu wszystkie pliki przesłane przez anonimowych użytkowników są własnością użytkownika określonego w dyrektywie chown_username.
chown_uploads =YES
Określa własności anonimowo wysłanych plików jeśli dyrektywa chown_uploads jest włączona.
Chown_username=whoever
Monitorowanie wszystkich działalności FTP
Ostrożnie! To może tworzyć ogromną ilość danych.
log_ftp_protocol=YES
Włącz monitoring
xferlog_enable=YES
Wartość NO oznacza, że logi będą zapisywane charakterystycznym dla vsftpd, a YES w pliku xferlog
Xferlog_std_format=NO
Umożliwia korzystanie z tych dwóch standardów na raz(xferlog i vsftpd)
Dual_log_enable=YES
Opcja ta pokazuje informację o procesie systemowym vsftpd, inaczej mówiąc pokazuje co dany użytkownik robi po połączeniu się z naszym serwerem
setproctitle_enable=YES
Sam decydujesz czy mogą się łączyć Aktywnie czy Pasywnie
connect_from_port_20=NO
Maxymalny czas bezczynności
idle_session_timeout=600
Timeout dla danych
data_connection_timeout=120
Może mylić starszych klientów FTP
async_abor_enable=YES
Jeżeli jest ustawione na YES pozwala na wysyłanie metodą ASCII
ascii_upload_enable=NO
Jeżeli jest ustawione na YES pozwala na ściąganie metodą ASCII
ascii_download_enable=
Po włączeniu, tryb pasywny łączy są jako dozwolony
Pasv_enable=NO
Dostęp przez Pluggable Authentication Modules (PAM)
pam_service_name=vsftpd
Uruchamianie serwera w trybie standalone
listen=YES
Po włączeniu vsftpd działa w trybie autonomicznym, ale słucha się tylko do IPv6 gniazd. Niniejsza dyrektywa nie może być stosowany w połączeniu z dyrektywą słuchać.
Listen_ipv6=NO
Szyfrowanie SSL
Ssl_enable=NO
Określa najniższą możliwą portu wysyłane do klientów FTP dla pasywnych połączeń trybu.
Pasv_min_port=30000
Określa najwyższą możliwą portu wysyłane do klientów FTP dla pasywnych połączeń trybu.
Pasv_max_port=30000
Aby korzystać z ftp trzeba się do niego zalogować podając jakiegoś użytkownika z systemu lub z listy vsftpd. Także chcąc się zalogować wybieramy Terminal(programy>akcesoria>Terminal GNOME) i wpisujemy: „ftp localhost” lub adres ip, na którym znajduje się ftp np. „ftp 10.0.0.1”. Następnie podajemy nazwę użytkownika i hasło albo logujemy się anonimowo, „anonymous” (jeżeli jest to włączone w vsftpd.conf).Tworząc wcześniej plik .message można nadać np. wiadomość powitalną lub interesującą nas treść, która będzie wyświetlała się po uruchomieniu FTP. Cała procedura wygląda następująco:
To, że serwer FTP nam działa to jeszcze nie jest powód do radości, gdyż nasuwa się pytanie – Jakimi poleceniami poruszać się i zarządzać w FTP? Dostępne polecenia znajdują się po wpisaniu komendy „help”.
Jednym z ważniejszych poleceń można uznać polecenie „get”, które pobiera plik z komputera zdalnego (do którego się łączymy) i zapisuje na lokalnym(z którego się łączymy), ewentualnie zmienia nazwe pliku na inna. Screen poniżej ukazuje działanie tego polecenia:
Rysunek Pobieranie pliku z komputera zdalnego
Przekazywanie plików przez FTP działa w obie strony dlatego też pokażę jak wygląd zabieg odwrotny czyli wysyłanie. Poleceniem, którego użyłem jest „send”. Zabieg wyglądał następująco:
ls- wylistowanie zawartosci katalogu zdalnego wraz z uprawnieniami (dir)
cd- zmiana katalogu zdalnego
pwd- podaje nazwe katalogu zdalnego
lcd- podaje nazwe katalogu lokalnego
dir- wyswietla katalog zdalny i ewentualnie zapisuje do pliku lokalnego
Skladnia: dir [katalog_zdalny] [plik_lokalny]
get- pobiera plik z komputera zdalnego i zapisuje na lokalnym, ewentualnie zmienia nazwe pliku na inna.
Skladnia: get plik_zdalny [plik_lokalny]
mget- pobiera jeden lub wiecej plikow z komputera zdalnego i zapisuje na komputerze lokalnym. Mozna stosowac maski
Skladnia: mget *.txt
put- wysyla jeden plik z komputera lokalnego na komputer zdalny, ewentualnie zmieniajac jego nazwe
Skaldnia: put plik_lokalny [plik_zdalny]
send- tak jak put wysyla jeden plik z komputera lokalnego na komputer zdalny, ewentualnie zmieniajac jego nazwe
Stworzone katalogi:
Stworzeni użytkowników:
„userA” należący do „userzyA”(grupa 1)
„userB” należący do „userzyB”(grupa 2)
„obcy” nie należący do żadnej z tych grup
Wchodzimy w terminal, logujemy się na root’a, tworzymy katalog w interesującej nas lokalizacji na serwerze np. „/home” poleceniem „mkdir odczyt”, następnie wpisujemy polecenie „chmod 755 odczyt” co sprawi, że katalogowi „odczyt” zostaną nadane uprawnienia (nas interesuje ostatnia 5, oznaczającą odczyt i egzekwowanie dla wszystkich). Uprawnienia zrobione, sprawdzamy jak wygląda to na FTP. Screen poniżej przedstawia efekt.
Tworzymy katalog „zapis” poleceniem „mkdir zapis”, następnie wpisujemy polecenie „chmod 733 zapis” co sprawi, że katalogowi „zapis” zostaną nadane uprawnienia(nas interesuje ostatnia 3, oznaczająca odczyt i egzekwowanie dla wszystkich). Uprawnienia zrobione, sprawdzamy jak wygląda to na FTP. Screen poniżej przedstawia efekt.
Tutaj sytuacja jest nieco trudniejsza. Uprawnienia stworzymy za pomocą ACL (list kontroli dostępu). Wchodzimy w terminal na root’a i wykonujemy takie czynności jak na screenie:
Na screenie zostały zrobione takie operacje jak: stworzenie katalogu wspólny; nadanie mu pełnych uprawnień dla root’a (tworzyciela) i braku dla grupy i innych; dodanie pełnych uprawnień dla grupy userzyA i uprawnień odczytu i egzekwowania dla grupy userzyB; sprawdzenie uprawnień. Ok sprawdźmy jak wygląda to na FTP:
Jak wydać powyżej „userB” należący do grupy „userzyB” może wejść, ale nie może wysyłać plików (zapis). Natomiast „userA” należący do grupy „userzyA” może wejść jak i wysłać plik. „obcy” nie należący do żadnej z tych grup nie może się dostać.
Rysunek 2 Udostępnienie anonimowego logowania się 4
Rysunek 3 Zezwolenie na anonimowe logowanie 4
Rysunek 4 Zezwolenie na zapis 5
Rysunek 5 Poruszanie sie użytkowników w obrębie/poza katalogiem domowym 5
Rysunek 7 Polecenia dostępne w FTP 6
Rysunek 8 Pobieranie pliku z komputera zdalnego 7
Rysunek 9 Wysyłanie pliku na komputer zdalny 7
Rysunek 12 Nadawanie uprawnień ACL 10
Rysunek 13 Użytkownik nie należący do jednej z tych 2 grup nie może dostać się do katalogu 10
Rysunek 14 Uprawnienia do katalogu wspolny 10