The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
интерфейс добавления правил в ipfw, !*! Tonya_aka_Slim, 12-Авг-08, 17:27  [смотреть все]
доброго времени!

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

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

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

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

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

  • интерфейс добавления правил в ipfw, !*! hate, 18:41 , 12-Авг-08 (2)

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

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

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

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

  • интерфейс добавления правил в ipfw, !*! mr_gfd, 00:48 , 13-Авг-08 (6)
    Если все касательно только http то по пунктам:

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

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

    все.

    • интерфейс добавления правил в ipfw, !*! Никита, 20:42 , 13-Авг-08 (9)
      Поправлю вышеотписавшегося участника ...

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

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

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


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

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

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

          Чего-то с первого раза не отправилось сообщение ... дубль 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) На апач авторизация обязательна потому как за пару часов этим скриптом можно забить весь раздел ... это не есть гут.

          Успехов =)

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

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

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

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

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

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

              • интерфейс добавления правил в ipfw, !*! angra, 14:41 , 15-Сен-08 (17)
                Похоже вы не так поняли. С базой работать должен перловый скрипт и на основе данных генерировать правила для ipfw.
                • интерфейс добавления правил в ipfw, !*! Vasily Jakunin, 14:44 , 15-Сен-08 (18)
                  >Похоже вы не так поняли. С базой работать должен перловый скрипт и
                  >на основе данных генерировать правила для ipfw.

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

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

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

                  • интерфейс добавления правил в ipfw, !*! angra, 15:06 , 15-Сен-08 (19)
                    • интерфейс добавления правил в ipfw, !*! Vasily Jakunin, 15:54 , 15-Сен-08 (20)
                      >мда, безнадежен :(

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

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

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

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

                      Так? :)

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


                        • интерфейс добавления правил в ipfw, !*! Vasily Jakunin, 10:09 , 16-Сен-08 (22)
                          >что мешает вызывать из скрипта консольный 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);
                          ?>

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

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

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




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

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