The OpenNET Project / Index page

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



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

Оглавление

интерфейс добавления правил в ipfw, Tonya_aka_Slim (ok), 12-Авг-08, (0) [смотреть все]

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


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

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

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

13. "интерфейс добавления правил в ipfw"  +/
Сообщение от Никита (??), 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) На апач авторизация обязательна потому как за пару часов этим скриптом можно забить весь раздел ... это не есть гут.

Успехов =)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Так? :)

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

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


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

22. "интерфейс добавления правил в ipfw"  +/
Сообщение от Vasily Jakuninemail (?), 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);
?>

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

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

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

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

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

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

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




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

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