LINUX.ORG.RU

Правила для iptables

 


0

1

Помогите, пожалуйста, с написанием правила для iptables. Необходимо для vpn пользователя (например 192.168.10.1) заблокировать всё, кроме одного ip (например 192.168.10.100). Запрещающее правило для всего:

iptables -I INPUT -s 192.168.10.1 -j DROP

А вот как дальше разрешить доступ к 192.168.10.100?


Только не input, а forward, это если ты вводишь правило на VPN сервере, ибо input - это пакеты, предназначенные самой системе (VPN серверу), а forward - транзитные пакеты, пакеты от одной системе к другой, которые проходят через VPN сервер.

А перед этим разрешающее правило, то же в цепочке forward.

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

очень интересно получается. запрещающее правило ты знаешь как писать, а разрешающее нельзя. очень интересно ;)

shashilx ★★
()
Ответ на: комментарий от Spring
iptables -A FORWARD -d 192.168.10.100 -j ACCEPT
iptables -A FORWARD -s 192.168.10.1 -j DROP

-d там должно быть.

Ну и важна очерёдность правил.

Выполни

iptables-save > /tmp/rules
Открой файл /tmp/rules и отредактируй его, очерёдность правил важна. Сейчас у тебя, возможно, уже примерены правила, которые ты писал выше.

В общем, механика работы такая, пакет проходит по цепочкам и как только какое-либо правило в цепочке обрабатывает правило, то пакет выходит из цепочки и ниже стоящие правила уже не работают для этого пакета.

Так что правило разрешения должно быть выше правила блокировки.

После редактирование файла с правилами выполни

iptables-restore /tmp/rules

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

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

спасибо.

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

-d там должно быть.

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

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

Согласен. Наверное лучше 4 правила 2 разрешающих и 2 запрещающих.

-d blocked-IP -s client-IP -j DROP
-s blocked-IP -d client-IP -j DROP
-s client-IP -j ACCEPT
-d client-IP -j ACCEPT

ну если более ничего в форварде нет, то политику по умолчанию в accept и тока запрещающие правила

samson ★★
()

Все очень просто

iptables -A INPUT -s 192.168.10.1 ! -d 192.168.10.100 -j DROP

Adminstation
()

Всем большое спасибо за помощь!

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

В общем, конечно ты прав, но не совсем.

Если разрешён трафик до определённого IP1 (192.168.10.100), а потом запрещён транзитный трафик исходящий от другого определённого IP2 (192.168.10.1). То запросы от IP2 до IP1 смогут дойти и ответы от IP1 до IP2 тоже дойдут.

Т.к. ниже идёт правило запрещающее исходящие запросы с IP2 (192.168.10.1), то до других IP адресов запросы не дойдут - следовательно не будет и ответов.

Если запросы пойдут с какого-то IP адреса в VPN сеть до IP2, то ответы до адресов отличающихся от IP1 не дойдут, т.к. стоит правило блокировки исходящих пакетов с IP2.

Так что в принципе достаточно этих двух правил.

Можно написать конечно два правила с указанеим исходящего адреса и адреса назначения.

iptables -A FORWARD -s 192.168.10.1 -d 192.168.10.100 -j ACCEPT
iptables -A FORWARD -d 192.168.10.1 -s 192.168.10.100 -j ACCEPT
iptables -A FORWARD -s 192.168.10.1 -j DROP
iptables -A FORWARD -d 192.168.10.1 -j DROP
Тогда это вообще покроет всё.

Т.к. если оставить только вот такое правило:

iptables -A FORWARD -d 192.168.10.100 -j ACCEPT
то все транзитные пакеты смогут дойти до 192.168.10.100.

Можно сделать указав интерфейс.

iptables -A FORWARD -d 192.168.10.100 -i ppp0 -j ACCEPT
iptables -A FORWARD -s 192.168.10.100 -o ppp0 -j ACCEPT
iptables -A FORWARD -i ppp0 -j DROP
iptables -A FORWARD -o ppp0 -j DROP
В таком случае транзитный трафик до адреса 192.168.10.100 из vpn сети будет разрешён, а до других адресов блокирован и затронет только VPN сеть.

Либо указать через сети.

Но в целом выше указанных двоих правил достаточно.

samson, тебе тоже ответ.

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

сори, я не дочитал, что именно требуется. Предлагал разрешить все кроме опеделенного IP, а надо наоборот...

А ведь, больше всех прав Adminstation (за исключением маленькой очепятки)

Все очень просто
iptables -A INPUT -s 192.168.10.1 ! -d 192.168.10.100 -j DROP

не INPUT а FORWARD!!!

достаточно же всего одно правила - надо запретить клиенту все исходящее кроме тех, что на этот IP - это одно правило полностью решает поставленный ТС вопрос.

2 Spring:

А вот как дальше разрешить доступ к 192.168.10.100?

если тут имеется ввиду, что далее надо будет разрешать доступ еще и к другим IP, то можно добавлять наверх правила так:

iptabes -I FORWARD -s 192.168.10.1 -d IP -j ACCEPT
iptabes -I FORWARD -d 192.168.10.1 -s IP -j ACCEPT
ну либо сначала эти правила с -A, а потом уже запретить все исходящие от этого клиента:
iptables -A INPUT -s 192.168.10.1 -j DROP

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

В общем, конечно ты прав, но не совсем

И пошло какое-то сплошное словоблудие...

Имеено -s важнее, так как судя по серому адресу это в конечном итоге будет NAT и потому инициатором трафика будут source пакеты.

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