задача для iptables

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)

задача для iptables

Сообщение sunny1983 »

Прошу совета опытных. Как решить некоторые задачи iptables.

1.сохранение и восстановление правил с помощью iptables-save и iptables-restore.
С сохранением я уже решил. Создал запись в crontab

Код: Выделить всё

0               */2              *      *       *       /sbin/iptables-save -c > /var/lib/iptables-save

Таким образом каждые два часа правила вместе со счётчиками сохраняются. Нужно это на случай внезапного отключения сервера. Вот я не соображу куда нужно прописать iptables-restore, чтобы при загрузке правила восстанавливались. Пробовал создать скрипт /etc/network/if-up.d/iptables-restore.sh:

Код: Выделить всё

#! /bin/sh
cat /etc/iptables-save | iptables-restore -c

ничего не получается, правила при загрузке не восстанавливаются

2.привязка IP к MAK.
локалка - eth1, интернет - ppp0, есть правило SNAT, благодаря которому пользователи выходят в интернет. При этом в цепочке FORWARD прописана фильтрация, кому в интернет доступ разрешён, а кому нет. Как сделать, чтобы заблокированный пользователь не мог выйти в интернет поменяв свой IP? Как сделать привязку IP к MAK?
Спасибо сказали:
Sleeping Daemon
Сообщения: 1450

Re: задача для iptables

Сообщение Sleeping Daemon »

sunny1983 писал(а):
05.04.2012 07:37
Прошу совета опытных. Как решить некоторые задачи iptables.

1.сохранение и восстановление правил с помощью iptables-save и iptables-restore.
С сохранением я уже решил. Создал запись в crontab

Код: Выделить всё

0               */2              *      *       *       /sbin/iptables-save -c > /var/lib/iptables-save

Таким образом каждые два часа правила вместе со счётчиками сохраняются. Нужно это на случай внезапного отключения сервера. Вот я не соображу куда нужно прописать iptables-restore, чтобы при загрузке правила восстанавливались. Пробовал создать скрипт /etc/network/if-up.d/iptables-restore.sh:

Код: Выделить всё

#! /bin/sh
cat /etc/iptables-save | iptables-restore -c

ничего не получается, правила при загрузке не восстанавливаются

2.привязка IP к MAK.
локалка - eth1, интернет - ppp0, есть правило SNAT, благодаря которому пользователи выходят в интернет. При этом в цепочке FORWARD прописана фильтрация, кому в интернет доступ разрешён, а кому нет. Как сделать, чтобы заблокированный пользователь не мог выйти в интернет поменяв свой IP? Как сделать привязку IP к MAK?

Правила нужно сохранять в /etc/sysconfig/iptables
В /etc/init.d/ должен быть статовый скрипт, который и загружает правила.
Привязка по MAC? Ну можно, но кто мешает вместе с IP поменять и MAC ?
Можно вообще давать доступ по MAC, а не по IP.
Спасибо сказали:
neol
Сообщения: 600
ОС: Debian Stable

Re: задача для iptables

Сообщение neol »

sunny1983 писал(а):
05.04.2012 07:37
Пробовал создать скрипт /etc/network/if-up.d/iptables-restore.sh:

Восстанавливать из того же файла, в который сохраняете не пробовали? (: У вас пути разные. Ну и проверить есть ли права выполнения у скрипта.

2. Если перестать заниматься фигней и перевести всех пользователей на ограниченные учетки, решиться много проблем. В том числе и эта.
А привязать ip к mac можно на свиче (если он это умеет) или переписав правила в виде iptables -A FORWARD -m mac --mac-source XX:XX:XX:XX:XX:XX -j internet

Sleeping Daemon писал(а):
05.04.2012 09:26
Правила нужно сохранять в /etc/sysconfig/iptables

Вы сейчас точно про дебиан?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: задача для iptables

Сообщение sash-kan »

sunny1983 писал(а):
05.04.2012 07:37
привязка IP к MAK
почитайте эту секцию:
$ man -P 'less -rp "^MATCH EXTENSIONS"' iptables

neol писал(а):
05.04.2012 09:44
Sleeping Daemon писал(а):
05.04.2012 09:26
Правила нужно сохранять в /etc/sysconfig/iptables

Вы сейчас точно про дебиан?
какая разница, как называется файл?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: задача для iptables

Сообщение drBatty »

sunny1983 писал(а):
05.04.2012 07:37
1.сохранение и восстановление правил с помощью iptables-save и iptables-restore.
С сохранением я уже решил. Создал запись в crontab

я вот что не могу понять: как вы правила изменяете? Почему нельзя изменять скрипт с правилами, и запускать этот скрипт после их изменения (конечно в скрипте нужно в начале прописать удаление/очистку всех цепочек)? В этом случае вы избавитесь от костыля в crontab, который может и не сработать, если правила изменились, но не успели сохраниться.
sunny1983 писал(а):
05.04.2012 07:37
Как сделать привязку IP к MAK?

уже сказали, что можно привязать их к MAC'адресу. Ну и кроме того, IP адрес вообще говоря выдаётся шлюзом. Вот в этом шлюзе можно прописать, что клиенту с MAC таким-то, выдавать IP такой-то. Это в настройках DHCP-сервера. Ну и конечно, этот самый MAC клиент вообще говоря может и поменять, это вроде все современные карточки позволяют. Потому, в случае таких клиентов и используется какая-нить авторизация, вроде логин/пароль.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
arkhnchul
Сообщения: 2284
Статус: Толчковый инженер
ОС: Debian, Fedora

Re: задача для iptables

Сообщение arkhnchul »

вообще, в репах лежит iptables-persistent - скрипт в /etc/init.d, каковой прописывается как стартовый и восстанавливает правила. Лучше утащить из сида, там оно еще и сохраняет и еще чего-то.
Losing is fun!
Спасибо сказали:
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)

Re: задача для iptables

Сообщение sunny1983 »

neol писал(а):
05.04.2012 09:44
Sleeping Daemon писал(а):
05.04.2012 09:26
Правила нужно сохранять в /etc/sysconfig/iptables

Вы сейчас точно про дебиан?

Вы правы, у меня Debian и у меня нет каталога /etc/sysconfig. Вообще, в каком каталоге сохранять будет правильнее?

drBatty писал(а):
05.04.2012 13:37
я вот что не могу понять: как вы правила изменяете? Почему нельзя изменять скрипт с правилами, и запускать этот скрипт после их изменения (конечно в скрипте нужно в начале прописать удаление/очистку всех цепочек)? В этом случае вы избавитесь от костыля в crontab, который может и не сработать, если правила изменились, но не успели сохраниться.

Почему "костыль" и как тогда правильно? Изменять правила возникает необходимость раз в несколько месяцев. Поэтому при сохранении важнее сохранить счётчики. То что может не сработать, я думал, если загрузка компьютера произойдёт в момент начала чётного часа.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21520
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: задача для iptables

Сообщение Bizdelnick »

sunny1983 писал(а):
06.04.2012 00:17
Вы правы, у меня Debian и у меня нет каталога /etc/sysconfig. Вообще, в каком каталоге сохранять будет правильнее?

Правильнее будет, как уже отметили выше, установить iptables-persistent и не заниматься велосипедостроением. Если так интересно, сохраняет он правила в /etc/iptables/rules.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)

Re: задача для iptables

Сообщение sunny1983 »

iptables-persistent поставил. После перезагрузки сервера он правила востанавливает, но без счётчиков. Сохраняю правила также, через crontab, но уже в /etc/iptables/rules. Как более правильно, так и не понял. Вобщем, вопрос по прежнему открыт.
Спасибо сказали:
Аватара пользователя
DaemonTux
Сообщения: 1480
Статус: Юный падаван
ОС: Gentoo

Re: задача для iptables

Сообщение DaemonTux »

А зачем сохранять павило через определенное время? Можно же после внесения изменнений вызывать принудительное сохранение.
Vladivostok Linux User Group
Спасибо сказали:
Аватара пользователя
arkhnchul
Сообщения: 2284
Статус: Толчковый инженер
ОС: Debian, Fedora

Re: задача для iptables

Сообщение arkhnchul »

