Maison  >  Article  >  Opération et maintenance  >  Vous apprendre à configurer fail2ban pour protéger le serveur Apache

Vous apprendre à configurer fail2ban pour protéger le serveur Apache

怪我咯
怪我咯original
2017-06-27 09:51:072344parcourir

Cet article présente principalement la méthode de configuration de fail2ban pour protéger le serveur Apache. Il a principalement pour effet de filtrer les adresses IP. L'exemple est basé sur le système Linux. Les amis qui en ont besoin peuvent s'y référer

Dans l'environnement de production Le serveur Apache peut être vulnérable à différentes attaques. Un attaquant peut tenter d'accéder à des répertoires non autorisés ou interdits par le biais d'attaques par force brute ou par l'exécution de scripts malveillants. Certains robots malveillants peuvent analyser votre site Web à la recherche de diverses failles de sécurité ou envoyer du spam en collectant des adresses e-mail et des formulaires Web.

Le serveur Apache dispose de capacités de journalisation complètes qui peuvent capturer les événements anormaux reflétés dans diverses attaques. Cependant, il n'est pas encore capable d'analyser systématiquement les journaux Apache spécifiques et de réagir rapidement aux attaques potentielles (par exemple, bannir/débannir les adresses IP). À ce stade, fail2ban peut sauvegarder tout cela et libérer le travail de l'administrateur système.

fail2ban est un outil de prévention des intrusions qui peut détecter différents outils en fonction des journaux système et prendre automatiquement des mesures de protection, telles que l'interdiction des adresses IP via iptables, le blocage des connexions via /etc/hosts.deny ou l'envoi de notifications par e-mail. fail2ban dispose d'une série de « prisons » prédéfinies qui utilisent des filtres de journaux de programmes spécifiques pour détecter les attaques courantes. Vous pouvez également écrire des règles personnalisées pour détecter les attaques provenant de programmes arbitraires.

Dans ce tutoriel, je vais vous montrer comment configurer fail2ban pour protéger votre serveur Apache. Je suppose que Apache et Fail2ban sont déjà installés.


Qu'est-ce que la prison Fail2ban
Examinons de plus près la prison Fail2ban. Jail définit des politiques d'application spécifiques, qui déclenchent une mesure de protection pour un programme spécifié. fail2ban a des prisons prédéfinies sous /etc/fail2ban/jail.conf pour certains programmes populaires tels que Apache, Dovecot, Lighttpd, MySQL, Postfix, SSH, etc. Chaque prison détecte les attaques courantes via des filtres de journaux de programmes spécifiques (sous /etc/fail2ban/filter.d). Permettez-moi de regarder un exemple de prison : la prison SSH.

Le code est le suivant :

[ssh]
    enabled   = true
    port      = ssh
    filter    = sshd
    logpath   = /var/log/auth.log
    maxretry  = 6
    banaction = iptables-multiport
La configuration de la jail SSH définit ces paramètres :

[ssh] : Entre crochets se trouve le nom de la prison.

activé : s'il faut activer la prison
port : numéro de port (ou nom de service correspondant)
filtre : règles d'analyse des journaux pour détecter les attaques
logpath : fichier journal détecté
maxretry : nombre d'échecs maximum de fois
banaction : tout paramètre défini dans la configuration de la prison pour l'opération interdite

remplacera les paramètres de configuration par défaut correspondants dans fail2ban-wide. Au lieu de cela, tous les paramètres manquants utilisent la valeur par défaut définie dans le champ [DEFAULT].

Les filtres de journaux prédéfinis sont placés dans /etc/fail2ban/filter.d, et les actions interdites qui peuvent être prises sont placées dans /etc/fail2ban/action.d.


201561195702833.jpg (769×644)

Si vous souhaitez remplacer le comportement par défaut de fail2ban ou définir des prisons personnalisées, vous pouvez créer des fichiers /etc/fail2ban/jail.local*. Dans ce tutoriel, j'utiliserai /etc/fail2ban/jail.local.


Activer les prisons Apache prédéfinies

L'installation par défaut de fail2ban fournit des prisons et des filtres prédéfinis pour le service Apache. Je souhaite activer ces prisons Apache intégrées. Puisque Debian et RedHat sont configurés légèrement différemment, je fournirai leurs fichiers de configuration séparément.


Activer Apache Jail sur Debian ou Ubuntu

Pour activer la prison Apache prédéfinie sur les systèmes basés sur Debian, créez /etc/fail2ban/jail.local comme suit.

  $ sudo vi /etc/fail2ban/jail.local
Le code est le suivant :

