My site may be under DDOS

September 26, 2018 750 views
Ubuntu Solutions

Добрый день!

Характеристики моего дроплета:
Ubuntu server 14.04.5
HDD 30 Гб
RAM 2 Гб
Varnish+Apache(PHP)+MySQL
Интернет-магазин построенный на Magento2.

У меня возникла проблема. За последние 2-3 дня мой сайт часто бывает недоступен. Мой разработчик изучив логи пришел к выводу, что на мой сайт ведется атака. Что-то похожее на DDOS. Со множества IP адресов посылаются одни и те же запросы, что очень нагружает apache создавая множество процессов и MySQL отключается. В итоге оперативная память рано или поздно заканчивается.
Я не админ, поэтому мой разработчик произвел небольшие настройки sysctl, iptables и ipset. Так же воспользовался Cloud firewall. Список заблокированных ip адресов пополняется, часть процессов работает в swap, но сайт до сих пор пока не работает.
Что обычно делать в таких случаях? Пытаться справиться самим? Просто переждать такую вредительскую активность? Или техническая поддержка DigitalOcean сможет напрямую помочь с данной угрозой?

Заранее спасибо за любую подсказку или помощь.

Good day!

Characteristics of my droplet:
Ubuntu server 14.04.5
HDD 30 GB
RAM 2 GB
Varnish+Apache (PHP)+MySQL
Online store built on Magento2.

I have a problem. Over the past 2-3 days my site is often unavailable. My developer having studied the logs came to the conclusion that my site is under attack. Something like DDOS. From many IP addresses are sent the same requests, which is very loaded apache creating many processes And MySQL is disabled. As a result, RAM sooner or later ends.
I’m not an admin, so my developer has made small adjustments to sysctl, iptables and ipset. Also used Cloud firewall. The list of blocked ip addresses is replenished, some processes work in swap, but the site still does not work.
What do you usually do in such cases? To try to help themselves? Just wait out this pest activity? Or will DigitalOcean’s technical support be able to directly help with this threat?

Thanks in advance for any hint or help.

Вот пример того, что показывает TOP
Here’s an example of what TOP shows

top - 06:05:58 up 1 min, 1 user, load average: 92.71, 26.80, 9.23
Tasks: 235 total, 131 running, 104 sleeping, 0 stopped, 0 zombie
%Cpu(s): 40.4 us, 58.1 sy, 0.0 ni, 0.2 id, 1.3 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 2049928 total, 1985776 used, 64152 free, 6928 buffers
KiB Swap: 4194300 total, 3720148 used, 474152 free. 30384 cached Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
36 root 20 0 0 0 0 S 54.8 0.0 0:32.45 kswapd0
1229 www-data 20 0 465248 13240 7928 R 1.7 0.6 0:00.92 apache2
1329 www-data 20 0 453164 14168 8652 R 1.7 0.7 0:00.65 apache2
805 mysql 20 0 2338820 13556 0 S 1.3 0.7 0:01.89 mysqld
1144 www-data 20 0 456176 28296 7364 R 1.3 1.4 0:01.29 apache2
1217 www-data 20 0 464736 13184 7876 R 1.3 0.6 0:01.08 apache2
1218 www-data 20 0 459532 12820 7452 R 1.3 0.6 0:01.01 apache2
1219 www-data 20 0 460424 13168 7572 R 1.3 0.6 0:01.03 apache2
1234 www-data 20 0 465004 13340 7888 R 1.3 0.7 0:00.93 apache2
1237 www-data 20 0 465248 13712 7904 R 1.3 0.7 0:00.98 apache2
1254 www-data 20 0 460128 16736 8292 S 1.3 0.8 0:00.75 apache2
1264 www-data 20 0 452396 30948 7272 R 1.3 1.5 0:00.79 apache2
1309 www-data 20 0 453176 10592 7316 R 1.3 0.5 0:00.66 apache2
1327 www-data 20 0 453164 14236 8652 R 1.3 0.7 0:00.65 apache2
1337 www-data 20 0 452652 14596 8696 R 1.3 0.7 0:00.62 apache2
1338 www-data 20 0 453176 14140 8648 R 1.3 0.7 0:00.65 apache2
1342 www-data 20 0 452648 15412 8700 R 1.3 0.8 0:00.62 apache2

А вот кусочек лога из /var/log/apache2/access.log
And here is a piece of log from /var/log/apache2 / access.log

/var/log/apache2/access.log 77091695/74M 100%
(compatible; MSIE 10.0; Windows NT 6.2)“
117.95.99.203 - - [27/Sep/2018:06:44:36 +1000] "POST /customer/account/createpos
t/ HTTP/1.1” 500 16560 “https://bigboi.com.au/customer/account/createpost/” “Moz
illa/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0”
43.251.116.136 - - [27/Sep/2018:06:43:45 +1000] “GET /customer/account/create/ H
TTP/1.1” 500 16560 “https://bigboi.com.au/customer/account/create/” “Mozilla/5.0
(compatible; MSIE 10.0; Windows NT 6.2)”
43.251.116.152 - - [27/Sep/2018:06:44:31 +1000] “GET /customer/account/create/ H
TTP/1.1” 500 16560 “https://bigboi.com.au/customer/account/create/” “Mozilla/5.0
(compatible; MSIE 10.0; Windows NT 6.2)”
43.255.105.236 - - [27/Sep/2018:06:44:09 +1000] “GET /customer/account/create/ H
TTP/1.1” 500 16560 “https://bigboi.com.au/customer/account/create/” “Mozilla/5.0
(compatible; MSIE 10.0; Windows NT 6.2)”
218.93.84.45 - - [27/Sep/2018:06:45:16 +1000] “POST /customer/account/createpost
/ HTTP/1.1” 500 16560 “https://bigboi.com.au/customer/account/createpost/” “Mozi
lla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0”
198.44.179.107 - - [27/Sep/2018:06:44:15 +1000] “GET /customer/account/create/ H
TTP/1.1” 500 16560 “https://bigboi.com.au/customer/account/create/” “Mozilla/5.0
(compatible; MSIE 10.0; Windows NT 6.2)”
114.227.175.226 - - [27/Sep/2018:06:44:26 +1000] “POST /customer/account/createp
ost/ HTTP/1.1” 500 16560 “https://bigboi.com.au/customer/account/createpost/” “M
ozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0”

And NETSTAT

netstat -plunt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 951/varnishd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 766/sshd
tcp 0 0 127.0.0.1:6082 0.0.0.0:* LISTEN 950/varnishd
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 805/mysqld
tcp6 0 0 :::8080 :::* LISTEN 1140/apache2
tcp6 0 0 :::80 :::* LISTEN 951/varnishd
tcp6 0 0 :::21 :::* LISTEN 3941/proftpd: (acce
tcp6 0 0 :::22 :::* LISTEN 766/sshd
tcp6 0 0 :::443 :::* LISTEN 1140/apache2

1 Answer

Add a captcha to your registration form and cache the GET requests to /account/create/ to help a bit.

Have another answer? Share your knowledge.