LINUX.ORG.RU
решено ФорумAdmin

Разъяснение работы Iptables для VPN

 , ,


2

3

Здравствуйте! Настраиваю VPN на VPS в Ubuntu v20, взял готовенькие настройки iptables, чтобы долго не мучаться, возможно это не лучший путь... Остались сомнения и вопросы, подскажите пожалуйста, если что неправильно понял в них:

1. # iptables -I INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT
2. # iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source IP_АДРЕС_ВАШЕГО СЕРВЕРА
3. # iptables -A FORWARD -s 192.168.10.0/24 -j ACCEPT
4. # iptables -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
5. # firewall-cmd --zone=public --permanent --add-port=443/tcp
6. # firewall-cmd --zone=public --permanent --add-masquerade

1. Этой строчкой задумано, что трафик может пропускаться на 443 порт при условии, что будет установлено соединение VPN (подойдут логин и пароль)? Почему в начале проставлена -I, а не -A?

2. Преобразование ip адреса выходного пакета, выданным dhcp сервером, в ip адрес сервера. Только -to-source это переводится как к источнику, а не от него? Или наоборот должно быть?

3 и 4. лишнии, так как первым пунктом трафик уже будет заходить и ничем не ограничиваться до выхода?

5 и 6. лишнии, так как повторяют 1 и 2 пункты?

И ещё дополнительный вопрос, влияют ли настройки iptables на использование VNC client через панель управления VPS?


Ответ на: комментарий от Kolins

/32 это сеть из одного адреса, да iptables так делает и в этом нет ничего страшного

Спасибо, это я понял. А какой ip и маску подсети вписывать в таблицу? В точности только то что выдал провайдер?

Ну тут илли рпзрешать подключаться к vpn вообще всем (сомневаюсь что у тебя на мобильном статичный ip) или port-knocking делать и перед подключением с мобильника «простукивать» сервер чтобы он ip в разрешенные добавлял на определенное время

А зачем я тогда настраивал iptables? 😪 А что именно мешает то?

Kisliy
() автор топика
Ответ на: комментарий от vbr

iptables надо изучать капитально. Включая базовые знания сети и отладки проблем. Без этого лучше фаервол вообще не трогать. Большой необходимости в нем нет. У некоторых хостеров бывает внешний фаервол. Если такое есть, лучше его использовать. PS сейчас надо использовать nftables. Или обертку типа ufw.

Любопытно, а где можно посмотреть информацию о внешнем фаерволе? nftables или ufw для моего уникального случая чем будет лучше, в отличии от iptables?

Kisliy
() автор топика
Ответ на: комментарий от Kisliy

где можно посмотреть информацию о внешнем фаерволе?

У хостера в админке обычно есть. Если на видном месте нет, скорей всего нет.

nftables или ufw для моего уникального случая чем будет лучше, в отличии от iptables?

nftables это замена для iptables. В современном линуксе это базовый инструмент. Раньше iptables были базой, сейчас это просто обёртка вокруг nftables. Можно и их использовать, работать будет, но зачем?

ufw это простая обёртка вокруг остальных фаерволов. Она работает на логическом уровне - открыть порт, настроить NAT и тд. В общем для типовых случаев. Там простая конфигурация. Но если у тебя что-то нетривиальное, то не факт, что заработает.

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

А какой ip и маску подсети вписывать в таблицу? В точности только то что выдал провайдер?

для одиночного ip просто вписываешь его и оставляешь, на /32 не обращай внимание

А зачем я тогда настраивал iptables?

Почитай про port-knocking. Если кратко, то дергаешь поочередко какие-то порты на сервере (через telnet, nmap или вообще приложение на ведроиде), либо отправляешь ping с пакетами определенной длинны, iptables это видит и добавляет твой ip в список разрешенных на заданное время. после устанавливаешь vpn соединение.

nftables или ufw для моего уникального случая чем будет лучше, в отличии от iptables?

ufw вообще не трогай, это набор костылей над iptables. nftables - это более новый iptables со своим синтаксисом и логикой построения правил, как осилишь iptables можешь его изучать.

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

У хостера в админке обычно есть. Если на видном месте нет, скорей всего нет.

Посмотрел, нету.

nftables это замена для iptables. В современном линуксе это базовый инструмент. Раньше iptables были базой, сейчас это просто обёртка вокруг nftables. Можно и их использовать, работать будет, но зачем?

Через несколько лет что-нибудь ещё присобачат и я никогда не настрою сервер… Тут уж придётся на совесть разработчиков опираться, которые делали надстройку над nftables, надеюсь лазеек не оставляли не накосячили 😁

Kisliy
() автор топика
Ответ на: комментарий от antech

ты же мешаешь правила iptables и firewalld вот я тебе еще подкинул, вдруг именно этого тебе и не хватало.

Я ничего пока не смешивал, да и зачем, iptales как-бы должно справиться с простейшей задачей на одного юзера.

