Jak zabezpečit server LAMP

  • 6 min číst
  • Srpna 16, 2017

Lampový zásobník, který představuje Linux, Apache, MySQL / MariaDB a PHP / Python / Perl, je velmi oblíbená kombinace bezplatného a open-source softwaru, který se dnes používá k provozování milionů webových stránek. Ačkoli mnozí se rozhodli pro velmi efektivní LEMP stack založený na Nginxu místo Apache, stále existuje značný počet uživatelů, kteří si pro své projekty zvolí LAMP. Ve skutečnosti dnes více než 30% aktivních webových stránek běží na vrcholu LAMPu. Stack je považován za spolehlivý a velmi vhodný pro běh vysoce výkonných webových aplikací s vysokou dostupností. V tomto tutoriálu vám ukážeme, jak zajistit zásobník LAMP na vašem Linux VPS.

Secure Linux

Povolit automatické aktualizace

Vzhledem k tomu, že zásobník LAMP je založen na systému Linux a celá komunita s otevřeným zdrojovým kódem pracuje na vylepšeních, považuje se to za bezpečné. Na Ubuntu VPS, všechny bezpečnostní aktualizace a opravy jsou k dispozici jako automatická bezobslužná instalace, jakmile jsou k dispozici v úložištích Ubuntu, a proto se ujistěte, automaticky nainstalovat aktualizace zabezpečení pokud máte obavy o bezpečnost. V případě, že tato funkce není povolena na vašem serveru a instalujete nejnovější upgrady a opravy ručně, ohrožujete svůj server.

Chcete-li povolit automatické bezobslužné upgrady, měli byste nainstalovat bezobslužné upgrady balíček.

sudo apt-get nainstalovat bezobslužné upgrady

Chcete-li nastavit kategorii balíků, které mají být automaticky upgradovány, měli byste upravit /etc/apt/apt.conf.d/50unattended-upgrades soubor.

Nakonfigurujte bránu firewall

Správně nakonfigurovaný firewall je další věc, která je velmi důležitá pro celkovou bezpečnost. ufw je výchozí nástroj pro konfiguraci brány firewall pro Ubuntu a je zpočátku zakázán. Umožnit ufw Můžeš použít:

sudo ufw povolit

Povolit přístup k základním službám, jako je OpenSSH a Apache:

sudo ufw povolit 22 sudo ufw povolit 80 sudo ufw povolit 443

Povolení přístupu k dalším službám je velmi snadné. Stačí nahradit číslo portu v příkladech výše s číslem portu služby, ke které chcete povolit přístup, a to je to. Pravidla brány firewall budou aktivní i po restartování systému.

Zakázat nepoužívané služby

Pokud máte aktivní služby, které nepoužíváte, můžete je jednoduše zakázat. Například pokud máte službu jako Dovecot se spuštěnou a spuštěnou na vašem serveru a vůbec ji nepoužíváte, zastavte a deaktivujte službu pomocí následujících příkazů:

sudo systemctl zastavit dovecot.service sudo systemctl zakázat dovecot.service

Nainstalujte službu Fail2ban

Fail2ban je služba, která skenuje soubory protokolu pro příliš mnoho selhání přihlášení a blokuje adresu IP, která zobrazuje škodlivé znaky. Tato služba je velmi užitečná, pokud na službách jako OpenSSH nepoužíváte dva faktory nebo veřejné / soukromé autentizační mechanismy. Na nainstalovat Fail2ban, spusťte tento příkaz:

sudo apt-get nainstalovat fail2ban

Vytvořte kopii výchozího konfiguračního souboru, abyste mohli bezpečně provést změny, aniž by byly přepsány aktualizací systému:

sudo cp /etc/fail2ban/jail.conf/etc/fail2ban/jail.local

Upravit jail.local Soubor:

sudo nano /etc/fail2ban/jail.local

Společnost [sshd] blok by měl vypadat takto:

[sshd] enabled = true port = ssh filtr = sshd logpath = /var/log/auth.log maxretry = 5 bantime = 600

Uložte soubor a restartujte Fail2ban, aby se změny projevily:

sudo systemctl restartovat službu fail2ban.service

