управление роутером

Автор beelzebubbie, 25 Июня 2010, 01:55

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

beelzebubbie

у меня есть роутер Linksys WRT610n (Linux version 2.6.24.111 (eko@dd-wrt). В числе прочих задач он, разумеется, раздает интернет. На детский компьютер интернет раздается только казахстанский (фильтруется по mac с помощью iptables). Однако в последнее время стала возникать необходимость включать и выключать фильтр внутренних адресов (жену такой фильтр не устраивает). Реализовать на роутере включение/выключение фильтра не проблема, однако нужно чтобы этим процессом мог управлять другой пользователь (e.g. жена). Вопрос такой - как с удаленного компа заставить роутер выполнить определенный скрипт? Решение не должно быть тяжеловесным, так как роутер по ресурсам далеко не полноценный компьютер. Хотелось бы так же, чтобы решение было изящным а не какое-нибудь типа Telnet Script Executor. С удовольствием приму все идеи.

hedgeven

25 Июня 2010, 06:59 #1 Последнее редактирование: 26 Июня 2010, 07:16 от hedgeven
проще всего по ssh, например
ssh user@host 'комманда'
а для того, чтобы постоянно не вводить пароль, читаем тут.
Jah will give us everything...

hedgeven

26 Июня 2010, 12:47 #2 Последнее редактирование: 26 Июня 2010, 13:03 от hedgeven
а можно посмотреть ваш конфиг iptables для фильтрации внешнего трафа? очень уж интересно)
вот я сейчас свой набросал в роли ipfilter, но что-то с ним не так все равно...
может знающие люди на форуме подскажут

add: семен семеныч, я на output правила не написал, вот он и цепляется в нешним пирам
Jah will give us everything...

beelzebubbie

26 Июня 2010, 13:14 #3 Последнее редактирование: 26 Июня 2010, 14:03 от beelzebubbie
iptables -A $KZCH -p tcp -j REJECT --reject-with tcp-reset
iptables -A $KZCH -j REJECT --reject-with icmp-net-prohibited
iptables -I $KZCH 1 -d 178.88/14 -j ACCEPT
iptables -I $KZCH 1 -d 95.56/14 -j ACCEPT
iptables -I $KZCH 1 -d 92.46/15 -j ACCEPT
iptables -I $KZCH 1 -d 89.218/16 -j ACCEPT
iptables -I $KZCH 1 -d 88.204.128/17 -j ACCEPT
iptables -I $KZCH 1 -d 82.200.128/17 -j ACCEPT
iptables -I $KZCH 1 -d 212.154.128/17 -j ACCEPT
iptables -I $KZCH 1 -d 212.19.128/19 -j ACCEPT
у меня тут логика немного другая - я ставил во главу угла тот факт, что если делать DROP то браузер на внешних адресах будет ждать таймаута соединения.. кроме того, как я уже писал, я так и не нашел решения - КАК фильтровать реальный входящий трафик для торрент клиента и только для него?

hedgeven

26 Июня 2010, 16:08 #4 Последнее редактирование: 27 Июня 2010, 22:51 от hedgeven
[font="Verdana, Helvetica"][size="2"]вот нашел, только у меня тока не работает...

iptables v1.4.8: unknown option `--pid-owner'
Try `iptables -h' or 'iptables --help' for more information.

ЦитироватьСоответствие владельца пакета[/b]
[font="Verdana, Helvetica"][size="2"]Модуль owner позволяет проверять пакеты по идентификаторам их владельцев. Для указания владельца можно использовать идентификатор процесса, сессии, группы или отдельного пользователя. Поскольку данные о владельце являются локальными, этот модуль можно использовать только в цепочках таблицы OUTPUT. Отметим, что и для локально сгенерированных пакетов информация о владельце доступна не всегда. Многие пакеты, среди которых отклики ICMP, не содержат сведений о владельце - для таких пакетов заданное условие никогда не будет выполняться.[/size][/font]

[font="Verdana, Helvetica"][size="2"]Работая с модулем owner, не забывайте указывать в спецификации правила опцию[/size][/font]

[font="Verdana, Helvetica"][size="2"][font="Courier New"][font="Verdana, Helvetica"][size="2"][size="2"][font="Verdana, Helvetica"][size="2"]-m owner[/size][/font][/size][/size][/font][/font][/size][/font]

[font="Verdana, Helvetica"][size="2"]Для использования этого модуля в ядре должна быть включена опция Owner match support. Если при компиляции ядра для опции было выбрано значение M, потребуется также загрузка модуляipt_owner.[/size][/font]


Идентификатор пользователя
[font="Verdana, Helvetica"][size="2"]Условие --uid-owner позволяет отбирать пакеты по идентификатору пользователя (ГШВ), запустившего приложение, которое сгенерировало данный пакет. Например правило[/size][/font]

[font="Verdana, Helvetica"][size="2"][font="Courier New"][font="Verdana, Helvetica"][size="2"][size="2"][font="Verdana, Helvetica"][size="2"]iptables -A OUTPUT -m owner --uid-owner 500[/size][/font][/size][/size][/font][/font][/size][/font]

[font="Verdana, Helvetica"][size="2"]будет отбирать все пакеты, сгенерированные приложениями, которые работают от имени пользователя с идентификатором 500. Таким образом вы сможете заблокировать организацию исходящих соединений с брандмауэра от того или иного пользователя (например, разрешить такие соединения только для пользователя root).[/size][/font]


Идентификатор группы
[font="Verdana, Helvetica"][size="2"]Условие --gid-owner позволяет отбирать пакеты по идентификатору группы (GID), к которой относится запустивший приложение пользователь. Например, условию[/size][/font]

[font="Verdana, Helvetica"][size="2"][font="Courier New"][font="Verdana, Helvetica"][size="2"][size="2"][font="Verdana, Helvetica"][size="2"]iptables -A OUTPUT -m owner --gid-owner 0[/size][/font][/size][/size][/font][/font][/size][/font]

[font="Verdana, Helvetica"][size="2"]будут соответствовать только пакеты, сгенерированные приложениями пользователей из группы 0 (root). Это позволяет разрешать или запрещать организацию исходящих соединений с брандмауэра для отдельных групп пользователей.[/size][/font]


Идентификатор процесса
[font="Verdana, Helvetica"][size="2"]Условие --pid-owner позволяет проверить принадлежность пакета к указанному идентификатором (PID) процессу. Правилу[/size][/font]

[font="Verdana, Helvetica"][size="2"][font="Courier New"][font="Verdana, Helvetica"][size="2"][size="2"][font="Verdana, Helvetica"][size="2"]iptables -A OUTPUT -m owner --pid-owner 73[/size][/font][/size][/size][/font][/font][/size][/font]

[font="Verdana, Helvetica"][size="2"]будут соответствовать только пакеты, сгенерированные процессом с PID=73. Идентификаторы процессов могут достаточно часто меняться, что усложняет использование этого условия. Однако ничто не мешает собирать сведения об идентификаторах процессов в системе с помощью командыps. Приведенный ниже пример обеспечивает беспрепятственную передачу пакетов, сгенерированных процессом xinetd.[/size][/font]

[font="Verdana, Helvetica"][size="2"][font="Courier New"][font="Verdana, Helvetica"][size="2"][size="2"][font="Verdana, Helvetica"][size="2"]PID=`ps aux |grep xinetd |head -n 1 |cut -b 10-14`[/size][/font][/size][/size][/font][/font][/size][/font]

[font="Verdana, Helvetica"] [/font]

[font="Verdana, Helvetica"][size="2"][font="Courier New"][font="Verdana, Helvetica"][size="2"][size="2"][font="Verdana, Helvetica"][size="2"]/usr/local/sbin/iptables -A OUTPUT -p TCP -m owner --pid-owner $PID -j ACCEPT[/size][/font][/size][/size][/font][/font][/size][/font]


Идентификатор сессии
[font="Verdana, Helvetica"][size="2"]Условие --sid-owner позволяет проверить принадлежность пакета к указанной идентификатором (SID) сессии. Идентификатор сессии относится к процессу и всем порожденным им процессам, Правилу[/size][/font]

[font="Verdana, Helvetica"][size="2"][font="Courier New"][font="Verdana, Helvetica"][size="2"][size="2"][font="Verdana, Helvetica"][size="2"]iptables -A OUTPUT -m owner --pid-owner 120[/size][/font][/size][/size][/font][/font][/size][/font]

[font="Verdana, Helvetica"][size="2"]будут соответствовать все пакеты, сгенерированные процессами с идентификатором сессии SID=120. Идентификаторы сессий могут достаточно часто меняться, что усложняет использование этого условия. Однако ничто не мешает собирать сведения об идентификаторах процессов в системе с помощью команды ps. Приведенный ниже пример обеспечивает беспрепятственную передачу пакетов, сгенерированных web-сервером Apache и всеми порожденными им процессами[/size][/font]

[font="Verdana, Helvetica"][size="2"][font="Courier New"][font="Verdana, Helvetica"][size="2"][size="2"][font="Verdana, Helvetica"][size="2"]SID=`ps -eo sid,args |grep httpd |head -n 1 |cut -b 1-5`[/size][/font][/size][/size][/font][/font][/size][/font]

[font="Verdana, Helvetica"] [/font]

[font="Verdana, Helvetica"][size="2"][font="Courier New"][font="Verdana, Helvetica"][size="2"][size="2"][font="Verdana, Helvetica"][size="2"]/usr/local/sbin/iptables -A OUTPUT -p TCP -m owner --sid-owner $SID -j ACCEPT[/size][/font][/size][/size][/font][/font][/size][/font]

[font="Verdana, Helvetica"][size="2"][font="Courier New"][font="Verdana, Helvetica"][size="2"][size="2"][font="Verdana, Helvetica"] [/font][/size][/size][/font][/font][/size][/font]

[/size][/font]
Jah will give us everything...

beelzebubbie

это я читал.... в теории все ясно, а вот кому делать insmod и где этот модуль взять - неизвестно   http://linuxforum.kz/public/style_emoticons/<#EMO_DIR#>/rolleyes.gif\' class=\'bbc_emoticon\' alt=\':rolleyes:\' />

hedgeven

27 Июня 2010, 13:54 #6 Последнее редактирование: 27 Июня 2010, 13:55 от hedgeven
хмм... где-то читал что в модуле owner вырезали такой функционал. да и в man нет про pid ни слова

Цитироватьowner
      This module attempts to match various  characteristics  of  the  packet
      creator, for locally generated packets. This match is only valid in the
      OUTPUT and POSTROUTING chains. Forwarded packets do not have any socket
      associated with them. Packets from kernel threads do have a socket, but
      usually no owner.

      [!] --uid-owner username

      [!] --uid-owner userid[-userid]
              Matches if the packet socket's file structure (if it has one) is
              owned  by  the given user. You may also specify a numerical UID,
              or an UID range.

      [!] --gid-owner groupname

      [!] --gid-owner groupid[-groupid]
              Matches if the packet socket's file structure is  owned  by  the
              given  group.   You  may  also specify a numerical GID, or a GID
              range.

      [!] --socket-exists
              Matches if the packet is associated with a socket.

как вариант, запускать торрент от специального юзера или группы(например torrents) и прописывать в правила uid/gid
Jah will give us everything...

beelzebubbie

Цитата: hedgeven от 27 Июня 2010, 13:54хмм... где-то читал что в модуле owner вырезали такой функционал. да и в man нет про pid ни слова



как вариант, запускать торрент от специального юзера или группы(например torrents) и прописывать в правила uid/gid

без модуля это бесполезно. а вот где его взять для роутера - выяснить не удалось.