13 Wskazówki dotyczące bezpieczeństwa serwera WWW Apache i utwardzania

13 Wskazówki dotyczące bezpieczeństwa serwera WWW Apache i utwardzania

Wszyscy jesteśmy bardzo zaznajomieni Apache Serwer WWW, jest to bardzo popularny serwer WWW do hostowania plików internetowych lub witryny w Internecie. Oto kilka linków, które pomogą Ci skonfigurować serwer WWW Apache na swoim oknie Linux.

Wskazówki dotyczące bezpieczeństwa i utwardzania Apache
  1. Zainstaluj serwer WWW Apache
  2. Skonfiguruj swoją witrynę w swoim pudełku Linux

Tutaj w tym samouczku omówię kilka głównych wskazówek, aby zabezpieczyć Twój serwer WWW. Zanim zastosujesz te zmiany na serwerze WWW, powinieneś mieć podstawy serwera Apache.

  1. Director Dokument Directory: /var/www/html Lub /var/www
  2. Główny plik konfiguracyjny: /etc/httpd/conf/httpd.conf (Rhel/centos/fedora) i /etc/apache2/apache2.conf (Debian/Ubuntu).
  3. Domyślny port HTTP: 80 TCP
  4. Domyślny port HTTPS: 443 TCP
  5. Przetestuj ustawienia pliku konfiguracyjnego i składnię: httpd -t
  6. Dostęp do plików dziennika serwera internetowego: /var/log/httpd/access_log
  7. Pliki dziennika błędów z serwera internetowego: /var/log/httpd/error_log

1. Jak ukryć wersję Apache i tożsamość systemu operacyjnego przed błędami

Podczas instalacji Apache ze źródłem lub innymi instalatorami pakietów, takimi jak mniam, Wyświetla Wersja Twojego Apache serwer internetowy zainstalowany na serwerze z Nazwa systemu operacyjnego Twojego serwera w Błędy. Pokazuje także informacje o Zainstalowane moduły Apache na twoim serwerze.

Pokaż wersję Apache

Na powyższym zdjęciu możesz to zobaczyć Apache pokazuje to wersja z Zainstalowany system systemu operacyjnego na twoim serwerze. Może to stanowić poważne zagrożenie dla Twojego serwera internetowego, a także w Linux Box. Aby zapobiec Apache Aby nie wyświetlać tych informacji światu, musimy wprowadzić pewne zmiany w głównym pliku konfiguracyjnym Apache.

Otwórz plik konfiguracyjny z edytorem VIM i wyszukaj „Serweryna„, Jest domyślnie. Musimy Wyłączony Te podpis serwera i druga linia „Servertokens Prod„Mówi Apache, aby zwrócił tylko Apache jako produkt w nagłówku odpowiedzi serwera w każdym żądaniu strony, tłumi informacje systemu operacyjnego, głównej i mniejszej wersji.

# vim/etc/httpd/conf/httpd.conf (rhel/centos/fedora) # vim/etc/apache2/apache2.Conf (Debian/Ubuntu)
Serweryna z serwertokens produkt
# Service Httpd Restart (RHEL/CENTOS/FEDORA) # SERVICE APACHE2 RESTART (Debian/Ubuntu)
Ukryj wersję Apache

2. Wyłącz listę katalogów

Domyślnie lista Apache treść dokumentu głównego katalogu przy braku plik indeksu. Zobacz poniższy obraz.

Lista katalogu Apache

Możemy wyłączyć coś Lista katalogów za pomocą za pomocą Dyrektywa opcji w pliku konfiguracyjnym dla określonego katalogu. W tym celu musimy dokonać wpisu httpd.conf Lub Apache2.conf plik.

 Opcje -indexes 
Ukryj list katalogu Apache

3. Regularnie aktualizuj Apache

Społeczność programistów Apache stale pracuje nad Problemy z bezpieczeństwem i wypuszczanie tego zaktualizowana wersja z nowym Opcje zabezpieczeń. Dlatego zawsze zaleca się użycie Ostatnia wersja z Apache Jako Twój serwer WWW.