Povolit Fail2ban při spuštění systému:

sudo systemactl povolit službu fail2ban.service

Bezpečná aplikace Apache

Skrýt citlivé informace Apache

Výchozí nastavení Apache konfigurace poskytuje velmi citlivé informace, které lze použít proti službě. Uskutečnění těchto informací je zásadní, takže pokračujte a vytvořte konfigurační soubor pro nová nastavení:

sudo nano /etc/apache2/conf-available/custom.conf

Vložte následující obsah:

ServerTokens Prod ServerSignature Off TraceEnable Vypnuto Možnosti all -Indexes Header unset ETag Header vždy unset X-Powered-By FileETag Žádné

Aktivujte modul záhlaví Apache, pokud již není povolen:

hlavičky sudo a2enmod

Povolit konfiguraci:

sudo a2enconf custom.conf

Restartujte Apache, aby se změny projevily:

sudo systemctl restartuje apache2.service

Nainstalujte a povolte mod_security

Mod_security je firewall pro webové aplikace (WAF), který může být instalován jako další modul pro Apache. Může být použita k ochraně webového serveru před mnoha útoky, jako je SQL injekce, únosy relace, skriptování mezi stránkami, špatné uživatelské agenty a mnoho dalších. Chcete-li nainstalovat a povolit mod_security, spusťte následující příkazy:

sudo apt-get nainstalovat libapache2-modsecurity sudo a2enmod security2

Jakmile je nainstalován, měli byste konfigurovat modul a povolit sadu OWASP ModSecurity Core Set (CRS).

sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

Potom otevřete /etc/modsecurity/modsecurity.conf soubor a upravte / přidejte následující nastavení:

SecRuleEngine Na SecResponseBodyAccess Vypnuto SecRequestBodyLimit 8388608 SecRequestBodyNoFilesLimit 131072 SecRequestBodyInMemoryLimit 262144

Uložte a zavřete soubor. Odeberte aktuální CRS a stáhněte OWASP CRS pomocí následujících příkazů:

sudo rm -rf / usr / share / modsecurity-crs sudo git klon https://github.com/SpiderLabs/owasp-modsecurity-crs.git / usr / share / modsecurity crs / usr / share / modsecurity-crs sudo mv crs-setup.conf.example crs-setup.conf

Upravit /etc/apache2/mods-enabled/security2.conf soubor. Mělo by vypadat jako následující:

