RSS

Konfiguracja vsftpd ( Very Secure FTP Server )

28 Lip

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.redhat.com, ftp.openbsd.org, ftp.suse.com, ftp.ximian.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.

Instalacja
# apt-get update
# apt-get install vsftpd

Konfiguracja
vsftpd pozwala nam na odpalenie wielu serwerów FTP jednocześnie na różnych portach, dzięki temu zyskujemy możliwość odpalenia serwera anonimowego osobno konfigurowalnego obok serwera produkcyjnego. Zmiana konfiguracji jednego lub wyłączenie nie zakłóci pracy drugiego. Postaram się przedstawić taką konfigurację w tym wpisie.

Standardowy plik konfiguracyjny vsftpd znajduje się w /etc/vsftpd.conf . Od razu po instalacji znajdziemy w nim sporo już gotowych ustawień, jednak polecałbym wykasować jego zawartość i stworzyć go od nowa. Oto niektóre z najważniejszych opcji jakie możemy wykorzystać podczas budowania własnego configa.

# Poziom z którego zostaje uruchomiony serwer
nopriv_user=

# Uruchamianie serwera w trybie standalone
listen=

# Określenie portu, na którym serwer ma nasłuchiwać (domyślnym jest port 21)
listen_port=

# Zabronienie na logowanie się użytkownikom anonimowym, domyślnie jest to YES
anonymous_enable=

# Zezwolenie na logowanie się użytkownikom lokalnym, domyślnie jest to NO
local_enable=

# Zezwolenie na zapis w katalogu użytkownika lokalnego
write_enable=

# Umask (w większości serwerów używany jest 022)
local_umask=

# Umask dotyczący anonimowych
anon_umask=022

# limit szybkości podawany jest w bajtach na sekundę, jeśli jest ustawiony na 0 to brak jakiegokolwiek limitu.
local_max_rate=

# Włączenie logowania
xferlog_enable=

# Ścieżka do pliku z logami
xferlog_file=/var/log/vsftpd.log

# Maksymalna liczba połączonych użytkowników
max_clients=

# Maksymalna liczba użytkowników mogących się połączyć z tego samego adresu IP
max_per_ip=

# Banner, który będzie wyświetlany podczas logowania. W jego stworzeniu może być pomocny program app-misc/figlet.
banner_file=/etc/vsftpd/vsftpd.banner

# Ograniczenie użytkownikom do poruszania się jedynie w obrębie katalogu domowego
chroot_local_user=

# Katalog dla chroot’a
secure_chroot_dir=/var/chroot/vsftpd

# Dodanie użytkowników, którzy mogą poruszać się poza katalogiem domowym
chroot_list_enable=YES

# Dodajemy użytkownika z przywilejami poruszania się poza katalogiem domowym np:
# echo „użytkownik” >> /etc/vsftpd/chroot.list
chroot_list_file=/etc/vsftpd/chroot.list

# Serwer nie będzie pytał o hasło, podczas logowania na anonymous:
no_anon_password=

# Pozwalamy na download plików, które będą miały ustawione prawa do odczytu (readable):
anon_world_readable_only=

# Zabraniamy na upload plików:
anon_upload_enable=

# Ukrywamy prawdziwych użytkowników oraz grup dla plików lub katalogów
# (vsftpd zamieni je na nazwy użytkownika odpowiedzialnego za anonimowy ftp):
hide_ids=

# Pozwala na tworzenie katalogów
anon_mkdir_write_enable=

# Pozwala na kasowanie i zmienianie nazw katalogów przez anonimowych
anon_other_write_enable=

# Pozwala ograniczyć transfer dla anonimowych
anon_max_rate=

# Maxymalny czas bezczynności
idle_session_timeout=300

# Jeżeli jest ustawione na YES pozwala na ściąganie metodą ASCII
ascii_download_enable=

# Jeżeli jest ustawione na YES pozwala na wysyłanie metodą ASCII
ascii_upload_enable=NO

# Sam decydujesz czy mogą się łączyć Aktywnie czy Pasywnie
connect_from_port_20=NO

# Ustawione na NO zablokuje polecenia PORT i ustawi serwer w tryb pasywny (lepiej YES)
port_enable=YES

# Ustawione na YES loguje polecenia FTP wydawane przez użytkowników
log_ftp_protocol=NO

# Pozwala ograniczyć możliwość wydawania komand do minimum(możemy zabronić ściągania, sprawdzania wielkości plików itp), pełna lista możliwość tutaj -> http://www.nsftools.com/tips/RawFTP.htm
cmds_allowed=

# Ciekawą opcją jest także `user_config_dir`, która pozwala przyporządkować dowolnemu użytkownikowi w systemie konkretne opcje. Mogą to być np. takie opcje jak listen_address, banner_file, max_per_ip, max_clients, xferlog_file, vsftpd_log_file, itp. Definiujemy więc ścieżkę do takiego katalogu, oraz tworzymy go w systemie. Po zdefiniowaniu tej opcji w pliku konfiguracyjnym, vsftpd będzie automatycznie szukał pliku, który nosi taką samą nazwę jak użytkownik systemowy. Na przykład dla użytkownika `tomek` takim plikiem będzie /usr/local/etc/vsftpd/user_conf/tomek, w tym właśnie pliku będziemy ustawiać konkretne opcje dla tego użytkownika.
user_config_dir=/usr/local/etc/vsftpd/user_conf/

