LINUX.ORG.RU
ФорумAdmin

Настройка iptables

 


0

2

Есть данный набор правил, где здесь надо что изменить и добавить, чтобы: 1. Запретить пользоваться VK.COM и т.д.... Я пробовал вот так, но не прокатило, сайты открывались.

iptables -A FORWARD -m string --string "vk.com" --algo kmp --to 65535 -j DROP
2. Открыть пользователям только интернет, почту, а закрыть аськи, скайпы.

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

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

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

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

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

# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
# Пропускать все уже инициированные соединения, а также дочерние от них
iptables -A INPUT -p all -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Пропускать новые, а так же уже инициированные и их дочерние соединения
iptables -A OUTPUT -p all -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
# Разрешить форвардинг для новых, а так же уже инициированных 
# и их дочерних соединений
iptables -A FORWARD -p all -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT

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

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

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


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

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


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

# Don't forward from the outside to the inside.
iptables -A FORWARD -i $WAN -o $WAN -j REJECT
iptables -A FORWARD -i $INET -o $WAN -j REJECT

Настройка iptables
Запретить пользоваться VK.COM и т.д

Поставь squid, настрой transparent proxy, с помощью iptables закинь порт 80 на порт squid, реж трафик по доменам.

King_Carlo ★★★★★ ()

Если допустить, что это правило

iptables -A FORWARD -m string --string "vk.com" --algo kmp --to 65535 -j DROP
написано правильно, то оно должно находиться перед вот этим правилом:
iptables -A FORWARD -p all -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT

Ну и строго говоря смысл вот этих правил

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

# Запрещаем доступ снаружи во внутреннюю сеть
iptables -A FORWARD -i $WAN -o $LAN -j REJECT
Ибо они никогда у вас не работают, ибо они перекрываются вот этим правилом:
iptables -A FORWARD -p all -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT

kostik87 ★★★★★ ()

заведи ipset, добавь туда адреса vk.com и его cdn
потом iptables -A OUTPUT -o интерфейс -m set --match-set имя_сета_ipset dst -j DROP

ii343hbka ★★★ ()
ipset create vk hash:net
ipset add vk 87.240.128.0/18
ipset add vk 95.142.192.0/20
ipset add vk 93.186.232.0/21
ipset add vk 93.186.224.0/21
iptables -I FORWARD -p tcp -m set --match-set vk dst -j DROP
BOOBLIK ★★ ()

По данной схеме получается что разрешен весь интернет трафик, доступ извне закрыт. А чтобы закрыть что либо, надо писать выше разрешающего правила.

Тогда вопрос, как переписать эти правила, чтобы было закрыто а открыть только нужное:

# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
# Пропускать все уже инициированные соединения, а также дочерние от них
iptables -A INPUT -p all -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Пропускать новые, а так же уже инициированные и их дочерние соединения
iptables -A OUTPUT -p all -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
# Разрешить форвардинг для новых, а так же уже инициированных 
# и их дочерних соединений
iptables -A FORWARD -p all -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT

marirveze ()

ipset + парсинг логов dns тебя спасут.

DALDON ★★★★★ ()
Ответ на: комментарий от King_Carlo

С прозрачностью будет туговато в таком случае... :(

DALDON ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.