Najlepsze wskazówki dotyczące bezpieczeństwa PHP dla serwerów Linux
- 2312
- 337
- Natan Cholewa
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 -mWymień 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:
$ lsSprawdź 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 = offWyłą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 = offWyłą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 = ofWyłą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.dziennikWłą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 = 30mKontrola 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 = 1Przesył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_sourceWyłą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_cacheZmień 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 = 4mOgranicz 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.iniOperacja 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.
- « 20 Przydatne funkcje bezpieczeństwa i narzędzia dla administratorów Linux
- Szczegółowy przewodnik na temat pracy z dokumentami w NextCloud »