Serwer FTP normalny i bezpieczny na serwerach dedykowanych

Archiwalne, stare wpisy FAQ i HowTo Użytkowników
Awatar użytkownika
lis6502
Member
Posty: 1798
Rejestracja: 05 listopada 2008, 20:14
Lokalizacja: Miasto Szybowców

Serwer FTP normalny i bezpieczny na serwerach dedykowanych

Post autor: lis6502 »

Swego czasu dużo ludzi pytało jak zrobić to, a tamto z serwerem FTP, toteż postanowiłem napisać ten oto skromny przepis. Pewnie w sieci jest ich więcej ale mój stara się być po polsku.

Rozpoczynamy instalację:

Kod: Zaznacz cały

root@maszyna:~# apt-get install vsftpd openssl
Zaczynamy...

Kod: Zaznacz cały

root@maszyna~# rm /etc/vsftpd.conf
root@maszyna~# nano /etc/vsftpd.conf

Kod: Zaznacz cały

#demon ma być uruchomiony jako osobny proces ([b]YES[/b]) czy część inetd ([b]NO[/b])?
listen=YES
#jeśli ktoś posiada adres ipv6 może zmienić poniższą wartość na YES
listen_ipv6=NO
#pozwalamy na anonimowe logowania?
anonymous_enable=NO
#czy użytkownicy systemowi mogą się logować?
local_enable=YES
# Pozwalamy na zapis w udostępnionych katalogach?
write_enable=YES
#
# Jakie uprawnienia nadajemy nowo utworzonym plikom?
# Przypominam, że poniższe uprawnienia to bitowa negacja parametru dla chmod
# czyli jeśli uprawnienia dla pliku mają być 700, to ustawiamy 077
local_umask=077
#Pozwalamy na anonimowe wgrywanie plików na serwer?
anon_upload_enable=NO
#To może chociaż na tworzenie katalogów?
anon_mkdir_write_enable=NO
#Wysyłamy teksty z pliku /.message przy zmianie katalogu? 
dirmessage_enable=NO
#Logujemy transfery?
xferlog_enable=NO
#Od którego portu mają zaczynać się połączenia?
connect_from_port_20=YES
#Log zapisujemy standardowo do /var/log (poniższa opcja nie ma znaczenia jeśli  wcześniej ustawiliśmy [b]xferlog_enable[/b] na [b]NO[/b]
xferlog_file=/var/log/vsftpd.log
# Jeśli dla kogoś czytelniejszy jest log w stylu [b]ftpd[/b] niech poniższa opcja będzie ustawiona na [b]YES[/b]
xferlog_std_format=YES
# Po ilu sekundach odłączyć nieaktywne połączenie?
idle_session_timeout=600
# Odkomentuj poniższą opcję i ustaw czas na sekundy, po upłynięciu których połączenie danych ma zostać przerwane
# data_connection_timeout=120
# Powitalna wiadomość po połączeniu do naszego serwera
ftpd_banner=vsFTPd wita!
# [b]Zabraniamy użytkownikowi wyjścia poza jego katalog domowy?[/b]
chroot_local_user=YES
#
# Można także podać listę użytkowników, którym chcemy ograniczyć wyjście z ich katalogów domowych.
#W wypadku gdy [b]chroot_local_user[/b] ustawione jest na [b]YES[/b], poniższa lista opisuje użytkowników, którzy [b]mogą[/b] poruszać się po całym serwerze.
#chroot_list_enable=NO
#chroot_list_file=/etc/vsftpd.chroot_list
# Katalog przechowywania żywotnych składników programu serwera
secure_chroot_dir=/var/run/vsftpd
#
# Poniższa nazwa pojawi się w [b]auth.log[/b] przy logowaniu na serwer
pam_service_name=vsftpd
I mamy, zainstalowaliśmy serwer FTP uwierzytelniający użytkowników na podstawie ich kont w systemie. Komu mało, niech przystąpi do dalszego czytania.
...dodajemy SSL celem szyfrowania połączenia...

Najpierw należy wygenerować unikalny klucz, który odróżni nasz serwer od innych szyfrowanych.

Kod: Zaznacz cały

openssl req -x509 -nodes -days [b]ilość_dni_po_których_klucz_wygasa[/b] -newkey rsa:1024 -keyout /etc/vsftpd.pem -out /etc/vsftpd.pem
...ubogacamy konfig...
Do powyższego konfigu dodajemy na końcu następujące linijki:

Kod: Zaznacz cały

#Gdzie leży plik z wcześniej wygenerowanym kluczem?
rsa_cert_file=/etc/vsftpd.pem 
# Włączamy obsługę SSL
ssl_enable=YES
# Szyfrować połączenia od anonimowych użytkowników?
allow_anon_ssl=NO
# Szyfrować połączenia od użytkowników systemowych?
force_local_logins_ssl=YES
# W jaki wariant SSL wybieramy?
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
...gotowe.

Po tych manewrach bardzo ważna rzecz:

Kod: Zaznacz cały

root@maszyna~# /etc/init.d/vsftpd restart
którą wykonać należy po każdej zmianie konfiguracji.

Niniejszym proszę o jakieś sugestie, pytania oraz piętnowanie błędów. W miarę możliwości (i wiedzy) postaram się ten opis uzupełniać.
Zablokowany