![](https://habrastorage.org/getpro/habr/post_images/74e/ffb/4e1/74effb4e1ed5a2941ebacb099437b4bf.png)
В одно прекрасное утро я просматривал логи и задал себе ряд вопросов:
- А жду ли я письма из Юго-Восточной Азии? (когда смотрел логи почты)
- И с какого перепугу ко мне стучатся ssh брутфорсеры из Штатов?
- Мне надо терпеть сетевые сканеры из Австралии?
- Кто мне звонит из Африки? (когда разглядывал логи asterisk)
- С какой стати к моему POP-серверу обращаются из Латинской Америки?
Почему бы не забанить по континентам? Оставив только нужный континент(ы)?
Получился вот такой маленький скрипт, который банит полмира:
#!/bin/sh
# AFRINIC - Африка
# APNIC - Азия, Океания и Австралия
# ARIN - Северная Америка
# LACNIC - Центральная и Южная Америка
# RIPE NCC - Европпа и Ближний Восток
# Подставьте континенты, которые надо забанить с разделителем |
BAN_CONT='AFRINIC|APNIC|LACNIC'
# Получаем список Ipv4 адресов с официального сайта iana.org и приводим к каноническому виду
list=`curl -s http://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.csv \
| egrep $BAN_CONT \
| cut -d "," -f 1 \
| sed 's!/8!.0.0.0/8!g' `
# Баним
for ip in $list; do
iptables -I INPUT -s $ip -j DROP # Здесь можно и порт указать и протокол. Все по вкусу.
done
Результат. Список забаненых сетей
0 0 DROP all — * * 223.0.0.0/8 0.0.0.0/0
2 80 DROP all — * * 222.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 221.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 220.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 219.0.0.0/8 0.0.0.0/0
1 40 DROP all — * * 218.0.0.0/8 0.0.0.0/0
2 120 DROP all — * * 211.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 210.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 203.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 202.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 201.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 200.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 197.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 196.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 191.0.0.0/8 0.0.0.0/0
2 150 DROP all — * * 190.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 189.0.0.0/8 0.0.0.0/0
3 144 DROP all — * * 187.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 186.0.0.0/8 0.0.0.0/0
1 68 DROP all — * * 183.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 182.0.0.0/8 0.0.0.0/0
3 180 DROP all — * * 181.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 180.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 179.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 177.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 175.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 171.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 163.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 154.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 153.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 150.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 133.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 126.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 125.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 124.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 123.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 122.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 121.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 120.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 119.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 118.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 117.0.0.0/8 0.0.0.0/0
1 40 DROP all — * * 116.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 115.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 114.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 113.0.0.0/8 0.0.0.0/0
3 180 DROP all — * * 112.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 111.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 110.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 106.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 105.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 103.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 102.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 101.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 49.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 48.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 35.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 34.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 33.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 30.0.0.0/8 0.0.0.0/0
36 2160 DROP all — * * 23.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 12.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 1.0.0.0/8 0.0.0.0/0
2 80 DROP all — * * 222.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 221.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 220.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 219.0.0.0/8 0.0.0.0/0
1 40 DROP all — * * 218.0.0.0/8 0.0.0.0/0
2 120 DROP all — * * 211.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 210.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 203.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 202.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 201.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 200.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 197.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 196.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 191.0.0.0/8 0.0.0.0/0
2 150 DROP all — * * 190.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 189.0.0.0/8 0.0.0.0/0
3 144 DROP all — * * 187.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 186.0.0.0/8 0.0.0.0/0
1 68 DROP all — * * 183.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 182.0.0.0/8 0.0.0.0/0
3 180 DROP all — * * 181.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 180.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 179.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 177.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 175.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 171.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 163.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 154.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 153.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 150.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 133.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 126.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 125.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 124.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 123.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 122.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 121.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 120.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 119.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 118.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 117.0.0.0/8 0.0.0.0/0
1 40 DROP all — * * 116.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 115.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 114.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 113.0.0.0/8 0.0.0.0/0
3 180 DROP all — * * 112.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 111.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 110.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 106.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 105.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 103.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 102.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 101.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 49.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 48.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 35.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 34.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 33.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 30.0.0.0/8 0.0.0.0/0
36 2160 DROP all — * * 23.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 12.0.0.0/8 0.0.0.0/0
0 0 DROP all — * * 1.0.0.0/8 0.0.0.0/0
После этого в логах наступило умиротворение и спокойствие.
А для остального есть fail2ban.
Такого рода баны по континентам приносят дополнительную безопасность, уменьшают трафик, уменьшают размер логов
и при правильном использовании облегчают ситуацию при ддос атаке.
P.S.
Бан по континентам — лезвие обоюдоострое.
Например, забанили ARIN (Северную Америку) и если gmail забирает у вас почту с POP сервера, то после бана забирать уже не сможет и т.д.
Будьте внимательны!
P.S.2
Почему я не использую geoip?
- Попадал в конфузные ситуации, когда IP адрес добавился к России, а в базе geoip он еще не обновился
- Его надо везде устанавливать, а если серверов много, то можно запарится этим заниматься
Update 28.02.2014
Сервера, на которых я использую такого рода баны – исключительно приватные.
Мои сервера используются определенным и очень ограниченным кругом людей.
В комментариях из меня сделали роскомнадзор2, lol.
И в моем посте я не давал повода считать, что я призываю публичные сервисы или сайты блочить от остального мира, разве что в критических ситуациях, когда 7 бед – один ответ.