Добрый всем день,
помогите пожалуйста разобраться в такой ситуации.
Стоит FreeBSD 8.3 x64, mpd, ipfw_nat, Abills, named, mrtg.
Судя по графикам MRTG - загрузка процессора время от времени подпрыгивает до 320%. В это же время у пользователей подскакивают пинги, сервер начинает жутко тормозить. Может продолжаться до часу или больше.
В это время в логах вижу:
Nov 25 16:39:59 internet kernel: Limiting closed port RST response from 211 to 200 packets/sec
Nov 25 16:40:00 internet kernel: Limiting icmp unreach response from 208 to 200 packets/secСудя по всему DDOS, но сообщений этих немного, 2-3 всего за час атаки могут выскочить.
Подскажите пожалуйста, что можно предпринять для защиты?
Вот конфиг ipfw:
[Oo][Pp][Ee][Nn])
<------>${fwcmd} nat 1 config log if igb1 reset same_ports
<------>${fwcmd} add 1200 nat 1 ip from 192.168.254.0/24 to not x.x.x.x via igb1
<------>${fwcmd} add 1300 nat 1 ip from any to x.x.x.x via igb1
<------>
<------>${fwcmd} add 2200 allow all from 192.168.99.0/24 to 192.168.99.100
<------>${fwcmd} add 2250 allow all from 192.168.254.0/24 to 192.168.99.100
<------>${fwcmd} add 2260 allow all from 192.168.99.100 to any<------>#Deny internet traffic from 192.168.99.0/24
<------>${fwcmd} add 2300 deny all from 192.168.99.0/24 to any
<------>${fwcmd} add 2400 deny all from any to any 25,3306
<------>${fwcmd} add 2500 allow all from y.y.y.y to x.x.x.x 20,21,22 via igb1
<------>${fwcmd} add 2600 allow all from z.z.z.z to x.x.x.x 20,21,22 via igb1
<------>${fwcmd} add 2700 deny all from any to x.x.x.x 20,21,22 via igb1
<------>${fwcmd} add 65000 pass all from any to any
<------>;;
Снял tcpdump'ом лог по RST пакетам, вроде ничего сверхъестественного. Вообще ничего не могу понять.12:29:53.356270 IP 63.218.39.90.http > my.server.51485: Flags [R], seq 1731706544, win 0, length 0
0x0000: 4500 0028 0000 4000 3806 4ecb 3fda 275a E..(..@.8.N.?.'Z
0x0010: c16a cb66 0050 c91d 6737 beb0 0000 0000 .j.f.P..g7......
0x0020: 5004 0000 cc85 0000 0000 f299 0b4a P............J
12:29:53.356359 IP 63.218.39.90.http > my.server.51486: Flags [R], seq 3937175265, win 0, length 0
0x0000: 4500 0028 0000 4000 3806 4ecb 3fda 275a E..(..@.8.N.?.'Z
0x0010: c16a cb66 0050 c91e eaac 86e1 0000 0000 .j.f.P..........
0x0020: 5004 0000 80de 0000 0000 05a1 fa2e P.............
12:29:53.356690 IP 63.218.39.90.http > my.server.51487: Flags [R], seq 1610351656, win 0, length 0
0x0000: 4500 0028 0000 4000 3806 4ecb 3fda 275a E..(..@.8.N.?.'Z
0x0010: c16a cb66 0050 c91f 5ffc 0428 0000 0000 .j.f.P.._..(....
0x0020: 5004 0000 8e47 0000 0000 b5ce 3445 P....G......4E
12:29:54.254520 IP 4.26.224.125.http > my.server.51462: Flags [R], seq 1272044877, win 0, length 0
0x0000: 4500 0028 0000 4000 3a06 cf67 041a e07d E..(..@.:..g...}
0x0010: c16a cb66 0050 c906 4bd1 dd4d 0000 0000 .j.f.P..K..M....
0x0020: 5004 0000 4c02 0000 0000 5f89 3ef1 P...L....._.>.
12:29:56.440870 IP suggest.yandex.net.http > my.server.2627: Flags [R], seq 2316756166, win 0, length 0
0x0000: 4500 0028 0000 4000 3906 5268 4d58 153f E..(..@.9.RhMX.?
0x0010: c16a cb66 0050 0a43 8a16 e4c6 0000 0000 .j.f.P.C........
0x0020: 5004 0000 4708 0000 0000 baea 9c47 P...G........G
12:29:56.802832 IP cdn-87-248-217-253.frf.llnw.net.http > my.server.51493: Flags [R], seq 4229287520, win 0, length 0
0x0000: 4500 0028 7a55 4000 3b06 06b4 57f8 d9fd E..(zU@.;...W...
0x0010: c16a cb66 0050 c925 fc15 ce60 0000 0000 .j.f.P.%...`....
0x0020: 5004 0000 5d2d 0000 0000 b462 7944 P...]-.....byD
12:30:01.997508 IP ip-176-195-237-78.bb.netbynet.ru.35673 > my.server.3715: Flags [R], seq 0, win 0, length 0
0x0000: 4500 0028 0182 0000 f906 956a b0c3 ed4e E..(.......j...N
0x0010: c16a cb66 8b59 0e83 0000 0000 0000 0000 .j.f.Y..........
0x0020: 5004 0000 eb20 0000 0000 d975 8d17 P..........u..
12:30:02.365574 IP my.server.2890 > ip94.147.odnoklassniki.ru.http: Flags [R], seq 559766594, win 0, length 0
0x0000: 4500 0028 eb74 0000 7f06 5717 c16a cb66 E..(.t....W..j.f
0x0010: d914 935e 0b4a 0050 215d 5c42 215d 5c42 ...^.J.P!]\B!]\B
0x0020: 5004 0000 afc3 0000 P.......
12:30:02.368318 IP my.server.2890 > ip94.147.odnoklassniki.ru.http: Flags [R], seq 559766594, win 0, length 0
0x0000: 4500 0028 eb75 0000 7f06 5716 c16a cb66 E..(.u....W..j.f
0x0010: d914 935e 0b4a 0050 215d 5c42 215d 5c42 ...^.J.P!]\B!]\B
0x0020: 5004 0000 afc3 0000 P.......
12:30:05.359668 IP my.server.2890 > ip94.147.odnoklassniki.ru.http: Flags [R], seq 559766594, win 0, length 0
0x0000: 4500 0028 eb8c 0000 7f06 56ff c16a cb66 E..(......V..j.f
0x0010: d914 935e 0b4a 0050 215d 5c42 215d 5c42 ...^.J.P!]\B!]\B
0x0020: 5004 0000 afc3 0000 P.......
>[оверквотинг удален]
> <------>${fwcmd} add 2250 allow all from 192.168.254.0/24 to 192.168.99.100
> <------>${fwcmd} add 2260 allow all from 192.168.99.100 to any
> <------>#Deny internet traffic from 192.168.99.0/24
> <------>${fwcmd} add 2300 deny all from 192.168.99.0/24 to any
> <------>${fwcmd} add 2400 deny all from any to any 25,3306
> <------>${fwcmd} add 2500 allow all from y.y.y.y to x.x.x.x 20,21,22 via igb1
> <------>${fwcmd} add 2600 allow all from z.z.z.z to x.x.x.x 20,21,22 via igb1
> <------>${fwcmd} add 2700 deny all from any to x.x.x.x 20,21,22 via igb1
> <------>${fwcmd} add 65000 pass all from any to any
> <------>;;Бросьте вы свои графики. Что top показывает в период проблем?
> Бросьте вы свои графики. Что top показывает в период проблем?top загрузки не показывает, потому что грузит какой-то системный процесс. И работать просто нереально, тормоза жуткие.
top -PS-S Show system processes in the display. Normally, system pro-
cesses such as the pager and the swapper are not shown. This
option makes them visible.-P Display per-cpu CPU usage statistics.
>> Бросьте вы свои графики. Что top показывает в период проблем?
> top загрузки не показывает, потому что грузит какой-то системный процесс. И работать
> просто нереально, тормоза жуткие.Да ну?
>>> Бросьте вы свои графики. Что top показывает в период проблем?
>> top загрузки не показывает, потому что грузит какой-то системный процесс. И работать
>> просто нереально, тормоза жуткие.
> Да ну?Действительно, графики показывают фонарь. Реальная загрузка без атак - 15-20% из 400%. На графиках же - 50-70%.
Грузит процесс intr. top показывает что это больше всего грузят сетевушки. Стоит двухголовая Intel ET.
Странно - траффик во время атак не растет. Вообще не понятно, почему сетевухи ложатся.
>>>> Бросьте вы свои графики. Что top показывает в период проблем?
>>> top загрузки не показывает, потому что грузит какой-то системный процесс. И работать
>>> просто нереально, тормоза жуткие.
>> Да ну?
> Действительно, графики показывают фонарь. Реальная загрузка без атак - 15-20% из 400%.
> На графиках же - 50-70%.
> Грузит процесс intr. top показывает что это больше всего грузят сетевушки. Стоит
> двухголовая Intel ET.
> Странно - траффик во время атак не растет. Вообще не понятно, почему
> сетевухи ложатся.Т.е. грузит что-то типа intr{irq17: em0}? Так вы во времена атаки скажите сколько загрузка, нафиг нам идл.
>>>>> Бросьте вы свои графики. Что top показывает в период проблем?
>>>> top загрузки не показывает, потому что грузит какой-то системный процесс. И работать
>>>> просто нереально, тормоза жуткие.
>>> Да ну?
>> Действительно, графики показывают фонарь. Реальная загрузка без атак - 15-20% из 400%.
>> На графиках же - 50-70%.
>> Грузит процесс intr. top показывает что это больше всего грузят сетевушки. Стоит
>> двухголовая Intel ET.
>> Странно - траффик во время атак не растет. Вообще не понятно, почему
>> сетевухи ложатся.Прогоните тестовый трафик через сетевухи. Может проблема с железом?
все просто, нужны выводы командtop -SCH
systat -ifstat 1
netstat -w 1 -I igb0
netstat -w 1 -I igb1в периоды нормального поведения системы и в периоды тормозов, нетстат лучше делать параллельно по обоим картам.
> все просто, нужны выводы команд
> top -SCH
> systat -ifstat 1
> netstat -w 1 -I igb0
> netstat -w 1 -I igb1
> в периоды нормального поведения системы и в периоды тормозов, нетстат лучше делать
> параллельно по обоим картам.Вчера днем добавил в sysctl.conf следующее:
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.inet.icmp.drop_redirect=1
net.inet.icmp.maskrepl=0
net.inet.icmp.icmplim=100
net.icmp.bmcastecho=0Скачки стали появляться реже и очень быстрые, по 5-10мин. И небольшие (загрузка до 120-160% всего). Может совпадение конечно.
Пока не могу поймать момент атаки, сегодня буду следить. Как только будет - сразу все выложу.
В любом случае нужно посмотреть на выводы в пиковых нагрузках. Что еще есть в sysctl нештатного?
>Что еще есть в sysctl нештатного?Больше ничего.
а траф большой пролетает? PPS какой? что в период лагов с трафом и PPS-ом?
> а траф большой пролетает? PPS какой? что в период лагов с трафом
> и PPS-ом?Траф небольшой, в пиках до 120Мбит/с. Во время лагов трафик не растет. В основном лаги днем когда трафик 20-25Мбит/с.
Пока не могу снять логи, т.к. сегодня за весь день не было ни одного лага.
Еще вопросы-уточнения на что нужно посмотреть, при глюках траф не проседает (обратить внимание нужно будет если не заметили)? Внешка приходит через свич(и) или напрямик во внешнюю карту? Карта смотрящая внутрь не атакуется каким-либо штормом сетевым (посмотреть сетку в период лагов на генерацию бродкаст\мультикаст пакетов или вернее на всплески, в принципе на любом свиче достаточно будет)? На интерфейсе lo0 адского всплеска нет? Ну и (хоть и траф не вилик для этих карт) нужно подкрутить сисктл на предмет увеличений буферов и прочей ерунды. Мне почему-то кажется что проблема в чем-то простом и не извне..
> Еще вопросы-уточнения на что нужно посмотреть, при глюках траф не проседает (обратить
> внимание нужно будет если не заметили)? Внешка приходит через свич(и) или
> напрямик во внешнюю карту?При глюках траф немного проседает. Сегодня пропустил большой глюк - почти 3 часа длился. Но пользователи его практически не почувствовали (загрузка проца была не максимальная) - поэтому я его тоже не заметил, только сейчас на графике увидел.
На графике - во время глюка трафик просел и держался ровно на 60Мбит/с все 3 часа (практически ровная полоса на графике). Потом начал рости - как отпустило.
Внешка приходит напрямую, заходит оптика в медик и с него в карту.
> При глюках траф немного проседает.С вероятностью 90% проблема в локалке, кого-то штормит внутри - вирусня, злой умысел, железка глючит итд.
Обратите внимание на всплески бродкаста\мультикаста снутрей, на любом свиче который это умеет показывать. Ну и нужно конечно же отловить этот период.
>> При глюках траф немного проседает.
> С вероятностью 90% проблема в локалке, кого-то штормит внутри - вирусня, злой
> умысел, железка глючит итд.
> Обратите внимание на всплески бродкаста\мультикаста снутрей, на любом свиче который это
> умеет показывать. Ну и нужно конечно же отловить этот период.Да, график загрузки внутреннего интерфейса показал, что проблема приходит с локалки. Траффик небольшой, но значительно больше чем внешний, причем симметричный: Download/Upload одинаковые.
L2 в сети пока нет (строилось до меня). Все на оптике (тупарики + медики) - частный сектор.
Хочу поставить перед сервером L2 - и VLAN'ами завести в сервер основные ветки хотя-бы (человек по 30 на ветке). Чтобы мультикаст не гулял по всей сети, а только внутри ветки.
И еще хочу убрать IP на внутреннем интерфейсе сервера.Поможет ли такое решение и чем еще можно прикрыть сервер?
Поймал атаку, top -SCHPID USERNAME PRI NICE SIZE RES STATE C TIME CPU COMMAND
11 root 171 ki31 0K 64K CPU3 3 365:27 93.26% idle{idle: cpu3}
11 root 171 ki31 0K 64K CPU2 2 364:43 93.07% idle{idle: cpu2}
11 root 171 ki31 0K 64K RUN 0 357:23 90.48% idle{idle: cpu0}
11 root 171 ki31 0K 64K CPU1 1 367:39 90.19% idle{idle: cpu1}
0 root -68 0 0K 256K - 1 4:17 10.99% kernel{igb0 que}
0 root -68 0 0K 256K - 1 5:21 10.69% kernel{igb0 que}
0 root -68 0 0K 256K - 3 3:46 10.06% kernel{igb0 que}kernel{igb0 que} - прыгало до 30% (не успел скопировать). Обычно 2-3%.
В остальных выводах - ничего сверхъестественного нет (как и без атаки).
> Поймал атаку, top -SCH
> kernel{igb0 que} - прыгало до 30% (не успел скопировать). Обычно 2-3%.
> В остальных выводах - ничего сверхъестественного нет (как и без атаки).только один поток до 30% скакал или все 8 до 30?
в дмесге ченьть появляется в периоды флуда про icmp?
dmesg и dmesg -a
>> Поймал атаку, top -SCH
>> kernel{igb0 que} - прыгало до 30% (не успел скопировать). Обычно 2-3%.
>> В остальных выводах - ничего сверхъестественного нет (как и без атаки).
> только один поток до 30% скакал или все 8 до 30?
> в дмесге ченьть появляется в периоды флуда про icmp?
> dmesg и dmesg -aВсе 4 скакали. После правки sysctl ничего не появляется в dmesg.
> L2 в сети пока нет (строилось до меня). Все на оптике (тупарики
> + медики) - частный сектор.
> Хочу поставить перед сервером L2 - и VLAN'ами завести в сервер основные
> ветки хотя-бы (человек по 30 на ветке). Чтобы мультикаст не гулял
> по всей сети, а только внутри ветки.
> Поможет ли такое решение и чем еще можно прикрыть сервер?нет, не поможет, как я и предполагал - проблема внутри сети, вероятнее всего вызвана вируснёй клиентов, глюками железа (свичи\юзеры), либо кто-то хрюкером себя возомнил. В данной ситуации проблему можно решить детектированием аплинков населенных сегментов откуда идет флуд, выяснить что за флуд (думаю это бродкаст\мультикаст) и собственно устранять причину. Защититься от подобного рода проблем в будущем можно при помощи контроля трафика на порту - задаются пороги и длительность, если идет превышение то блокировать порт на какое-то время и так пока порт не станет чистым. в принципе, из недорогих свичей, такое умеют длинки.
> И еще хочу убрать IP на внутреннем интерфейсе сервера.
а как же дефолтный гетвей? в сетке из 300-500-900 рыл особо мудрить не стоит, лучше свичами управляемыми обзавестись и расставить их так, чтоб хотя бы 1 порт умного свича смотрел не более чем на 1 тупой свич, а до серверов доходил трафик только через управляемый свич, на котором порезан сетевой мусор и разного рода флуд.
> Защититься от подобного рода проблем в будущем
> можно при помощи контроля трафика на порту - задаются пороги и
> длительность, если идет превышение то блокировать порт на какое-то время и
> так пока порт не станет чистым. в принципе, из недорогих свичей,
> такое умеют длинки.Нашел конфиг для 3200 ДЛинков, как с помощью ACL отфильтровать весь L2 траффик на клиентских портах, кроме PPPoE пакетов.
Завтра перед сервером кину DGS-3200-10, хотя-бы районы разделю. Отфильтрую на нем все кроме PPPoE и включу Storm Control. Надеюсь поможет. Если один район будет лежать - не так страшно, как вся сеть. Потом уже буду искать хакера.P.S. во время скачков на сервере сеть не лежит - между компами пинги не ростут, скорость особо не падает. Похоже на преднамеренную атаку или вирус, чем на флудящий свич.
Уже 3 дня без атак вообще. Всетаки L2 свич хорошая вещь.
> Уже 3 дня без атак вообще. Всетаки L2 свич хорошая вещь.может быть всё дело в том что агрегирующий свич просто не вывозил траф? за тупыми свичами такое в свое время было замечено, когда в какойньть длинк типа 1016 врубаешь пару-тройку населенных сегментов то в период пиковых нагрузок он просто начинал адски тупить.
> Нашел конфиг для 3200 ДЛинков, как с помощью ACL отфильтровать весь L2
> траффик на клиентских портах, кроме PPPoE пакетов.
> Завтра перед сервером кину DGS-3200-10, хотя-бы районы разделю. Отфильтрую на нем все
> кроме PPPoE и включу Storm Control. Надеюсь поможет. Если один район
> будет лежать - не так страшно, как вся сеть. Потом уже
> буду искать хакера.
> P.S. во время скачков на сервере сеть не лежит - между компами
> пинги не ростут, скорость особо не падает. Похоже на преднамеренную атаку
> или вирус, чем на флудящий свич.а у вас всё через пппое ходит? и как на счет всяких DHCP к примеру? Резать все не нужно, нужно порезать то что флудит - нетбиос к примеру, порты дебильного софта - как например лет 5-10 назад вайпрес-чат был итд.
> а у вас всё через пппое ходит? и как на счет всяких
> DHCP к примеру? Резать все не нужно, нужно порезать то что
> флудит - нетбиос к примеру, порты дебильного софта - как например
> лет 5-10 назад вайпрес-чат был итд.В сети только PPPoE, поэтому решил резать все. Локалка не нужна, т.к. тарифы и так 30-50Мбит/с. Да и не хочется чтобы нашу сеть использовали как транспорт (бесплатный).
Вобщем проблема решена, атак больше замечено не было. Флудящий район тоже уже найден, там установили L2 на доступ и тоже порезали все кроме PPPoE.
Так что уже все хорошо, спасибо всем огромное за советы.