Wyszukiwanie w witrynie

Seria RHCSA: Instalowanie, konfigurowanie i zabezpieczanie serwera WWW i FTP - część 9


Serwer WWW (znany również jako serwer HTTP) to usługa, która obsługuje zawartość (najczęściej strony internetowe, ale także inne typy dokumentów) do klienta w sieci.

Serwer FTP to jeden z najstarszych i najczęściej używanych zasobów (nawet do dziś) umożliwiający udostępnianie plików klientom w sieci w przypadkach, gdy uwierzytelnienie nie jest konieczne, ponieważ FTP używa nazwy użytkownika i hasło bez szyfrowania.

Serwer WWW dostępny w RHEL 7 to wersja 2.4 serwera Apache HTTP. Jeśli chodzi o serwer FTP, będziemy używać bardzo bezpiecznego demona Ftp (znanego również jako vsftpd) do ustanawiania połączeń zabezpieczonych przez TLS.

W tym artykule wyjaśnimy, jak zainstalować, skonfigurować i zabezpieczyć serwer WWW i serwer FTP w RHEL 7.

Instalacja serwera Apache i FTP

W tym przewodniku będziemy używać serwera RHEL 7 ze statycznym adresem IP 192.168.0.18/24. Aby zainstalować Apache i VSFTPD, uruchom następującą komendę:


yum update && yum install httpd vsftpd

Po zakończeniu instalacji obie usługi zostaną początkowo wyłączone, więc na razie musimy uruchomić je ręcznie i umożliwić im automatyczne uruchamianie począwszy od następnego uruchomienia:


systemctl start httpd
systemctl enable httpd
systemctl start vsftpd
systemctl enable vsftpd

Dodatkowo musimy otworzyć porty 80 i 21, na których nasłuchują odpowiednio demony web i ftp, aby umożliwić dostęp do tych usług z zewnątrz:


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

Aby upewnić się, że serwer WWW działa prawidłowo, uruchom przeglądarkę i wprowadź adres IP serwera. Powinieneś zobaczyć stronę testową:

Jeśli chodzi o serwer FTP, będziemy musieli go dalej skonfigurować, co zrobimy za minutę, zanim potwierdzimy, że działa zgodnie z oczekiwaniami.

Konfigurowanie i zabezpieczanie serwera WWW Apache

Główny plik konfiguracyjny Apache znajduje się w /etc/httpd/conf/httpd.conf, ale może opierać się na innych plikach znajdujących się w /etc/httpd /conf.d.

Chociaż w większości przypadków domyślna konfiguracja powinna wystarczyć, warto zapoznać się ze wszystkimi dostępnymi opcjami opisanymi w oficjalnej dokumentacji.

Jak zawsze, przed edycją wykonaj kopię zapasową głównego pliku konfiguracyjnego:


cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%Y%m%d)

Następnie otwórz go za pomocą preferowanego edytora tekstu i poszukaj następujących zmiennych:

  1. ServerRoot: katalog, w którym przechowywana jest konfiguracja serwera, pliki błędów i dzienniki.
  2. Nasłuchuj: instruuje Apache, aby nasłuchiwał na określonym adresie IP i/lub portach.
  3. Dołącz: umożliwia dołączenie innych plików konfiguracyjnych, które muszą istnieć. W przeciwnym razie serwer ulegnie awarii, w przeciwieństwie do dyrektywy IncludeOptional, która jest dyskretnie ignorowana, jeśli określone pliki konfiguracyjne nie istnieją.
  4. Użytkownik i grupa: nazwa użytkownika/grupy, jako której ma zostać uruchomiona usługa httpd.
  5. DocumentRoot: katalog, z którego Apache będzie udostępniał Twoje dokumenty. Domyślnie wszystkie żądania są pobierane z tego katalogu, ale dowiązania symboliczne i aliasy mogą służyć do wskazywania innych lokalizacji.
  6. Nazwa Serwera: ta dyrektywa ustawia nazwę hosta (lub adres IP) i port, których serwer używa do identyfikacji.

