Кто-то продолжает атаковать мой сервер, но, к сожалению, я переключил свою ОС на FreeBSD, так как ранее использовал Debian 5.0 Lenny, и ни один из netstat
или tcpdump
команды, которые я использовал в Debian, работают во FreeBSD.
Итак, как я могу определить IP-адрес злоумышленника, чтобы заблокировать этого парня в брандмауэре?
По определению / дизайну ... DDoS не исходит с одного IP-адреса. DDoS = распределенный отказ в обслуживании. Короче говоря ... большая бот-сеть обычно используется для атаки одной цели, контролируемой одним злоумышленником, который потенциально может быть в любой точке мира. К сожалению, простая блокировка IP-адресов ботов злоумышленника не решит ваших проблем. Во многих случаях ваше «меньшее» интернет-соединение просто не может справиться с ОГРОМНЫМ объемом трафика, генерируемым такой атакой. Даже при отключении поступающих данных ваша пропускная способность по-прежнему использовалась. В таких случаях ваши головные боли проходят, когда злоумышленник прекращает атаку. С такой атакой должен бороться ваш интернет-провайдер, чтобы что-то с ней сделать.
Хотя это не тот ответ, который вы, возможно, ищете, я думаю, что то, что вы пытаетесь сделать, будет неуправляемым.
Если ваша система подключена к Интернету, она подвергнется атаке. Он может исходить из 1.2.3.4 сегодня, но если вы заблокируете этот адрес, он может быть 2.3.4.5 атаковать вас на следующий день. В итоге вы получите огромный неуправляемый список IP-адресов, которые, скорее всего, будут динамически назначаться в любом случае.
Вместо того, чтобы заносить в черный список «плохие» IP-адреса, почему бы не использовать правило по умолчанию deny all и не занести в белый список хорошие IP-адреса и службы, которые вы действительно хотите предоставить в Интернете?
Злоумышленники также часто используют поддельные адреса. Вероятно, вы ищете sockstat.
Также существует модуль ядра accf, который может помочь вам в зависимости от ваших приложений.
Я также рекомендую использовать pf. Вы можете построить что-то вроде:
table <bruteforce> persist
pass in proto tcp from any to any port ssh flags S/SA keep state \
(source-track rule, max-src-conn-rate 2/10, overload <bruteforce> flush global)
block drop in quick from <bruteforce> to any
block out quick from any to <bruteforce>
Отслеживание состояния буду твоим другом