Kisliy
() автор топика
Последнее исправление: Kisliy (всего исправлений: 1)
Ответ на: комментарий от antech

Я вот думаю если я напишу какую нибудь статью ей тоже так же будут безаговорочно верить и соглашаться?

Да, только врите, как на первом канале, пишите убедительно и вам поверят миллионы 😄

Kisliy
() автор топика
Ответ на: комментарий от Kolins

Почитай про port-knocking. Если кратко, то дергаешь поочередко какие-то порты на сервере (через telnet, nmap или вообще приложение на ведроиде), либо отправляешь ping с пакетами определенной длинны, iptables это видит и добавляет твой ip в список разрешенных на заданное время. после устанавливаешь vpn соединение.

Хорошо, но не хотелось бы добавлять костыль, конечно если нет других вариантов.

ufw вообще не трогай, это набор костылей над iptables. nftables - это более новый iptables со своим синтаксисом и логикой построения правил, как осилишь iptables можешь его изучать.

Всё же, вкратце, почему не DROPаются пакеты от другого ip? Что конкретно пошло не так? Может просто отконфигурировать VPN сервер, там же тоже настройки есть, или они не могут влиять на iptables?

Kisliy
() автор топика
Ответ на: комментарий от anc

Не iptables, а приложуха которая это «видит».

Вообще не обязательно, можно через модуль ipset добавлять в сеты средствами самого iptables

Ага-ага, а iptables это более новый ipchains который более новый ipfw...

не душни, ТС только началразбираться в этой теме. По сути «под» iptables/nftables находится один netfilter

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

актуальный iptables-save покажи

Пожалуйста:

*nat
:PREROUTING ACCEPT [388279:32491353]
:INPUT ACCEPT [76:5325]
:OUTPUT ACCEPT [1229654:85012121]
:POSTROUTING ACCEPT [1229654:85012121]
-A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
COMMIT
# Completed on Fri Mar 29 11:28:57 2024
# Generated by iptables-save v1.8.4 on Fri Mar 29 11:28:57 2024
*filter
:INPUT DROP [320941:22029232]
:FORWARD DROP [31:1240]
:OUTPUT ACCEPT [1337846:142005046]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.10.0/24 -i tap_tap_virtual -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -s 81.13.109.166/32 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i tap_tap_virtual -o eth0 -m conntrack --ctstate NEW -j ACCEPT
COMMIT
# Completed on Fri Mar 29 11:28:57 2024
# Generated by iptables-save v1.8.4 on Fri Mar 29 11:28:57 2024
*mangle
:PREROUTING ACCEPT [1829367:275301518]
:INPUT ACCEPT [1646946:213985426]
:FORWARD ACCEPT [123654:52097274]
:OUTPUT ACCEPT [1339335:142123644]
:POSTROUTING ACCEPT [1463185:194236762]
COMMIT
# Completed on Fri Mar 29 11:28:57 2024```
Kisliy
() автор топика
Ответ на: комментарий от Kolins

Вообще не обязательно, можно через модуль ipset добавлять в сеты средствами самого iptables

Но кто это делать будет?

По сути «под» iptables/nftables находится один netfilter

Ну я приблизительно на это обобщение и намекнул упомянув ipchains и ipfw

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

Но кто это делать будет?

ipset create stage1 hash:ip timeout 60
ipset create whitessh hash:ip timeout 3600

iptables -A INPUT -p tcp --dport 5656 -j SET --add-set stage1 src
iptables -A INPUT -p tcp --dport 6565 -m set --match-set stage1 src -j SET --add-set whitessh src
iptables -A INPUT -p tcp --dport 22 -m set --match-set whitessh src -j ACCEPT


и никаких внешних демонов не нужно

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

по правилам все нормально выглядит, се дропаться должно. Как определяешь что не дропается. мобильный клиент цепляется к vpn?

Да, я отключаю встроенный сетевой адаптер на компе и подключаю смартфон, далее клиент спокойно подключается к VPN. А может часть правил через nftables прописать (правда на моей v20.04 nftables не установлен по умолчанию)?

И ещё вопросик, почему в статистике, например, Chain FORWARD (policy DROP 31 packets, 1240 bytes) появляются пакеты которые drop-аются, ведь я один пользуюсь сервером и причём если мне всё разрешено то их быть недолжно?

Kisliy
() автор топика

По названию похоже на чью-то домашнюю работу, не?

Простыню, после признания слабости духа, не читал.

Успехов.

anonymous
()
Ответ на: комментарий от Kolins

Ок. написал тебе

Действительно, трюк с подменой ip адреса возможен с помощью NAT Traversal. А значит ip tables верно настроены. Kolins, спасибо за подсказку! 😀 Разобрался!

PS. Не скучайте, у меня есть ещё другие вопросы, скоро накатаю пост 😁

Kisliy
() автор топика