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



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

    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 бед – один ответ.
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 67

      +13
      Решение интересное, но зависит от конкретной ситуации. К примеру, по поводу:
      И с какого перепугу ко мне стучаться ssh брутфорсеры из Штатов?


      Я по роду деятельности могу находиться в разных уголках света. И в любом из них мне может потребоваться безопасный доступ к своему серверу по SSH. Этот вопрос решается применением port knocking, срабатывание которого добавляет правило в iptables на разрешение доступа с этого IP. А в 12 ночи карета превращается в тыкву правило удаляется. Дабы не загромождать список правил всеми местами где побывал. да и вообще, для пущей безопасности.

      Хотя, я так полагаю, мой подход вполне можно подружить с Вашим, и сосуществовать они должны оба мирно
        +1
        Спасибо за комментарий!
        port knocking — штука отличная, только я вот лентяй.
        И конечно, можем дружить :)
        Просто правила ssh и port knocking — выносим наверх iptables, а потом баним по континентам все остальное.

        • UFO just landed and posted this here
          +1
          Про Port knocking статья была отличная.
          +56
          А потом скажут, что железный занавес начали поднимать сами граждане, государство лишь поддержало их инициативу.
            +18
            Прочитав заголовок, решил, что это инициатива Роскомнадзора.
              +5
              Опускать. В том смысле, в котором Вы хотели использовать это понятие, занавес опускают :-)
                +2
                Это, думаю, профессиональное. Сервера то «поднимают» )
              • UFO just landed and posted this here
              +8
              Рекомендую (да и не только я) IPSet для большого количества правил. Работать будет быстрее.
                0
                Спасибо за коммент.
                А на сколько это оправданно в случае бана по /8?
                Там же правил iptables с гулькин нос получается.
                  +1
                  В вашем случае, наверное, проще действительно использовать iptables, т.к. 63 правила — ничто, но когда речь идет, например, о 500 правилах, то тут лучше сразу IPSet использовать.
                    0
                    А там написано, что оно только для 2.4 и 2.6? 3+ пролетают или тоже поддерживаются?
                      0
                      Поддерживается. Все современные ядра поддерживаются. Это официальный модуль, в ядре.
                        0
                        Кстати, бенчмарки производительности по сравнению с iptables имеются? Интересно было бы посмотреть.
                      0
                      63 правила только для фильтрации географической. А ведь однозначно есть ещё какие-нибудь.

                      Хотя, при INPUT трафике в личных целях особо разницы нет, это ж не FORWARD на провайдерском маршрутизаторе :)
                  +7
                  Похоже, это решение каждый изобретает самостоятельно и заново :)

                  Когда на Флибусту шел очередной DDOS, заклинание «щит третьего мира» было всегда первой мерой противодействия. Только в списке еще + Ближний Восток (Иран, Аравия, Ирак, Палестина...). Количество ботов сбивало процентов на 95.
                    +1
                    +28
                    Очень плохой метод. Очевидные примеры из недавнего, крупная Китайская компания офису в США назначила IP из своего APNIC диапазона, немецкий провайдер выдает IP из RIPE блока клиентам в Африке. Тот же гугл практически везде по миру пользуется блоком из ARIN диапазона независимо где находится датацентр. Что делать в случае CDN и anycast случаев — вообще не понятно. Про биржи IP уже даже на хабре писали. Вобщем — не делайте так.
                      +13
                      Интересно, что так можно ненароком забанить нужные регионы.

                      Мы делали подобный бан на периметре нашей сети. И вот при бане Америки ушла в бан 192.0.0.0/8 подсеть. Посмотрели в IANA — да, есть такая проблема. Разрешили из частной сети ходить куда нужно. Но возникла проблемы с удаленной компанией. Оказалось что у ребят адрес из диапазона 192.162.0.0/16 который передали RIPE и кусок из него оказался в Украине.

                      Так что с данной схемой поосторожнее. Делайте так только если у вас просто нет другого выхода, или если вы знаете на 100% что из этого выйдет.
                        +11
                        Расскажу вам один интересный случай из своей практики. Один достаточно известный русский хостер забанил внешний трафик к своему DNS. Сервера компании, в которой я прежде работал, располагались в Германии. В результате ряд достаточно крупных клиентов просто не получил важную информацию. Это нарушило работу нескольких филиалов компании, компания понесла убытки. Боритесь с роботами, а не блокируйте вслепую.
                          +6
                          Имхо, результат не стоит потраченного времени

                          Сервисы как были открыты, так и остаются, пусть для меньшей части интернета, но все же огромной если считать хосты.
                          Вероятность взлома меньше, да, но не кардинально на порядки, а всего лишь в разы.
                            +2
                            Ну, если результат был получен за 10-15 минут, принёс в жизнь немного фана, ничем особо не мешает — то почему бы и нет?
                              0
                              Акцент в статье на то, что:
                              После этого в логах наступило умиротворение и спокойствие.


                              Т.е. человек хотел добиться уменьшения записи в логах, чтоб глаза не отвелкало от действительно важных вещей. И, в какой-то степени, малой кровью ему это удалось. Он нигде не пишет, что этот мини скрипт делает его unhackable на 100%
                            • UFO just landed and posted this here
                                –3
                                Если есть желание открыть для всего мира 80-ый порт и вебсервер.
                                То откройте, никто не мешает.

                                  +1
                                  Назовите пожалуйста такую страну!
                                  • UFO just landed and posted this here
                                      0
                                      А как же вы из России-то его оплачиваете?
                                      • UFO just landed and posted this here
                                          +1
                                          Эээ… Вы раз в год туда ездите для оплаты? :)
                                          • UFO just landed and posted this here
                                            • UFO just landed and posted this here
                                    +4
                                    Открыл статью и первая мысль — " Неужели правительство России забанило весь мир"
                                    прочитал и отлегло.
                                    У нас все не спокойно, но хаотичное создание законов о интернете в России меня просто поражает.
                                    А таки все гениальное просто.
                                      +11
                                      Попробовал из Англии разместить объявление на Авито, старшее поколение попросило. Ничего не вышло именно из-за IP-адреса, написал поддержке, та сделала строгое каменное лицо и сказала «не положено».
                                      Если уж и дискриминировать по географическому принципу, то лучше капчу добавьте, а не просто блокируйте.
                                        0
                                        Использовал подобное решение для университетского хостинга веб-страничек, ограничив доступ к ftp-серверу для заливки файлов сетями одного города. Работало :) Лог fail2ban был пуст.
                                          +1
                                          Главное чтоб IANA ваш метод не начала использовать. )
                                            +15
                                            Как-то это противоречит принципам интернета и сетевой нейтральности. Про ssh я вообще не понимаю проблемы, сделайте аутентификацию по ключам и все боты будут с носом. В от DDOS вы так всё равно не защититесь.
                                            • UFO just landed and posted this here
                                              • UFO just landed and posted this here
                                                • UFO just landed and posted this here
                                              +5
                                              Тим Бернес-Ли вряд ли одобрил бы подобные методы.
                                                +13
                                                Понадобилось одному нашему клиенту как-то отправить письмо в одну европейскую компанию. А там админ оказался такой же придурок и забанил просто все русские адреса, типа, «там одни спаммеры». И всё, не смогли отправить почту с корпоративного сервера, который расположен в датацентре в Москве и естественно оказался забанен.

                                                Видите ли, какое дело… Вы всех американцев объявили брутфорсерами, а всех жителей Юго-Восточной Азии — спаммерами. А это даже не ошибка… Это ещё хуже, чем использовать спамхаус.
                                                  0
                                                  Один главный инженер у провайдера как-то заявил, что почта у него принимается только с .ru
                                                  Так и не смог ему с gmail.com отправить письмо.
                                                    0
                                                    Вот я поэтому думаю, что надо законодательно запретить такие статьи, как эта. То есть, запретить запрещать.
                                                  0
                                                  А почему африка на картинке чорная?:)
                                                  0
                                                  Мне кажется наиболее целесообразно использовать активную IDS
                                                    +4
                                                    Очень давно была такая история: админ ICQ не разбираясь забанил одну /8 сеть, и так у половины наших провайдеров перестала работать аська.
                                                      +5
                                                      Плохие вы даете советы, никуда не годные. В то время как почти каждое государство подумывает, как бы ему отгородить себе кусочек собственного интернета, вы огораживаетесь сами, добровольно и с песней ;)
                                                        +1
                                                        Тот самый скрипт который будет сорить между собой людей…
                                                        Пример: Россия «Dont like» Украину и наоборот…
                                                        Оружие в бой!

                                                        Я немножко закритикую вас с вашего разрешения и с уважением, просто мысли в слух…
                                                        А вдруг кто то пользуеться анонимайзером или просто хочет из АОЕ зайти к вам на сайт во время курорта… Сами ограничиваете свой контингент!
                                                          0
                                                          У автора скорее всего не сайт, а сервер почты и sip поэтому веб не пострадает.
                                                          0
                                                          Хех… У нас на форуме наблюдалась не раз большая рассылка спама с адресов, которые, судя по whois, были закреплены за одним из штатовских дата-центров. Когда начал разгребать логи, пришёл к выводу, что адреса, принадлежащие дата-центрам, надо пускать по ограниченному белому списку, остальные банить: это был не единственный дата-центр, на котором серверы рассылают спам.
                                                            0
                                                            Для форума не лучший вариант т.к. в дата-центре могут купить VPS и заходить через прокси.
                                                              0
                                                              Думаю, ещё и от форума зависит. У нас форум посещают, как правило, по рабочим делам, и анонимизацию нормальные посетители не используют. В любом случае блокируем только подсети, с которых шёл спам (адреса видны в логах). Часто находили по нескольку серверов в подсети. Если считать чисто по IP-адресам, то их мой самописный антиспам-автобан для vBulletin за примерно два месяца своей работы набрал и заблочил с помощью iptables порядка 4000 адресов, некоторые из которых сильно выделяются из массы остальных объёмами заблокированного трафика. В основном эти выделяющиеся адреса были именно в пространстве дата-центров. На одном из серверов-спамеров удалось выявить винду (предположительно Server 2012). Может, взломан был.
                                                            +3
                                                            Я пошёл другим путём. Меня доставали только ssh-сканеры. В один прекрасный день, я собрал за сутки все IP с которых сканили, проанализировал двухстрочным скриптом об geoip и обнаружил, что почти все сканеры из Китая. Нормализовал сетки и получил всего несколько сеток с которых действительно идёт активная деятельность:
                                                            правила IPTABLES
                                                            -A BLCHINA -s 58.192.0.0/11 -j DROP
                                                            -A BLCHINA -s 60.160.0.0/11 -j DROP
                                                            -A BLCHINA -s 61.128.0.0/10 -j DROP
                                                            -A BLCHINA -s 115.224.0.0/12 -j DROP
                                                            -A BLCHINA -s 117.21.0.0/16 -j DROP
                                                            -A BLCHINA -s 117.40.0.0/14 -j DROP
                                                            -A BLCHINA -s 189.128.0.0/9 -j DROP
                                                            -A BLCHINA -s 218.0.0.0/11 -j DROP
                                                            -A BLCHINA -s 222.168.0.0/13 -j DROP
                                                            -A BLCHINA -s 222.176.0.0/12 -j DROP
                                                            -A BLCHINA -s 222.192.0.0/11 -j DROP
                                                            После этого тривиального действия сканеров стало приходить в десятки раз меньше и на 15-20 сканирований в сутки я забиваю, их быстро режет port knocking.
                                                              +1
                                                              То есть если я пользователь OpenVPN то я не человек?
                                                              • UFO just landed and posted this here
                                                                  +2
                                                                  Автор явно не имел в виду публичный сервис. Если круг людей которые стучатся в SSH и забирают почту с сервера никак не могут оказаться на другом континенте, то почему нет?
                                                                  +2
                                                                  С чисто технической точки зрения данный вопрос лучше решать через xtables и ipset.
                                                                  Пример как делать andrey.org/iptables-geoip-centos/

                                                                  А проблему брута ssh решают denyhosts / fail2ban, без всяких банов сетей
                                                                    +1
                                                                    fail2ban это анализ логов, а кому будет приятно вычищать постоянно пополняемые логи из-за одних и тех же парней? Затем и банят подсети регионов/дата-центров/учебных учреждений, чтобы не засоряло.
                                                                    0
                                                                    а теперь другой вопрос, как теперь можно удалить страны например Северную америку из правил iptables?))
                                                                      0
                                                                      Как вариант с помощью geoip добавить США в список разрешенных стран и вынести это правило наверх iptables.

                                                                      И кстати, в данной статье указан скрипт.
                                                                      Северной Америки там и так нет, по умолчанию.

                                                                      BAN_CONT='AFRINIC|APNIC|LACNIC'

                                                                      Здесь банится только Африка, Азия-Океания и Латинская Америка.

                                                                      Если решите забанить Северную Америку, то добавьте |ARIN

                                                                        0
                                                                        так вот и добавил с горяча)))
                                                                        а кстати про то что можно добавить в список разрешённых и наверх правил добавить не подумал,
                                                                        спасибо
                                                                          0
                                                                          написал скрипт unban.sh чтоб разблокировать Северную Америку
                                                                          #!/bin/sh

                                                                          #
                                                                          BAN_CONT='ARIN'

                                                                          #

                                                                          list=`curl -s 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 -D INPUT -s $ip

                                                                          done

                                                                          только перед выполнением делаем следующеее
                                                                          service iptables stop

                                                                      Only users with full accounts can post comments. Log in, please.