Immer mehr Menschen verwenden VPS-Hosts zum Erstellen von Websites, aber im Vergleich zu virtuellen Hosts oder verwalteten Servern sind persönliche VPS-Hosts grundsätzlich nicht verwaltet. Das heißt, der Host-Anbieter ist nur für das reibungslose Netzwerk des VPS-Hosts verantwortlich Du musst es selbst herausfinden. In der Vergangenheit wurden die von Alibaba Cloud verwendeten VPS-Hosts häufig von CC und DDOS angegriffen. Grundsätzlich gelangten sie bei jedem Angriff in das „Schwarze Loch“ von Alibaba Cloud.
Die VPS-Hosts von Alibaba Cloud für CC und DDOS können sich im Allgemeinen nicht gegen zu viel Verkehr wehren. Sobald der Angriffsverkehr zunimmt, werden die Routen grundsätzlich geräumt. Bei zu vielen Angriffen entsteht sogar ein „Schwarzes Loch“ für einen oder mehrere Tage . Jetzt habe ich meine Website auf den klassischen CN2-VPS-Porter umgestellt. Ich habe zuvor von begeisterten Freunden Erinnerungen erhalten, dass der Porter CC und DDOS nur dreimal behandelt, wenn er das Dreifache überschreitet.
Dieser Angriff hat mir auch gezeigt, dass ich immer noch vorsichtig sein muss, wenn ich meine Website auf einem klassischen VPS-Host platziere. Ich konnte die Seite zu Beginn nicht öffnen und wurde dann durch Nachrichten von vielen Freunden daran erinnert, dass ich mich sofort im Backend des Hosting-Anbieters angemeldet habe, um zu überprüfen, dass die CPU-Auslastung des VPS überschritten wurde 100 % und die Bandbreitengeschwindigkeit übersteigt Hunderte MB, anscheinend wurde der VPS vom Hosting-Anbieter getrennt.
In diesem Artikel werden Freunde, die VPS-Hosts zum Erstellen von Websites verwenden, über die grundlegenden Schritte zum Umgang mit kleinen CC- und DDOS-Angriffen informiert, bei denen es im Wesentlichen darum geht, bösartige IP-Adressen durch Firewalls zu blockieren.
Für mehr Website-Sicherheit und Erfahrung im Website-Aufbau gibt es:
- Fünf Sicherheitstipps für die Verwendung eines kostenlosen VPS-Kontrollfelds – lassen Sie sich nicht von Hackern ausnutzen
- Der Linux-PHP-FPM-Optimierungsprozess benötigt viel Speicher und verursacht keine Speicherprobleme
- Durch die Auflösung von DNS-Domänennamen kann DNSSEC DNS-Hijacking verhindern – Google Cloud DNS-Einstellungen DNSSEC
PS: Aktualisiert am 6. März 2018, Wenn Sie verhindern möchten, dass bestimmte IPs auf die Website zugreifen, können Sie diese Methode verwenden: Website-Blockierung und IP-Zugriffseinstellungen für bestimmte Regionen und Länder blockieren – PHP-Code/Nginx / WordPress-Einstellungen.
PS: Aktualisiert am 19. März 2020 : Wenn Ihre Website gehackt wurde, können Sie auf die folgenden Methoden zurückgreifen, um das Problem zu lösen: Website-Trojaner- und Server-Hacking-Fehlerbehebungsanalyse – VPS-Host- und Server-verstärkte Sicherheitsmethoden.
1. Machen Sie im Vorfeld Ihre Hausaufgaben im Umgang mit CC und DDOS
Mit den folgenden beiden Befehlen können Sie den aktuellen Angriff schnell beurteilen: Geben Sie den folgenden Befehl ein, um die Anzahl der Verbindungen für eine einzelne IP anzuzeigen.
netstat -nat|grep -i '80'|wc -l
Sortieren Sie die verbundenen IPs nach der Anzahl der Verbindungen und zeigen Sie den TCP-Verbindungsstatus an.
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
1.1 Häufige Backup-Kombination aus lokalem und externem Backup
Website-Backups sind eine todsichere Möglichkeit, mit CC- und DDOS-Angriffen umzugehen. Unabhängig vom Angriff können wir den Verlust minimieren, solange die Daten nicht zerstört werden. Für häufig aktualisierte Daten wird empfohlen, einmal täglich ein Backup durchzuführen. Einige Hosting-Anbieter bieten auch Snapshot-Backup-Funktionen an, wie z. B. Alibaba Cloud, Tencent Cloud und den zuvor eingeführten Linode-Snapshot.
Zusätzlich zur lokalen Sicherung ist es selbstverständlich, eine externe Sicherung durchzuführen. Off-Site-Backup kann mit Cloud-Speicher oder Cloud-Festplatte kombiniert werden, um Daten zu speichern. Der zuvor freigegebene Linux-VPS kann die Daten auf dem VPS automatisch auf die Netzwerkfestplatte hochladen, indem er Google Drive und Dropbox bereitstellt, oder den Cloud-Speicher oder das Cloud-Shooting von DigitalOcean Spaces verwenden . , Qiniu Cloud Storage, Baidu BOS und andere professionelle Cloud-Speicher.
1.2 Erfahren Sie, wie Sie die Linux-VPS-Systemlast überprüfen
Sobald wir von CC- und DDOS-Angriffen betroffen sind, können wir dies normalerweise über das Control Panel des VPS-Hosting-Anbieters überprüfen. In unseren Überwachungsdaten können wir offensichtliche „Anomalien“ erkennen. Das Bild unten zeigt 100 % IO, CPU, Speicher usw., die von der VPS-Hostüberwachung angezeigt wurden, als ich angegriffen wurde. (Klicken um zu vergrößern)
2.2 Verwenden Sie Fail2ban, um angreifende IPs zu blockieren
fail2ban ist eine in der Python-Sprache entwickelte Überwachungssoftware. Sie ruft iptables auf, um die entsprechende Anmelde-IP zu blockieren, indem die Anmeldeinformationen des Systemprotokolls überwacht werden, um böswilligen Zugriff durch eine bestimmte IP zu verhindern. fail2ban liest die entsprechende Protokolldatei, Debian/Ubuntu:/var/log/auth.log, CentOS/Redhat:/var/log/secure. Fail2ban installieren:
apt-get install fail2ban
#CentOS内置源并未包含fail2ban,需要先安装epel源
yum -y install epel-release
#安装fial2ban
yum -y install fail2ban
Nach Abschluss der Installation befinden sich die Hauptkonfigurationsdateien im Verzeichnis /etc/fail2ban, das zwei Dateien und zwei Verzeichnisse enthält:
fail2ban.conf: Die Konfigurationsdatei definiert die Protokollebene, den Speicherort der Protokolldatei und den von fail2ban aufgezeichneten Socket.
jail.conf definiert die zu überwachenden Dienste und einige verwendete Strategien.
Der Anfang von jail.conf ist der standardmäßige globale Konfigurationsblock [DEFAULT]. Die Standardkonfiguration wird wie folgt beschrieben:
[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中替换成具体的设置值。
Die anderen Verzeichnisfunktionen von Fail2ban werden wie folgt beschrieben:
Das Verzeichnis filter.d definiert Filterregeln basierend auf Protokolldateien und verwendet hauptsächlich reguläre Ausdrücke, um Schlüsselwörter zu finden, die Fehler verursachen.
Das Verzeichnis action.d enthält, welche Aktionen gemäß den Filterregeln gegen die entsprechende IP durchgeführt werden sollen.
Beispiel für einen Fail2ban-Anti-CC-Angriff:
#需要先新建一个nginx日志匹配规则
vi /etc/fail2ban/filter.d/nginx-cc.conf
#填写如下内容
[Definition]
failregex = <HOST> -.*- .*HTTP/1.* .* .*$
ignoreregex =
Ändern Sie jail.local
weiter und fügen Sie den folgenden Inhalt hinzu:
[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
Die obige Konfiguration bedeutet, dass, wenn dieselbe IP innerhalb von 60 Sekunden 60 Anfragen erreicht, ihre IP für eine Stunde gesperrt wird. Denken Sie daran, den Protokollpfad Ihrer Website zu ändern. Verwenden Sie den folgenden Befehl, um den fail2ban-Status anzuzeigen und die Liste der gesperrten IP-Adressen anzuzeigen.
/usr/local/python/bin/fail2ban-client status ssh-iptables
Erteilen Sie nach dem Speichern des obigen Codes die Berechtigung x (Ausführung). Um zu erkennen, dass das Shell-Skript einem Daemon im Hintergrund ähnelt, müssen Sie nohup verwenden:
nohup 该shell script的位置 >/dev/null 2>&1 &
>/dev/null 2>&1
bedeutet, dass die Informationsausgabe durch Ausführen des Shell-Skripts (mehrere Echos im Shell-Skript, die zum Debuggen verwendet werden) nach /dev/null umgeleitet wird. Das & am Ende steht für die Hintergrundausführung. In diesem Fall wird das Shell-Skript auch dann im Hintergrund ausgeführt, wenn Sie sich abmelden.
3. Zusammenfassung
Ich habe die beiden oben genannten Skripte verwendet, die Website-Protokolle in Echtzeit erkennen und automatisch abnormale IPs zum Blockieren zu iptables hinzufügen. Die Ergebnisse sind sehr gut und reichen aus, um kleine CC-Angriffe abzuwehren. Derzeit wird Fail2ban verwendet, um Website-Protokolle zu erkennen und bösartige IPs zu blockieren. Jedes der drei Skripte hat seine eigenen Vorteile und Sie können diese nach Ihren eigenen Bedürfnissen auswählen.
Wenn Sie jedoch auf einen größeren DDOS-Angriff stoßen, müssen Sie dennoch einen speziellen Anti-Angriffsdienst nutzen. Beispielsweise ist der Anti-Angriffsdienst von Cloudflare im Grunde sehr effektiv und wird von allen in der VPS-Branche verwendet. Wenn Ihre Website angegriffen wurde und nicht mehr zugänglich ist, können Sie Cloudflare auf die kostenpflichtige Version aktualisieren, die einen besseren Schutz bietet.