<IfModule zabezpečení2_module> SecDataDir / var / cache / modsecurity Zahrnout volbu /etc/modsecurity/*.conf IncludeOptional "/usr/share/modsecurity-crs/*.conf" IncludeOptional "/ usr / share / modsecurity-crs / rules / *. conf </ ifModule>

Nakonec restartujte Apache, aby se změny projevily:

sudo systemctl restartuje apache2.service

Nainstalujte a povolte mod_evasive

Mod_evasive je modul Apache, který lze použít k ochraně webového serveru před DoS (Denial of Service), DDoS (Distributed Denial of Service) a brutálními útoky. Chcete-li na server nainstalovat mod_evasive, spusťte tento příkaz:

sudo apt-get nainstalovat libapache2-mod-vyhýbavý

Otevřete výchozí konfigurační soubor /etc/apache2/mods-enabled/evasive.conf a upravte nastavení tak, aby vypadala níže:

<IfModule mod_evasive20.c> DOSPageCount 5 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 600 DOSLogDir "/ var / log / mod_evasive" </ ifModule>

Uložte a zavřete soubor. Vytvořit adresář pro soubory protokolu:

sudo mkdir / var / log / mod_evasive sudo chown -R www-data: / var / log / mod_evasive

Restartujte Apache:

sudo systemctl restartuje apache2.service

Zabezpečte MySQL

Zabezpečení nasazení serveru MySQL

První věc, kterou musíte udělat pro zabezpečení služby MySQL, je spustit mysql_secure_installation skripty.

sudo mysql_secure_installation

Skript vám pomůže provést důležité bezpečnostní úlohy, jako je nastavení hesla pro root, vypnutí vzdáleného kořenového přihlášení, odstranění anonymních uživatelů atd.

Zakázat vzdálený přístup k MySQL

Pokud neprovádíte vzdálené operace přes vaše MySQL server pak zakázání vzdáleného přístupu k této službě je velmi důležité. Můžete to provést úpravou /etc/mysql/mysql.conf.d/mysqld.cnf soubor a změna bind-address na 127.0.0.1.

bind-adresa = 127.0.0.1

Restartujte službu, aby se změny projevily.

sudo systemctl restart mysql.service

Vytvořte samostatné uživatele služby MySQL

Další věc, kterou musíte zvážit, je vytvoření samostatných uživatelů MySQL pro každou databázi a aplikaci.

Přihlaste se do MySQL jako root:

mysql -u root -p

Můžete vytvořit databázi MySQL a udělit všechna oprávnění novému uživateli pomocí následujících příkazů:

mysql> CREATE DATABASE new_db; mysql> GRANT ALL PRIVILEGES na new_db. * na 'new_user' @ 'localhost' identifikovaný 'PaSsW0rD'; mysql> FLUSH PRIVILEGES; mysql> EXIT

Poté můžete pro svou aplikaci použít nově vytvořenou databázi a uživatele.

Zakažte LOCAL INFILE

Pokud explicitně nepoužíváte LOCAL INFILE, pak je dobré ji deaktivovat. Opět upravte konfigurační soubor MySQL a přidejte následující řádek pod [Mysqld] blok:

local-infile = 0

Restartujte službu MySQL, aby se změny projevily.

Bezpečné PHP

Pokud jste provedli výše uvedené kroky, váš server by měl být již bezpečný. Poslední část zajištění LAMP server zajišťuje PHP, což je docela přímočarý proces. Najděte umístění vašeho souboru PHP ini:

php -ini | grep "Loaded Configuration File"

Všechny změny, které do tohoto souboru provedeme.

Skrýt základní informace o PHP

Prvním krokem je skrýt informace poskytnuté PHP což mohou někteří útočníci považovat za užitečné. Otevři php.ini souboru a změňte nastavení podle následujícího:

expose_php = Vypnuto display_errors = Vypnuto mail.add_x_header = Vypnuto

Uložte soubor a restartujte aplikaci Apahce:

sudo systemctl restartuje apache2.service

Zakázat nebezpečné funkce PHP

Společnost disable_functions umožňuje vypnout některé funkce, které by mohly být škodlivé pro váš systém. Upravte směrnici ve svém php.ini soubor, který odpovídá následujícím:

disable_functions = show_source, systém, shell_exec, passthru, exec, phpinfo, popen, proc_open, allow_url_fopen, curl_exec, curl_multi_exec

Zatímco jste zde, zakažte vzdálené spuštění kódu PHP pomocí následujících nastavení:

allow_url_fopen = Vypnuto allow_url_include = Vypnuto

Omezení nahrávání souborů

Pokud nepoužíváte funkce nahrávání souborů, je zcela bezpečné omezit nahrávání souborů v PHP. Otevři php.ini soubor a nastavte následující nastavení:

file_uploads = Vypnuto

V případě, že používáte funkce nahrávání souborů, můžete nastavit následující:

file_uploads = Na upload_max_filesize = 1M

kde upload_max_filesize je limit velikosti nahrávání.

Po provedení těchto změn restartujte aplikaci Apache.

Nastavte maximální dobu provedení

Znovu upravte php.ini souboru a změňte následující nastavení:

max_execution_time = 30 max_input_time = 30 memory_limit = 40M

Tím se nastaví maximální čas v sekundách, který může skript spouštět nebo analyzovat data, a nastaví maximální velikost paměti, kterou může být skript přidělen.

Povolit open_basedir

Směrnicí open_basedir můžete nastavit umístění, ze kterého má PHP přístup k souborům. Upravte položku php.ini soubor a nastavte správné umístění tak, aby odpovídalo vaší aktuální konfiguraci:

open_basedir = "/ cesta / do / adresář /"

Nezapomeňte restartovat aplikaci Apache, aby se změny mohly projevit.

Zdroj

Související příspěvek:

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *