De plus en plus de personnes utilisent des hôtes VPS pour créer des sites Web, mais comparés aux hôtes virtuels ou aux serveurs gérés, les hôtes VPS personnels ne sont pratiquement pas gérés, c'est-à-dire que le fournisseur d'hébergement est uniquement responsable du bon fonctionnement du réseau de l'hôte VPS. Vous devez le découvrir par vous-même. Dans le passé, les hôtes VPS utilisés par Alibaba Cloud étaient souvent attaqués par CC et DDOS. Fondamentalement, chaque fois qu'ils étaient attaqués, ils entraient dans le « trou noir » d'Alibaba Cloud.

Les hôtes VPS d'Alibaba Cloud pour CC et DDOS ne peuvent généralement pas se défendre contre un trafic trop important. Une fois que le trafic d'attaque augmente, les routes seront essentiellement dégagées. S'il y a trop d'attaques, il y aura même un « trou noir » pendant un ou plusieurs jours. . Maintenant, j'ai déplacé mon site Web vers le porteur CN2 VPS classique. J'ai déjà reçu des rappels d'amis enthousiastes selon lesquels le porteur ne traite que trois fois CC et DDOS. S'il dépasse trois fois, il bloquera directement le VPS.

Cette attaque m'a également appris que je dois quand même être prudent lorsque je place mon site Web sur un hébergeur VPS classique. Je n'ai pas pu ouvrir le site au début, puis j'ai été rappelé par les messages de nombreux amis. Je me suis immédiatement connecté au backend du fournisseur d'hébergement pour vérifier. À partir du graphique de surveillance, je peux voir que l'utilisation du processeur du VPS a été dépassée. 100 % et la vitesse de la bande passante dépassait les centaines de Mo, apparemment le VPS a été déconnecté par le fournisseur d'hébergement.

Cet article partagera avec des amis qui utilisent des hôtes VPS pour créer des sites Web, les étapes de base pour faire face aux petites attaques CC et DDOS, qui consistent essentiellement à bloquer les adresses IP malveillantes via des pare-feu.

Idées de base pour la défense contre les attaques d'hôtes VPS contre CC et DDOS - stratégie de blocage du pare-feu anti-scanning

Pour plus de sécurité de site Web et d’expérience dans la construction de sites Web, il existe :

  1. Cinq conseils de sécurité pour utiliser un panneau de contrôle VPS gratuit – ne laissez pas les pirates en profiter
  2. Le processus d'optimisation Linux php-fpm experience-php-fpm occupe une grande mémoire et ne libère pas de problèmes de mémoire
  3. La résolution du nom de domaine DNS permet à DNSSEC d'empêcher le piratage DNS - Paramètres DNS de Google Cloud DNSSEC

PS : mis à jour le 6 mars 2018 Si vous souhaitez empêcher des adresses IP spécifiques d'accéder au site Web, vous pouvez utiliser cette méthode : Blocage du site Web et blocage des paramètres d'accès IP pour des régions et des pays spécifiques - Code PHP/Nginx / Paramètres WordPress.

PS : mis à jour le 19 mars 2020 , si votre site Web a été piraté, vous pouvez vous référer aux méthodes suivantes pour résoudre le problème : Analyse de dépannage des chevaux de Troie de sites Web et du piratage de serveur – Méthodes de sécurité de l'hôte et du serveur VPS.

1. Faites vos devoirs à l'avance lorsque vous traitez avec CC et DDOS

Vous pouvez rapidement juger de l'attaque en cours avec les deux commandes suivantes : Entrez la commande suivante pour afficher le nombre de connexions pour une seule IP.

netstat -nat|grep -i '80'|wc -l

Triez les adresses IP connectées par nombre de connexions et affichez l'état de la connexion TCP.

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

1.1  Sauvegarde fréquente-combinaison de sauvegarde locale et hors site

La sauvegarde de sites Web est un moyen infaillible de lutter contre les attaques CC et DDOS. Quelle que soit l'attaque, tant que les données ne sont pas détruites, nous pouvons minimiser les pertes. Pour les données fréquemment mises à jour, il est recommandé de sauvegarder une fois par jour. Certains fournisseurs d'hébergement proposent également des fonctions de sauvegarde par instantané, telles que Alibaba Cloud, Tencent Cloud et l'instantané Linode introduit précédemment.

En plus de la sauvegarde locale, il est naturel d'effectuer une sauvegarde hors site. La sauvegarde hors site peut être combinée avec un stockage cloud ou un disque cloud pour enregistrer les données. Le VPS Linux partagé précédemment peut télécharger automatiquement les données du VPS sur le disque réseau en montant Google Drive et Dropbox, ou utiliser le stockage cloud DigitalOcean Spaces ou la prise de vue dans le cloud. , Qiniu Cloud Storage, Baidu BOS et autres stockages cloud professionnels.

1.2  Apprenez à vérifier la charge du système Linux VPS

Une fois que nous subissons des attaques CC et DDOS, nous pouvons généralement le vérifier via le panneau de contrôle du fournisseur d'hébergement VPS. Nous pouvons voir des « anomalies » évidentes dans nos données de surveillance. L'image ci-dessous montre les E/S, le processeur, la mémoire, etc. affichés par la surveillance de l'hôte VPS lorsque j'ai été attaqué, affichant une occupation à 100 %. (Cliquez pour agrandir)

2.2  Utilisez Fail2ban pour bloquer les IP attaquantes

fail2ban est un logiciel de surveillance développé en langage Python. Il appelle iptables pour bloquer l'adresse IP de connexion correspondante en surveillant les informations de connexion du journal système afin d'empêcher tout accès malveillant par une certaine adresse IP. fail2ban lit le fichier journal correspondant, Debian/Ubuntu:/var/log/auth.log, CentOS/Redhat:/var/log/secure. Installez fail2ban :

apt-get install fail2ban

#CentOS内置源并未包含fail2ban,需要先安装epel源
yum -y install epel-release
#安装fial2ban
yum -y install fail2ban

Une fois l'installation terminée, les principaux fichiers de configuration se trouvent dans le répertoire /etc/fail2ban, qui contient deux fichiers et deux répertoires :

fail2ban.conf : Le fichier de configuration définit le niveau de journalisation, l'emplacement du fichier journal et le socket enregistré par fail2ban.

jail.conf définit les services à surveiller et certaines stratégies utilisées.

Le début de jail.conf est le bloc de configuration globale par défaut [DEFAULT]. La configuration par défaut est décrite comme suit :

[DEFAULT]
#忽略哪些IP,可以是具体IP、CIDR类型的地址,多个IP用空格分开
ignoreip = 127.0.0.1

#设置IP被锁住的时间,单位为秒
bantime  = 600

#检测时间,在此时间内超过规定的次数会激活fail2ban
findtime  = 600

#尝试的次数
maxretry = 3

#日志检测机器,有"gamin", "polling" and "auto"三种模式。
backend = polling

#发送报警邮件的地址
destemail = root@localhost #默认的动作执行行为,在action.d目录下有各种行为策略,默认是iptables-#multiport
banaction = iptables-multiport

#0.8.1版本后fail2ban默认用sendmail MTA
mta = sendmail

#默认使用tcp协议
protocol = tcp

#定义了各种行动的参数
#banaction参数在action.d目录下具体定义,name port protocol 也可以自己定义
#只禁止IP
action_ = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
#即禁止IP又发送email
action_mw = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
              %(mta)s-whois[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s]
#禁止IP、发送email、报告有关日志			  
action_mwl = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
               %(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s]

#如果没有定义行为,则默认的行为为action,可选择action_,action_mw, action_mwl 等		
action = %(action_)s

默认配置文件含有此模块
#定义子模块名
[ssh]
#是否激活
enabled = true
#定义port,可以是数字端口号表示,也可以是字符串表示
port= ssh
#过滤规则,在filter.d目录下定义
filter	= sshd
#检测日志的路径
logpath  = /var/log/auth.log
#尝试的次数,覆盖了全局配置的
maxretry = 6
#banaction 在action.d目录下定义,此参数值会替换action中选用的默认行为中定义的banaction参数
banaction = iptables-allports
#注意 port protocol banaction 可以不用分开定义,直接使用action定义也可以,例如:
#action   = iptables[name=SSH, port=ssh, protocol=tcp]
#在子模块中定义的port protocol banaction 都会在action_ action_mw, action_mwl中替换成具体的设置值。

Les autres fonctions d'annuaire de Fail2ban sont décrites comme suit :

Le répertoire filter.d définit des règles de filtrage basées sur des fichiers journaux, utilisant principalement des expressions régulières pour faire correspondre les mots-clés qui provoquent des erreurs.

Le répertoire action.d contient les types d'actions à entreprendre contre l'adresse IP correspondante selon les règles de filtrage.

Exemple d'attaque anti-CC Fail2ban :

#需要先新建一个nginx日志匹配规则
vi /etc/fail2ban/filter.d/nginx-cc.conf
#填写如下内容
[Definition]
failregex = <HOST> -.*- .*HTTP/1.* .* .*$
ignoreregex =

Continuez à modifier jail.local et ajoutez le contenu suivant :

[nginx-cc]
enabled = true
port = http,https
filter = nginx-cc
action = %(action_mwl)s
maxretry = 60
findtime = 60
bantime = 3600
logpath = /data/wwwlogs/wzfou.com_nginx.log

La configuration ci-dessus signifie que si la même IP atteint 60 requêtes en 60 secondes, son IP sera bannie pendant 1 heure. Pensez à modifier le chemin du journal de votre site Web. Utilisez la commande suivante pour afficher l'état fail2ban et afficher la liste des adresses IP interdites.

/usr/local/python/bin/fail2ban-client status ssh-iptables

Après avoir enregistré le code ci-dessus, accordez l'autorisation x (exécution). Pour réaliser que le script Shell est similaire à un démon en arrière-plan, vous devez utiliser nohup :

nohup 该shell script的位置 >/dev/null 2>&1 &

>/dev/null 2>&1 signifie rediriger les informations sorties en exécutant le script shell (plusieurs échos dans le script shell, utilisés pour le débogage) vers /dev/null. Le & à la fin représente l’exécution en arrière-plan. Dans ce cas, même si vous vous déconnectez, le script Shell sera toujours exécuté en arrière-plan.

3. Résumé

J'ai utilisé les deux scripts ci-dessus pour détecter les journaux de sites Web en temps réel et ajouter automatiquement des adresses IP anormales à iptables pour les bloquer. Les résultats sont très bons et peuvent faire face à de petites attaques CC. Actuellement, Fail2ban est utilisé pour détecter les journaux de sites Web et bloquer les adresses IP malveillantes. Chacun des trois scripts a ses propres avantages et vous pouvez choisir en fonction de vos propres besoins.

Cependant, si vous rencontrez une attaque DDOS plus importante, vous devez toujours utiliser un service anti-attaque spécialisé. Par exemple, le service anti-attaque Cloudflare est très efficace. Fondamentalement, tout le monde dans l'industrie des VPS l'utilise. Si votre site Web a été attaqué et devient inaccessible, vous pouvez mettre à niveau Cloudflare vers la version payante, qui offrira une meilleure protection.

Laisser une réponse