Время закрывать дыры или поучительная история

К сожалению, многие из нас поддаются правилу: "Временно сделаем так, а после переделаем как надо!". Думаю, мало кто будет это отрицать. Вот и я не исключение. Когда только начинал настраивать сервер, вначале думал: "Это так, не серьезно. Только посмотреть, что он из себя представляет. Поглядеть на FreeBSD", и прочее... Поэтому на настройку firewall внимания не обращал, сделал NAT и поставил правило "пропускать все и от всего", и позже, если что, настрою как надо. Но вот сервер перерос в нечто большее, чем просто интерес.

Так вот, в один прекрасный вечер все стало плохо. Ничего не грузится, а если точнее, то вовсе отсутствует upload (исходящий трафик). Да, вы не ослышались, именно он. Начинаем разбираться. У меня на сервере для мониторинга стоит Zabbix, и вот там на графиках видно, что тот самый upload есть... И он не просто есть, а зашкаливает. Непонятным образом он возрос до 12 Мб/с, а по данным zabbix'а максимальная отметка - 18 Мб/с. Хотя исходящий трафик у провайдера должен резаться на уровне 400-600 Кб/с. Это был шок. Непонятными стали два момента: во-первых, что гоняет такой трафик, и во-вторых, почему не режется upload.

Начинаем разбираться с первым вопросом. Имеем кучу непонятного трафика, netstat говорит про кучу соединений к ntpd. Вспоминаем про открытые порты. Есть быстрый вариант резать все входящие UDP-соединения, но это неправильный "временный" вариант, ведь некоторые соединения могут оказаться нужны. Здесь нам поможет очень хорошая кроссплатформенная утилита с названием Nmap.

Она сканирует и выводит список всех открытых портов. Имеет очень много параметров. Сканирует на наличие открытых как TCP, так и UDP-портов. Это не все ее полезные функции, есть "скрытое" сканирование, опеределение ОС и т.д. Введите nmap -h и удивитесь, сколько там всего полезного.

Запускаем сканирование:

nmap -sS -sU 217.64.141.53

Через несколько минут видим, что есть несколько открытых UDP-портов, на одном из которых работает ntpd - UDP-порт 123. Закрываем его и проблема исчезает.

Для Freebsd:

ipfw add deny udp any to me dst-port 123 via rl0

в переводе оно звучит так: "ipfw добавить запрещающее правило для udp для всех соединений ко мне для конечного порта 123 на интерфейсе rl0"

За одним закрываем остальные ненужные и "вредные" порты. Кибербезопасность даже для такого, казалось бы, малого сервера оказалась нужна. Имеем опыт и мотивацию на будущее - закрывать все дыры сразу. Уже несколькими днями позже видим статью на ХабраХабре про DDos атаку при помощи ntp сервера, и понимаем, с чем имели дело.

Ну а по поводу второго вопроса. Видимо, провайдер режет только TCP-трафик, не трогая UDP.

Итак, никогда не откладывайте настройку firewall, не поленитесь создать отдельных пользователей без прав суперпользователя, не сидите постоянно под рутом, и обязательно делайте бэкапы.

Комментарии

Аватар пользователя del

Не всегда все нужно сразу же делать по уму :) Есть масса примеров крупных проектов, где временный костыль решал проблему, а уже позже код переписывался до более идеализированного состояния.
Однако в плане безопасности, соглашусь, лучше заранее обо всем позаботиться и настроить изначально правильно.

Добавить комментарий