INFORMATICS

The Best

Przełącznik języka

Zaproś mnie na KAWE

Jeżeli podoba Ci się strona i chcesz wspomóc projekt!

Postaw mi kawę na buycoffee.to

This Site

Płatnik

CMS

Hardware

Uncategorised

Emulators

Powershell

Storage Array

DNS

Antivirus program

Licznik

3.png0.png7.png2.png6.png0.png9.png
Today181
Yesterday1070
This week5124
This month23122
Total3072609

Visitor Info

  • IP: 3.133.109.141
  • Browser: Unknown
  • Browser Version:
  • Operating System: Unknown

Who Is Online

1
Online

czwartek, 26 grudzień 2024 03:41

Jak zainstalować, skonfigurować i zabezpieczyć serwer FTP w CentOS - vsftpd

Gwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywna
 

FTP ( File Transfer Protocol ) to tradycyjne i powszechnie używane standardowe narzędzie do przesyłania plików między serwerem a klientami przez sieć, zwłaszcza tam, gdzie nie jest wymagane uwierzytelnianie (umożliwia anonimowym użytkownikom łączenie się z serwerem). Musimy zrozumieć, że FTP jest domyślnie niezabezpieczony, ponieważ przesyła poświadczenia użytkownika i dane bez szyfrowania.

W tym przewodniku opiszemy kroki instalacji, konfiguracji i zabezpieczenia serwera FTP ( VSFTPD oznacza „ Very Secure FTP Daemon ”) w dystrybucjach CentOS / RHEL 7 i Fedora .

 

Krok 1: Instalacja serwera FTP

1. Instalacja serwera vsftpd jest prosta, wystarczy uruchomić następujące polecenie w terminalu.

# yum install vsftpd

2. Po zakończeniu instalacji usługa zostanie najpierw wyłączona, więc na razie musimy uruchomić ją ręcznie i umożliwić jej automatyczne uruchamianie od następnego uruchomienia systemu:

# systemctl start vsftpd
# systemctl enable vsftpd


3. Następnie, aby umożliwić dostęp do usług FTP z zewnętrznych systemów, musimy otworzyć port 21 , na którym nasłuchują demony FTP w następujący sposób:

# firewall-cmd --zone = public --permanent --add-port = 21 / tcp 
# firewall-cmd --zone = public --permanent --add-service = ftp 
# firewall-cmd --reload

Krok 2: Konfiguracja serwera FTP

4. Teraz przejdziemy do wykonania kilku konfiguracji w celu ustawienia i zabezpieczenia naszego serwera FTP. Zacznijmy od wykonania kopii zapasowej oryginalnego pliku konfiguracyjnego /etc/vsftpd/vsftpd.conf :

 

# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig

Następnie otwórz plik konfiguracyjny powyżej i ustaw następujące opcje z odpowiednimi wartościami:

 

anonymous_enable=NO             # disable  anonymous login
local_enable=YES		# permit local logins
write_enable=YES		# enable FTP commands which change the filesystem
local_umask=022		        # value of umask for file creation for local users
dirmessage_enable=YES	        # enable showing of messages when users first enter a new directory
xferlog_enable=YES		# a log file will be maintained detailing uploads and downloads
connect_from_port_20=YES        # use port 20 (ftp-data) on the server machine for PORT style connections
xferlog_std_format=YES          # keep standard log file format
listen=NO   			# prevent vsftpd from running in standalone mode
listen_ipv6=YES		        # vsftpd will listen on an IPv6 socket instead of an IPv4 one
pam_service_name=vsftpd         # name of the PAM service vsftpd will use
userlist_enable=YES  	        # enable vsftpd to load a list of usernames
tcp_wrappers=YES  		# turn on tcp wrappers
 

5. Teraz skonfiguruj FTP tak, aby zezwalał / odmawiał dostępu do FTP użytkownikom na podstawie pliku listy użytkowników /etc/vsftpd.userlist.

Domyślnie użytkownikom wymienionym w userlist_file=/etc/vsftpd.userlistsekcji odmawia się dostępu do logowania z opcją userlist_deny ustawioną na YES , jeśli userlist_enable = YES .

Jednak userlist_deny = NO zmienia to ustawienie, co oznacza, że ​​tylko użytkownicy wyraźnie wyszczególnieni w userlist_file = / etc / vsftpd.userlist będą mogli się zalogować.

 

userlist_enable=YES                   # vsftpd will load a list of usernames, from the filename given by userlist_file
userlist_file=/etc/vsftpd.userlist    # stores usernames.
userlist_deny=NO   


To nie wszystko, kiedy użytkownicy logują się do serwera FTP, są umieszczani w więzieniu w chroot, jest to lokalny katalog główny, który będzie działał jako ich katalog domowy tylko dla sesji FTP.

Następnie przyjrzymy się dwóm możliwym scenariuszom chrootowania użytkowników FTP do katalogów domowych (lokalnego katalogu głównego) dla użytkowników FTP, jak wyjaśniono poniżej.

6. Teraz dodaj te dwie następujące opcje, aby ograniczyć użytkownikom FTP dostęp do ich katalogów domowych.

chroot_local_user=YES
allow_writeable_chroot=YES

chroot_local_user = YES oznacza, że ​​użytkownicy lokalni zostaną umieszczeni w więzieniu chroot, ich katalogu domowym po zalogowaniu się domyślnie.

