Top -PHP -Härten -Sicherheits -Tipps für Linux -Server
- 1236
- 158
- Matteo Möllinger
Es ist kein beiler Php ist eine der am häufigsten verwendeten Server -Scripting -Programmiersprachen. Es ist sinnvoll, dass ein Angreifer verschiedene Möglichkeiten findet, mit denen er PHP manipulieren kann, wie es oft gepaart wird Mysql und aktivieren Sie den Zugriff auf die privaten Daten Ihrer Benutzer.
Auf jeden Fall behaupten wir nicht Php ist verletzlich oder hat standardmäßig einige ernsthafte Probleme, aber wir müssen sicherstellen, dass wir optimieren Php so, dass es robuster sein kann als je zuvor.
1. Entfernen Sie unnötige PHP -Module
Standardmäßig erhalten Sie einen Satz von Php Module, die bei verschiedenen Aufgaben hilfreich sein können, aber einige unnötige Module sind für jedes Projekt möglicherweise nicht nützlich. So verfügbar auflisten Php Module verwenden Sie den angegebenen Befehl:
$ php -mListen Sie PHP -Module auf
Die Module befinden sich bei /etc/php.D/
Verzeichnis und kann unser aktuelles Verzeichnis problemlos an verändern /etc/php.D/ mithilfe des folgenden CD -Befehls.
CD /etc /php.D/
Der Grund, warum wir das Verzeichnis ändern, um Module zu entfernen. Listen Sie nun die verfügbaren Module nach dem angegebenen Befehl auf:
$ lsPHP -Module überprüfen
Lassen Sie uns zum Beispiel die entfernen Locken Modul durch Verwendung des angegebenen Befehls:
$ sudo rm -r 20 curl.Ini
2. Deaktivieren Sie Remote -PHP -Codeausführung
In den meisten Fällen können Fernverbindungen nicht vertrauen. Durch Deaktivieren des Zugriffs auf fopen Wrapper können nur auf lokale Dateien zugreifen. Um fopen zu deaktivieren, müssen wir die PHP -Konfigurationsdatei mithilfe des angegebenen Befehls öffnen:
$ sudo nano /etc /php.Ini
Jetzt benutzen Crtl + w
und Typ degly_url_fopen
die uns auf bestimmten Linien landen, aus denen wir diese Optionen deaktivieren werden.
degly_url_fopen = off degly_url_include = offDeaktivieren Sie Remote -PHP -Codeausführung
Sobald Sie mit Änderungen fertig sind, speichern Sie die Konfigurationsdatei nach Strg + o
und schlagen Eingeben.
3. Deaktivieren Sie PHP -Informationsleckage
Wenn nicht deaktiviert, kann die Welt leicht ermitteln, welche Version von Php wird derzeit von unserem Webserver verwendet. Dies klingt vielleicht nicht nach einer großen Sache.
$ sudo nano /etc /php.Ini
Ändern Sie nun die Standardeinstellungen auf "Aus"
.
expose_php = offDeaktivieren Sie PHP -Informationsleckage
4. Deaktivieren Sie PHP -Fehlerprotokolle
Standardmäßig ist jeder Fehler unseres Webservers für unsere Besucher, einschließlich Angreifer, sichtbar. Um sicherzustellen, dass keiner der Fehler für jeden sichtbar ist, müssen wir Änderungen in unserer PHP -Konfigurationsdatei vornehmen.
$ sudo nano /etc /php.Ini
Und ändern Sie die Standardeinstellung der Anzeigefehlerprotokolle auf "Aus"
.
display_errors = vonDeaktivieren Sie PHP -Fehlerprotokolle
Aber was ist, wenn Sie ein Entwickler sind und Fehlerprotokolle haben müssen, um Entwicklungsprobleme zu überwinden? Machen Sie sich keine Sorgen, es gibt eine Möglichkeit, Ihre Protokolldateien zu erhalten, indem Sie sich in derselben Konfigurationsdatei nur geringfügig ändern.
Wir müssen nur aktivieren log_errors und einen Weg geben zu Fehlerprotokoll wo unsere Protokolldateien gespeichert werden.
log_errors = on error_log =/var/log/httpd/php_scripts_error.ProtokollAktivieren Sie Fehlerprotokolle in PHP
5. PHP -Ressourcenkontrolle
Nach uns ist das Verwalten von Ressourcen der wichtigste Teil bei der Sicherung Php. Hier werden wir eine feste Menge an Ausführungszeit, Eingabemaßzeit und Speichergrenze bereitstellen. Wenn unser Skript jedoch irgendwie beeinträchtigt wird, wird die Ausführung nach einer bestimmten Zeit gestoppt.
Wir haben ausgesucht 25 Sekunden für die Ausführung und Eingabemaßzeit und 30 MB von Speichergrenze. Sicher können Sie es gemäß Ihren Anforderungen anpassen.
max_execution_time = 25 max_input_time = 25 memory_limit = 30mPHP -Ressourcenkontrolle
6. Beschränken Sie den Zugriff von PHP -Dateien
Um den Zugriff auf Datei einzuschränken, werden wir aktivieren open_basedir
Dies wird sicherstellen, dass PHP nur Dateien aus unseren aufgelisteten Verzeichnissen enthalten kann.
Wichtig: Dadurch wird alle anderen Verzeichnisse blockiert und erfordert, dass wir wichtige Verzeichnisse manuell hinzufügen, darunter auch das Hinzufügen von temporären Dateien und Sitzungsverzeichnisse.
open_basedir = "/home/sagar/public_html:/var/lib/php/tmp_upload:/var/lib/php/session"Steuerung der PHP -Dateizugriff
7. Konfigurieren Sie PHP -Datei -Uploads
Wenn Ihre Anwendung keine Dateien zum Ende des Benutzers hochladen muss, wird immer empfohlen, Datei -Uploads zu deaktivieren. Dies verhindert, dass Angreifer gefährliche Skripte hochladen, die am Ende die gesamte Anwendung beschädigen könnten.
Datei_Uploads = off
Aber was ist, wenn Ihre Anwendung so konzipiert ist, dass Dateien vom Benutzer des Benutzers abgerufen werden?? In diesem Fall müssen Sie Datei -Uploads aktivieren, aber versuchen Sie, den maximalen Speicherplatz zu reduzieren und die Anzahl der maximalen Dateien zu reduzieren, die aus einer einzelnen Anforderung hochgeladen werden können.
Datei_Uploads = on upload_max_filesize = 1m max_file_uploads = 1Steuern Sie PHP -Datei -Uploads
In PHP werden die temporären Dateien standardmäßig in einem Verzeichnis platziert, das alle Systembenutzer schreiben können. Der Standardstandort muss an einen sichereren Ort umgestellt werden und stellen Sie sicher, dass er sich nicht innerhalb des Webrouchs befindet.
Wie wir verwendet haben open_basedir, Wir werden den gleichen Ort wie wir es bereits anwenden.
upload_tmp_dir =/var/lib/php/tmp_upload
8. Deaktivieren Sie gefährliche PHP -Funktionen
PHP verfügt standardmäßig für verschiedene Funktionen und kann für Entwicklungszwecke hilfreich sein. Viele Funktionen können jedoch von Hackern verwendet werden, um unseren Web -Server auszunutzen und diese zu deaktivieren, wird eine Sicherheitsebene hinzufügen.
Wir haben einen deaktivierten Funktionssatz von Funktionen und stellen Sie sicher, dass Sie sie überprüft haben, bevor Sie Änderungen an der Konfigurationsdatei vornehmen.
Disable_functions = exec, passthru, Shell_exec, System, proc_open, popen, curl_exec, curl_multi_exec, parse_ini_file, show_sourceDeaktivieren Sie unerwünschte PHP -Funktionen
9. Ändern Sie das Seifen -Cache -Verzeichnis
Da wir das Standard -TEMP -Verzeichnis und die Sitzung geändert haben, gilt dies auch für die SEIFE Cache, da es nicht im Standardverzeichnis gespeichert werden sollte. Stellen Sie sicher, dass es an einem sicheren Ort gespeichert ist.
Seife.wsdl_cache_dir =/var/lib/php/soap_cacheÄndern Sie das Seifen -Cache -Verzeichnis
10. Kontrollieren Sie PHP -Postgröße
Durch Kontrolle POST Größe können wir unseren Server vor einem Hacker sichern, der versucht, Serverressourcen zu gerücken, indem wir riesige Dateien senden. Dies rettet uns vor unerwünschten Serverabstürzen und einer langsamen Reaktionszeit.
post_max_size = 4mBegrenzen Sie die PHP -Postgröße
11. Schützen Sie PHP -Konfigurationen
Während wir unnötige Dateien entfernen, entfernen wir häufig einige wichtige Dateien oder sogar Verzeichnisse. Wir müssen also die Einstellungen so optimieren, dass selbst Root -Benutzer sie nicht löschen können. Um Dateien und Verzeichnisse zu erstellen, werden wir verwenden Chattr mit verschiedenen Flaggen.
Sobald Sie den angegebenen Befehl verwenden, können Sie eine bestimmte Datei nicht mehr ändern oder entfernen.
$ sudo chattr +i /etc /php.Ini
Beim Versuch, eine unveränderliche Datei zu entfernen, wird ein Fehler angezeigtOperation unzulässig”.
$ sudo rm -r /etc /php.IniOperation nicht zulässiger Fehler
Aber was ist, wenn Sie diese Dateien weiter schreiben möchten, während Sie sie unveränderlich machen? Sie können dies leicht erreichen, indem Sie die verwenden +A
Flagge statt von +ich
.
$ sudo chattr +a /etc /php.Ini
Es gibt möglicherweise einige Fälle, in denen Sie die alte Konfigurationsdatei nicht mehr benötigen, und in diesem Fall müssen wir uns nicht verschrieben.
$ sudo chattr -i /etc /php.Ini
In ähnlicher Weise, wenn Sie mit gegangen sind +A
Attribute Bei der Unerwahrstellung von Dateien können Sie diese umkehren, indem Sie den angegebenen Befehl verwenden:
$ sudo chattr -a /etc /php.Ini
12. Verwenden Sie SSL -Zertifikate für HTTPS
Heutzutage empfehlen jeder moderne Browser wie Google Chrome, Firefox, Opera und andere die Verwendung Https Für Webserver. Als Https Bietet einen gesicherten und verschlüsselten Zugriffskanal für nicht vertrauenswürdige Websites. Wir können unseren Benutzern eine zuverlässige Erfahrung bieten.
Beim Hinzufügen Https, Wir können uns vor schützen lassen XSS Angriffe, einschließlich der Verhinderung der Hacker beim Lesen von Transportdaten mithilfe von Codes.
Um HTTPS zu aktivieren, werden wir das kostenlose installieren und verwenden Lassen Sie uns das SSL -Zertifikat verschlüsseln auf dem Server.
$ sudo dnf install epel-release $ sudo dnf install install Certbot python3-ceTbot-apache mod_ssl $ sudo certbot --apache -d Domain.com [für Apache] $ sudo certbot -nginx -d Domain.com [für Nginx]
13. PHP regelmäßig aktualisieren
Da es sich um eine Open-Source-Sprache handelt, wird sie fast täglich gepatcht. Es scheint nicht groß. Halten Sie also Ihre PHP -Pakete auf dem neuesten.
# YUM Update & YUM Upgrade [auf rhelbasierten Systemen] # APT-Update && APT-Upgrade [auf Debian-basierten Systemen]
Dies war unsere Einstellung, wie Sie die Sicherheit von leicht verbessern können Php In Linux -Systemen. In diesem Tutorial haben wir versucht, die Dinge so einfach wie möglich zu machen, und wenn Sie noch Zweifel haben, teilen Sie uns bitte in den Kommentaren mit.
- « 20 nützliche Sicherheitsfunktionen und Tools für Linux -Administratoren
- Eine detaillierte Anleitung zum Arbeiten mit Dokumenten in Nextcloud »