Добро Пожаловать  Ru.Board
 

Навигация
  • Главная
  • Форум
  • Темы
  • Топ лист
  • Файловый архив

  • Реклама





    Проголосуй!
    Статьи на какие темы вы бы желали видеть на нашем сайте?

    Системное администрирование Windows
    Администрирование *nix систем
    Обзоры пользовательского программного обеспечения
    Вебмастеринг: тонкости сайтостроения
    Вебмастеринг: юзабилити сайтов
    Вебпрограмминг: полезные решения
    Linux-системы: вопросы по работе
    Вопросы по аппаратной части компьютеров
    Обзоры программ для администраторов
    Компьютерная безопасность (для пользователей)
    Компьютерная безопасность (для администраторов)
    Другое


    Результаты
    Другие Опросы

    голосов: 16198

    Избранное
  • Установка Php-Nuke
  • Установка IkonBoard на локалхосте



    Форум по движку IkonBoard V.2

    Файловый архив для вебмастеров: полезные скрипты

    Форум по операционным системам: Linux, Windows, Mac

  • Поиск по сайту




    IkonBoard: Повышение безопасности IkonBoard 2. Перенос Админцентра в другую директорию
    Опубликовал lynx 06.06.2003 04:23

    IkonBoard v2.1.*
    Каждый администратор форума заинтересован в безопасности своего детища. Как известно, абсолютной гарантии сохранности данных в Интернет быть не может, но имеется возможность несколько повысить уровень защищенности, в частности, форума.

    Одним из шагов в повышении уровня безопасности форума является дополнительная защита файлов, с помощью которых осуществляется администрирование конференции. Эта дополнительная защита может быть реализована разными способами. В данной статье мы рассмотрим один из них.

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

    Центр администрирования в IkonBoard 2

     
    Сначала рассмотрим, что представляет собой центр администрирования в форуме IkonBoard 2.

    Центр администрирования в IkonBoard 2 - это набор скриптов и библиотек, позволяющих осуществлять
    следующие функции:

    Управлять данными пользователей (скрипт setmembers.cgi):
    менять персональный статус, пароль, разрешать/запрещать пользователю вход в закрытые форумы, блокировать и удалять пользователей.

    Управлять форумами (скрипт setforums.cgi):
    создавать/удалять/переименовывать форумы и категории, пересчитывать сообщения в них.

    Настраивать стиль конференции (скрипт setstyles.cgi):
    менять цвета фонов, цвета и размеры шрифтов, название файла логотипа, названия других картинок, например, картинки новой темы и др., задавать количество постов на одной странице темы и количество тем на одной странице форума.

    Редактировать общие настройки конференции (скрипт setvariables.cgi):
    изменять название конференции, пути, например, к директории с картинками, размеры основных шрифтов, задавать параметры функции почты, адрес почты администратора, устанавливать запрет/разрешение использования смайликов, html, ib-кодов, контроля флуда и др.

    Настраивать статусы пользователей (скрипт setmembertitles.cgi):
    задавать, через какое количество сообщений пользователю присваивается тот или иной статус (junior member, member и т.д.), какая картинка при этом отображается под его аватаром.

    Настраивать фильтр нецензурных слов (скрипт setbadwords.cgi):
    ввести/изменить список слов, которые будут заменяться на заданное вами слово (например, censored). Слова будут проверяться в постах, заголовках и описаниях тем, при регистрации пользователей, в подписях пользователей.

    Проверять историю взломов конференции (скрипт checklog.cgi),
    а точнее историю ошибок, создаваемых подпрограммой systemerror файла ikon.lib.

    Редактировать шаблон конференции (скрипт settemplate.cgi),
    а именно - файл data/template.dat.
    Редактирование может позволить использовать/изменять стили (css), добавить счетчики на страницы конференции (кроме личного ящика) и др.

    Вход в Админцентр, а также сбор основной статистики по конференции - общее число пользователей, тем, постов, среднее число ответов в темы и т.д. - выполняется скриптом admincenter.cgi.
    Этот же скрипт выводит сведения о версии Perl, о директории, в которой расположен скрипт admincenter.cgi и проверяет настройки cookies. Cookies не будут корректно читаться в случае ошибок в путях. О cookies мы поговорим ниже в данной статье.

    К административному скрипту можно также отнести скрипт checkboard.cgi, позволяющий проверять наличие файлов конференции и их целостность.
    Url этого файла в адресной строке браузера надо вводить вручную, потому как ссылки на него из Админцентра нет. Впрочем, это легко поправить при необходимости.

    Если у вас установлен хак голосования, то, возможно, среди скриптов присутствует файл setpolls.cgi, позволяющий настраивать стили и параметры голосования.

    И, наконец, административные скрипты запрашивают библиотечный файл ikonadmin.lib, в котором находятся три подпрограммы.
    Подпрограмма adminlogin выводит форму авторизации при входе в Админцентр.
    Подпрограмма admintitle отображает меню администрирования, расположенное слева на каждой странице Админцентра. В этой же подпрограмме можно поменять/задать стили Админцентра (css).
    Подпрограмма parseadminform нигде не вызывается и, по-видимому, осталась от предыдущих версий IkonBoard (подробнее читайте тут). Ее можно удалить.
    При удалении, обратите внимание, что файл ikonadmin.lib должен оканчиваться следующим образом:

    1;

    Если вас более подробно интересует назначение каждого скрипта IkonBoard 2, читайте описание скриптов конференции.
     
     

    Перенос Админцентра в другую директорию

     
    Итак, перейдем к процедуре переноса Админцентра.

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

    Для начала создайте папку, где будет храниться ваш Админцентр.
    Папка должна быть создана в директории, в которой разрешено исполнение скриптов (она не может быть создана, например, в директории с картинками).
    Можно создать папку в каталоге самого форума, там, где у вас расположены скрипты конференции.
    Например, если ваш форум имеет адрес:
    http://www.ваш_сайт.ru/cgi-bin/ikonboard/,
    то в каталоге /cgi-bin/ikonboard/ создайте еще один каталог, например uprav.
    Адрес к нему будет выглядеть:
    http://www.ваш_сайт.ru/cgi-bin/ikonboard/uprav/

    Не рекомендую называть этот каталог admin или admincenter, потому как это название слишком легко вычислить. Можете назвать каталог 123upravlenie - как уж ваша фантазия распорядится.

    Предположим, что вы назвали свой каталог uprav.
    Теперь переместите в него следующие файлы:

    admincenter.cgi,
    checkboard.cgi,
    checklog.cgi,
    ikonadmin.lib,
    setbadwords.cgi,
    setforums.cgi,
    setmembers.cgi,
    setmembertitles.cgi,
    setpolls.cgi
    (если есть),
    setstyles.cgi,
    settemplate.cgi,
    setvariables.cgi.

    Теперь откройте в текстовом редакторе все файлы папки uprav/.
    В самом начале скриптов вы увидите запросы (require) файлов, например:

    require "ikon.lib"; # Require ikonboard ()
    require "ikonadmin.lib"; # Require Admin func()
    require "data/progs.cgi"; # Require prog names
    require "data/boardinfo.cgi"; # Require board info
    require "data/styles.cgi"; # Require styles info
    require "data/boardstats.cgi";# Require styles info

    В Perl это означает, что текущий скрипт использует запрашиваемые файлы для своей работы.
    Поскольку пути к файлам относительно корня конференции мы поменяли, необходимо изменить пути к запрашиваемым скриптам.

    Для гарантированно безглючной работы можно написать для каждого запрашиваемого файла полный путь от корня сервера, то есть абсолютный путь, а не относительный.

    Обратите внимание, абсолютные пути - это то, что в операционной системе Windows начинается к буквы диска (например, C:/Data/my_site/ и т.д.), а в операционной системе Unix/Linux начинается с "/" (например, /usr/local/www/data/ и т.д.).

    Независимо от операционной системы необходимо ставить прямые слеши, как в Unix, например, C:/Data/my_site/, а не C:\Data\my_site\.

    Итого, заменяем:

    require "ikon.lib";
    require "data/boardinfo.cgi";

    На (пример с локалхоста):

    require "f:/data/wwwsite/cgi-bin/ikonboard/ikon.lib";
    require "f:/data/wwwsite/cgi-bin/ikonboard/data/boardinfo.cgi";

    и так далее для каждого запрашиваемого файла в каждом административном скрипте.

    Слова после символа # (например, "# Require Admin func()") являются в Perl однострочным комментарием. Можете опустить их.

    Будьте внимательны!
    Если вы прописали абсолютные пути к запрашиваемым файлам, то при переносе Админцентра с локалхоста на сервер вам придется в каждом административном файле поменять пути к запрашиваемым скриптам на соответствующие путям на сервере.

    Разумеется, это неудобно.

    Поэтому рассмотрим вариант, который избавит вас от необходимости править пути к файлам перед каждым заливом их на сервер.

    Для этого достаточно использовать относительные пути при запросе подключаемых файлов.

    Относительный путь означает, что он задан относительно текущего файла.

    Так, если вы из файла setmembers.cgi, расположенного в директории:
    f:/data/wwwsite/cgi-bin/ikonboard/uprav/,
    запрашиваете файл ikon.lib, расположенный в директории:
    f:/data/wwwsite/cgi-bin/ikonboard/,
    то относительный путь будет такой:

    ../ikon.lib

    Если вы из того же файла setmembers.cgi запрашиваете файл boardinfo.cgi, расположенный в директории:
    f:/data/wwwsite/cgi-bin/ikonboard/data/,
    то относительный путь к нему из файла setmembers.cgi будет выглядеть так:

    ../data/boardinfo.cgi

    Запрос скриптов, расположенных в той же директории, где лежат все файлы администрирования, например скрипта ikonadmin.lib, можно сделать так:

    require "ikonadmin.lib";

    Таким образом, если ваша новая папка, в которую вы поместили файлы администрирования, распложена в каталоге скриптов конференции (там же, где сейчас у вас папка data), то относительные пути к запрашиваемым файлам будут выглядеть так:

    require "../data/boardinfo.cgi"; # Require board info
    require "../ikon.lib"; # Require ikonboard ()
    require "ikonadmin.lib"; # Require Admin func()
    require "../data/progs.cgi"; # Require prog names
    require "../data/styles.cgi"; # Require styles info
    require "../data/boardstats.cgi"; # Require styles info

     
     
    На этом с переносом административных файлов мы закончили.

    Если вы не планируете делать что-то еще для защиты вашего форума (например, переименовывать административные файлы, как советуется дальше в этой статье), то не забудьте в файле data/progs.cgi соответствующим образом изменить значения переменных:

    $adminprog;
    $stylesprog;
    $varsprog;
    $membertitlesprog;
    $setforumsprog;
    $setmembersprog;

    Укажите новое расположение административных файлов относительно корня конференции (относительно остальных скриптов конференции, например, относительно файла ikonboard.cgi), то есть
    вместо:

    $adminprog = "admincenter.cgi";
    $stylesprog = "setstyles.cgi";
    $varsprog = "setvariables.cgi";
    $membertitlesprog = "setmembertitles.cgi";
    $setforumsprog = "setforums.cgi";
    $setmembersprog = "setmembers.cgi";

    напишите:

    $adminprog = "uprav/admincenter.cgi";
    $stylesprog = "uprav/setstyles.cgi";
    $varsprog = "uprav/setvariables.cgi";
    $membertitlesprog = "uprav/setmembertitles.cgi";
    $setforumsprog = "uprav/setforums.cgi";
    $setmembersprog = "uprav/setmembers.cgi";

     
     

    Переименование административных файлов

     
    Как уже говорилось, переименование административных файлов служит дополнительной защитой, если расположение новой папки Админцентра стало известно злоумышленнику.

    Начнем с переименования файла admincenter.cgi.
    Любым привычным для вас способом, присвойте файлу другое название (желательно посложнее), например upravcenter.cgi.

    После этого откройте файл data/progs.cgi и измените название переменной $adminprog, написав:

    $adminprog = "uprav/upravcenter.cgi";

    Впрочем, можно вовсе избавиться от этой переменной, явным образом прописав имя файла центра администрирования в файле ikonadmin.lib.
    Замените строчку:

    <form action="$boardurl/$adminprog" method="post">

    на:

    <form action="$boardurl/uprav/upravcenter.cgi" method="post">

    Больше эта переменная нигде не запрашивается, но все же проверьте поиском в скриптах по строке "$adminprog".

    Последний шаг в переименовании файла Админцентра - необходимо в самом файле соответствующим образом изменить переменную $thisprog.
    Откройте в текстовом редакторе файл Админцентра и
    замените строку:

    $thisprog = "admincenter.cgi";

    на строку, содержающую новое имя файла, которое вы присвоили Админцентру, например:

    $thisprog = "upravcenter.cgi";

    На этом с переименованием файла admincenter.cgi мы закончили.

    Аналогичным образом переименуйте все административные скрипты (библиотеки переименовывать нет необходимости).

    Переименование всех скриптов необходимо потому, что из любого из них может быть осуществлен вход в центр администрирования. Попробуйте в качестве теста написать вручную ulr любого административного файла в адресной строке браузера. Вы увидите перед глазами форуму для входа в Админцентр. Если злоумышленник завладел вашим паролем, то войти в админцентр он сможет с любого административного скрипта. Поэтому если идти по пути переименования файлов для защиты конференции, то необходимо переименовать все административные скрипты.

    В итоге у вас должны быть переименованы следующие файлы:

    admincenter.cgi,
    checkboard.cgi,
    checklog.cgi,
    setbadwords.cgi,
    setforums.cgi,
    setmembers.cgi,
    setmembertitles.cgi,
    setpolls.cgi
    (если есть),
    setstyles.cgi,
    settemplate.cgi,
    setvariables.cgi.

    Каждому скрипту необходимо дать другое название и соответствующим образом изменить в нем переменную $thisprog, в которой должно храниться текущее имя файла (только имя, а не путь).
    Далее в файле data/progs.cgi нужно изменить значения соответствующих переменных, прописав в них путь относительно корня конференции и новое название каждого скрипта (см. выше на примере файла admincenter.cgi).
     
     
    На этом можно остановиться, если вы сделали все правильно, то Админцентр должен нормально работать на новом месте с новым именем. Попробуйте войти в него, чтобы это проверить.
     

    Причины возможных ошибок

     
    1. Если при открытии файла, ранее называвшегося admincenter.cgi, вы получите ошибку вида:
    «Если Вы видите это сообщение об ошибках, скрипты Ikonboard неправильно выполняются как CGI-скрипты, а показываются как обычный ХТМЛ. Вам нужно связаться с администратором сервера, что бы иметь разрешение на запуск скриптов CGI в этой дирректории.»
    и т.д., значит пути, которые вы прописали к запрашиваемым файлам, неправильные.
    Полный текст ошибки, которую вы увидите в этом случае, содержится в переменных:
    $ibtxt{'0025'};
    $ibtxt{'0026'};
    $ibtxt{'0027'};
    файла IkonRussian.lib.

    2. Если вы увидите приглашение для входа в Админцентр, но не сможете войти при вводе пароля, значит вы вводите неправильный пароль или имя пользователя.

    3. Наконец, если скрипт после входа упорно пишет вам:
    "Cookies НЕ настроены, что бы читаться ==Передано?[Сбой]",
    попробуйте заменить в скриптах две строчки:

    $cookiepath = $query->url(-absolute=>1);
    $cookiepath =~ s/$thisprog//sg;

    на одну строчку, содержащую путь к текущей директории административных скриптов относительно корня хоста (хоста, а не сервера), то есть для нашего примера эта строчка будет выглядеть так:

    $cookiepath = "/cgi-bin/ikonboard/uprav/";
     
     
    И напоследок, о необходимости иметь центр администрирования вообще.

    В форуме иногда задают вопрос: «Нельзя ли удалить Админцентр из соображений безопасности?»
    Удалить можно - на работоспособности самой конференции это не отразится.
    Однако, если вы удалите Админцентр, все функции администрирования, о которых говорилось в начале этой статьи, вам придется делать вручную. Даже если для вас это не составляет особого труда, администрирование конференции будет зависеть от того, есть ли у вас в данный момент доступ к вашим файлам на сервере по FTP. В случае, например, если вы в отпуске и входите в Интернет с чужого компьютера, вам может быть неудобно (а иногда и невозможно из-за настроек прокси-сервера локальной сети) настроить новое FTP-соединение. Обидно будет ощущать свою беспомощность, если вам понадобится, скажем, забанить злостного нарушителя.
    Поэтому не рекомендую удалять файлы Админцентра.
     
     
    Если после прочтения данной статьи у вас остались вопросы о переносе Админцентра, либо вы начали перенос, но запутались, если у вас есть уточнения по процедуре переноса, или вы имеете другой взгляд на этот вопрос, добро пожаловать в форум IkonBoard 2 для соответствующих дискуссий.

    Следующая статья будет посвящена другим способам защиты Админцентра.
     

    См. также Обзор форума IkonBoard V. 2 (карта форума) » Статьи, хаки - вся IkonBoard V. 2 в одной теме


    КомментироватьВерсия для печати

     
    Категории
  • В помощь сисадмину
  • Все о софте
  • Вебмастеру
  • Игры
  • Hardware
  • О сайте
  • Программирование
  • Операционные системы
  • IkonBoard
  • InvisionBoard
  • Скрипты в примерах
  • Php-Nuke
  • Цифровое изображение
  • Юмор

  • Ссылки по теме
  • http://ikonboard.com
  • Русский IkonBoard
  • Ещё о IkonBoard v2.1.*
  • Новости от lynx


    Популярная статья в категории IkonBoard v2.1.*:

    Установка IkonBoard на локалхосте.



  • This web site was made with PHP-Nuke