Задать вопрос
@ITsis

Как в iptables разрешить только туннельный трафик?

Приветствую.
Есть ПК (GW 192.168.3.1)на  Ubuntu, который выступает шлюзом, к нему в свою очередь подключается несколько клиентов.
Сам GW цепляется по VPN к общей сети из таких же конструкций, каждая со своей подсетью.
Интернет получает через USB свисток.
Т.к. интернет лимитный требуется зарезать все подключения во внешний мир. Оставить только возможность поднимать туннель и обмениваться трафиком внутри него. Весь внешний мир требуется отрезать.
Как можно это реализовать с помошью iptables?
int1 - интерфейс свистка с адресом 192.168.8.1
int2 - интерфейс самого ПК - 192.168.3.1
tun0 - туннельный интерфейс.

Понимаю, что по умолчанию требуется дропать все политики, но после этого не совсем знаю как открыть только нужные, или может через форвард....

Заранее спасибо,
Пока что так, знаю, что сейчас всё открыто и надо по умолчанию в начале ставить DROP
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -i int2 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i int1 -m state --state RELATED,ESTABLISHED -j ACCEPT
  • Вопрос задан
  • 242 просмотра
Подписаться 1 Сложный 2 комментария
Пригласить эксперта
Ответы на вопрос 3
ValdikSS
@ValdikSS
-P INPUT ACCEPT
-P FORWARD DROP
-P OUTPUT ACCEPT
-A FORWARD -i int2 -o tun0 -j ACCEPT
-A FORWARD -i tun0 -o int2 -j ACCEPT
-A OUTPUT -o int1 -d ip-адрес-vpn-сервера -j ACCEPT
-A OUTPUT -o int1 -d 192.168.8.0/24 -j ACCEPT
-A OUTPUT -o int1 -j DROP


И аналогичные для IPv6.
Ответ написан
SignFinder
@SignFinder
Wintel\Unix Engineer\DevOps
Вам нужно закрыть входящий (INPUT) трафик, кроме трафика, нужного для создания VPN соединения,
закрыть исходящий трафик (OUTPUT), кроме трафика, необходимого для создания VPN туннеля,
закрыть проходящий трафик (FORWARD), кроме трафика клиентов.

Советую создать вам разрешающие правила при политиках ACCEPT (iptables -P блабла - j ACCEPT), а последней строкой добавить -j LOG, тогда вы сможете увидеть в /var/log/messages не описанный правилами трафик и проанализировать его. Когда этот трафик будет проанализирован - можно включать политики по умолчанию в DROP
Ответ написан
@ITsis Автор вопроса
Можно для совсем тупых? Ведь именно таким я себя и ощущаю...
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT #разрешение SSH
-A INPUT -i int2-j ACCEPT #разрешить весь входящий трафик на локальный интерфейс (может лишнее)
-A FORWARD -i int2 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT #перенаправление всех новых и существующих соединений из локального интерфейса 
-A FORWARD -i int1 -m state --state RELATED,ESTABLISHED -j ACCEPT #перенаправление всех существующих соединений из интернета(свистка)
-A FORWARD -i int2 -o tun -j ACCEPT #разрешение всего трафика между локальным интерфейсом и тунелем
-A FORWARD -i tun -o int2 -j ACCEPT 
-A FORWARD -i int1 -j DROP #запретить получать всё через свитсок, что не разрешено выше
-A FORWARD -o int1 -j DROP #запретить отправлять всё через свисток, что не разрешено выше
-A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT #разрешить исходящий трафик для ssh
-A OUTPUT -d IP-VPN-SERVER -o int1 -j ACCEPT #разрешить исходящие подключения на ВПН сервер через свисток
-A OUTPUT -d 192.168.8.0/24 -o int1 -j ACCEPT #разрешить исходящие подключения с локального адреса свистка через его интерфейс
-A OUTPUT -o int1 -j DROP #закрыть весь исходящий трафик в интернет


В итоге после применения этого правила какое-то время моё ssh подключение держится, потом падает.
Соответственно пинг не проходит, через туннель уже не подключиться на эту машину, хотя с неё доступ на другие ВПН клиенты есть.

Что нужно прописать в FORWARD и OUTPUT Чтобы последние команды DROP не мешали получить доступ от других ВПН клиентов к этой машине?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы