15 beste Sicherheitstipps für Lampenstapel

15 beste Sicherheitstipps für Lampenstapel

Viele neue Systemadministratoren haben vergessen, Sicherheit bei der Konfiguration einer Webhosting -Umgebung für die Produktion mit Apache, MySQL und PHP anzuwenden. Ich versuche all diese Sicherheits -Tipps einzubeziehen, die wir bei der Vorbereitung eines neuen Systems für die Produktionsnutzung oder eines vorhandenen Lampen -Setups berücksichtigen müssen.

Alle in diesem Artikel verwendeten Konfigurationsänderungen werden in den folgenden Konfigurationsdateien gemäß Ihren Betriebssystemen aktualisiert. In einigen Fällen kann sich der Pfad der Konfigurationsdateien ändern. Machen Sie also die Änderung unangemessene Dateien. Nach dem Neustart von Änderungen, die verwandte Dienste zur Änderung neu gestartet haben.

Für Ubuntu, Debian & Linuxmint:
  • Apache2: /etc/apache2/apache2.Conf
  • PHP: /etc/php/[Version]/Apache2/PHP.Ini
  • MySQL: /etc/mysql/mein.cnf oder/etc/mysql/mysql.Conf.D/Mysqld.CNF
Für CentOS, Redhat & Fedora:
  • Apache: /etc/httpd/conf/httpd.Conf
  • PHP: /etc/php.Ini
  • MySQL: /etc/mein.CNF

#1. Versteckte Version und OS -Identität (Apache)

Der Servertokens Die Richtlinie steuert, ob das Feld Server -Antwort -Header, das an Clients zurückgesandt wird. Die Serversignatur konfiguriert die Fußzeile in servergenerierten Dokumenten. Bearbeiten Sie die Apache -Konfigurationsdatei und aktualisieren Sie die folgenden Anweisungen wie folgt.

  • Serversignatur - zeigt die Version von Apache angezeigt
     Servertokens prod 
  • Servertokens - Bietet Betriebssystemversionen zusammen mit anderen vertraulichen Serverdetails.
     Serversignatur aus 

#2. Verzeichnisliste deaktivieren (Apache)

Wenn die Verzeichnisauflistung in Apache aktiviert ist. Anschließend werden alle Dateien und Verzeichnisse auf der Webseite angezeigt, wenn kein Standarddokument vorliegt. Fügen Sie die folgende Konfiguration in Apache hinzu, um das Verzeichnislistenserver breit zu deaktivieren.

 Optionen -Indexes   

Danach können Sie bei Bedarf eine Auflistungsbasis pro Verzeichnis aktivieren.

#3. Einschränkung der Datei- und Verzeichniszugriff (Apache)

Einschränken des Zugriffs auf Basis des Verzeichnisses, stellen Sie den Speicherort in Apache ein.

Verzeichnis einschränken

Um das Verzeichnis und den Zugriff auf Dateien von Benutzern einzuschränken, können die IPs nur definiert werden.

 Ordnen leugnen, leugnen Sie von allen Zulassungen ab 192.168.1.0/24 erlauben von .Beispiel.com  

Datei einschränken

Wir können die bestimmte Datei auch mithilfe der Dateianweisung wie unten einschränken.

 Bestellen leugnen, leugnen leugnen von allen  

Standort einschränken

Die Standortrichtlinie begrenzt den Umfang der beigefügten Richtlinien durch URL.

 Ordnen leugnen, leugnen Sie von allen Zulassungen ab 192.168.1.0/24 erlauben von .Beispiel.com  

#4. Die Serverseite enthält und cGI (Apache)

Wir können einfach die serverseitige Einschlüsse und die CGI-Ausführung deaktivieren, indem wir das Verzeichnis-Tag definieren. Fügen Sie unten in Apache Virtual Host -Konfigurationsdatei hinzu.

 Optionen -includes -execcgi  

#5. PHP -Informationsleckage (PHP) einschränken

Standardmäßig wird die PHP-Installation der Welt ausgesetzt, dass PHP auf dem Server installiert ist, der die PHP-Version innerhalb des HTTP-Headers enthält (z. B. X-Botschaft: PHP/5.4.20). Weiterlesen

Um diese Werte vor Header bearbeiten PHP zu verbergen.INI und Update unten Richtlinie zur Aussage

expose_php = off 

#6. Deaktivieren Sie die Ausführung der Remote -Code (PHP)

Wenn degly_url_fopen ist in Ihrem Setup aktiviert und ermöglicht Funktionen wie Datei_get_Contents () und die Einfügen und erfordert Anweisungen, mit denen Daten von HTTP- oder FTP -Remote -Standorten abgerufen werden und deren Code ausgeführt werden können.

degly_url_fopen = off degly_url_include = off 

#7. Deaktivieren Sie gefährliche PHP -Funktionen (PHP)

Wir können jede PHP. Deaktivieren Sie alle Funktionen, die schädlich sein können und nicht in Anwendungen verwendet werden können.

Disable_functions = exec, Shell_exec, Passing, System, Popen, Curl_exec, curl_multi_exec, parse_ini_file, show_source, proc_open, pcntl_exec 

#8. Begrenzen Sie den PHP -Zugriff auf Dateisystem (PHP)

Die Open_Basedir -Direktive setzen die Verzeichnisse, aus denen PHP auf Dateien zugreifen darf

open_basedir = "/home/user/public_html" 

#9. Deaktivieren Sie unbenutzte PHP -Module (PHP)

PHP unterstützt „dynamische Erweiterungen“, um die PHP -Umgebung zu laden. Wir können jedes nicht verwendete Modul deaktivieren, um das System zu laden, indem wir den Namen der Konfigurationsdatei ändern.

CD /etc /php.d/ mv oci8.Ini OCI8.Ini.deaktivieren 

#10. Aktivieren Sie die Grenzwerte in PHP (PHP)

Damit Benutzer Dateien mit maximaler Größe hochladen können, aktualisieren Sie den folgenden Konfigurationswert.

 upload_max_filesize = 2m #maximum 2mb Dateibenutzer kann hochladen 

Maximale Ausführungszeit jedes Skripts

 max_execution_time = 30 # Sekunden 

Höchstzeit

max_input_time = 60 # Sekunden 

#11. Einschränken Sie den Remote MySQL Access (MySQL)

Wenn Ihre Anwendungsumgebung nicht auf die Datenbank zugreifen muss, deaktivieren Sie alle Remote -Verbindungen für den Datenbankserver. Die einfachere Möglichkeit, den MySQL -Server zu erzwingen, nur auf 127 zuzuhören.0.0.1 (Localhost).

Bearbeiten Sie die MySQL -Konfigurationsdatei und aktualisieren Sie den folgenden Wert.

Bind-Address = 127.0.0.1 

#12. Deaktivieren Sie den Einsatz von lokalen Infile (MySQL)

Das Aktivieren lokaler Infile kann für die Sicherheit Ihrer Systeme gefährlich sein. Wenn ein lokaler Infile auf dem Server aktiviert ist, kann ein Benutzer jede Datei (wie /etc /passwd, /etc /Shadow) einfach in eine Tabelle laden.

So deaktivieren Sie diese Bearbeitung von MySQL -Konfigurationsdatei und fügen Sie den folgenden Wert im Abschnitt [MySQLD] hinzu.

[Mysqld] Lokale Infile = 0 

#13. Erstellen Sie den anwendungsspezifischen Benutzer in MySQL (MySQL)

Verwenden Sie keinen MySQL -Root -Benutzer für den Zugriff auf die Datenbank über die Anwendung. Für Ihr System kann es gefährlich sein. Stellen Sie also sicher. Um ein MySQL -Konto zu erstellen, verwenden Sie den folgenden Befehl.

[E -Mail geschützt]: ~# MySQL -U root -p mySQL> Benutzer erstellen 'MYUSR'@'localhost' durch 'Passwort' identifiziert; MySQL> Grant Select, Issing, Update, Löschen auf myDB.* Zu 'myusr'@'localhost' identifiziert durch 'Passwort'; MySQL> Flush -Privilegien; 

#14. Verbesserung der Sicherheit mit MySQL_Secure_installation (MySQL)

Nach der Installation von MySQL MySQL_Secure_Installation ist der Befehl. Dieser Befehl ermöglicht auch den Kennwortschutz für den Root -Benutzer.

[E -Mail geschützt]: ~# MySQL_SECURE_INSTALLATION "Die einzige erforderliche Ausgabe ist unten angezeigt. In Wirklichkeit sehen Sie mehr Ausgabe auf dem Bildschirm. "Ändern Sie das Stammkennwort? [Y/n] y neues Passwort: ********** Neu ein neues Passwort eingeben: ********** Entfernen Sie anonyme Benutzer? [Y/n] y entlasten Sie die Root -Anmeldung aus der Ferne? [Y/n] Y entfernen Sie die Testdatenbank und zugreifen Sie darauf? [Y/n] Y Now -Privileg -Tabellen neu laden? [Y/n] y 

#15. Schreiben Sie Schutzdateien von Protect (Apache/MySQL/PHP)

In diesem Abschnitt schützen wir alle in Lamp Stack verwendeten Serverkonfigurationsdateien, sodass niemand diese Dateien ändern kann.

CHATTR +AI /ETC /PHP.INI CHATTR +AI /ETC /PHP.D/* CHATTR +AI/ETC/MY.CNF CHATTR +AI/ETC/HTTPD/CONF/HTTPD.Conf 

Denken Sie daran, dass nach dem Aktivieren von Schreibschutz kein Benutzer einschließlich Root diese Dateien aktualisieren kann. Falls Sie eine der Dateien aktualisieren müssen, deaktivieren Sie zuerst den Schreibschutz mit dem folgenden Befehl.

CHATTR -II -Dateiname 

Wir werden weiterhin nützliche Tipps für Lampensicherheit für diesen Artikel aktualisieren. Wir fordern Sie auch auf, Tipps vorzuschlagen, indem wir sie in die Kommentare hinzufügen.