sunny1983 писал(а):
13.04.2012 00:32
iptables-persistent поставил. После перезагрузки сервера он правила востанавливает, но без счётчиков.
говорил же, из сида утащите. Там со счетчиками.
Losing is fun!
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: задача для iptables

Сообщение drBatty »

sunny1983 писал(а):
06.04.2012 00:17
Почему "костыль" и как тогда правильно? Изменять правила возникает необходимость раз в несколько месяцев. Поэтому при сохранении важнее сохранить счётчики. То что может не сработать, я думал, если загрузка компьютера произойдёт в момент начала чётного часа.

костыль касается самих правил - правила должны загружаться так, как это принято в данном дистрибутиве, или например в /etc/rc.local (это не правильно, за то везде работает)
именно там их и надо менять.

А что касается счётчиков, то я сомневаюсь, что они меняются настолько редко, что сохранять их надо только 1 раз в 2 часа. Надо-бы почаще. И, ИМХО, при плановой перезагрузке их сохранение надо записывать в скрипте, который выполняется во время выключения (не помню, как он в Deb'е называется), ну а при аварии счёт можно и с нуля начать ИМХО. Всё равно ошибка будет. Или там переполнение счётчиков...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
neol
Сообщения: 600
ОС: Debian Stable

Re: задача для iptables

Сообщение neol »

sunny1983 писал(а):
06.04.2012 00:17
Вы правы, у меня Debian и у меня нет каталога /etc/sysconfig. Вообще, в каком каталоге сохранять будет правильнее?

По логике где-то в var (потому что по условию оно достаточно часто меняется). А вообще пофиг. Я потому и удивился слову "нужно" в контексте дебиан. Это вроде нигде не прописано (или я не видел).

sunny1983 писал(а):
13.04.2012 00:32
iptables-persistent поставил. После перезагрузки сервера он правила востанавливает, но без счётчиков. Сохраняю правила также, через crontab, но уже в /etc/iptables/rules. Как более правильно, так и не понял. Вобщем, вопрос по прежнему открыт.

Сохранение можно повесить на post-down, загрузку на pre-up. И крон будет не нужен. Не?
Спасибо сказали:
Аватара пользователя
sgfault
Сообщения: 586
Статус: -

Re: задача для iptables

Сообщение sgfault »

neol писал(а):
13.04.2012 13:36
sunny1983 писал(а):
06.04.2012 00:17
Вы правы, у меня Debian и у меня нет каталога /etc/sysconfig. Вообще, в каком каталоге сохранять будет правильнее?

По логике где-то в var (потому что по условию оно достаточно часто меняется).

Но это все же конфиг. К тому же, где именно в var?
FHS 2.3
cache Application cache data
lib Variable state information
local Variable data for /usr/local
lock Lock files
log Log files and directories
opt Variable data for /opt
run Data relevant to running processes
spool Application spool data
tmp Temporary files preserved between system reboots

Разве что в /var/lib, который все равно не подходит
/var/lib : Variable state information
Purpose

This hierarchy holds state information pertaining to an application or the system. State information is data that programs modify while they run, and that pertains to one specific host. Users must never need to modify files in /var/lib to configure a package's operation.

Не говоря уже про то, что если var не смонтирован, получается, iptables работает без конфига? Что-то не очень логично как-то.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: задача для iptables

Сообщение drBatty »

sgfault писал(а):
13.04.2012 13:51
Но это все же конфиг. К тому же, где именно в var?

не, ЭТО не конфиг. Это конфиг+данные. Конфиг тут - правила, которые должны лежать в /etc/, а вот счётчики - временные данные, и их надо хранить в /var/.
ну и т.к. эти данные ни к чему не подходят, то их надо хранить либо просто в /var/ либо в специальном каталоге в /var/.
sgfault писал(а):
13.04.2012 13:51
Не говоря уже про то, что если var не смонтирован, получается, iptables работает без конфига? Что-то не очень логично как-то.

дык iptables и НЕ должна работать без /var/, ей просто не с кем работать, ведь все демоны хранят свои временные данные как раз именно в /var/. Т.е., если /var/ пока ещё не смонтирована, то и счётчики изменять некому (:
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: задача для iptables

Сообщение Bluetooth »

Bizdelnick писал(а):
06.04.2012 00:37
sunny1983 писал(а):
06.04.2012 00:17
Вы правы, у меня Debian и у меня нет каталога /etc/sysconfig. Вообще, в каком каталоге сохранять будет правильнее?

Правильнее будет, как уже отметили выше, установить iptables-persistent и не заниматься велосипедостроением. Если так интересно, сохраняет он правила в /etc/iptables/rules.

Век живи, век учись :)
Я всегда в post-up интерфейса пихал рестор. Пару раз задумывался "а может есть безвелосипедный способ?", но дальше вопроса самому себе не заходил :)
Спасибо сказали:
Sleeping Daemon
Сообщения: 1450

Re: задача для iptables

Сообщение Sleeping Daemon »

neol писал(а):
05.04.2012 09:44
sunny1983 писал(а):
05.04.2012 07:37
Пробовал создать скрипт /etc/network/if-up.d/iptables-restore.sh:

Восстанавливать из того же файла, в который сохраняете не пробовали? (: У вас пути разные. Ну и проверить есть ли права выполнения у скрипта.

2. Если перестать заниматься фигней и перевести всех пользователей на ограниченные учетки, решиться много проблем. В том числе и эта.
А привязать ip к mac можно на свиче (если он это умеет) или переписав правила в виде iptables -A FORWARD -m mac --mac-source XX:XX:XX:XX:XX:XX -j internet

Sleeping Daemon писал(а):
05.04.2012 09:26
Правила нужно сохранять в /etc/sysconfig/iptables

Вы сейчас точно про дебиан?

Я про нормальный дисрибутив Linux. А про дебиан, кажется нисказано ни слова.
Спасибо сказали:
Аватара пользователя
arkhnchul
Сообщения: 2284
Статус: Толчковый инженер
ОС: Debian, Fedora

Re: задача для iptables

Сообщение arkhnchul »

Sleeping Daemon писал(а):
13.04.2012 16:19
Я про нормальный дисрибутив Linux. А про дебиан, кажется нисказано ни слова.

Ты почто боярыню обидел? Чем дебиан не "нормальный дистрибутив"?) /etc/sysconfig/iptables - чисто красношляпная приблуда, больше нигде не видел сохранения втуда.
Losing is fun!
Спасибо сказали:
Аватара пользователя
sgfault
Сообщения: 586
Статус: -

Re: задача для iptables

Сообщение sgfault »

drBatty писал(а):
13.04.2012 14:11
sgfault писал(а):
13.04.2012 13:51
Но это все же конфиг. К тому же, где именно в var?

не, ЭТО не конфиг. Это конфиг+данные. Конфиг тут - правила, которые должны лежать в /etc/, а вот счётчики - временные данные, и их надо хранить в /var/.
ну и т.к. эти данные ни к чему не подходят, то их надо хранить либо просто в /var/ либо в специальном каталоге в /var/.

Конфиг+данные, да. Но я считаю ваш вывод "т.к. эти данные ни к чему не подходят, то их надо хранить <..> в /var" безосновательным. Почему вы делаете вывод в пользу "данных", а не в пользу "конфига"? Не говоря уже про то, что таким образом у вас в /var получается файл, который может редактироваться пользователем, а не программой (это противоречит описанию /var/lib, хотя про весь /var я такого не нашел).

drBatty писал(а):
13.04.2012 14:11
sgfault писал(а):
13.04.2012 13:51
Не говоря уже про то, что если var не смонтирован, получается, iptables работает без конфига? Что-то не очень логично как-то.

дык iptables и НЕ должна работать без /var/, ей просто не с кем работать, ведь все демоны хранят свои временные данные как раз именно в /var/. Т.е., если /var/ пока ещё не смонтирована, то и счётчики изменять некому (:

То, что (возможно) некому менять счетчики, я считаю, недостаточное обоснование для помещения конфига (пусть и с данными) в /var.
Спасибо сказали:
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)

Re: задача для iptables

Сообщение sunny1983 »

