В коробке с Ubuntu 14 у меня странная активность, похожая на атаку на странице Wordpress. Журнал Apache показывает многое из этого:
191.96.249.54 - - [25/May/2016:00:46:57 +0200] "POST /xmlrpc.php HTTP/1.0" 500 585 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
191.96.249.53 - - [25/May/2016:00:46:58 +0200] "POST /xmlrpc.php HTTP/1.0" 500 585 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
191.96.249.54 - - [25/May/2016:00:46:59 +0200] "POST /xmlrpc.php HTTP/1.0" 500 585 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
191.96.249.53 - - [25/May/2016:00:47:00 +0200] "POST /xmlrpc.php HTTP/1.0" 500 585 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
Это похоже на ситуацию, описанную здесь: http://blog.carlesmateo.com/2014/08/30/stopping-and-investigating-a-wordpress-xmlrpc-php-attack/
Первое, что мне пришло в голову, это заблокировать этих парней с помощью iptables, поэтому я поставил:
iptables -A INPUT -s 191.96.249.54 -j DROP
iptables -A INPUT -s 191.96.249.53 -j DROP
Но это продолжалось.
Поскольку я использую UFW, я добавил правила UFW:
ufw deny from 191.96.249.54 to any
ufw deny from 191.96.249.53 to any
Но ничего не улучшилось. Затем я отключил UFW, и он остановился!
Правила Mu UFW (статус ufw):
Status: active
To Action From
-- ------ ----
80 ALLOW Anywhere
443 ALLOW Anywhere
143 ALLOW Anywhere
993 ALLOW Anywhere
25/tcp ALLOW Anywhere
465/tcp ALLOW Anywhere
Anywhere DENY 191.96.249.54
Anywhere DENY 191.96.249.53
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
143 (v6) ALLOW Anywhere (v6)
993 (v6) ALLOW Anywhere (v6)
25/tcp (v6) ALLOW Anywhere (v6)
465/tcp (v6) ALLOW Anywhere (v6)
Затем я понял, что самое первое правило - разрешить http ... Я удалил его и добавил снова, так что теперь он находится в конце цепочки. Это помогло. Видимо мне следует вставить такое правило блокировки:
ufw insert [position] [theRule]
Я прав? Ну, по-видимому, это сработало, но это хорошая практика или мне следует сделать это по-другому?
Предлагаю узнать о ipset
.
Как и в случае с UFW, iptables -A
добавляет новое правило в конце цепочки netfilter. Это означает, что если перед добавленными вами правилами существовало правило сопоставления, ваши правила не сработают.
Итак, в вашем случае вы должны были ввести
iptables -I INPUT -s xxx.xxx.xxx.xxx -j DROP
который по умолчанию вставляет правило в первую позицию в цепочке.
Проверьте всю цепочку с помощью команды iptables-save
.
Теперь изменение цепочки правил iptables каждый раз, когда вы получаете атаку, будет очень проблематично и чревато опасностями, особенно если вы используете «blanket DROP». Плюс необходимость удаления правил.
Итак, используйте ipset
. Вот хорошее руководство с отличными примерами и некоторым анализом влияния на производительность:
http://daemonkeeper.net/781/mass-blocking-ip-addresses-with-ipset/
Главное, что нужно сделать, - это ввести эти две команды:
ipset create blacklist hash:ip hashsize 4096
iptables -I INPUT -m set --match-set blacklist src -p TCP \
--destination-port 80 -j DROP
Теперь вы можете просто добавить в набор подозрительные IP-адреса. blacklist
, и никогда больше не придется бороться с порядком обработки правил.