Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
systemes:web:httpd [2017/10/06 11:20] william [Sécurisation du serveur] |
systemes:web:httpd [2019/02/06 14:03] (Version actuelle) |
||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
===== Introduction ===== | ===== Introduction ===== | ||
- | **apache2/ | + | * **apache2/ |
- | **mod_security** est un "web application firewall" | + | * **mod_security** est un "web application firewall" |
- | **AuditConsole** est une console web pour afficher les logs de modsecurity plus clairement. | + | * **AuditConsole** est une console web pour afficher les logs de modsecurity plus clairement. |
- | **mod_evasive** est un module Apache pour contrer les attaques DoS (Denial of Service). Il est par exemple, capable de détecter lorsqu' | + | * **mod_evasive** est un module Apache pour contrer les attaques DoS (Denial of Service). Il est par exemple, capable de détecter lorsqu' |
- | **mod_proxy** sert à transmettre les requêtes propres vers le bon serveur. | + | * **mod_proxy** sert à transmettre les requêtes propres vers le bon serveur. |
===== Installation ===== | ===== Installation ===== | ||
- | RHEL : | + | * RHEL : <code bash> |
- | <code bash> | + | |
yum install httpd | yum install httpd | ||
</ | </ | ||
- | Debian : | + | * Debian : <code bash> |
- | <code bash> | + | |
apt-get install apache2 | apt-get install apache2 | ||
</ | </ | ||
Ligne 28: | Ligne 26: | ||
===== Tests de fonctionnement ===== | ===== Tests de fonctionnement ===== | ||
- | + | * Test http : <code bash> | |
- | + | ||
- | Test http : | + | |
- | <code bash> | + | |
telnet www.domaine.fr 80 | telnet www.domaine.fr 80 | ||
GET /index.php HTTP/1.1 | GET /index.php HTTP/1.1 | ||
Ligne 38: | Ligne 33: | ||
- | Test https : | + | * Test https : <code bash> |
- | + | ||
- | <code bash> | + | |
openssl s_client -connect www.domaine.fr: | openssl s_client -connect www.domaine.fr: | ||
---informations du cert--- | ---informations du cert--- | ||
Ligne 51: | Ligne 44: | ||
====Configuration conseillé==== | ====Configuration conseillé==== | ||
- | <file bash httpd.conf> | + | * <file bash httpd.conf> |
################################## | ################################## | ||
# Configuration relative au serveur | # Configuration relative au serveur | ||
Ligne 159: | Ligne 152: | ||
AddType application/ | AddType application/ | ||
AddType application/ | AddType application/ | ||
- | AddType application/ | ||
- | # Pour forcer save de la page? | ||
- | AddType application/ | ||
- | |||
# Permettre les SSI (Inclusions Côté Serveur) | # Permettre les SSI (Inclusions Côté Serveur) | ||
AddType text/html .shtml | AddType text/html .shtml | ||
Ligne 230: | Ligne 219: | ||
</ | </ | ||
- | | + | ==== VirtualHost ==== |
- | * <file bash vhost.d/ | + | |
#################################################### | #################################################### | ||
Ligne 310: | Ligne 299: | ||
=== Configuration === | === Configuration === | ||
- | * Configuration du module de proxy | + | * Configuration du module de proxy <file bash conf.d/ |
- | * <file bash conf.d/ | + | |
# On interdit de se servir du serveur en tant que mandataire | # On interdit de se servir du serveur en tant que mandataire | ||
| | ||
Ligne 324: | Ligne 312: | ||
===Configuration=== | ===Configuration=== | ||
- | * Exemple de configuration de proxypass vers l'app1 défini précédemment dans un vhost | + | * Exemple de configuration de proxypass vers l'app1 défini précédemment dans un vhost <file bash vhost.d/ |
- | * <file bash vhost.d/ | + | |
< | < | ||
### | ### | ||
Ligne 353: | Ligne 340: | ||
</ | </ | ||
- | Redémarrer le serveur web | + | * Redémarrer le serveur web : <code bash> |
- | + | ||
- | <code bash> | + | |
====mod_security==== | ====mod_security==== | ||
===Installation=== | ===Installation=== | ||
- | <code bash>yum install mod_security mod_security_crs</ | + | * <code bash>yum install mod_security mod_security_crs</ |
===Configuration==== | ===Configuration==== | ||
- | Edit / | + | * Edit / |
- | + | ||
- | <code bash># Default recommended configuration | + | |
SecRuleEngine On | SecRuleEngine On | ||
</ | </ | ||
- | On passe **SecRuleEngine** à la valeur **DetectionOnly** afin de ne faire que de la journalisation d' | + | * On passe **SecRuleEngine** à la valeur **DetectionOnly** afin de ne faire que de la journalisation d' |
Les logs des actions de mod_security sont dans le fichier / | Les logs des actions de mod_security sont dans le fichier / | ||
Pour désactiver une règle pour une page spécifique : | Pour désactiver une règle pour une page spécifique : | ||
- | <code bash>< | + | * <code bash>< |
SecRuleRemoveById 960015 #ID que l'on peut voir dans les logs [id " | SecRuleRemoveById 960015 #ID que l'on peut voir dans les logs [id " | ||
</ | </ | ||
- | Désactiver toutes les règles sur des pages spécifiques: | + | * Désactiver toutes les règles sur des pages spécifiques: |
- | + | ||
- | <code bash>< | + | |
SecRuleEngine off | SecRuleEngine off | ||
</ | </ | ||
- | Désactiver une règle pour une page d’IP: | + | * Désactiver une règle pour une page d’IP: <code bash> |
- | + | ||
- | <code bash> | + | |
</ | </ | ||
Ligne 391: | Ligne 370: | ||
===Installation=== | ===Installation=== | ||
- | Ajouter un repos :vi / | + | * Ajouter un repos :vi / |
- | + | ||
- | <code bash> | + | |
name=CentOS-jwall - jwall.org packages for noarch | name=CentOS-jwall - jwall.org packages for noarch | ||
baseurl=http:// | baseurl=http:// | ||
Ligne 401: | Ligne 378: | ||
</ | </ | ||
- | Ajouter la clé du dépôt: | + | * Ajouter la clé du dépôt: |
- | <code bash>rpm --import http:// | + | * <code bash>yum install auditconsole</ |
- | + | ||
- | + | ||
- | <code bash>yum install auditconsole</ | + | |
===Configuration=== | ===Configuration=== | ||
- | / | + | * / |
- | + | ||
- | <code bash># ModSecurity Console receiving URI. You can change the host | + | |
# and the port parts but leave everything else as is. | # and the port parts but leave everything else as is. | ||
# | # | ||
Ligne 452: | Ligne 424: | ||
</ | </ | ||
- | <code bash> | + | * <code bash> |
===Utilisation=== | ===Utilisation=== | ||
- | http:// | + | * http:// |
+ | * / | ||
- | / | + | * Avec mlogc <code bash> |
- | + | ||
- | Avec mlogc | + | |
- | + | ||
- | <code bash> | + | |
SecAuditLog " | SecAuditLog " | ||
</ | </ | ||
- | Si vous ne pouvez pas installer/ | + | * Si vous ne pouvez pas installer/ |
- | <code bash> | + | * <code bash> |
SecAuditLog " | SecAuditLog " | ||
</ | </ | ||
- | Alors on peut utiliser une commande alternative en tache cron pour lancer la collecte: | + | * Alors on peut utiliser une commande alternative en tache cron pour lancer la collecte: |
- | <code bash>/ | + | * <code bash>/ |
</ | </ | ||
====mod_evasive==== | ====mod_evasive==== | ||
===Installation=== | ===Installation=== | ||
- | <code bash>yum install mod_evasive</ | + | * <code bash>yum install mod_evasive</ |
===Configuration=== | ===Configuration=== | ||
- | / | + | * / |
- | + | ||
- | <code bash> | + | |
#Taille de la table hash, plus grande est la valeur, plus de mémoire sera nécessaire pour parcourir la | #Taille de la table hash, plus grande est la valeur, plus de mémoire sera nécessaire pour parcourir la | ||
#table, plus la valeur sera petite, plus le parcours de la table sera rapide. | #table, plus la valeur sera petite, plus le parcours de la table sera rapide. | ||
Ligne 511: | Ligne 478: | ||
</ | </ | ||
- | <code bash> | + | * <code bash> |
chown apache: | chown apache: | ||
</ | </ | ||
- | Pour tester le fonctionnement : Un script perl plus évolué que celui fourni ( / | + | * Pour tester le fonctionnement : Un script perl plus évolué que celui fourni ( / |
- | + | ||
- | <code perl># | + | |
# Script original : mod_dosevasive test.pl | # Script original : mod_dosevasive test.pl | ||
# A ajouter : : Permettre un sleep, Choisir un nombre de requêtes, | # A ajouter : : Permettre un sleep, Choisir un nombre de requêtes, | ||
Ligne 557: | Ligne 522: | ||
* Certain navigateur ne l' | * Certain navigateur ne l' | ||
* Après avoir charger le module http2, la configuration se fait au niveau du vhost : | * Après avoir charger le module http2, la configuration se fait au niveau du vhost : | ||
- | <code bash> | + | * <code bash> |
< | < | ||
ServerName domaine.fr | ServerName domaine.fr | ||
Protocols h2 h2c http/1.1 | Protocols h2 h2c http/1.1 | ||
</ | </ | ||
+ | |||
+ | ==== Astuces en vrac ==== | ||
+ | |||
+ | === Rewrite === | ||
+ | |||
+ | * Redirect dans un sous dossier enfant: ( évite loop / | ||
+ | RewriteCond %{REQUEST_URI} !^/site/.*$ | ||
+ | RewriteRule | ||
+ | </ | ||
+ | |||
[[systemes: | [[systemes: |