Sempre più persone utilizzano host VPS per creare siti Web, ma rispetto agli host virtuali o ai server gestiti, gli host VPS personali sono sostanzialmente non gestiti, ovvero il provider host è responsabile solo del buon funzionamento della rete dell'host VPS Devi capirlo da solo. In passato, gli host VPS utilizzati da Alibaba Cloud venivano spesso attaccati da CC e DDOS, in sostanza, ogni volta che venivano attaccati, entravano nel "buco nero" di Alibaba Cloud.
Gli host VPS di Alibaba Cloud per CC e DDOS generalmente non sono in grado di difendersi da un traffico eccessivo. Se il traffico degli attacchi aumenta, in caso di troppi attacchi si crea addirittura un "buco nero" per uno o più giorni . Ora ho spostato il mio sito web sul classico porter CN2 VPS. In precedenza ho ricevuto promemoria da amici entusiasti che il porter tratta CC e DDOS solo tre volte. Se supera le tre volte, bloccherà direttamente il VPS.
Questo attacco mi ha anche insegnato che devo essere ancora cauto quando inserisco il mio sito web su un host VPS classico. All'inizio non riuscivo ad aprire il sito e poi mi sono ricordato dei messaggi di molti amici, ho subito effettuato l'accesso al backend del provider di hosting per verificare. Dal grafico di monitoraggio, posso vedere che l'utilizzo della CPU del VPS è stato superato 100% e la velocità della larghezza di banda ha superato le centinaia di MB, apparentemente il VPS è stato disconnesso dal provider di hosting.
Questo articolo condividerà con gli amici che utilizzano host VPS per creare siti Web i passaggi fondamentali per gestire piccoli attacchi CC e DDOS, che fondamentalmente ruotano attorno al blocco di IP dannosi attraverso i firewall.
Per una maggiore sicurezza del sito web ed esperienza nella costruzione di siti web, ci sono:
- Cinque suggerimenti per la sicurezza per l'utilizzo di un pannello di controllo VPS gratuito: non lasciare che gli hacker ne traggano vantaggio
- Il processo di ottimizzazione Linux php-fpm experience-php-fpm occupa molta memoria e non rilascia problemi di memoria
- La risoluzione dei nomi di dominio DNS consente a DNSSEC di impedire il dirottamento DNS: impostazioni DNS di Google Cloud DNSSEC
PS: aggiornato il 6 marzo 2018, Se desideri impedire a IP specifici di accedere al sito web, puoi utilizzare questo metodo: Blocco del sito web e blocco delle impostazioni di accesso IP per regioni e paesi specifici - codice PHP/Nginx /Impostazioni WordPress.
PS: aggiornato il 19 marzo 2020 , se il tuo sito web è stato violato, puoi fare riferimento ai seguenti metodi per risolvere il problema: Analisi della risoluzione dei problemi di hacking del server e del trojan del sito web - Metodi di sicurezza avanzati per host e server VPS.
1. Studia in anticipo quando hai a che fare con CC e DDOS
Puoi giudicare rapidamente l'attacco corrente con i due comandi seguenti: Inserisci il seguente comando per visualizzare il numero di connessioni per un singolo IP.
netstat -nat|grep -i '80'|wc -l
Ordina gli IP connessi in base al numero di connessioni e visualizza lo stato della connessione TCP.
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
1.1 Combinazione frequente di backup locali e off-site
Il backup del sito web è un modo infallibile per gestire gli attacchi CC e DDOS, indipendentemente dall’attacco, finché i dati non vengono distrutti, possiamo ridurre al minimo la perdita. Per i dati aggiornati di frequente, si consiglia di eseguire il backup una volta al giorno. Alcuni provider di hosting forniscono anche funzioni di backup degli snapshot, come Alibaba Cloud, Tencent Cloud e lo snapshot Linode introdotto in precedenza.
Oltre al backup locale, è naturale eseguire il backup fuori sede. Il backup fuori sede può essere combinato con l'archiviazione cloud o il disco cloud per salvare i dati. Il VPS Linux condiviso in precedenza può caricare automaticamente i dati sul VPS sul disco di rete montando Google Drive e Dropbox oppure utilizzare l'archiviazione cloud DigitalOcean Spaces o lo scatto sul cloud. ., Qiniu Cloud Storage, Baidu BOS e altri servizi di archiviazione cloud professionali.
1.2 Impara a controllare il carico del sistema VPS Linux
Una volta che subiamo attacchi CC e DDOS, di solito possiamo controllarli tramite il pannello di controllo del provider di hosting VPS. Possiamo vedere evidenti "anomalie" nei nostri dati di monitoraggio. L'immagine seguente mostra il 100% di IO, CPU, memoria, ecc. visualizzati dal monitoraggio dell'host VPS quando sono stato attaccato. (Clicca per ingrandire)
2.2 Usa Fail2ban per bloccare gli IP attaccanti
fail2ban è un software di monitoraggio sviluppato in linguaggio Python. Chiama iptables per bloccare l'IP di accesso corrispondente monitorando le informazioni di accesso del registro di sistema per impedire l'accesso dannoso da parte di un determinato IP. fail2ban legge il file di registro corrispondente, Debian/Ubuntu:/var/log/auth.log, CentOS/Redhat:/var/log/secure. Installa fail2ban:
apt-get install fail2ban
#CentOS内置源并未包含fail2ban,需要先安装epel源
yum -y install epel-release
#安装fial2ban
yum -y install fail2ban
Al termine dell'installazione, i file di configurazione principali si trovano nella directory /etc/fail2ban, che contiene due file e due directory:
fail2ban.conf: il file di configurazione definisce il livello di registro, la posizione del file di registro e il socket registrato da fail2ban.
jail.conf definisce i servizi da monitorare e alcune strategie da utilizzare.
L'inizio di jail.conf è il blocco di configurazione globale predefinito [DEFAULT].
[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中替换成具体的设置值。
Le altre funzioni della directory di Fail2ban sono descritte come segue:
La directory filter.d definisce le regole per il filtraggio in base ai file di registro, utilizzando principalmente espressioni regolari per abbinare le parole chiave che causano errori.
La directory action.d contiene il tipo di azioni da intraprendere contro l'IP corrispondente in base alle regole di filtraggio.
Esempio di attacco anti-CC Fail2ban:
#需要先新建一个nginx日志匹配规则
vi /etc/fail2ban/filter.d/nginx-cc.conf
#填写如下内容
[Definition]
failregex = <HOST> -.*- .*HTTP/1.* .* .*$
ignoreregex =
Continua a modificare jail.local
e aggiungi il seguente contenuto:
[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 configurazione di cui sopra significa che se lo stesso IP raggiunge 60 richieste entro 60 secondi, il suo IP verrà bannato per 1 ora. Ricorda di modificare il percorso di registro del tuo sito web. Utilizzare il comando seguente per visualizzare lo stato fail2ban e visualizzare l'elenco degli indirizzi IP vietati.
/usr/local/python/bin/fail2ban-client status ssh-iptables
Dopo aver salvato il codice sopra, concedi l'autorizzazione x (esecuzione). Per renderti conto che lo Shell Script è simile ad un demone in background, devi usare nohup:
nohup 该shell script的位置 >/dev/null 2>&1 &
>/dev/null 2>&1
significa reindirizzare l'output delle informazioni eseguendo lo script di shell (diversi echi nello script di shell, utilizzati per il debug) su /dev/null. La & alla fine rappresenta l'esecuzione in background. In questo caso, anche se ti disconnetti, lo script di shell verrà comunque eseguito in background.
3. Riepilogo
Ho utilizzato i due script precedenti che rilevano i log dei siti Web in tempo reale e aggiungono automaticamente IP anomali a iptables per il blocco. I risultati sono molto buoni e sufficienti per gestire piccoli attacchi CC. Attualmente, Fail2ban viene utilizzato per rilevare i registri dei siti Web e bloccare IP dannosi. Ciascuno dei tre script ha i suoi vantaggi e puoi scegliere in base alle tue esigenze.
Tuttavia, se incontri un attacco DDOS più grande, devi comunque utilizzare un servizio anti-attacco specializzato. Ad esempio, il servizio anti-attacco Cloudflare è molto efficace. Fondamentalmente, tutti nel settore VPS lo utilizzano. Se il tuo sito web è stato attaccato e diventa inaccessibile, puoi aggiornare Cloudflare alla versione a pagamento, che fornirà una migliore protezione.