Sprawdzić Wersja Apache: Możesz sprawdzić swoją bieżącą wersję za pomocą httpd -v Komenda.

# httpd -v Wersja serwera: Apache/2.2.15 (UNIX) Serwer Zbudowany: 13 sierpnia 2013 17:29:28

Możesz zaktualizować swoją wersję następującym polecenie.

# Aktualizacja Yum Httpd # apt-get Instaluj apache2

Zaleca się również utrzymanie Jądro I OS zaktualizowane do najnowszych stabilnych wydań, jeśli nie uruchamiasz żadnej konkretnej aplikacji, która działa tylko na określonym systemie operacyjnym lub jądrze.

4. Wyłącz niepotrzebne moduły

Zawsze dobrze jest mniejsze szanse na bycie ofiarą każdego Atak w sieci. Dlatego zaleca się wyłączenie tych wszystkich moduły które obecnie nie są używane. Możesz wymienić wszystkie skompilowane moduły serwera WWW, używając następującego polecenia.

# grep loadModule/etc/httpd/conf/httpd.Conf # Muszą umieścić odpowiednie linie „LoadModule” w tej lokalizacji, aby # # LoadModule foo_module moduły/mod_foo.Więc moduły loadmodule auth_basic_module/mod_auth_basic.Więc moduły loadmodule auth_digest_module/mod_auth_digest.więc moduły loadmodule authn_file_module/mod_authn_file.Tak więc moduły loadmodule autn_alias_module/mod_authn_alias.więc moduły loadmodule authn_anon_module/mod_authn_anon.Tak więc moduły loadmodule authn_dbm_module/mod_authn_dbm.Tak więc moduły loadmodule autn_default_module/mod_authn_default.więc moduły loadmodule authz_host_module/mod_authz_host.więc moduły loadmodule authz_user_module/mod_authz_user.więc moduły loadmodule authz_owner_module/mod_authz_owner.Tak więc moduły loadModule Authz_GroupFile_Module/mod_authz_groupfile.Tak więc moduły loadmodule authz_dbm_module/mod_authz_dbm.Tak więc moduły loadmodule Authz_default_Module/mod_authz_default.więc moduły loadmodule ldap_module/mod_ldap.Tak więc moduły loadmodule autnz_ldap_module/mod_authnz_ldap.Tak więc module load_module/mod_include.więc moduły log_config_config_config_module/mod_log_config.Tak więc moduły logo_module/mod_logio.Więc moduły loadmodule env_module/mod_env.więc moduły ext_filter_filter_filter/mod_ext_filter.Więc… 

Powyżej znajduje się lista modułów, które są domyślnie włączone, ale często nie są potrzebne: mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex. Aby wyłączyć konkretny moduł, możesz wstawić „#”Na początku tej linii i uruchom ponownie usługę.

5. Uruchom apache jako osobny użytkownik i grupa

Z domyślną instalacją Apache uruchamia swój proces z użytkownikiem nikt Lub Demon. Ze względów bezpieczeństwa zaleca się uruchomienie Apache sam bez uprzywilejowane konto. Na przykład: HTTP-Web.

Utwórz użytkownika i grupę Apache
# grupaadd http -web # useradd -d/var/www/-g http -web -s/bin/nologin http -wEB

Teraz musisz powiedzieć Apache Aby uruchomić z tym nowym użytkownikiem i aby to zrobić, musimy dokonać wpisu /etc/httpd/conf/httpd.conf i uruchom ponownie usługę.

otwarty /etc/httpd/conf/httpd.conf z edytorem vim i wyszukiwanie słowa kluczowego ”Użytkownik" I "Grupa”I tam będziesz musiał określić nazwa użytkownika I Nazwa grupy używać.

Użytkownik HTTP-WEB grupa HTTP-WEB

6. Użyj Zezwolenie na ograniczenie dostępu do katalogów

Możemy ograniczyć dostęp do katalogów za pomocą „Umożliwić" I "Zaprzeczyć„Opcje w httpd.conf plik. Tutaj w tym przykładzie będziemy zabezpieczyć katalog główny, w tym celu, ustawiając następujące w httpd.conf plik.

 Opcje Brak Zamów, pozwól Odrzucić od wszystkich 
  1. Opcje „Brak” - Ta opcja nie pozwoli użytkownikom włączyć żadnych opcjonalnych funkcji.
  2. Zamów odmawianie, pozwól - To jest kolejność „„Zaprzeczyć" I "Umożliwić„Dyrektywy zostaną przetworzone. Tutaj to będzie „zaprzeczyć”Po pierwsze i„umożliwić" Następny.
  3. Odmowa od wszystkich - To odmówi prośby od wszystkich do katalog główny, Nikt nie będzie w stanie uzyskać dostępu do katalogu głównego.

7. Użyj modułów MOD_Security i Mod_Evasive, aby zabezpieczyć Apache

Te dwa moduły ”mod_security" I "mod_evasive”Są bardzo popularnymi modułami Apache pod względem bezpieczeństwa.

Mod_security

Gdzie mod_security Działa jako Zapora dla naszych aplikacji internetowych i pozwala nam to Monitoruj ruch w czasie rzeczywistym. Pomaga nam również chronić nasze strony internetowe lub serwer WWW przed Ataki brutalnej siły. Możesz po prostu zainstalować mod_security na serwerze za pomocą domyślnych instalatorów pakietów.

Zainstaluj mod_security na Ubuntu/Debian
$ sudo apt-get instaluj libapache2-modsecurity $ sudo a2enmod mods-security $ sudo /etc /init /init.D/apache2-wyładowanie siły
Zainstaluj mod_security na RHEL/CENTOS/FEDORA/
# yum instaluj mod_security # /etc /init.D/httpd restart
Mod_evasive

mod_evasive Działa bardzo wydajnie, wymaga jednego żądania, aby bardzo dobrze je przetwarzać i przetwarzać. Zapobiega Ataki DDOS od wyrządzania tyle samo szkód. Ta funkcja mod_evasive Umożliwia obsługę HTTP brutalna siła I Dos Lub DDOS atak. Ten moduł wykrywa ataki trzema metodami.

  1. Jeśli tak wiele żądań pojawi się na tej samej stronie kilka razy na sekundę.
  2. Jeśli jakikolwiek proces dziecka próbuje zrobić więcej niż 50 współbieżne żądania.
  3. Jeśli w ogóle Ip Wciąż próbuję składać nowe prośby, gdy jest to tymczasowe czarna lista.

mod_evasive można instalować bezpośrednio ze źródła. Tutaj mamy instalację i konfigurację tych modułów, które pomogą Ci skonfigurować te moduły Apache w swoim pudełku Linux.

  1. Chronić apache za pomocą mod_security i mod_evasive

8. Wyłącz obserwowanie symbolicznych linków Apache

Domyślnie Apache następuje SymLinks, możemy wyłączyć coś Ta funkcja z Następujące Symlinks z Dyrektywa opcji. Aby to zrobić, musimy wykonać następujący wpis w głównym pliku konfiguracyjnym.

Opcje -FollowsymLinks

A jeśli w ogóle konkretne użytkownik Lub strona internetowa potrzebować Następujące Symlinks Włącz, możemy po prostu napisać zasadę w „.Htaccess”Plik z tej strony internetowej.

# Włącz Symboliczne Linki Opcje +następstwa

Notatka: Aby umożliwić przepisanie zasad w środku „.Htaccess" plik "Zezwolenie na wszystko”Powinny być obecne w głównej konfiguracji na całym świecie.

9. Wyłącz po stronie serwera i wykonanie CGI

Możemy wyłączyć coś Strona serwera obejmuje (mod_include) I CGI Wykonanie, jeśli nie jest to potrzebne i zrobić to, musimy zmodyfikować główny plik konfiguracyjny.

Opcje -include opcje -execcgi

Możemy to zrobić również dla konkretnego katalogu z tagiem katalogu. Tutaj w tym przykładzie jesteśmy wyłączanie Obejmuje wykonania plików CGI dla „/var/www/html/web1”Katalog.

 Opcje -includes -execcgi 

Oto kilka innych wartości z może być włączone Lub wyłączony z dyrektywą opcji.

  1. Opcje wszystkie - Aby włączyć wszystkie opcje jednocześnie. Jest to wartość domyślna, jeśli nie chcesz wyraźnie określić żadnych wartości w pliku Apache Conf lub .Htaccess.
  2. Opcje obejmują noexec - Ta opcja umożliwia serwerowi bez uprawnienia wykonania plików polecenia lub CGI.
  3. Opcje multiView - Umożliwia negocjowane multiWiegi z modułem mod_negotiation.
  4. Opcje SymLinksifownMatch - Jest podobny do następujących linków. Ale nastąpi to tylko wtedy, gdy właściciel będzie taki sam między linkiem a oryginalnym katalogiem, z którym jest powiązany.

10. Ogranicz wielkość żądania

Domyślnie Apache nie ma limitu całkowitego rozmiaru żądania HTTP i.mi. nieograniczone, a kiedy zezwalasz na duże żądania na serwerze WWW, możliwe, że możesz być ofiarą Zaprzeczenie ataków serwisowych. Możemy ograniczyć rozmiar żądań dyrektywy APACHE ”LimitRequestbody”Z tagiem katalogu.

Możesz ustawić wartość w bajtach z 0 (Nieograniczony) Do 2147483647 (2 GB), które są dozwolone w ciele żądania. Możesz ustawić ten limit zgodnie z potrzebami Twojej witryny, załóżmy, że masz witrynę, w której pozwala na przesyłanie i chcesz ograniczyć rozmiar przesyłania konkretnego katalogu.

Tutaj w tym przykładzie, user_uploads to katalog, który zawiera pliki przesłane przez użytkowników. Stawiamy limit 500K dla tego.

 LimitRequestbody 512000 

11. Chroń ataki DDOS i stwardnienie

Cóż, to prawda, że ​​nie możesz całkowicie chronić swojej strony internetowej Ataki DDOS. Oto kilka dyrektyw, które mogą pomóc ci mieć kontrolę nad tym.

  1. Koniec czasu : Ta dyrektywa pozwala ustawić czas, w którym serwer będzie czekać na niektóre zdarzenia, zanim się nie uda. Jego domyślna wartość to 300 sekund. Dobrze jest utrzymać tę wartość nisko na tych stronach, które podlegają Ataki DDOS. Ta wartość całkowicie zależy od rodzaju prośby, którą otrzymujesz na swojej stronie internetowej. Notatka: Może stanowić problemy z przyjściem CGI Skrypty.
  2. MaxClients : Ta dyrektywa pozwala ustawić limit połączeń, które będą obsługiwane jednocześnie. Każde nowe połączenie zostanie ustawione w kolejce po tym limicie. Jest dostępny z Prefork I Pracownik Zarówno MPM. Domyślna wartość to jest 256.
  3. Podtrzymanie limitu czasu : To czas, w którym serwer będzie czekać na kolejne żądanie przed zamknięciem połączenia. Wartość domyślna jest 5 sekund.
  4. LimitRequestfields : Pomaga nam ustalić limit liczby pól nagłówka żądania HTTP, które zostaną zaakceptowane od klientów. Jego domyślna wartość to 100. Zaleca się obniżenie tej wartości, jeśli Ataki DDOS występują w wyniku tak wielu nagłówków żądania HTTP.
  5. LimitRequestfieldSize : Pomaga nam ustawić limit wielkości na nagłówku żądania HTTP.

12. Włącz logowanie Apache

Apache umożliwia logowanie niezależnie od twojego Rejestrowanie systemu operacyjnego. Mądrze jest włączyć rejestrowanie Apache, ponieważ zawiera więcej informacji, takich jak polecenia wprowadzane przez użytkowników, które wchodzą w interakcje z serwerem WWW.

Aby to zrobić, musisz dołączyć mod_log_config moduł. Istnieją trzy główne dyrektywy związane z rejestrowaniem z Apache.

  1. Transferlog: Tworzenie pliku dziennika.
  2. Logformat : Określenie niestandardowego formatu.
  3. CustomLog : Tworzenie i sformatowanie pliku dziennika.

Możesz również użyć ich do konkretnej witryny, którą robisz Hosting wirtualny A jeśli to musisz określić w sekcji hosta wirtualnego. Na przykład oto konfiguracja wirtualnego hosta witryny z włączoną rejestrowaniem.

 DocumentRoot/var/www/html/przykład.com/ servername www.przykład.COM DirectoryIndex Indeks.Indeks HTM.Indeks HTML.Przykład PHP Serveralias.com errordocument 404 /historia.PHP ErrorLog /var/log/httpd/przykład.com_error_log CustomLog /var/log/httpd/przykład.COM_ACCESS_LOG łącznie 

13. Zabezpieczenie Apache za pomocą certyfikatów SSL

Ostatni, ale nie mniej ważny Certyfikaty SSL, Możesz zabezpieczyć całą komunikację w sposób zaszyfrowany przez Internet za pomocą certyfikatu SSL. Załóżmy, że masz stronę internetową, na której ludzie się logują, udowadniając swoje poświadczenia logowania lub masz witrynę e-handlu, na której ludzie zapewniają dane bankowe Lub Obciążyć/Kredyt Szczegóły karty do zakupu produktów, domyślnie Twój serwer WWW Wyślij te szczegóły w formacie tekstowym, ale podczas korzystania Certyfikaty SSL do twoich stron internetowych, Apache Wysyła wszystkie te informacje w szyfrowanym tekście.

Możesz Kup certyfikaty SSL od tak wielu różnych dostawców SSL, takich jak Namecheap.com. Jeśli prowadzisz bardzo mały biznes internetowy i nie chcesz Kup certyfikat SSL Nadal możesz przypisać Self -podpisowany certyfikat do Twojej witryny. Apache używa mod_ssl moduł do obsługi Certyfikat SSL.

# OpenSsl genrsa -des3 -Out Przykład.com.klucz 1024 # OpenSsl req -new -key przykład.com.Klucz -out exmaple.CSR # OpenSSL x509 -req -Days 365 -in Przykład.com.com.Przykład CSR -SIGNKEY.com.com.przykład klucza.com.com.crt

Po utworzeniu i podpisaniu certyfikatu. Teraz musisz dodać to w konfiguracji Apache. Otwórz główny plik konfiguracyjny z edytorem VIM i dodaj następujące wiersze i uruchom ponownie usługę.

 SsLengine na SSLCertificateFile/Etc/PKI/TLS/CERTS/Przykład.com.crt sslcertificateKeKeyFile/etc/pki/tls/certs/przykład.com.Klucz sslCertificatechainfile/etc/pki/tls/certs/sf_bundle.CRT ServerAdmin [e -mail chroniony] Servername Przykład.com dokumentroot/var/www/html/example/errorLog/var/log/httpd/przykład.com-error_log customLog/var/log/httpd/przykład.com-access_log Common 

Otwórz przeglądarkę, wpisz https: // przykład.com, I będziesz mógł zobaczyć nowy Self-podpisany certyfikat.

To jest kilka wskazówek bezpieczeństwa, których możesz użyć Zabezpiecz swój serwer WWW Apache instalacja. Aby uzyskać bardziej przydatne wskazówki i pomysły bezpieczeństwa, zobacz oficjalną dokumentację online Apache HTTP Server.