# 检测密码认证失败
    [apache]
    enabled  = true
    port     = http,https
    filter   = apache-auth
    logpath  = /var/log/apache*/*error.log
    maxretry = 6
    # 检测漏洞和 PHP 脆弱性扫描 
    [apache-noscript]
    enabled  = true
    port     = http,https
    filter   = apache-noscript
    logpath  = /var/log/apache*/*error.log
    maxretry = 6
    # 检测 Apache 溢出攻击 
    [apache-overflows]
    enabled  = true
    port     = http,https
    filter   = apache-overflows
    logpath  = /var/log/apache*/*error.log
    maxretry = 2
    # 检测在服务器寻找主目录的尝试
    [apache-nohome]
    enabled  = true
    port     = http,https
    filter   = apache-nohome
    logpath  = /var/log/apache*/*error.log
    maxretry = 2
Étant donné que les prisons ci-dessus n'ont pas de mesures spécifiées, ces prisons déclencheront des mesures par défaut. Pour voir les actions par défaut, recherchez « banaction » sous [DEFAULT] dans /etc/fail2ban/jail.conf.

Le code est le suivant :

banaction = iptables-multiport
Dans cet exemple, l'opération par défaut est iptables-multiport (définie dans /etc/fail2ban/action.d/iptables-multiport.conf) . Cette mesure utilise le module multiport d'iptable pour bannir une adresse IP.

Après avoir activé la prison, vous devez redémarrer fail2ban pour charger la prison.

  $ sudo service fail2ban restart

Activer Apache Jail dans CentOS/RHEL ou Fedora

Pour activer les prisons prédéfinies dans les systèmes basés sur Red Hat, créez /etc/ comme suit fail2ban/jail. locale.

  $ sudo vi /etc/fail2ban/jail.local
Le code est le suivant :

# 检测密码认证失败
    [apache]
    enabled  = true
    port     = http,https
    filter   = apache-auth
    logpath  = /var/log/httpd/*error_log
    maxretry = 6
    # 检测抓取邮件地址的爬虫
    [apache-badbots]
    enabled  = true
    port     = http,https
    filter   = apache-badbots
    logpath  = /var/log/httpd/*access_log
    bantime  = 172800
    maxretry = 1
    # 检测漏洞和 PHP 脆弱性扫描 
    [apache-noscript]
    enabled  = true
    port     = http,https
    filter   = apache-noscript
    logpath  = /var/log/httpd/*error_log
    maxretry = 6
    # 检测 Apache 溢出攻击 
    [apache-overflows]
    enabled  = true
    port     = http,https
    filter   = apache-overflows
    logpath  = /var/log/httpd/*error_log
    maxretry = 2
    # 检测在服务器寻找主目录的尝试
    [apache-nohome]
    enabled  = true
    port     = http,https
    filter   = apache-nohome
    logpath  = /var/log/httpd/*error_log
    maxretry = 2
    # 检测执行不存在的脚本的企图
    # 这些都是流行的网站服务程序
    # 如:webmail, phpMyAdmin,WordPress
    port     = http,https
    filter   = apache-botsearch
    logpath  = /var/log/httpd/*error_log
    maxretry = 2
Notez que l'opération par défaut de ces fichiers jail est iptables-multiport (défini sous le champ [DEFAULT] dans /etc/fail2ban /jail.conf "interdiction"). Cette mesure utilise le module multiport d'iptable pour bannir une adresse IP.

Après avoir activé la prison, vous devez redémarrer fail2ban pour charger la prison.

Dans Fedora ou CentOS/RHEL 7 :

  $ sudo systemctl restart fail2ban
Dans CentOS/RHEL 6 :

  $ sudo service fail2ban restart

Vérifier et gérer le statut du ban fail2ban

Une fois la prison activée, vous pouvez utiliser l'outil de ligne de commande client de fail2ban pour surveiller l'état actuel de l'interdiction.

Afficher la liste des prisons actives :

  $ sudo fail2ban-client status
Afficher l'état d'une prison spécifique (y compris la liste des adresses IP interdites) :

  $ sudo fail2ban-client status [监狱名]

201561195749494.jpg (800×298)

    你也可以手动禁止或者解禁IP地址:

要用制定监狱禁止IP:

  $ sudo fail2ban-client set [name-of-jail] banip [ip-address]

要解禁指定监狱屏蔽的IP:

  $ sudo fail2ban-client set [name-of-jail] unbanip [ip-address]

总结

本篇教程解释了fail2ban监狱如何工作以及如何使用内置的监狱来保护Apache服务器。依赖于你的环境以及要保护的web服务器类型,你或许要调整已有的监狱或者编写自定义监狱和日志过滤器。查看outfail2ban的官方Github页面来获取最新的监狱和过滤器示例。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn