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

блокирование обращений на определенный порт

 


0

1

Схема : интернет - роутер - gentoo(iptables, dhcp сервер) - локальная сеть.

Нужно заблокировать доступ от локальной сети на некоторые порты роутера: 80, 21, ...
Нужно разрешить только некоторым IP адресам.

Как такое сделать?

★★★★

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

А в случае, если сейчас дефолтная политика FORWARD — ACCEPT, то как-то так:

iptables -A FORWARD -s <адрес1>  -m multiport -j ACCEPT
iptables -A FORWARD -s <адрес2>  -m multiport -j ACCEPT
iptables -A FORWARD -s <подсеть>/<маска> --dports <порт>,<порт> -j DROP

адрес1, адрес2 — адреса, с которых нужно разрешить доступ. <подсеть>/<маска> — твоя локальная подсеть, из которой нужно запретить доступ.

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

Немного не то. Так я заблокирою доступ к linux.
Сейчас схема:

internet<->router(192.168.0.1/24 ports: 80, 21,...)<->[(192.168.0.2/24) gentoo (192.168.4.1/28)]<->LAN (192.168.4.0/28)


Я хочу блокировать обращение к роутеру (192.168.0.1/24) на некоторые порты, но при этом чтоб клиенты из локальной сети продолжали пользоваться интернетом.

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

Но нужно знать, как сейчас настроен файрвол на генте.

export LOCAL_NET=192.168.4.0/255.255.255.248
sudo iptables -I INPUT 1 -i ${LAN} -j ACCEPT
sudo iptables -I INPUT 1 -i lo -j ACCEPT
sudo iptables -A FORWARD -i ${LAN} -s ${LOCAL_NET} -j ACCEPT
sudo iptables -A FORWARD -i ${WAN} -d ${LOCAL_NET} -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE
ymuv ★★★★
() автор топика
Последнее исправление: ymuv (всего исправлений: 2)
Ответ на: комментарий от ymuv

Я хочу блокировать обращение к роутеру (192.168.0.1/24) на некоторые порты, но при этом чтоб клиенты из локальной сети продолжали пользоваться интернетом.

Ну так к тому что тебе написали добавь -d адрес_роутера
PS Только слова -m multiport там имхо лишнии

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

LAN (192.168.4.0/28)
/28

с учетом

sudo iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE

Прям возникает вопрос:
У Вас подсетки по талонам что ли выдают?

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

PS Только слова -m multiport там имхо лишнии

Нет (хотя не знаю, может в каких-то версиях iptables/ядра необязательны). Без multiport можно указывать параметром --dport только один порт либо диапазон через двоеточие. А multiport позволяет использовать --dports, который позволяет указывать несколько произвольных портов через запятую.

Да, кстати, я протокол забыл указать, нужен ещё параметр -p <протокол (tcp,udp)>

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

В той части у Вас порты не были указаны, первые две строки :) Поэтому я так и написал.
А в третьей Вы уже забыли его указать, так же как и протокол, но это мелочи. :)

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

Всем спасибо, сделал так (для 80 порта):

sudo iptables -A FORWARD -s 192.168.4.1 -p tcp --destination-port 80 -d 192.168.0.1 -j ACCEPT
sudo iptables -A FORWARD -s 192.168.4.0/29  -p tcp --destination-port 80 -d 192.168.0.1 -j DROP


У Вас подсетки по талонам что ли выдают?

А зачем мне дома /24? У меня подключается 2 девайса + несколько адресов на запас.

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

/29

Еще сократили?

А зачем мне дома /24? У меня подключается 2 девайса + несколько адресов на запас.

Суровые я смотрю у Вас условия дома. Если ограничения по ip вводите из 6-ти девайсов.

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

/29

Еще сократили?

Так изначально было, я ошибся просто.

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

Суровые я смотрю у Вас условия дома. Если ограничения по ip вводите из 6-ти девайсов.

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

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

А что будет с ваше drop правило если я ваш сосед и задам себя вручную ip примерно 192.168.4.10 ?


192.168.4.0/29
HostMin: 192.168.4.1
HostMax: 192.168.4.6

Не думаю что соседи назначат вручную адрес внутри сети. Даже если назначат, то на разрешенном IP всегда живет девайс.

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

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

iptables -A FORWARD -s ${BAD_IP} -p tcp -d 192.168.4.0/29 -j DROP
Все ли правильно?

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

-s — это источник, -d — назначение. То есть, логичнее наоборот -s 192.168.4.0/29 -p tcp -d ${BAD_IP}. Но твой вариант тоже рабочий, т.к. обратно пакеты с заблокированных подсетей в локальную не пойдут.

te111011010
()
Ответ на: комментарий от ymuv

Наоборот -s ip_локальный -d куда_нельзя. Протокол если не нужно можно и не указывать.
И смотри за местом в цепочке при добавлении правила.
Если будет например так;
iptables -A FORWARD -s 192.168.4.0/29 -j ACCEPT
iptables -A FORWARD -s 192.168.4.0/29 -d 10.0.0.0/24(блокируемая для примера сеть) -j DROP
То работать не будет, т.к. первым сработает правило выше с ACCEPT
А вот так
iptables -A FORWARD -s 192.168.4.0/29 -d 10.0.0.0/24(блокируемая для примера сеть) -j DROP
iptables -A FORWARD -s 192.168.4.0/29 -j ACCEPT
Работать будет т.к. первым будет правило с DROP

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

-s — это источник, -d — назначение. То есть, логичнее наоборот -s 192.168.4.0/29 -p tcp -d ${BAD_IP}. Но твой вариант тоже рабочий, т.к. обратно пакеты с заблокированных подсетей в локальную не пойдут.

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

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

anc, te111011010 Еще вопрос.
1. Как сделать, чтоб к внутренним IP не можно было подключатся к определенным портам с внешней (если порты проброшены)

iptables -A FORWARD -s 192.168.4.0/29 -p tcp -m multiport --dports 22,80, -d ${BAD_IP} -j DROP
iptables -A FORWARD -s 192.168.4.0/29 -j ACCEPT

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

Как сделать, чтоб к внутренним IP не можно было подключатся к определенным портам с внешней (если порты проброшены)

Брр, вообще формулировку не распарсил. Можно по русски плиз :)
Какая задача-то? И с примером на основе твоей конфигурации, кому, куда и чего «нельзя сделать»?

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

Наоборот, выше же уже два раза написали -s откуда -d куда.

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