Najlepsze wskazówki dotyczące bezpieczeństwa PHP dla serwerów Linux

Najlepsze wskazówki dotyczące bezpieczeństwa PHP dla serwerów Linux

To nie jest bardziej mózgowe Php jest jednym z najczęściej używanych języków programowania serwerów. Atakujący ma sens, aby znaleźć różne sposoby manipulowania PHP, ponieważ jest często sparowany Mysql i umożliwić dostęp do prywatnych danych użytkowników.

W jakikolwiek sposób nie twierdzimy Php jest wrażliwy lub domyślnie ma poważne problemy, ale musimy upewnić się, że ulepszymy Php w taki sposób, że może być bardziej wytrzymały niż kiedykolwiek wcześniej.

1. Usuń niepotrzebne moduły PHP

Domyślnie otrzymujesz zestaw Php moduły, które mogą być pomocne w różnych zadaniach, ale niektóre niepotrzebne moduły mogą nie być przydatne dla każdego projektu. Aby wymienić dostępne Php moduły, użyj podanego polecenia:

$ php -m 
Wymień moduły PHP

Moduły znajdują się pod adresem /etc/php.D/ katalog i może łatwo zmienić nasz obecny katalog na /etc/php.D/ Korzystając z następującego polecenia CD.

CD /etc /php.D/ 

Powodem, dla którego zmieniamy katalog w celu usunięcia modułów, jest moduły, nazywane są zupełnie inaczej w oryginalnym katalogu. Teraz wymień dostępne moduły według danego polecenia:

$ ls 
Sprawdź moduły PHP

Na przykład usuńmy kędzior Moduł, wykorzystując podane polecenie:

$ sudo rm -r 20 -curl.ini 

2. Wyłącz zdalne wykonywanie kodu PHP

W większości przypadków nie można ufać zdalnym połączeniom. Wyłączając dostęp do fopen Opakowania, mogą uzyskać dostęp tylko do plików lokalnych. Aby wyłączyć Fopen, musimy otworzyć plik konfiguracyjny PHP, wykorzystując podane polecenie:

$ sudo nano /etc /php.ini 

Teraz użyj Crtl + w i typ Zezwolić_url_fopen które wylądują na określonych liniach, skąd wyłączymy te opcje.

zezwolić_url_fopen = off aLop_Url_include = off 
Wyłącz zdalne wykonywanie kodu PHP

Po zakończeniu zmian zapisz plik konfiguracyjny według Ctrl + o i uderz Wchodzić.

3. Wyłącz wyciek informacji PHP

Gdy nie jest wyłączony, świat może łatwo zidentyfikować, która wersja Php jest obecnie używany przez nasz serwer WWW. To może nie brzmieć jak wielka sprawa, ale poinformowanie atakującego, że dokładna wersja może być niebezpieczna.

$ sudo nano /etc /php.ini 

Teraz zmień domyślnie na "Wyłączony".

expose_php = off 
Wyłącz wyciek informacji PHP

4. Wyłącz dzienniki błędów PHP

Domyślnie każdy błąd naszego serwera WWW jest widoczny dla naszych odwiedzających, w tym atakujących. Aby upewnić się, że żaden z błędów nie jest dla nikogo nie widoczny, musimy wprowadzić zmiany w naszym pliku konfiguracji PHP.

$ sudo nano /etc /php.ini 

I zmień domyślne ustawienie wyświetlania dzienników błędów na "Wyłączony".

display_errors = of 
Wyłącz dzienniki błędów PHP

Ale co, jeśli jesteś programistą i potrzebujesz dzienników błędów, aby przezwyciężyć problemy rozwojowe? Nie martw się, istnieje sposób na uzyskanie plików dziennika, dokonując tylko niewielkiej zmiany w tym samym pliku konfiguracji.

Musimy tylko włączyć log_errors i daj ścieżkę do error_log gdzie nasze pliki dziennika będą przechowywane.

log_errors = na błędach_log =/var/log/httpd/php_scripts_error.dziennik 
Włącz dzienniki błędów w PHP

5. Kontrola zasobów PHP

Według nas, zarządzanie zasobami jest najważniejsze podczas zabezpieczenia Php. Tutaj przydzielimy stałą ilość czasu wykonania, czas wejścia i limit pamięci, więc jeśli w jakiś sposób nasz skrypt zostanie naruszony, wykonanie zostanie zatrzymane po określonym czasie.

Wybraliśmy 25 sekundy dla czasu wykonania i wejścia oraz 30 MB limitu pamięci. Na pewno możesz go dostosować zgodnie z potrzebami.

max_execution_time = 25 max_input_time = 25 pamięci_limit = 30m 
Kontrola zasobów PHP

6. Ogranicz dostęp do pliku PHP

Aby ograniczyć dostęp do plików, włączymy Open_Basedir co zapewni, że PHP może zawierać tylko pliki z naszych wymienionych katalot.

Ważny: To blokuje wszystkie inne katalogi i wymaga ręcznego dodawania ważnych katalogów, co obejmuje również dodanie plików tymczasowych i katalogów sesji.

open_basedir = "/home/sagar/public_html:/var/lib/php/tmp_upload:/var/lib/php/session" 
Kontroluj dostęp do pliku PHP

7. Skonfiguruj przesyłanie plików PHP

Jeśli Twoja aplikacja nie wymaga przesyłania plików z końca użytkownika, zawsze zaleca się wyłączenie przesyłania plików. To uniemożliwia atakującym przesyłanie niebezpiecznych skryptów, które w końcu mogą ostatecznie uszkodzić całą aplikację.

file_uploads = off 

Ale co, jeśli Twoja aplikacja jest zaprojektowana do uzyskania plików z końca użytkownika? W takim przypadku musisz włączyć przesyłanie plików, ale spróbuj zmniejszyć maksymalne miejsce i zmniejszyć liczbę maksymalnych plików, które można przesłać z jednego żądania.

file_uploads = on upload_max_fileSize = 1m max_file_uploads = 1 
Przesyłanie plików PHP Control PHP

W PHP domyślnie pliki tymczasowe są umieszczane w katalogu, który wszyscy użytkownicy systemu mogą napisać. Domyślna lokalizacja musi zostać przełączona na bezpieczniejsze miejsce i upewnij się, że nie znajduje się w korzeniu internetowym.

Jak wykorzystywaliśmy Open_Basedir, Będziemy używać tej samej lokalizacji, co już ją na białej.

upload_tmp_dir =/var/lib/php/tmp_upload 

8. Wyłącz niebezpieczne funkcje PHP

PHP ma domyślnie różne funkcje i może być pomocne do celów programistycznych. Ale hakerzy może użyć wielu funkcji do wykorzystania naszego serwera WWW i ich wyłączenie, doda warstwę bezpieczeństwa.

Mamy wyłączony zestaw funkcji i upewnij się, że sprawdzamy je przed wprowadzeniem zmian w pliku konfiguracyjnym.

disable_functions = exec, passthru, shell_exec, system, proc_open, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source 
Wyłącz niechciane funkcje PHP

9. Zmień katalog pamięci podręcznej mydlania

Gdy zmieniliśmy domyślny katalog i sesję, to samo dotyczy MYDŁO pamięć podręczna, ponieważ nie należy go zapisać w domyślnym katalogu. Upewnij się, że jest zapisany w bezpiecznym miejscu.

mydło.WSDL_CACHE_DIR =/var/lib/php/soap_cache 
Zmień katalog pamięci podręcznej mydlania

10. Kontrola rozmiaru PHP

Przez kontrolowanie POST Rozmiar, możemy zabezpieczyć nasz serwer przed hakerem, który próbuje zakręcić zasoby serwera, wysyłając ogromne pliki. To oszczędza nas od niepożądanych awarii serwera i powolnego czasu reakcji.

post_max_size = 4m 
Ogranicz rozmiar PHP

11. Chroń konfiguracje PHP

Usuwając niepotrzebne pliki, często usuwamy niektóre kluczowe pliki, a nawet katalogi. Musimy więc dostosować ustawienia w taki sposób, że nawet użytkownicy root nie mogą ich usunąć. Aby tworzyć pliki i katalogi, będziemy korzystać Chattr z różnymi flagami.

Po użyciu podanego polecenia nie możesz już zmodyfikować określonego pliku ani go usunąć.

$ sudo chattr +i /etc /php.ini 

Próbując usunąć niezmienny plik, pokaże błąd z napisem „operacja niedozwolona".

$ sudo rm -r /etc /php.ini 
Operacja Niedozwolona błąd

Ale co, jeśli chcesz pisać te pliki, jednocześnie uczyniając je niezmiennymi? Możesz to łatwo osiągnąć za pomocą +A flaga zamiast +I.

$ sudo chattr +a /etc /php.ini 

Mogą istnieć przypadki, w których nie potrzebujesz już starego pliku konfiguracyjnego, aw tak.

$ sudo chattr -i /etc /php.ini 

Podobnie, jeśli poszedłeś z +A Atrybuty w trakcie uczynienia plików można je odwrócić, korzystając z podanego polecenia:

$ sudo chattr -a /etc /php.ini 

12. Użyj certyfikatów SSL dla HTTPS

W dzisiejszych czasach każda nowoczesna przeglądarka, taka jak Google Chrome, Firefox, Opera i inne, zaleca użycie używania Https dla serwerów internetowych. Jak Https Zapewnia zabezpieczony i zaszyfrowany kanał dostępu do niezaufanych witryn, możemy zapewnić niezawodne wrażenia dla naszych użytkowników.

Poprzez dodanie Https, Możemy być chronieni przed XSS ataki, w tym zapobieganie hakerom odczytania transportowanych danych za pomocą kodów.

Aby włączyć HTTPS, zainstalujemy i użyjemy za darmo Zaszypujmy certyfikat SSL na serwerze.

$ sudo dnf instalacja epel-release $ sudo dnf instaluj certbot python3-certbot-apache mod_ssl $ sudo certbot --apache -d domena domena.com [dla Apache] $ sudo certbot -nnginx -d domena.com [dla Nginx] 

13. Regularnie aktualizuj PHP

Ponieważ jest to język typu open source, jest załatany na co dzień. Może to nie wydawać się ważnym krokiem, ale może zaoszczędzić przed poważną wrażliwością. Pamiętaj więc, aby mieć aktualne pakiety PHP, co zaoszczędzi Cię od wielu możliwych luk w zabezpieczeniach.

# Yum Update & Yum Upgrade [O systemach opartych na RHEL] # Appt Aktualizacja && Apt Upgrade [w systemach opartych na debian] 

To było nasze podejście do tego, jak możesz łatwo zwiększyć bezpieczeństwo Php w systemach Linux. Przez cały ten samouczek staraliśmy się uprościć, jak to możliwe, a jeśli nadal masz wątpliwości, daj nam znać w komentarzach.