Pierwszym środkiem bezpieczeństwa będzie utworzenie dedykowanego użytkownika i grupy (tj. tecmint/tecmint) do uruchamiania serwera WWW jako oraz zmiana domyślnego portu na wyższy (9000 w tym przypadku):


ServerRoot "/etc/httpd"
Listen 192.168.0.18:9000
User tecmint
Group tecmint
DocumentRoot "/var/www/html"
ServerName 192.168.0.18:9000

Możesz przetestować plik konfiguracyjny za pomocą.


apachectl configtest

i jeśli wszystko jest OK, zrestartuj serwer WWW.


systemctl restart httpd

i nie zapomnij włączyć nowego portu (i wyłączyć stary) w zaporze:


firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --reload

Pamiętaj, że zgodnie z zasadami SELinux możesz używać tylko portów zwróconych przez


semanage port -l | grep -w '^http_port_t'

dla serwera WWW.

Jeśli chcesz użyć innego portu (np. portu TCP 8100), będziesz musiał dodać go do kontekstu portu SELinux dla usługi httpd:


semanage port -a -t http_port_t -p tcp 8100

Aby jeszcze bardziej zabezpieczyć instalację Apache, wykonaj następujące kroki:

1. Użytkownik Apache działa i nie powinien mieć dostępu do powłoki:


usermod -s /sbin/nologin tecmint

2. Wyłącz wyświetlanie katalogów, aby uniemożliwić przeglądarce wyświetlanie zawartości katalogu, jeśli w tym katalogu nie ma pliku index.html.

Edytuj /etc/httpd/conf/httpd.conf (oraz pliki konfiguracyjne hostów wirtualnych, jeśli istnieją) i upewnij się, że dyrektywa Opcje, zarówno u góry, jak i na poziomie bloku katalogów jest ustawiona na Brak:


Options None

3. Ukryj informacje o serwerze internetowym i systemie operacyjnym w odpowiedziach HTTP. Edytuj /etc/httpd/conf/httpd.conf w następujący sposób:


ServerTokens Prod 
ServerSignature Off

Teraz możesz rozpocząć udostępnianie treści z katalogu /var/www/html.

Konfiguracja i zabezpieczenie serwera FTP

Podobnie jak w przypadku Apache, główny plik konfiguracyjny dla Vsftpd (/etc/vsftpd/vsftpd.conf) jest dobrze skomentowany i choć domyślna konfiguracja powinna wystarczyć dla większości aplikacji , powinieneś zapoznać się z dokumentacją i stroną podręcznika (man vsftpd.conf), aby efektywniej obsługiwać serwer FTP (nie mogę tego wystarczająco podkreślić!).

W naszym przypadku są to użyte dyrektywy:


anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

Używając chroot_local_user=YES, lokalni użytkownicy zostaną (domyślnie) umieszczeni w więzieniu z chrootem w ich katalogu domowym zaraz po zalogowaniu. Oznacza to, że lokalni użytkownicy nie będą mogli uzyskać dostępu do żadnych plików poza odpowiadającymi im katalogami domowymi.

Na koniec, aby umożliwić ftp odczytywanie plików z katalogu domowego użytkownika, ustaw następującą wartość logiczną SELinux:


setsebool -P ftp_home_dir on

Możesz teraz połączyć się z serwerem FTP za pomocą klienta takiego jak Filezilla:

Pamiętaj, że dziennik /var/log/xferlog rejestruje pobrania i przesłania, które są zgodne z powyższą listą katalogów:

Przeczytaj także: Ogranicz przepustowość sieci FTP używaną przez aplikacje w systemie Linux za pomocą funkcji Trickle

Streszczenie

W tym samouczku wyjaśniliśmy, jak skonfigurować serwer WWW i FTP. Ze względu na obszerność tematu nie jest możliwe omówienie wszystkich aspektów tej tematyki (tj. wirtualnych hostów internetowych). Dlatego polecam sprawdzić także inne doskonałe artykuły na tej stronie na temat Apache.