27 February 2014

Бан по континентам

Information Security


В одно прекрасное утро я просматривал логи и задал себе ряд вопросов:

  1. А жду ли я письма из Юго-Восточной Азии? (когда смотрел логи почты)
  2. И с какого перепугу ко мне стучатся ssh брутфорсеры из Штатов?
  3. Мне надо терпеть сетевые сканеры из Австралии?
  4. Кто мне звонит из Африки? (когда разглядывал логи asterisk)
  5. С какой стати к моему 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


После этого в логах наступило умиротворение и спокойствие.
А для остального есть fail2ban.

Такого рода баны по континентам приносят дополнительную безопасность, уменьшают трафик, уменьшают размер логов
и при правильном использовании облегчают ситуацию при ддос атаке.

P.S.


Бан по континентам — лезвие обоюдоострое.
Например, забанили ARIN (Северную Америку) и если gmail забирает у вас почту с POP сервера, то после бана забирать уже не сможет и т.д.
Будьте внимательны!

P.S.2


Почему я не использую geoip?

  1. Попадал в конфузные ситуации, когда IP адрес добавился к России, а в базе geoip он еще не обновился
  2. Его надо везде устанавливать, а если серверов много, то можно запарится этим заниматься


Update 28.02.2014
Сервера, на которых я использую такого рода баны – исключительно приватные.
Мои сервера используются определенным и очень ограниченным кругом людей.
В комментариях из меня сделали роскомнадзор2, lol.
И в моем посте я не давал повода считать, что я призываю публичные сервисы или сайты блочить от остального мира, разве что в критических ситуациях, когда 7 бед – один ответ.
Tags:linuxiptables
Hubs: Information Security
+74
79.2k 448
Comments 67
Popular right now