The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  вход/выход  слежка  RSS
"Загнать должников в личный кабинет"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT / Linux)
Изначальное сообщение [ Отслеживать ]

"Загнать должников в личный кабинет"  +/
Сообщение от back2egg email on 06-Июл-16, 10:47 
Имеется сервер под opensus-42.1 с NAT.
Периодически с utm забирается список должников который забрасывается в ipset.
Далее происходит блокировка по адресу источника.
Хотелось бы сделать так, чтобы должники перенаправлялись в личный кабинет.
Имеем:
172.16.0.0/16 - сетка с клиентами
blocked_clients - ipset с должниками
local - ipset с локальными ресурсами (в которые должники могут заходить. личный кабинет на сайте с адресом входящим в этот ipset)
192.168.168.61 - сайт с личным кабинетом, точнее с сайтом-заглушкой перенаправляющей в личный кабинет. От так же прописан в ipset local.

iptables:


*filter
:INPUT ACCEPT [71:5310]
:FORWARD ACCEPT [614286:651750448]
:OUTPUT ACCEPT [170:14689]
# форвардим на все локальные ресурсы
-A FORWARD -m set --match-set local dst -j ACCEPT
# запрещаем форвардинг на все порты и все протоколы для должников
-A FORWARD -m set --match-set blocked_clients src -j REJECT --reject-with icmp-port-unreachable
COMMIT

*nat
:PREROUTING ACCEPT [12326:1076071]
:INPUT ACCEPT [16:1506]
:OUTPUT ACCEPT [1:71]
:POSTROUTING ACCEPT [6352:482493]
# разрешаем все локальные адреса
-A PREROUTING -m set --match-set local dst -j ACCEPT
# делаем dnat на сайт-заглушку для должников
-A PREROUTING -p tcp -m set --match-set blocked_clients src -m tcp --dport 80 -j DNAT --to-destination 192.168.168.61:80
-A PREROUTING -p tcp -m set --match-set blocked_clients src -m tcp --dport 443 -j DNAT --to-destination 192.168.168.61:80
# делаем snat
-A POSTROUTING -s 172.16.0.0/20 -o eth4 -j SNAT --to-source 109.x.x.1
-A POSTROUTING -s 172.16.16.0/20 -o eth4 -j SNAT --to-source 109.x.x.2
...
-A POSTROUTING -s 172.16.192.0/18 -o eth4 -j SNAT --to-source 109.x.x.43
COMMIT


В результате получается, что на локальные ресурсы должник ходит. При попытке выйти на любой другой сайт правило с DNAT отрабатывается (проверил протоколированием), но потом все останавливается на правиле

-A FORWARD -m set --match-set blocked_clients src -j REJECT --reject-with icmp-port-unreachable

Да как же так то? Ведь перед ним стоит:

-A FORWARD -m set --match-set local dst -j ACCEPT

а целевой адрес уже должен быть подменен на адрес самого сервера в правиле DNAT!
Ну а если убрать правило "запрещаем форвардинг на все порты и все протоколы для должников", то должник спокойно проходит куда угодно. Ну т.е. получается, что подмены целевого адреса все таки не происходит. Что я не так сделал?
Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Загнать должников в личный кабинет"  +/
Сообщение от PavelR (??) on 06-Июл-16, 11:22 
>Что я не так сделал?

Это неправильно и работать /не должно/:

-A PREROUTING -p tcp -m set --match-set blocked_clients src -m tcp --dport 443 -j DNAT --to-destination 192.168.168.61:80

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Загнать должников в личный кабинет"  +/
Сообщение от back2egg email on 07-Июл-16, 04:08 
> Это неправильно и работать /не должно/:
> -A PREROUTING -p tcp -m set --match-set blocked_clients src -m tcp --dport
> 443 -j DNAT --to-destination 192.168.168.61:80

я не сомневаюсь в этом :)
просто где-то увидел и захотелось посмотреть.
понятно что в таком виде браузер покажет фигу.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

2. "Загнать должников в личный кабинет"  +/
Сообщение от Andrey Mitrofanov on 06-Июл-16, 11:29 
> а целевой адрес уже должен быть подменен на адрес самого сервера в
> правиле DNAT!

Всё не так, как ты думаешь. Исправь это.

SNAT - "до" (и в PREROUTING (**)), DNAT - "после" (и в POSTROUTING).

> Ну а если убрать правило "запрещаем форвардинг на все порты и все
> протоколы для должников", то должник спокойно проходит куда угодно. Ну т.е.
> получается, что подмены целевого адреса все таки не происходит. Что я
> не так сделал?

(**) - Хотя и в POSTROUTING тоже будет работать. Это "сложно!.//"Но лучше договориться и заплатить."(ц)

Смысл вот в чём: когда "поднимаешься" над "все правила в *tables исполняются в таком-то порядке", осматриваешься вокруг и углубляещься в делати, то... **обнаруживается**, что "всё сложнее" -- iptables переплетены с роутингом, conntrack-ом, иногда с arp или ещё чем "в сетевом стэке" (bridge, например, mss, tcp-флаги, итд, итд)...

-----

https://duckduckgo.com/?q=%D0%BF%D1%80&#...
    http://www.opennet.ru/docs/RUS/iptables/#TRAVERSINGGENERAL
        http://www.opennet.ru/docs/RUS/iptables/misc/iptables-tutori...
    http://www.opennet.ru/base/net/linux_packet_filter.txt.html

...
    (!) www.opennet.ru/openforum/vsluhforumID1/78852.html#1
        где-то (даже в новостях?? или на гитхабе?) была ещё более радужная картинка. Не нашёл--
---https://duckduckgo.com/?q=captive+portal+linux+iptables&t=ff...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Загнать должников в личный кабинет"  +/
Сообщение от Andrey Mitrofanov on 06-Июл-16, 11:31 
#>> -A PREROUTING -p tcp -m set --match-set blocked_clients src -m tcp --dport 80 -j DNAT --to-destination 192.168.168.61:80
>> а целевой адрес уже должен быть подменен на адрес самого сервера в
>> правиле DNAT!
> Всё не так, как ты думаешь. Исправь это.
>DNAT - "после" (и в POSTROUTING).

Впрочем, я тоже пойду чего-нибудь %) исправлю.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Загнать должников в личный кабинет"  +/
Сообщение от back2egg email on 07-Июл-16, 04:05 
Ох уж этот iptables... Спасибо за направление.
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

6. "Загнать должников в личный кабинет"  +/
Сообщение от reader (ok) on 07-Июл-16, 13:00 
>[оверквотинг удален]
> Периодически с utm забирается список должников который забрасывается в ipset.
> Далее происходит блокировка по адресу источника.
> Хотелось бы сделать так, чтобы должники перенаправлялись в личный кабинет.
> Имеем:
> 172.16.0.0/16 - сетка с клиентами
> blocked_clients - ipset с должниками
> local - ipset с локальными ресурсами (в которые должники могут заходить. личный
> кабинет на сайте с адресом входящим в этот ipset)
> 192.168.168.61 - сайт с личным кабинетом, точнее с сайтом-заглушкой перенаправляющей в
> личный кабинет. От так же прописан в ipset local.

так а сам личный кабинет в ipset local есть?

> iptables:
>

 
> *filter
> :INPUT ACCEPT [71:5310]
> :FORWARD ACCEPT [614286:651750448]
> :OUTPUT ACCEPT [170:14689]
> # форвардим на все локальные ресурсы
> -A FORWARD -m set --match-set local dst -j ACCEPT
> # запрещаем форвардинг на все порты и все протоколы для должников

-A FORWARD -p tcp --dport 80 -m set --match-set blocked_clients src -j LOG --log-prefix "IPT FILTER FWD REJECT: " --log-level 7
> -A FORWARD -m set --match-set blocked_clients src -j REJECT --reject-with icmp-port-unreachable
> COMMIT
> *nat
> :PREROUTING ACCEPT [12326:1076071]
> :INPUT ACCEPT [16:1506]
> :OUTPUT ACCEPT [1:71]
> :POSTROUTING ACCEPT [6352:482493]
> # разрешаем все локальные адреса
> -A PREROUTING -m set --match-set local dst -j ACCEPT
> # делаем dnat на сайт-заглушку для должников

-A PREROUTING -p tcp -m set --match-set blocked_clients src -m tcp --dport 80 -j LOG --log-prefix "IPT NAT PREROUTING: " --log-level 7
>[оверквотинг удален]
> Да как же так то? Ведь перед ним стоит:
>

 
> -A FORWARD -m set --match-set local dst -j ACCEPT
>

> а целевой адрес уже должен быть подменен на адрес самого сервера в
> правиле DNAT!
> Ну а если убрать правило "запрещаем форвардинг на все порты и все
> протоколы для должников", то должник спокойно проходит куда угодно. Ну т.е.
> получается, что подмены целевого адреса все таки не происходит. Что я
> не так сделал?

и смотрим что там в заголовках

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру