URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 5255
[ Назад ]

Исходное сообщение
"Прошу помочь написать правила для iptables"

Отправлено longcat , 04-Июн-14 11:47 
Собственно, почитал вот это http://www.opennet.me/docs/RUS/iptables/#HOWARULEISBUILT и много другого, но толком ничего не понял.
Стоит задача:
1)настроить шлюз на debian
2)настроить проброс портов для всяких внешних приложений
3)настроить маршрутизацию внутри сети (если это нужно, потому как я не догоняю, как шлюз будет и будет ли вообще (все компы и точки доступа в локале подключены через тупой свитч)  пересылать пакеты от одного локального клиента другому локальному клиенту)
4)настроить удаленный доступ к серваку по ssh
5)правила iptables поставить в автозагрузку
6)запретить определенные сайты для всех кроме определенных ip

Что я сделал, но ,к сожалению, нормально даже это не заработало:
1) ну дебиан7 я поставил, управление по ssh, обе сетевые настроены: eth1 это локалка,
eth0 это в интернет(статика). Настроил dhcp, с ним все как надо.
2)для блокировки сайтов поставил squid3, запускается с конфигом без ошибок, настроен как прозрачный, порт 3128
3)на этапе настроек iptables уперся в не понимание его работы, на руках только готовые правила отсюда http://howitmake.ru/blog/ubuntu/86.html
раскомментил строку net.ipv4.ip_forward=1 в файле /etc/sysctl.conf

iptables -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth0 -j REJECT
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

с этими настройками интернет заработал на одном ноутбуке подключенном через точку доступа->свитч->шлюз, кучу других в интернет не пустило, большинство подключены к свитчу

настройки iptables загружаю через строку в /etc/network/interfaces # iptables-restore > /etc/iptables-save

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

подскажите, пожалуйста, какие правила написаны не правильно, и где бы почитать мануал попроще чем по ссылке в начале

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
это правило подменяет адрес пакетам из локальной сети?
для обратных пакетов нужно ли что либо еще?
#iptables -A FORWARD -i eth0 -o eth0 -j REJECT
это правило для маршрутизации пакетов в локалке, без интернета?
# iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
вот это правило вообще не понимаю
хочу добавить проброс портов правилом
iptables -t nat -A PREROUTING -d "внешний ip" -p tcp -m tcp --dport "внешний порт" -j DNAT --to-destination "локальный компьютер":"внутренний порт"
заработает ли оно и куда ставить все эти пробросы портов?

# правила для прокси, вроде бы перенаправляют, раз один компьютер сайты открывал
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to "ipпрокси_и_шлюза":3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
будет ли их достаточно для открывания страничек в том числе по https?

#для ssh, достаточно ли этого правила для подключения с обеих сторон от шлюза?
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

я понимаю, что никто не обязан мне помогать или что нибудь объяснять, буду благодарен за любую помощь, ссылки, объяснения, критику и прочее.


Содержание

Сообщения в этом обсуждении
"Прошу помочь написать правила для iptables"
Отправлено reader , 04-Июн-14 13:13 
> Собственно, почитал вот это http://www.opennet.me/docs/RUS/iptables/#HOWARULEISBUILT
> и много другого, но толком ничего не понял.
> Стоит задача:
> 1)настроить шлюз на debian
> 2)настроить проброс портов для всяких внешних приложений
> 3)настроить маршрутизацию внутри сети (если это нужно, потому как я не догоняю,
> как шлюз будет и будет ли вообще (все компы и точки
> доступа в локале подключены через тупой свитч)  пересылать пакеты от
> одного локального клиента другому локальному клиенту)

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

>[оверквотинг удален]
> только готовые правила отсюда http://howitmake.ru/blog/ubuntu/86.html
> раскомментил строку net.ipv4.ip_forward=1 в файле /etc/sysctl.conf
> iptables -F
> iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
> iptables -A FORWARD -i eth0 -o eth0 -j REJECT
> iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
> с этими настройками интернет заработал на одном ноутбуке подключенном через точку доступа->свитч->шлюз,
> кучу других в интернет не пустило, большинство подключены к свитчу
> настройки iptables загружаю через строку в /etc/network/interfaces # iptables-restore
> > /etc/iptables-save

это не загрузка ,а перенаправление вывода iptables-restore в файл /etc/iptables-save

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

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

> # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
> это правило подменяет адрес пакетам из локальной сети?

да
> для обратных пакетов нужно ли что либо еще?

автоматом, в мануале сказано
> #iptables -A FORWARD -i eth0 -o eth0 -j REJECT
> это правило для маршрутизации пакетов в локалке, без интернета?

блокирует с уведомлением пакеты которые пришли и должны были уйти через eth0
> # iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
> вот это правило вообще не понимаю

при проблемах с mtu, если проблем нет то не нужно его вставлять, ну и логичней было бы -A, а не -I
> хочу добавить проброс портов правилом
> iptables -t nat -A PREROUTING -d "внешний ip" -p tcp -m tcp
> --dport "внешний порт" -j DNAT --to-destination "локальный компьютер":"внутренний порт"
> заработает ли оно и куда ставить все эти пробросы портов?

да если в таблице фильтров разрешено прохождение для этих пакетов и для ответов
> # правила для прокси, вроде бы перенаправляют, раз один компьютер сайты открывал
> iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j
> DNAT --to "ipпрокси_и_шлюза":3128

да
> iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j
> REDIRECT --to-port 3128

заварачивать на прокси то что пришло с инета опасно
> будет ли их достаточно для открывания страничек в том числе по https?

https будет идти через  MASQUERADE

> #для ssh, достаточно ли этого правила для подключения с обеих сторон от
> шлюза?
> iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

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

> я понимаю, что никто не обязан мне помогать или что нибудь объяснять,
> буду благодарен за любую помощь, ссылки, объяснения, критику и прочее.


"Прошу помочь написать правила для iptables"
Отправлено longcat , 04-Июн-14 14:30 
спасибо огромное за помощь

> при проблемах с mtu, если проблем нет то не нужно его вставлять,
> ну и логичней было бы -A, а не -I
>> хочу добавить проброс портов правилом
>> iptables -t nat -A PREROUTING -d "внешний ip" -p tcp -m tcp
>> --dport "внешний порт" -j DNAT --to-destination "локальный компьютер":"внутренний порт"
>> заработает ли оно и куда ставить все эти пробросы портов?
> да если в таблице фильтров разрешено прохождение для этих пакетов и для
> ответов

появился один вопрос:
правило такого вида будет разрешать пакетам из правила выше проходить, или я что-то написал не так?
iptables -I FORWARD 1 -m multiport --dport "тут перечисляю через запятую все проброшенные порты" -j ACCEPT


"Прошу помочь написать правила для iptables"
Отправлено reader , 04-Июн-14 15:01 
>[оверквотинг удален]
>>> iptables -t nat -A PREROUTING -d "внешний ip" -p tcp -m tcp
>>> --dport "внешний порт" -j DNAT --to-destination "локальный компьютер":"внутренний порт"
>>> заработает ли оно и куда ставить все эти пробросы портов?
>> да если в таблице фильтров разрешено прохождение для этих пакетов и для
>> ответов
> появился один вопрос:
> правило такого вида будет разрешать пакетам из правила выше проходить, или я
> что-то написал не так?
> iptables -I FORWARD 1 -m multiport --dport "тут перечисляю через запятую все
> проброшенные порты" -j ACCEPT

--dport 1024:65535, но -m multiport --dports 80,443
синтаксис проверяйте по man iptables, по сравнению с Tutorial 1.1.19 он немного изменился, но общее представление осталось тем же
И ответные пакеты разрешите.


"Прошу помочь написать правила для iptables"
Отправлено longcat , 05-Июн-14 12:06 
еще раз спасибо
если не сложно, гляньте конфиг который получился в итоге, может что-то не правильно

iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source "внешний ip"
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 4000 -j DNAT --to-destination 192.168.0.77:3389
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

будет ли это пропускать локальных пользователей на сайты через прокси на 3128 (с условием что прокси настроена правильно), будет ли работать проброс портов 4000->3389 , и будут ли ответные пакеты пропускаться, или для них еще что-то нужно добавить?

или правило для ответных пакетов вида
iptables -A INPUT -i eth0 -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
будет пропускать ответные пакеты?


"Прошу помочь написать правила для iptables"
Отправлено reader , 05-Июн-14 21:42 
>[оверквотинг удален]
> если не сложно, гляньте конфиг который получился в итоге, может что-то не
> правильно
> iptables -P FORWARD ACCEPT
> iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source "внешний ip"
> iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports
> 3128
> iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 4000 -j
> DNAT --to-destination 192.168.0.77:3389
> iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
> будет ли это пропускать локальных пользователей на сайты через прокси на 3128

вы запрос клиента завернули на прокси, далее прокси отправит свой запрос, он пойдет через OUTPUT, ответ от сайта к прокси пойдет через INPUT если в них разрешено то что нужно для прохождения пакетов то ваши клиенты увидят странички, но это только для 80 порта, остальное от/к ним пойдет через FORWARD , SNAT

> (с условием что прокси настроена правильно), будет ли работать проброс портов
> 4000->3389 , и будут ли ответные пакеты пропускаться, или для них
> еще что-то нужно добавить?

в PREROUTING с помощью DNAT вы меняете адрес и порт назначения, пакет пойдет через FORWARD
а там у вас похоже все во все стороны разрешено и ответ пойдет через FORWARD

> или правило для ответных пакетов вида
> iptables -A INPUT -i eth0 -p tcp -m state --state RELATED,ESTABLISHED -j
> ACCEPT

это для ответов на запросы ушедшие через OUTPUT, от машины где настраиваете iptables

INPUT/OUTPUT - к/от машины где настраиваете iptables
FORWARD - то что идет транзитом через машину где настраиваете iptables

> будет пропускать ответные пакеты?


"Прошу помочь написать правила для iptables"
Отправлено longcat , 06-Июн-14 05:21 
спасибо огромное, вы мне очень помогли

"Прошу помочь написать правила для iptables"
Отправлено longcat , 10-Июн-14 07:43 
пожалуйста, подскажите еще одно

хочу заблокировать доступ к vk.com и youtube.com по ip для всех кроме 5 человек со статикой,
хотел через сквид, а он вроде https не умеет фильтровать

собственно правила

iptables -A -s 192.168.0.53 -d vk.com --dport 443 -j ACCEPT
iptables -A -s 192.168.0.54 -d vk.com --dport 443 -j ACCEPT
iptables -A -s 192.168.0.55 -d vk.com --dport 443 -j ACCEPT
iptables -A -s 192.168.0.56 -d vk.com --dport 443 -j ACCEPT
iptables -A -s 192.168.0.12 -d vk.com --dport 443 -j ACCEPT
iptables -A -d vk.com --dport 443 -j DROP
это будет давать доступ к вк по 443 порту группе ip, а остальным закрывать? или последнее правило будет закрывать доступ потому что стоит последним, или пакет удовлетворяющий правилу выше не будет отброшен последним правилом и следовательно пройдет?



"Прошу помочь написать правила для iptables"
Отправлено Andrey Mitrofanov , 10-Июн-14 10:00 
> пожалуйста, подскажите еще одно
> хочу заблокировать доступ к vk.com и youtube.com по ip для всех кроме
> 5 человек со статикой,

http://www.opennet.me/openforum/vsluhforumID10/3830.html#41
продолжение осмотра:
ggogle://блокировка вконтакте iptables site:opennet.ru
ssl-bump vk.com site:opennet.ru


"Прошу помочь написать правила для iptables"
Отправлено longcat , 10-Июн-14 14:22 
iptables -A FORWARD -s 192.168.0.1-192.168.0.11 -d vk.com -j REJECT

собственно такое правило не принимается, потому как диапазон ip указан не правильно, но мне не нужен диапазон вообще весь

могу ли я написать диапазон таким образом, чтобы ограничить ip 0.1-0.11 0.13-0.52 0.57-0.210 0.212-0.254?

и если могу, то приведите пример, пожалуйста, если вас не затруднит


"Прошу помочь написать правила для iptables"
Отправлено reader , 10-Июн-14 15:33 
> iptables -A FORWARD -s 192.168.0.1-192.168.0.11 -d vk.com -j REJECT
> собственно такое правило не принимается, потому как диапазон ip указан не правильно,
> но мне не нужен диапазон вообще весь
> могу ли я написать диапазон таким образом, чтобы ограничить ip 0.1-0.11 0.13-0.52
> 0.57-0.210 0.212-0.254?

каждый диапазон по отдельности через -m iprange (описание в man), только толку от этого -d vk.com не заблокирует все ip которые есть у них, вы бы прочитали весь топик по ссылке приведенную Андреем

> и если могу, то приведите пример, пожалуйста, если вас не затруднит