URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 93973
[ Назад ]

Исходное сообщение
"Bind. Drop вместо refuse"

Отправлено Fullmetal8ender , 30-Окт-12 16:05 
Здравствуйте!
Подскажите, можно ли настроить bind игнорировать запросы?
Сейчас использую allow-query { mynet; }
но на все остальные запросы он отвечает REFUSE. А хотелось бы что бы он их игнорировал.
Для этой цели подходит blackhole, но если загнать туда все адреса, например !mynet - то он перестанет работать вобще, тк не будет посылать никаких запросов никому, кто не входит в mynet.

Содержание

Сообщения в этом обсуждении
"Bind. Drop вместо refuse"
Отправлено Pahanivo , 30-Окт-12 17:48 
> Здравствуйте!
> Подскажите, можно ли настроить bind игнорировать запросы?
> Сейчас использую allow-query { mynet; }
> но на все остальные запросы он отвечает REFUSE. А хотелось бы что
> бы он их игнорировал.
> Для этой цели подходит blackhole, но если загнать туда все адреса, например
> !mynet - то он перестанет работать вобще, тк не будет посылать
> никаких запросов никому, кто не входит в mynet.

blackhole Specifies a list of addresses that the server will not accept queries from or use to resolve a
query. Queries from these addresses will not be responded to. The default is none.

ну собстна все верно :)
чем плох ответ refuse?

попробуй прописать форвадерами днс провайдера, включи форвард онли, исключи форвардеров из блекхоул

есть еще и фаревол


"Bind. Drop вместо refuse"
Отправлено Fullmetal8ender , 31-Окт-12 08:30 
Спасибо за ответ, но этот вариант не совсем подходит.
ДНС сервер отвечает за несколько зон, поэтому он должен отвечать на запросы извне.
Для каждой зоны прописано allow-query { any; };
А в опциях указано allow-query {  mynet; }
Таким образом он отвечает на запросы для зон, за которые отвечает сам, и на рекурсивные запросы с моих сетей. Всем остальным он отвечает refuse.
Но я вижу что часто к серверу обращаются с разными рекурсивными запросами. Видимо тк он долгое время был открыт кто-то им воспользовался. Еще периодически подвергаюсь атакам типа запрос зоны ANY/ripe.net с дикой частотой.
Сейчас блокирую такие запросы фаерволом. Можно настроить fail2ban, но мне кажется было бы проще всего что бы он дропал такие запросы.
Ответ refuse по моему плох тем, что судя по логам его игнорируют и продолжают слать запросы, а сервер на ответ тратит свои ресурсы.


"Bind. Drop вместо refuse"
Отправлено Pahanivo , 31-Окт-12 09:02 
> Спасибо за ответ, но этот вариант не совсем подходит.
> ДНС сервер отвечает за несколько зон, поэтому он должен отвечать на запросы
> извне.

т.е. ты пытаешься одновременно решить две абсолютно противоположные задачи 1) держать авторитативный сервер (т.е. он должен быть доступен для всех) 2) сделать blackhole (закрыть для всех)
пора бы уже это понять

> Для каждой зоны прописано allow-query { any; };
> А в опциях указано allow-query {  mynet; }
> Таким образом он отвечает на запросы для зон, за которые отвечает сам,
> и на рекурсивные запросы с моих сетей. Всем остальным он отвечает
> refuse.

ну дак а blackhole это глобальный параметр, и как я понимаю твои allow-query не работают

> Но я вижу что часто к серверу обращаются с разными рекурсивными запросами.
> Видимо тк он долгое время был открыт кто-то им воспользовался. Еще
> периодически подвергаюсь атакам типа запрос зоны ANY/ripe.net с дикой частотой.
> Сейчас блокирую такие запросы фаерволом. Можно настроить fail2ban, но мне кажется было
> бы проще всего что бы он дропал такие запросы.
> Ответ refuse по моему плох тем, что судя по логам его игнорируют
> и продолжают слать запросы, а сервер на ответ тратит свои ресурсы.

вариант первый - рефузить и забыть (ripe.net - это не тебя скорее ддосят а райпы, ты как усилитель используешься)
вариант второй поглумится - настраиваешь 2 view
1) для своих клиентов: нормальный для резолвинга + свои авторитативные зоны
2) для внешного мира: свои авторитативные зоны + делаешь заглушки на все широкоиспользуемые домены и отдаешь на любые запросы адресок какого нибудь порносайта.
вариант третий - лимитить пакеты на 53 UDP фареволом (bind не помню умеет сам лимитить запросы или нет)


"Bind. Drop вместо refuse"
Отправлено PavelR , 31-Окт-12 09:08 
>[оверквотинг удален]
>> Ответ refuse по моему плох тем, что судя по логам его игнорируют
>> и продолжают слать запросы, а сервер на ответ тратит свои ресурсы.
> вариант первый - рефузить и забыть (ripe.net - это не тебя скорее
> ддосят а райпы, ты как усилитель используешься)
> вариант второй поглумится - настраиваешь 2 view
> 1) для своих клиентов: нормальный для резолвинга + свои авторитативные зоны
> 2) для внешного мира: свои авторитативные зоны + делаешь заглушки на все
> широкоиспользуемые домены и отдаешь на любые запросы адресок какого нибудь порносайта.
> вариант третий - лимитить пакеты на 53 UDP фареволом (bind не помню
> умеет сам лимитить запросы или нет)

вариант четвертый - сменить IP и хостнейм сервера, произвести коррекцию делегирования размещенных на сервере зон.

вариант пятый - сменить bind на сервер, который умеет требуемую функцию


"Bind. Drop вместо refuse"
Отправлено Pahanivo , 31-Окт-12 09:13 
>[оверквотинг удален]
>> вариант первый - рефузить и забыть (ripe.net - это не тебя скорее
>> ддосят а райпы, ты как усилитель используешься)
>> вариант второй поглумится - настраиваешь 2 view
>> 1) для своих клиентов: нормальный для резолвинга + свои авторитативные зоны
>> 2) для внешного мира: свои авторитативные зоны + делаешь заглушки на все
>> широкоиспользуемые домены и отдаешь на любые запросы адресок какого нибудь порносайта.
>> вариант третий - лимитить пакеты на 53 UDP фареволом (bind не помню
>> умеет сам лимитить запросы или нет)
> вариант четвертый - сменить IP и хостнейм сервера, произвести коррекцию делегирования размещенных
> на сервере зон.

смысл - ботнеты которые ддосят через днс-усилители высканять хост через день, а рекурсивыные халявщики и так быстро поймут что халява кончилась ))))



"Bind. Drop вместо refuse"
Отправлено PavelR , 31-Окт-12 09:16 
>[оверквотинг удален]
>>> вариант второй поглумится - настраиваешь 2 view
>>> 1) для своих клиентов: нормальный для резолвинга + свои авторитативные зоны
>>> 2) для внешного мира: свои авторитативные зоны + делаешь заглушки на все
>>> широкоиспользуемые домены и отдаешь на любые запросы адресок какого нибудь порносайта.
>>> вариант третий - лимитить пакеты на 53 UDP фареволом (bind не помню
>>> умеет сам лимитить запросы или нет)
>> вариант четвертый - сменить IP и хостнейм сервера, произвести коррекцию делегирования размещенных
>> на сервере зон.
> смысл - ботнеты которые ддосят через днс-усилители высканять хост через день, а
> рекурсивыные халявщики и так быстро поймут что халява кончилась ))))

ну попробуют высканить этот хост - так смысл? хост то уже не работает как усилитель.


"Bind. Drop вместо refuse"
Отправлено PavelR , 07-Авг-20 11:29 
>> смысл - ботнеты которые ддосят через днс-усилители высканять хост через день, а
>> рекурсивыные халявщики и так быстро поймут что халява кончилась ))))
> ну попробуют высканить этот хост - так смысл? хост то уже не
> работает как усилитель.

В общем после устранения проблемы ботнет продолжает слать поддельные пакеты, хотя сервер отвечает пакетами такого же размера, как и полученные.

Меня эт маленько заколебало, поэтому патч:

https://superuser.com/questions/1565547/have-bind9-drop-non-...
https://serverfault.com/questions/438515/bind-blackhole-for-...


```
--- bind9-9.9.5.dfsg/bin/named/query.c.orig        Thu Aug  6 21:56:57 2020
+++ bind9-9.9.5.dfsg/bin/named/query.c     Thu Aug  6 22:08:15 2020
@@ -1038,7 +1038,7 @@
                                         sizeof(msg));
                        ns_client_log(client, DNS_LOGCATEGORY_SECURITY,
                                      NS_LOGMODULE_QUERY, ISC_LOG_INFO,
-                                     "%s denied", msg);
+                                     "%s dropped", msg);
                }
                /*
                 * We've now evaluated the view's query ACL, and
@@ -5809,8 +5809,9 @@
                        } else
                                inc_stats(client, dns_nsstatscounter_authrej);
                        if (!PARTIALANSWER(client))
-                               QUERY_ERROR(DNS_R_REFUSED);
-               } else
+               //              QUERY_ERROR(DNS_R_REFUSED);
+                               QUERY_ERROR(DNS_R_DROP);
+               } else
                        QUERY_ERROR(DNS_R_SERVFAIL);
                goto cleanup;
        }
# diff -u query.c.orig query.c
```


Проверено на 9.9, 9.10 версиях.


"Bind. Drop вместо refuse"
Отправлено PavelR , 31-Окт-12 09:14 

> Сейчас блокирую такие запросы фаерволом. Можно настроить fail2ban, но мне кажется было
> бы проще всего что бы он дропал такие запросы.
> Ответ refuse по моему плох тем, что судя по логам его игнорируют
> и продолжают слать запросы, а сервер на ответ тратит свои ресурсы.

fail2ban может и не помочь, если используется spoofing (или как там оно по аглицки-то пишется). Поэтому же будут игнорироваться и ответы от вашего сервера.



"Bind. Drop вместо refuse"
Отправлено Fullmetal8ender , 31-Окт-12 13:46 
> вариант третий - лимитить пакеты на 53 UDP фареволом (bind не помню умеет сам лимитить запросы или нет)

Насколько я помню - умеет. Наверное остановлюсь на этом варианте.
Спасибо за ответы.


ПС
> т.е. ты пытаешься одновременно решить две абсолютно противоположные задачи 1) держать авторитативный сервер (т.е. он должен быть доступен для всех) 2) сделать blackhole (закрыть > для всех) пора бы уже это понять

Это вовсе не противоположные вещи, тк авторитетным должен он быть только для определенных зон, а blackhole для остальных запросов. Просто я предполагал что есть такая возможность.
Кстати, вариант с двумя view тоже довольно заманчив, подумаю что с ним можно сделать.