Maison >Opération et maintenance >exploitation et maintenance Linux >Vous apprendre à configurer fail2ban pour protéger le serveur Apache
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-multiportLa 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
Activer les prisons Apache prédéfinies
Activer Apache Jail sur Debian ou Ubuntu
$ sudo vi /etc/fail2ban/jail.localLe 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-multiportDans 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.localLe 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 = 2Notez 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 fail2banDans 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 statusAfficher l'état d'une prison spécifique (y compris la liste des adresses IP interdites) :
$ sudo fail2ban-client status [监狱名]
你也可以手动禁止或者解禁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!