Domyślnie vsftpd nie zezwala na zapis w katalogu jail chroot ze względów bezpieczeństwa, jednak możemy użyć opcji allow_writeable_chroot = YES, aby nadpisać to ustawienie.

Zapisz plik i zamknij go.

 

Zabezpieczanie serwera FTP za pomocą SELinux

7. Teraz ustawmy poniżej wartość logiczną SELinux, aby umożliwić FTP odczytywanie plików z katalogu domowego użytkownika. Zauważ, że zostało to początkowo zrobione za pomocą polecenia:

# setsebool -P ftp_home_dir on

Krok 4: Testowanie serwera FTP

8. Teraz przetestujemy serwer FTP, tworząc użytkownika FTP za pomocą polecenia useradd .

# useradd -m -c „Ravi Saive, CEO” -s / bin / bash ravi 
# passwd ravi

Następnie musimy dodać użytkownika ravi do pliku /etc/vsftpd.userlist za pomocą polecenia echo w następujący sposób:

# echo "ravi" | tee -a /etc/vsftpd.userlist 
# cat /etc/vsftpd.userlist

9. Teraz czas sprawdzić, czy powyższe ustawienia działają poprawnie. Zacznijmy od przetestowania logowania anonimowego, na poniższym zrzucie ekranu widać, że logowanie anonimowe jest niedozwolone:

# ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : anonymous
530 Permission denied.
Login failed.
ftp>

10. Sprawdźmy również, czy użytkownik nie wymieniony w pliku /etc/vsftpd.userlist otrzyma uprawnienia do logowania, co nie ma miejsca jak na poniższym zrzucie ekranu:

# ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : aaronkilik
530 Permission denied.
Login failed.
ftp>

11. Teraz sprawdź, czy użytkownik wymieniony w pliku /etc/vsftpd.userlist rzeczywiście znajduje się w swoim katalogu domowym po zalogowaniu:


 
# ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Ostrzeżenie : używanie allow_writeable_chroot=YESma pewne konsekwencje dla bezpieczeństwa, zwłaszcza jeśli użytkownicy mają uprawnienia do przesyłania lub dostęp do powłoki.

Aktywuj tę opcję tylko wtedy, gdy dokładnie wiesz, co robisz. Należy zauważyć, że te konsekwencje dla bezpieczeństwa nie są specyficzne dla vsftpd, mają zastosowanie do wszystkich demonów FTP, które oferują również umieszczanie lokalnych użytkowników w więzieniu chroot.

Dlatego w następnej sekcji przyjrzymy się bezpieczniejszemu sposobowi ustawienia innego niezapisywalnego lokalnego katalogu głównego.

 

Krok 5: Skonfiguruj różne katalogi domowe użytkowników FTP

12. Otwórz ponownie plik konfiguracyjny vsftpd i zacznij od skomentowania opcji niezabezpieczonej poniżej:

# allow_writeable_chroot = YES

Następnie utwórz alternatywny lokalny katalog główny dla użytkownika ( raviTwój prawdopodobnie jest inny) i usuń uprawnienia zapisu dla wszystkich użytkowników w tym katalogu:



# mkdir /home/ravi/ftp
# chown nobody:nobody /home/ravi/ftp
# chmod a-w /home/ravi/ftp
13. Następnie utwórz katalog w lokalnym katalogu głównym, w którym użytkownik będzie przechowywać swoje pliki:

# mkdir /home/ravi/ftp/files
# chown ravi:ravi  /home/ravi/ftp/files
# chmod 0700 /home/ravi/ftp/files/

Następnie dodaj / zmodyfikuj następujące opcje w pliku konfiguracyjnym vsftpd za pomocą tych wartości:


user_sub_token=$USER         # inserts the username in the local root directory 
local_root=/home/$USER/ftp   # defines any users local root directory


Zapisz plik i zamknij go. Jeszcze raz zrestartujmy usługę z nowymi ustawieniami:

# systemctl restart vsftpd

14. Teraz wykonaj jeszcze raz ostatni test i sprawdź, czy lokalny katalog główny użytkownika to katalog FTP, który utworzyliśmy w jego katalogu domowym.

# ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls


-------------------
Błędy które pojawiają się po konfiguracji
OOPS: vsftpd: refusing to run with writable root inside chrooot()

Błąd jest spowodowane tym, że katalog użytkownika, z którym się łączysz, obsługuje zapis. W normalnych chroot()sytuacjach katalog nadrzędny musi być tylko do odczytu.

Oznacza to, że w większości sytuacji używając polecenia useradd, w których utworzony zostanie katalog domowy należący do użytkownika i możliwy do zapisu przez użytkownika, zostanie wyświetlony powyższy błąd „ vsftpd: odmowa uruchomienia z zapisywalnym rootem wewnątrz chroot () ”.

Aby to naprawić, zmodyfikuj konfigurację vsftpd

$ cat /etc/vsftpd/vsftpd.conf
...
allow_writeable_chroot = TAK
Jeśli brakuje tego parametru, po prostu dodaj go na dole config. Następnie uruchom ponownie vsftpd .

$ service vsftpd restart



Rozwiązanie należy dodać linię
allow_writeable_chrooot=YES

Brak linii
allow_writeable_chroot=YES



--------------------
Błąd logowania do połączenia FTP 530


Błąd logowania 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
spróbować ponownie z tą samą nazwą użytkownika i hasłem, czy wprowadzić je ponownie?


Należy do konfiguracji vsftpd dodać wpis:

pam_service_name=vsftpd









 

 





Search