Счётчики - штука полезная. По ним можно отследить кто из локалки сколько трафика жрёт. Но я смотрю, сколько мы тут не обсуждаем, но так и не выяснили как восстанавливать значения счетчиков в случае аварийной перезагрузки.
А сейв-файл правил редактировать не рекомендуется, как я где-то читал, поэтому скорее /var чем /etc.

А с /etc/iptables/if-pre-up.d я поэксперементирую когда до работы доберусь.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: задача для iptables

Сообщение sash-kan »

sunny1983 писал(а):
15.04.2012 13:42
как восстанавливать значения счетчиков в случае аварийной перезагрузки
из /lib/astral, конечно же·
ведь только там сохраняется содержимое оперативной памяти всех компьютеров при аварийной перезагрузке·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)

Re: задача для iptables

Сообщение sunny1983 »

Что-то не получается поэксперементировать.
Во первых не пойму откуда запускается скрипт /etc/init.d/iptables-persistent. Думал, что как и все init-скрипты при помощи симплинка S****** в /etc/rc2.d, но там нет никакого симплинка.
Спасибо сказали:
Аватара пользователя
arkhnchul
Сообщения: 2284
Статус: Толчковый инженер
ОС: Debian, Fedora

Re: задача для iptables

Сообщение arkhnchul »

ну какбе его туда еще добавить надо. update-rc.d iptables-persistent enable
Losing is fun!
Спасибо сказали:
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)

Re: задача для iptables

Сообщение sunny1983 »

Так. iptables-persistent удалил. Снова пробую через /etc/network/if-pre-up.d/iptables-restore.sh
Содержимое /etc/network/if-pre-up.d/iptables-restore.sh:

Код: Выделить всё

#! /bin/sh
cat /var/lib/iptables-save | /sbin/iptables-restore -c

Содержимое /var/lib/iptables-save:

Код: Выделить всё

# Generated by iptables-save v1.4.8 on Fri Apr 20 16:15:53 2012
*filter
:INPUT ACCEPT [166:54773]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [137:15029]
[1454:95187] -A FORWARD -s 192.168.50.0/24 -i eth1 -o ppp0 -j ACCEPT
[692:43549] -A FORWARD -d 192.168.50.0/24 -i ppp0 -o eth1 -j ACCEPT
[3166:389680] -A FORWARD -s 10.10.10.0/24 -i eth1 -o ppp0 -j ACCEPT
[2290:415720] -A FORWARD -d 10.10.10.0/24 -i ppp0 -o eth1 -j ACCEPT
COMMIT
# Completed on Fri Apr 20 16:15:53 2012
# Generated by iptables-save v1.4.8 on Fri Apr 20 16:15:53 2012
*nat
:PREROUTING ACCEPT [9256:538062]
:POSTROUTING ACCEPT [19:2418]
:OUTPUT ACCEPT [216:14634]
[8077:430482] -A POSTROUTING -o ppp0 -j SNAT --to-source 94.228.195.209
COMMIT
# Completed on Fri Apr 20 16:15:53 2012

При перезагрузке правила не восстанавливаются.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: задача для iptables

Сообщение sash-kan »

sunny1983 писал(а):
20.04.2012 15:50
#! /bin/sh
просто классика, я считаю·

почему так часто в это место столь много людей вставляет пробел?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)

Re: задача для iptables

Сообщение sunny1983 »

Пробел убрал, но всё равно не работает. Ну, если запустить скрипт /etc/network/if-pre-up.d/iptables-restore.sh вручную, то правила восстанавливаются, а вот при перезагрузке не восстанавливаются.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: задача для iptables

Сообщение sash-kan »

а вообще скрипт запускается? (при загрузке, естественно)
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)

Re: задача для iptables

Сообщение sunny1983 »

Ну, если он находится в каталоге /etc/network/if-pre-up.d он должен запускаться при загрузке. Однако похоже не запускается. Вот понять бы почему.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: задача для iptables

Сообщение sash-kan »

sunny1983 писал(а):
23.04.2012 22:33
Однако похоже не запускается
так проверьте·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)

Re: задача для iptables

Сообщение sunny1983 »

А как проверить то?
Спасибо сказали: