The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"интерфейс добавления правил в ipfw"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Информационная безопасность (BSD ipfw, ipf, ip-filter / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"интерфейс добавления правил в ipfw"  +/
Сообщение от Tonya_aka_Slim email(ok) on 12-Авг-08, 17:27 
доброго времени!

Подскажите пожалуйста каким образом можно прикрутить к ipfw простейший web-интерфейс удаленого добавления правил?

Иными словами, человеку, не разбирающемуся в Unix и не имеющему доступ к консоли трубется дать инструмент запрета определенных внешних ресурсов (предположительно, путем добавления правил фаера, либо есть другие соображения?)
БЫть может есть готовые решения? я не нашел

зараннее спасибо!

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "интерфейс добавления правил в ipfw"  +/
Сообщение от Pahanivo email(ok) on 12-Авг-08, 18:07 
>Иными словами, человеку, не разбирающемуся в Unix и не имеющему доступ к консоли трубется дать инструмент запрета определенных внешних ресурсов

это тоже самое что дать макаке в зоопарке гранату ))

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "интерфейс добавления правил в ipfw"  +/
Сообщение от hate email on 12-Авг-08, 18:41 

>Иными словами, человеку, не разбирающемуся в Unix...

... нехрен в нем и ковыряться...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "интерфейс добавления правил в ipfw"  +/
Сообщение от Tonya_aka_Slim email(ok) on 12-Авг-08, 19:10 

>
> ... нехрен в нем и ковыряться...
>

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

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "интерфейс добавления правил в ipfw"  +/
Сообщение от Pahanivo email(ok) on 12-Авг-08, 20:09 
ты видимо сам в никсах неселен ибо несеш чушь, и вообще путаешь понятия ipfw,ip,site.
Начнем с того что речь о разных уровнях модели ISO/OSI.


Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

11. "интерфейс добавления правил в ipfw"  +/
Сообщение от Tonya_aka_Slim email(??) on 14-Авг-08, 16:19 
>ты видимо сам в никсах неселен ибо несеш чушь, и вообще путаешь
>понятия ipfw,ip,site.
>Начнем с того что речь о разных уровнях модели ISO/OSI.

Действительно не силен, и тем не менее спасибо за проявленный интерес к теме.


Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

5. "интерфейс добавления правил в ipfw"  +/
Сообщение от Vitaly_loki (??) on 12-Авг-08, 21:08 
>[оверквотинг удален]
>
>Подскажите пожалуйста каким образом можно прикрутить к ipfw простейший web-интерфейс удаленого добавления
>правил?
>
>Иными словами, человеку, не разбирающемуся в Unix и не имеющему доступ к
>консоли трубется дать инструмент запрета определенных внешних ресурсов (предположительно, путем добавления
>правил фаера, либо есть другие соображения?)
>БЫть может есть готовые решения? я не нашел
>
>зараннее спасибо!

Не знаю насчет готовых "решений", но написать простенький web-интерфейс на самом деле не сложно: например, используя Perl + CGI, затем на этот скрипт установать атрибут (+s) чтоб скрипты от имени root выполнялись

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "интерфейс добавления правил в ipfw"  +/
Сообщение от angra (ok) on 13-Авг-08, 07:10 
>установать атрибут (+s) чтоб скрипты от имени root выполнялись

Также поставить пользователя root и установить perl-suid, который еще с perl 5.8 не рекомендуется к использованию.


Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

8. "интерфейс добавления правил в ipfw"  +/
Сообщение от Vitaly_loki (??) on 13-Авг-08, 09:51 
>>установать атрибут (+s) чтоб скрипты от имени root выполнялись
>
>Также поставить пользователя root и установить perl-suid, который еще с perl 5.8
>не рекомендуется к использованию.

ну это да, согласен

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

6. "интерфейс добавления правил в ipfw"  +/
Сообщение от mr_gfd on 13-Авг-08, 00:48 
Если все касательно только http то по пунктам:

поставить squid;
настоить в нем поддержку режима прозрачного прокси;
путем ipfw forward завернуть на него весь http трафик;
поставить webmin;

(завести в нем пользователя. кторому дать доступ только на модуль сквида;
1 раз показать как добавлять ACL.) или
(средствами sudo дать возможность сказать ee /usr/local/etc/squid/squid.conf и /usr/local/etc/rc.d/squid reload)

все.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

9. "интерфейс добавления правил в ipfw"  +/
Сообщение от Никита (??) on 13-Авг-08, 20:42 
Поправлю вышеотписавшегося участника ...

Только webmin ставить нафик. Есть ход проще

Собственно после того как сквид поставлен к нему либо ACL`ом либо редиректором (в зависимости от обьемов), если порядка сотни сайтов тогда можно без редиректора^ прикручивается список сайтов. Что сквид, что редиректо этот список может брать из файла ... так что =) Далее ставится апач, в нем заводится папка, на которую прикручивается авторизация (бейсик авторизация вполне пойдет, настраивается просто да и вполне оправдана) и в эту папку ложится перловый скрипт, который добавляет это все дело в файл, который собственно и прицеплен в качестве файла для ACL. Я лично взял скрипт гостевой книги и переписал ... если нужно - отпишитесь кому, кто в перле вообще не силен - пришлю, хотя его самому написать - час работы. Ну и далее в крон /path_to_squid -k reconfigure. Время зададите по вкусу =) Учтите что во время перечитывания конфигов он перечитывает ацл`ы тоже. Так что это обязательно. Вот и все дела =) Главное чаще раз в 15 минут не ставте реконфигурение сквида.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

10. "интерфейс добавления правил в ipfw"  +/
Сообщение от angra (ok) on 14-Авг-08, 00:08 
Фигасе час работы. Да там шелл cgi скриптом на пару строчек можно обойтись :)


Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

12. "интерфейс добавления правил в ipfw"  +/
Сообщение от Tonya_aka_Slim email(??) on 14-Авг-08, 16:38 
>[оверквотинг удален]
>настраивается просто да и вполне оправдана) и в эту папку ложится
>перловый скрипт, который добавляет это все дело в файл, который собственно
>и прицеплен в качестве файла для ACL. Я лично взял скрипт
>гостевой книги и переписал ... если нужно - отпишитесь кому, кто
>в перле вообще не силен - пришлю, хотя его самому написать
>- час работы. Ну и далее в крон /path_to_squid -k reconfigure.
>Время зададите по вкусу =) Учтите что во время перечитывания конфигов
>он перечитывает ацл`ы тоже. Так что это обязательно. Вот и все
>дела =) Главное чаще раз в 15 минут не ставте реконфигурение
>сквида.

спасибо большое (!) за столь подробное описние. довольно интересен метод- попробую его. Если не сложно пришли свой скрипт ( с перлом знакомлюсь). А вообще хотелось бы обойтись без прокси.

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

13. "интерфейс добавления правил в ipfw"  +/
Сообщение от Никита (??) on 14-Авг-08, 19:46 
>Если не сложно пришли свой скрипт ( с перлом знакомлюсь). А
>вообще хотелось бы обойтись без прокси.

Чего-то с первого раза не отправилось сообщение ... дубль 2

А почему бы и нет? Никто ведь не заставляет включать кэш. И никто не заставляет прикручивать авторизацию если таковая не требуется. Зато можно поиметь бонус в виде лоад-балансинга. Настроить delay pools и поставить ограничения по скорости на закачку больших файлов. =) Делается очень просто.

Собственно сам скрипт:

#!/usr/bin/perl
$file = "disabled.users";
$html_file = "add.cgi";
print "Content-Type: text/html\n\n";
print "Users in access-denied list:\n";
use CGI qw (:standard);
$q=new CGI ();
$action = $q->param (action);
&post if ($action eq 'post');
&view;
sub post {
$nick = $q->param (nick);
$to_base = "$nick\n";
open (OUT, ">>$file");
print OUT $to_base;
close (OUT);
}
sub view {
open (BASE, "<$file");
@base = <BASE>;
close (BASE);

{
print "@base";
}
print "
<form action=$html_file method=get>
Add user to acces denied list: <input name=nick>
<input name=action value=post type=hidden>
<input type=submit value=Add>
</form>
";
}

Помещается в файл (у меня add.cgi, если будете другое имя использовать - поправте переменную $html_file)

По скрипту
1) Скрипт был найден в гугле, это БЫЛА примитивнейшая гостевая книга, которая была облегчена под мои нужды. Если автор узнает свое творение - спасибо ему огромное.

2) Он делает 2 действия, выводит существующие записи, и есть форма для добавления новых. Удалять через него нельзя. (В моем случае это не нужно, у меня удалением занимается крон и сш-скрипт раз в месяц, а пользуюсь я им исключительно для добавления "охреневших" пользователей в deny-лист.

3) На апач авторизация обязательна потому как за пару часов этим скриптом можно забить весь раздел ... это не есть гут.

Успехов =)

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "интерфейс добавления правил в ipfw"  +/
Сообщение от Vitaly_loki (??) on 14-Авг-08, 21:46 
>[оверквотинг удален]
>2) Он делает 2 действия, выводит существующие записи, и есть форма для
>добавления новых. Удалять через него нельзя. (В моем случае это не
>нужно, у меня удалением занимается крон и сш-скрипт раз в месяц,
>а пользуюсь я им исключительно для добавления "охреневших" пользователей в deny-лист.
>
>
>3) На апач авторизация обязательна потому как за пару часов этим скриптом
>можно забить весь раздел ... это не есть гут.
>
>Успехов =)

Ну вот, я же говорил :) Perl + CGI :) Можно еще поставить модуль DBI, DBD-mysql и хранить не в файле, а в базе данных список правила ipfw

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

15. "интерфейс добавления правил в ipfw"  +/
Сообщение от Bani email on 13-Сен-08, 17:17 
>[оверквотинг удален]
>>
>>
>>3) На апач авторизация обязательна потому как за пару часов этим скриптом
>>можно забить весь раздел ... это не есть гут.
>>
>>Успехов =)
>
>Ну вот, я же говорил :) Perl + CGI :) Можно еще
>поставить модуль DBI, DBD-mysql и хранить не в файле, а в
>базе данных список правила ipfw

попробуй WebGui m0n0wall или PfSense

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

16. "интерфейс добавления правил в ipfw"  +/
Сообщение от Vasily Jakunin email on 15-Сен-08, 13:19 
>Ну вот, я же говорил :) Perl + CGI :) Можно еще
>поставить модуль DBI, DBD-mysql и хранить не в файле, а в
>базе данных список правила ipfw

А подробнее можно? Каким образом заставить ipfw брать правила из MySQL? Я весь инет перерыл :( но так и не нашел примеров реализации этого... :(

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

17. "интерфейс добавления правил в ipfw"  +/
Сообщение от angra (ok) on 15-Сен-08, 14:41 
Похоже вы не так поняли. С базой работать должен перловый скрипт и на основе данных генерировать правила для ipfw.
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

18. "интерфейс добавления правил в ipfw"  +/
Сообщение от Vasily Jakunin email on 15-Сен-08, 14:44 
>Похоже вы не так поняли. С базой работать должен перловый скрипт и
>на основе данных генерировать правила для ipfw.

Нет! Понял я правильно!
Написал же человек:

"Ну вот, я же говорил :) Perl + CGI :) Можно еще поставить модуль DBI, DBD-mysql и хранить не в файле, а в базе данных список правила ipfw"

Если так, то правила лежат не в файле rc.firewall а как раз в базе MySQL, только как такое реализовать, я так и не понял. В манах по IPFW ни чего про это... :(

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

19. "интерфейс добавления правил в ipfw"  +/
Сообщение от angra (ok) on 15-Сен-08, 15:06 
мда, безнадежен :(
Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

20. "интерфейс добавления правил в ipfw"  +/
Сообщение от Vasily Jakunin email on 15-Сен-08, 15:54 
>мда, безнадежен :(

Можно и не хамить! :)

Понятно что к MySQL-у обращается не IPFW а скрипт при чем на чем он, не суть важна, мне интересен механизм... допустим, я написал программу на Delphi через ODBC подключил MySQL и запихиваю себе в базу приспокойно правила для IPFW, дальше некий скриптик через крон обращается к базе забирает от туда все что я там накропал и пихает это все IPFW, вот вопрос собственно в том, каким образом он это пихает... ведь надо:

1. Либо заново постоянно генирировать файл правил, либо как-то дописывать в конец файла то, что изменилось.

2. Перезапускать IPFW после изменения правил.

Так? :)

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

21. "интерфейс добавления правил в ipfw"  +/
Сообщение от angra (ok) on 15-Сен-08, 20:33 
что мешает вызывать из скрипта консольный ipfw и при помощи него добавлять правила?


Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

22. "интерфейс добавления правил в ipfw"  +/
Сообщение от Vasily Jakunin email on 16-Сен-08, 10:09 
>что мешает вызывать из скрипта консольный ipfw и при помощи него добавлять
>правила?

Мешает то, что добавлять правила должен не один человек, а допустим несколько и проблема в том, что консольный набор осилит только тот, кто это все делал, остальные в этом ни как. То есть, грубо горя есть 2 администратора, которые от Unix далеки, но вполне могут выполнять эту работу. Пускать на сам сервер под root, как-то не хотелось бы. По этому и такие вот извращения. :)

Проблема еще в том, что в Perl я как-то не силен. Ну не нравится мне его синтаксис...
Накропал на PHP скриптик. Работает. Но, придется его руками запускать после добавления правил в БД.

<?php

$filename = '/etc/rc.firewall';
$conn = mysql_connect("localhost", "user", "password");

if (!$conn)
{
echo "Unable to connect to DB: " . mysql_error();
exit;
}

if (!mysql_select_db("network"))
{
echo "Unable to select table: " . mysql_error();
exit;
}

$sql = "SELECT * FROM ipfw";
$result = mysql_query($sql);

if (!$result)
{
echo "Error run ($sql) from DB: " . mysql_error();
exit;
}

if (mysql_num_rows($result) == 0)
{
echo "No record in table!";
exit;
}

if (is_writable($filename))
{

if (!$handle = fopen($filename, 'w+'))
{
echo "Error open ($filename)";
exit;
}

while ($row = mysql_fetch_assoc($result))
{
$somecontent = $row["rule"];
if (fwrite($handle, $somecontent. "\n") === FALSE) {
        echo "No write to ($filename)";
        exit;
}
$somecontent = '';
}
fclose($handle);

}
    mysql_free_result($result);
?>

Вот, как-то так.

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

23. "интерфейс добавления правил в ipfw"  +/
Сообщение от frol (??) on 15-Авг-12, 05:06 
>[оверквотинг удален]
> ($filename)";
>         exit;
>  }
>  $somecontent = '';
>  }
>  fclose($handle);
> }
>     mysql_free_result($result);
> ?>
> Вот, как-то так.

а нафига это БАЗОЙ впихивать в файл???

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру