Výborně! Když jsme vyřešili problém s databázovým připojením, pojďme systematicky zabezpečit váš server, počínaje Apache. ## Zabezpečení Apache na Oracle Linux 8 ### 1. Aktualizace systému První a nejdůležitější krok je zajistit, že váš systém je aktuální: ```bash sudo dnf update -y ``` ### 2. Minimalizace poskytovaných informací o serveru ```bash sudo nano /etc/httpd/conf/httpd.conf ``` Přidejte nebo upravte následující direktivy: ``` ServerTokens Prod ServerSignature Off ``` Tyto direktivy omezí informace o verzi serveru v hlavičkách HTTP a chybových stránkách. ### 3. Vypnutí procházení adresářů V konfiguračním souboru `/etc/httpd/conf/httpd.conf` najděte sekci `` a upravte ji: ``` Options -Indexes AllowOverride All Require all granted ``` Tím zakážete automatické vypsání obsahu adresáře, pokud v něm není index soubor. ### 4. Konfigurace zabezpečených hlaviček HTTP Vytvořte nový konfigurační soubor: ```bash sudo nano /etc/httpd/conf.d/security.conf ``` A vložte následující obsah: ``` Header always set X-Content-Type-Options "nosniff" Header always set X-Frame-Options "SAMEORIGIN" Header always set X-XSS-Protection "1; mode=block" Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" Header always set Content-Security-Policy "default-src 'self';" Header always set Referrer-Policy "strict-origin-when-cross-origin" Header unset X-Powered-By # Zakázání nebezpečných HTTP metod deny from all ``` ### 5. Nastavení ModSecurity (Web Application Firewall) ```bash # Instalace ModSecurity sudo dnf install mod_security mod_security_crs -y # Aktivace ModSecurity sudo cp /etc/httpd/conf.d/mod_security.conf /etc/httpd/conf.d/mod_security.conf.bak sudo sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/httpd/conf.d/mod_security.conf ``` ### 6. Nastavení SSL/TLS Pokud ještě nemáte nakonfigurované HTTPS, měli byste to udělat: ```bash # Instalace modulu SSL sudo dnf install mod_ssl -y # Generování self-signed certifikátu (pro testování) sudo mkdir /etc/httpd/ssl sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl/apache.key -out /etc/httpd/ssl/apache.crt ``` Upravte konfiguraci SSL: ```bash sudo nano /etc/httpd/conf.d/ssl.conf ``` Najděte a upravte: ``` SSLCertificateFile /etc/httpd/ssl/apache.crt SSLCertificateKeyFile /etc/httpd/ssl/apache.key # Přidejte silné šifry a protokoly SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite HIGH:!aNULL:!MD5:!3DES SSLHonorCipherOrder on ``` ### 7. Přesměrování HTTP na HTTPS ```bash sudo nano /etc/httpd/conf.d/redirect.conf ``` Přidejte: ``` RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] ``` Povolte modul rewrite: ```bash sudo dnf install mod_rewrite -y ``` ### 8. Zabezpečení souborů .htaccess ```bash sudo nano /var/www/html/.htaccess ``` Přidejte: ``` # Blokování přístupu k citlivým souborům Order allow,deny Deny from all # Ochrana proti directory traversal Options -Indexes RewriteEngine On RewriteCond %{THE_REQUEST} (\.\.|\/\.) [NC] RewriteRule .* - [F,L] ``` ### 9. Nastavení vlastnictví a oprávnění souborů ```bash sudo chown -R apache:apache /var/www/html/ sudo find /var/www/html/ -type d -exec chmod 755 {} \; sudo find /var/www/html/ -type f -exec chmod 644 {} \; ``` ### 10. Restartování Apache pro aplikaci změn ```bash sudo systemctl restart httpd ``` ### 11. Ověření konfigurace ```bash sudo apachectl -t ``` Toto by vám mělo vrátit "Syntax OK", pokud je vše v pořádku. ### 12. Nastavení automatického restartu po pádu ```bash sudo nano /etc/systemd/system/httpd.service.d/restart.conf ``` Přidejte: ``` [Service] Restart=always RestartSec=3 ``` ```bash sudo systemctl daemon-reload ``` Po provedení těchto kroků bude váš Apache webový server mnohem bezpečnější. Chcete, abych tyto kroky dále vysvětlil nebo přejdeme k zabezpečení dalších částí serveru?