# 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

Przykładowe pliki vsftpd.conf
Przykład nr 1
Poniższa konfiguracja serwera FTP umożliwia łączenie użytkowników do swoich katalogów domowych. Mogą oni pobierać i wysyłać na swoje konta dane z prędkością do 5 KB/s w każdą stronę. Po poprawnym zalogowaniu się do swoich kont nie będą mogli wychodzić poza swój katalog domowy ze względów bezpieczeństwa. Istnieje możliwość dodania użytkowników którzy będą mogli poruszać się poza swoim katalogiem domowym. Zabronione jest również logowanie się anonimowych użytkowników.

nopriv_user=ftp
listen=YES
listen_port=21
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
local_max_rate=5120
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
max_clients=500
max_per_ip=2
banner_file=/etc/vsftpd/vsftpd.banner
chroot_local_user=YES
secure_chroot_dir=/var/chroot/vsftpd
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot.list

Przykład nr 2
Poniższy przykład pozwala na logowanie się użytkowników anonimowych, serwer działa na porcie 2121. Anonimowi oraz normalni mogą pobierać i wysyłać na swoje konta dane bez ograniczeń. Wszyscy mają zakaz opuszczania własnego katalogu. Dla anonimowych będzie to /var/ftp . Maksymalna ilość połączeń wynosi 5 a dla jednego IP jest to 2. Pliki zakazane na serwerze to *.mp3 i *.avi a katalog files. A pliki niewidoczne dla userów do *.doc i *.xls

nopriv_user=ftp
listen=YES
listen_port=2121
anonymous_enable=YES
local_enable=YES
ftpd_banner="Serwer vsFTPd wita"
xferlog_enable=YES
xferlog_file=/var/log/xferlog.log
xferlog_std_format=YES
chroot_local_user=YES
secure_chroot_dir=/var/ftp
no_anon_password=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=NO
hide_ids=YES
local_umask=022
anon_umask=022
#limity liczby równoczesnych połączeń
max_clients=5
max_per_ip=2
idle_session_timeout=120
data_connection_timeout=900
deny_file={*.mp3,files/,*.avi}
hide_file={*.doc,*.xsl}

Przykład nr 3
Konto z możliwością logowania się tylko anonimowo. Można jedynie pobierać pliki bez ingerencje w nie.

listen=YES
anonymous_enable=YES
ftp_username=ftp
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
anon_world_readable_only=YES
anon_max_rate=0
idle_session_timeout=300
ascii_download_enable=NO
ascii_upload_enable=NO
connect_from_port_20=NO
port_enable=YES
hide_ids=NO
log_ftp_protocol=NO
syslog_enable=NO
max_per_ip=0
# cmds_allowed=
local_root=/usr/share/empty
nopriv_user=nobody
ftpd_banner=(vsFTPd 1.2.0)

Uruchamianie
Jeżeli posiadamy tylko jeden plik konfiguracyjny to możemy po prostu wydać polecenie /etc/init.d/./vsftpd start
Jeżeli posiadamy parę plików konfiguracyjnych to musimy każdy osobno załadować :
vsftpd /etc/vsftpd.conf.annonymus
vsftpd /etc/vsftpd.conf.normalny
vsftpd /etc/vsftpd.conf.bartek

To tyle;]

Reklamy
 
3 komentarze

Opublikował/a w dniu Lipiec 28, 2009 w linuks, Linux

 

Tagi:

3 responses to “Konfiguracja vsftpd ( Very Secure FTP Server )

  1. domgl

    Luty 25, 2010 at 2:54 pm

    Świetny opis:)

     
  2. buh

    Wrzesień 28, 2010 at 8:17 am

    Witam

    Wklejając konfig 1 do pliku konfiguracyjnego vsftpd nie mogę się zalogować userem na ftp,

    komunikat :

    Nie można wyświetlić położenia „ftp://buh@192.168.1.20/buh” Nieoczekiwany koniec strumienia.

    utworzyłem plik chroot.list w /etc/vsftpd/ który w środku wygląda tak:

    chroot_local_users=YES
    chroot_list_enable=NO

    I nie wiem co jest przyczyną tego, że na oryginalnym konfigu mogłem się zalogować jako użytkownik (do katalogu / i biegać po całej zawartości – lecz bez możliwości kopiowania) a po próbie ograniczenia użytkownika do katalogu domowego i sprawienia aby mógł zapisywać pliki w swoim katalogu wogólę nie mogę sie zalogować na ten ftp.

    Możecie mi pomóc ?

    Pozdrawiam

     
  3. hasn

    Marzec 7, 2012 at 1:52 pm

    Stary szacun.

     

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s

 
%d blogerów lubi to: