Автор Тема: Блокировка соц. сетей через AS (Autonomous System)  (Прочитано 1664 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн nihi1ist

  • Добрый Санта
  • Активный пользователь
  • **
  • Topic Author
  • Сообщений: 86
    • Путь юниксоида
  • Jabber: nihi1ist@jabber.ru
Пытаюсь используя статью, но есть пара моментов которые мне непонятны.
# Below are the autonomus system (AS) numbers for some social networks
# AS32934 -- facebook.com
# AS47541 AS47542  -- vk.com
# AS49988 -- ok.ru
AS_TO_BAN="AS32934 AS47541 AS47542 AS49988"
 
#Exceptions for some privilegied users
SOCIAL_ALLOW_IPs="192.168.1.111"
SOCIAL_ALLOW_MACs="00:15:5D:01:C9:01"
 
echo ""
echo "Block Social sites"
 
$IPT -N SOCIAL
 
# Allow social for some user by their IPs
for userip in $SOCIAL_ALLOW_IPs; do
  $IPT -A SOCIAL -s $userip -j ACCEPT
done
 
# Allow social for some user by their MACs
for mac in $SOCIAL_ALLOW_MACs; do
  $IPT -A SOCIAL -m mac --mac-source $mac -j ACCEPT
done
 
# Block for others
$IPT -A SOCIAL -j DROP
 
## Here, we collect all ip-ranges and block access via HTTPS
for as in $AS_TO_BAN; do
    for ip in `whois -h whois.radb.net "!g$as" | grep /`
    do
      $IPT -A FORWARD -i eth0 -p tcp --dport 443 -d $ip -j SOCIAL
    done
done

Как видно, в сценарии используется выражение SOCIAL. И мне непонятно откуда оно берется? И нет ли ошибок в скрипте, я пытаюсь используя этот скрипт, заблокировать определенные соц. сети. К тому же, у меня почему то тот же vk.com не блокируется.

Вот мой вариант сценария:
Spoiler: ShowHide
#!/bin/bash
# Тут в принципе может и не надо этого всего но не помеха
# вдруг какой модуль не подгружен или форвардинг не включен

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

# Объявление переменных
export IPT="iptables"

# Интерфейс который смотрит в интернет
export INET=eth0

# Локальная сеть
export LAN=eth1
export LAN_IP_RANGE=172.168.12.0/24

# Below are the autonomus system (AS) numbers for some social networks
# AS47541 -- vk.com
# AS49988 -- ok.ru
export AS_TO_BAN="AS47541 AS49988"

#Exceptions for some privilegied users
export SOCIAL_ALLOW_IPs="172.168.12.98"
export SOCIAL_ALLOW_MACs="‎90:2B:34:B7:68:89"

# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

# Закрываем изначально ВСЁ (т.е. изначально все что не разрешено - запрещено):
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# Разрешаем локальный траффик для loopback и внутренней сети
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i $LAN -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A OUTPUT -o $LAN -j ACCEPT

# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
# Пропускать все уже инициированные соединения, а также дочерние от них
$IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

# Пропускать новые, а так же уже инициированные и их дочерние соединения
$IPT -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Разрешить форвардинг для новых, а так же уже инициированных
# и их дочерних соединений
$IPT -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Включаем фрагментацию пакетов. Необходимо из за разных значений MTU
$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# Отбрасывать все пакеты, которые не могут быть идентифицированы
# и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP

# Приводит к связыванию системных ресурсов, так что реальный
# обмен данными становится не возможным.
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP

# Разрешаем доступ из внутренней сети наружу
$IPT -A FORWARD -i $LAN -o $INET -j ACCEPT

# Запрещаем доступ снаружи во внутреннюю сеть
$IPT -A FORWARD -i $INET -o $LAN -j REJECT

# Маскарадинг
$IPT -t nat -A POSTROUTING -o $INET -s $LAN_IP_RANGE -j MASQUERADE


# Далее дано как пример открытие портов извне:
# **********************************************************************
# Открываем порт для ssh
$IPT -A INPUT -i $INET -p tcp --dport 22 -j ACCEPT
# Открытие портов для торрентов (такие же указать в torrent-клиенте)
$IPT -A INPUT -i $INET -p tcp -m multiport --ports 49152:65535 -j ACCEPT

$IPT -N SOCIAL

# Разрешить соц.сети для пользователей по их IP-адресам
for userip in $SOCIAL_ALLOW_IPs; do
  $IPT -A SOCIAL -s $userip -j ACCEPT
done

# Разрешить соц.сети для пользователей по их MAC-адресам
for mac in $SOCIAL_ALLOW_MACs; do
  $IPT -A SOCIAL -m mac --mac-source $mac -j ACCEPT
done

# Блокируем соц.сети для остальных
$IPT -A SOCIAL -j DROP

# Собираем диапазоны IP-адресов и блокируем доступ к ним через HTTPS
for as in $AS_TO_BAN; do
    for ip in `whois -h whois.radb.net "!g$as" | grep /`
    do
      $IPT -A FORWARD -i $INET -p tcp --dport 443 -d $ip -j SOCIAL
    done
done


# Открываем 80 порт для веб сайтов
$IPT -A INPUT -i $INET -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -i $INET -p udp --dport 80 -j ACCEPT

# Открывает порты для соединений к FTP
$IPT -A INPUT -p tcp -m multiport --destination-port 20,21,40110:40210 -j ACCEPT

# **********************************************************************

# Вывод информации о состоянии таблиц.
route -n
$IPT -L
$IPT -L -v -n
$IPT -L -v -n -t nat
« Последнее редактирование: 30 Март 2016, 08:52:08 от nihi1ist »
 


Оффлайн endru

  • Главный модератор
  • Ветеран
  • *****
  • Сообщений: 1983
  • Новосибирск
проверять лень, отладкой заниматься тоже. взял пример с ТС.
SOCIAL - это цепочка (группа) айпишников для соц.сетей. работает на уровне iptables. описывается начиная со строки $IPT -N SOCIAL
в скрипте используется команда whois - если пакет whois Не установлен - работать ничего не будет.

вот тебе ссылка на учебник по Iptables. изучай как что работает.

Оффлайн nihi1ist

  • Добрый Санта
  • Активный пользователь
  • **
  • Topic Author
  • Сообщений: 86
    • Путь юниксоида
  • Jabber: nihi1ist@jabber.ru
SOCIAL - это цепочка (группа) айпишников для соц.сетей. работает на уровне iptables. описывается начиная со строки $IPT -N SOCIAL
в скрипте используется команда whois - если пакет whois Не установлен - работать ничего не будет.
Пакет установлен. И вроде даже отрабатывает без ошибок. Но тем не менее, не блокирует по AS.

Может по выхлопу последней части можно будет заметить ошибку?
Spoiler: ShowHide
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
172.168.12.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
DROP       all  --  anywhere             anywhere             state INVALID
DROP       tcp  --  anywhere             anywhere             tcp flags:!FIN,SYN,RST,ACK/SYN state NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:12321
ACCEPT     tcp  --  anywhere             anywhere             multiport ports 49152:65535
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     udp  --  anywhere             anywhere             udp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     udp  --  anywhere             anywhere             udp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             multiport dports ftp-data,ftp,40110:40210

Chain FORWARD (policy DROP)
target     prot opt source               destination
TCPMSS     tcp  --  anywhere             anywhere             tcp flags:SYN,RST/SYN TCPMSS clamp to PMTU
ACCEPT     all  --  anywhere             anywhere             state NEW,RELATED,ESTABLISHED
DROP       all  --  anywhere             anywhere             state INVALID
ACCEPT     all  --  anywhere             anywhere
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable
SOCIAL     tcp  --  anywhere             srv0-224-186-93.vk.com/21  tcp dpt:https
SOCIAL     tcp  --  anywhere             srv0-232-186-93.vk.com/21  tcp dpt:https
SOCIAL     tcp  --  anywhere             srv0-128-240-87.vk.com/18  tcp dpt:https
SOCIAL     tcp  --  anywhere             srv0-192.vkontakte.ru/21  tcp dpt:https
SOCIAL     tcp  --  anywhere             95.213.0.0/18        tcp dpt:https
SOCIAL     tcp  --  anywhere             185.32.248.0/22      tcp dpt:https
SOCIAL     tcp  --  anywhere             217.20.144.0/20      tcp dpt:https
SOCIAL     tcp  --  anywhere             185.16.244.0/23      tcp dpt:https
SOCIAL     tcp  --  anywhere             185.16.246.0/24      tcp dpt:https
SOCIAL     tcp  --  anywhere             185.16.247.0/24      tcp dpt:https
SOCIAL     tcp  --  anywhere             5.61.16.0/21         tcp dpt:https

Chain OUTPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             state NEW,RELATED,ESTABLISHED
DROP       tcp  --  anywhere             anywhere             tcp flags:!FIN,SYN,RST,ACK/SYN state NEW

Chain SOCIAL (11 references)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
   88 13161 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
 2474  102K ACCEPT     all  --  eth1   *       0.0.0.0/0            0.0.0.0/0
   88 76268 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            state INVALID
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:!0x17/0x02 state NEW
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:12321
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            multiport ports 49152:65535
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
    0     0 ACCEPT     udp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            udp dpt:80
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443
    0     0 ACCEPT     udp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            udp dpt:443
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 20,21,40110:40210

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 TCPMSS     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x06/0x02 TCPMSS clamp to PMTU
    8   351 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW,RELATED,ESTABLISHED
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            state INVALID
    0     0 ACCEPT     all  --  eth1   eth0    0.0.0.0/0            0.0.0.0/0
    0     0 REJECT     all  --  eth0   eth1    0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 SOCIAL     tcp  --  eth0   *       0.0.0.0/0            93.186.224.0/21      tcp dpt:443
    0     0 SOCIAL     tcp  --  eth0   *       0.0.0.0/0            93.186.232.0/21      tcp dpt:443
    0     0 SOCIAL     tcp  --  eth0   *       0.0.0.0/0            87.240.128.0/18      tcp dpt:443
    0     0 SOCIAL     tcp  --  eth0   *       0.0.0.0/0            95.142.192.0/21      tcp dpt:443
    0     0 SOCIAL     tcp  --  eth0   *       0.0.0.0/0            95.213.0.0/18        tcp dpt:443
    0     0 SOCIAL     tcp  --  eth0   *       0.0.0.0/0            185.32.248.0/22      tcp dpt:443
    0     0 SOCIAL     tcp  --  eth0   *       0.0.0.0/0            217.20.144.0/20      tcp dpt:443
    0     0 SOCIAL     tcp  --  eth0   *       0.0.0.0/0            185.16.244.0/23      tcp dpt:443
    0     0 SOCIAL     tcp  --  eth0   *       0.0.0.0/0            185.16.246.0/24      tcp dpt:443
    0     0 SOCIAL     tcp  --  eth0   *       0.0.0.0/0            185.16.247.0/24      tcp dpt:443
    0     0 SOCIAL     tcp  --  eth0   *       0.0.0.0/0            5.61.16.0/21         tcp dpt:443

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
   88 13161 ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0
 7345  370K ACCEPT     all  --  *      eth1    0.0.0.0/0            0.0.0.0/0
   69  6705 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW,RELATED,ESTABLISHED
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:!0x17/0x02 state NEW

Chain SOCIAL (11 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0
Chain PREROUTING (policy ACCEPT 3 packets, 204 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 3 packets, 204 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 19 packets, 1285 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 19 packets, 1285 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 MASQUERADE  all  --  *      eth0    172.168.12.0/24      0.0.0.0/0
« Последнее редактирование: 30 Март 2016, 08:37:25 от nihi1ist »
 

Теги: