Автор Тема: Блокировка доступ к сайтам по доменным именам и по ip  (Прочитано 6072 раз)

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 368
Правильней поднять прозрачный прокси (squid) и им уже блокировать,
Для оператора гнать весь трафик через прокси - плохая идея. Даже, скажу, негодная. А редирект на страницу можно сделать и так.

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 242
Правильней поднять прозрачный прокси (squid) и им уже блокировать,
Для оператора гнать весь трафик через прокси - плохая идея. Даже, скажу, негодная. А редирект на страницу можно сделать и так.
Не весь трафик, а только тот что подозревается в необходимости блокировки. В том и фишка. Даже Ростелеком на такое вроде бы перешел, вместо тотального DPI.

Оффлайн Cool_Lamer

  • Участник
  • *
  • Сообщений: 473
Внутри одной цепочки reject (drop), должны быть до accept. После accept в этой же цепочке правила для уже разрешённого пакета не проверяются.
Вы ведь в форварде фильтруете? Так? Ну и поставьте все правила в forward с accept после reject (т.е. после вашего sait_filter).
Плохо понял. Так чтоли?
*filter
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j sait_filter
-A sait_filter -s 10.0.0.0/8 -d 54.78.43.123/32 -o eth1 -j REJECT --reject-with icmp-port-unreachable
-A sait_filter -s 10.0.0.0/8 -d 54.155.91.81/32 -o eth1 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p udp -m udp --dport 1024:65535 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1024:65535 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p udp -m udp --dport 123
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i eth1 -j DROP
а всякие двоеточия, скобочки и прочее напрочь отбивают желание вчитываться после трудного рабочего дня.
Извиняюсь, исправился http://forum.altlinux.org/index.php/topic,34396.msg250711.html#msg250711

Правильней поднять прозрачный прокси (squid) и им уже блокировать,
Для оператора гнать весь трафик через прокси - плохая идея. Даже, скажу, негодная. А редирект на страницу можно сделать и так.
Неправильно блокировать по ip, так под раздачу попадут тысячи нормальных сайтов ( http://reestr.rublacklist.net/visual ).
Если уж приходится таким заниматься, то такие ip надо заворачивать на squid и он заблокирует конкретный URL.
Это всё будет на новом сервере, а пока нужно сделать так. И гонится не весь трафик, а насколько я знаю только 80 порт. И редирект на страницу тоже интересен, пускай потом звонят в надзор и выносят им голову, но сначала разобраться бы с блокировкой.

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 368
Неправильно блокировать по ip, так под раздачу попадут тысячи нормальных сайтов ( http://reestr.rublacklist.net/visual ).
Если уж приходится таким заниматься, то такие ip надо заворачивать на squid и он заблокирует конкретный URL.
Ещё раз: заворачивать на прокси весь операторский HTTP - совершенно негодная идея. Тут необходимо DPI-оборудование за хорошие деньги. Когда Связьнадзор скинется операторам на реализацию бредового думского закона, который элементарно обходится кучей способов, тогда можно подумать про DPI, а просто так выкидывать деньги смысла никакого (как уже написал - обходится на раз).
Потому - по IP, и выносить мозги Думе и Связьнадзору.
« Последнее редактирование: 26.03.2015 14:08:38 от asy »

Оффлайн Cool_Lamer

  • Участник
  • *
  • Сообщений: 473
Давайте прекращайте дискуссии и по делу)) Пожалуйста.

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 368
Давайте прекращайте дискуссии и по делу)) Пожалуйста.
По делу я уже написал. У меня это работает. :-)

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 368
Ещё раз: заворачивать на прокси весь операторский HTTP - совершенно негодная идея.
Хотя... Можно заворачивать на прокси трафик, который по IP попадает под блокировку. Это вот может быть вариант.

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 368
Давайте прекращайте дискуссии и по делу)) Пожалуйста.
А зачем -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT стоит до -A FORWARD -j sait_filter ?

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 242
Ещё раз: заворачивать на прокси весь операторский HTTP - совершенно негодная идея.
Хотя... Можно заворачивать на прокси трафик, который по IP попадает под блокировку. Это вот может быть вариант.
Я об этом и писал с самого начала.

А зачем -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT стоит до -A FORWARD -j sait_filter ?
правильно это - сначала пропускается разрешенный трафик (его много), но новые исходящие соединения которые под фильтром нет (их мало и не надо каждый входящий пакет проверять).
« Последнее редактирование: 26.03.2015 14:09:51 от yaleks »

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 368
Я об этом и писал с самого начала.
И правда. Но, всё равно, мозг Думе вправлять надо.

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 368
А зачем -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT стоит до -A FORWARD -j sait_filter ?
правильно это - сначала пропускается разрешенный трафик (его много), но новые исходящие соединения которые под фильтром нет (их мало и не надо каждый входящий пакет проверять).
Оно обязано работать в том виде, как написано. Кроме этого правила просто ничего больше нет. Оно точно работает именно так ?

Оффлайн Cool_Lamer

  • Участник
  • *
  • Сообщений: 473
Вот такой вот iptables на данный момент, не блокирует
*mangle

*nat
-A PREROUTING -d 178.124.152.111/32 -p tcp -m tcp --dport 1234 -j DNAT --to-destination 10.3.21.10:1234
-A PREROUTING -d 178.124.152.111/32 -p tcp -m tcp --dport 2345 -j DNAT --to-destination 10.3.21.10:2345
-A POSTROUTING -o eth0 -j MASQUERADE

*filter
-A INPUT -p udp -m udp --dport 1024:65535 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1024:65535 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p udp -m udp --dport 123 -m comment --comment "ntp local" -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i eth1 -j DROP
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j sait_filter
-A sait_filter -s 10.0.0.0/24 -d 178.124.173.218/32 -o eth1 -j REJECT --reject-with icmp-port-unreachable
-A sait_filter -s 10.0.0.0/8 -d 178.124.173.218/32 -o eth1 -j REJECT --reject-with icmp-port-unreachable

Вывод iptables -L --line-numbers -n -v
Спойлер
[root@djem-nat sysconfig]# iptables -L --line-numbers -n -v
Chain INPUT (policy ACCEPT 598 packets, 34174 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1    52346 3832K ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpts:1024:65535
2    54905 2797K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpts:1024:65535
3       16   809 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80
4       15   800 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:443
5        0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:123 /* ntp local */
6      388 24588 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:53
7        3   152 DROP       all  --  eth1   *       0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT 132K packets, 9524K bytes)
num   pkts bytes target     prot opt in     out     source               destination
1    4247K 3528M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           ctstate RELATED,ESTABLISHED
2     153K   11M sait_filter  all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain OUTPUT (policy ACCEPT 92080 packets, 7702K bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain sait_filter (1 references)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     all  --  *      eth1    10.0.0.0/24          178.124.173.218     reject-with icmp-port-unreachable
2        0     0 REJECT     all  --  *      eth1    10.0.0.0/8           178.124.173.218     reject-with icmp-port-unreachable

А зачем -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT стоит до -A FORWARD -j sait_filter ?
правильно это - сначала пропускается разрешенный трафик (его много), но новые исходящие соединения которые под фильтром нет (их мало и не надо каждый входящий пакет проверять).
Оно обязано работать в том виде, как написано. Кроме этого правила просто ничего больше нет. Оно точно работает именно так ?
От перемены местами правил, никаких изменений.
« Последнее редактирование: 26.03.2015 16:53:49 от Cool_Lamer »

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 368
Если вот сюда посмотреть

Chain FORWARD (policy ACCEPT 132K packets, 9524K bytes)
num   pkts bytes target     prot opt in     out     source               destination
1    4247K 3528M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           ctstate RELATED,ESTABLISHED
2     153K   11M sait_filter  all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain sait_filter (1 references)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     all  --  *      eth1    10.0.0.0/24          178.124.173.218     reject-with icmp-port-unreachable
2        0     0 REJECT     all  --  *      eth1    10.0.0.0/8           178.124.173.218     reject-with icmp-port-unreachable

то видно, что в sait_filter что-то попадает, а в правила внутри - ничего. Видимо, что-то не то с условиями. Если упростить до проверки destination, что получается ?

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 567
А зачем -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT стоит до -A FORWARD -j sait_filter ?
правильно это - сначала пропускается разрешенный трафик (его много), но новые исходящие соединения которые под фильтром нет (их мало и не надо каждый входящий пакет проверять).
Логично.
Но в данном случае что-то не всё-таки не работает.
И кстати, да. Неплохо бы попробовать не проверять source как советует asy. Возможно есть пакеты с запросом на соединение с другим source.

Я бы попробовал влепить пару более простых правил в конец фильтра с записью в лог. Так можно посмотреть, что там пропускается:
-A sait_filter -s 10.0.0.0/24 -d 178.124.173.218/32 -o eth1 -j REJECT --reject-with icmp-port-unreachable
-A sait_filter -s 10.0.0.0/8 -d 178.124.173.218/32 -o eth1 -j REJECT --reject-with icmp-port-unreachable
-A sait_filter -d 178.124.173.218/32 -o eth1 -m limit --limit 5/second --limit-burst 5 -j LOG --log-prefix "Ahtung for eth1:"
-A sait_filter -d 178.124.173.218/32 -m limit --limit 5/second --limit-burst 5 -j LOG --log-prefix "Ahtung for other iface:"
« Последнее редактирование: 26.03.2015 19:24:39 от stranger573 »

Оффлайн Cool_Lamer

  • Участник
  • *
  • Сообщений: 473
Я бы попробовал влепить пару более простых правил в конец фильтра с записью в лог. Так можно посмотреть, что там пропускается:
-A sait_filter -s 10.0.0.0/24 -d 178.124.173.218/32 -o eth1 -j REJECT --reject-with icmp-port-unreachable
-A sait_filter -s 10.0.0.0/8 -d 178.124.173.218/32 -o eth1 -j REJECT --reject-with icmp-port-unreachable
-A sait_filter -d 178.124.173.218/32 -o eth1 -m limit --limit 5/second --limit-burst 5 -j LOG --log-prefix "Ahtung for eth1:"
-A sait_filter -d 178.124.173.218/32 -m limit --limit 5/second --limit-burst 5 -j LOG --log-prefix "Ahtung for other iface:"

[root@djem-nat sysconfig]# iptables -L --line-numbers -n -v
Chain INPUT (policy ACCEPT 64 packets, 4658 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1    11241  818K ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpts:1024:65535
2    12404  628K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpts:1024:65535
3        7   357 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80
4        5   265 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:443
5        0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:123 /* ntp local */
6      166 10458 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:53
7        0     0 DROP       all  --  eth1   *       0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT 38837 packets, 2661K bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     870K  657M sait_filter  all  --  *      *       0.0.0.0/0            0.0.0.0/0
2     831K  654M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           ctstate RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT 23738 packets, 2289K bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain sait_filter (1 references)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     all  --  *      eth1    10.0.0.0/24          178.124.173.218     reject-with icmp-port-unreachable
2        0     0 REJECT     all  --  *      eth1    10.0.0.0/8           178.124.173.218     reject-with icmp-port-unreachable
3        0     0 LOG        all  --  *      eth1    0.0.0.0/0            178.124.173.218     limit: avg 5/sec burst 5 LOG flags 0 level 4 prefix `Ahtung for eth1:'
4       62 12660 LOG        all  --  *      *       0.0.0.0/0            178.124.173.218     limit: avg 5/sec burst 5 LOG flags 0 level 4 prefix `Ahtung for other iface:'

япона мама, eth0 внешка
« Последнее редактирование: 26.03.2015 19:47:26 от Cool_Lamer »