.**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**.
      * .!.!.!.---Offline Electronic Magazine LmD'E-zine #3-----.!.!.!. *
      | //////----IsSUe---#3 -|-|-|--http://lmd-ezine.com----OCT...2003 |
      '**&**&**&**&**&**&**&**&**&**&**&**&**&**&**&**&**&**&**&**&**&**'   

 --¤¤¤¤¤¤¤¤¤---------- Writed: by Gh0st^hs               ------¤¤¤¤¤¤¤¤¤¤--
 ------------ E-mail: [email protected]        --------
 --¤¤¤¤¤¤¤¤¤----------    ICQ: 153823974                 ------¤¤¤¤¤¤¤¤¤¤--

Привет  всем.  В  этой  статье будут описаны  самые  элементарные
способы  защиты  своих каналов IRC. То есть для  этого  не  нужно
будет  ничего лишнего. Исключительно те средства, которые есть  у
нас  под  рукой. Думаю, что не стоит предупреждать о том что  эта
статья рассчитана не на новичков. Итак преступим.

  1.  Для свободного общения гостей
  2.  Для некоторой организации, обсуждения ее работы и прочее.
  3.  Для обсуждения каких-либо тем, других людей не касающихся
      совершенно.

Итак,   предположим,  вы  зарегистрировали  канал,  назовем   его
например,  Channel.  В  зависимости от того,  зачем  нужен  канал
установим   доступ   к   изменению  топика.   В   первом   случае
рекомендуется не ставить на канал до +t (можно даже  залочить  –t
на  чансерве). В остальных случаем поставить стоит. И залочим это
на консерве.

 +--------------------------------------------------------------+
 | /msg chanserv mlock +t                                       |
 +--------------------------------------------------------------+

Далее. Разберемся с внешними сообщениями в канал. Не знаю почему,
но  некоторые  ирковцы  даже  и  не  думают,  что  можно  послать
сообщение  в  канал  не  находясь на нем (тот  же  самый  приват:
команда /msg #channel)
(конечно,  если  там  нет  мода  +n)  Думаю,  что  это  нигде  не
пригодиться потому выставляем

 +--------------------------------------------------------------+
 | /mode #channel +n                                            |
 | /msg chanserv mlock #channel +n                              |
 +--------------------------------------------------------------+

Разбираемся с цветами. Меня лично совершенно не прикалывают цвета
на каналах. Если вы согласны мо мной то выставлсяем +с и лочим:

 +--------------------------------------------------------------+
 | /msg chanserv mlock +c                                        |
 +--------------------------------------------------------------+

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

 +--------------------------------------------------------------+
 | /msg chanserv set leaveops off                               |
 +--------------------------------------------------------------+

Тут еще упомянем что если канал служит не для свободного общения,
то  возможно стоит поставить на канал +k или +i. Соотв. с  ключом
(или  с  паролем)  и invited (то есть только по приглашению),  но
если  на вашем канале не стоит бота, то вряд-ли это понадобиться,
хотя…
Потом  если  какой-то чел зашел на канал, и  нужно  его  от  туда
вытурить,  то просто баним его. Но бан, опять же, нужно правильно
подобрать. Если человек сидит через выделенку то ставим бан прямо
IP. Маска:

 +--------------------------------------------------------------+
 | *!*@host                                                     |
 +--------------------------------------------------------------+

Если  же  чел ситит по Dial-up, из клуба, с прокси то  стоит  еще
брать во внимание ident. Маска:

 +--------------------------------------------------------------+
 | *!*ident@*.domain                                            |
 +--------------------------------------------------------------+

Понимаю,  ручками  это  все  писать  долговато.  Потому  создадим
несколько Pop-up менюшек, которые будут ставить бан на каждый  из
вариантов.  Если  у  вас  клиент mIRC то  это  сделать  это  так:
открываем  для  редактирования файл popup.ini  что  находиться  в
корне директории mIRC. Смотрим что написано под строками n10, n11
в секции [lpopup]:

 +-----------------------------------------------------------------------+
 | n10=.Ban:/ban $$1 2                                                   |
 | n11=.Ban, Kick:/ban $$1 2 | /timer 1 3 /kick # $$1                    |
 | n11=.Ban, Kick (why):/ban $$1 2 | /timer 1 3 /kick # $$1 $$?="Reason:"|
 +-----------------------------------------------------------------------+

Это  все  мы оставляем, так как это нам понадобиться для  первого       
типа банов, но добавим еще 3 строчки для 2-го типа:

+----------------------------------------------------------------------------+
| n12=.Ban:/mode # +b $address($$1,1)                                        |
| n13=.Ban, Kick:/mode # +b $address($$1,1) | /kick # $$1      	             |
| n14=.Ban, Kick (why):/mode # +b $address($$1,1) | /kick # $$1 $$?="Reason:"|                                             
+----------------------------------------------------------------------------+

Ну  соответственно чтобы хоть как-то различать эти 2  типа  можно
прописать  еще какой-нить комментарий. Иначе так и запутаешься  в
собственном же клиенте.
И  еще  о банах. Есть такая фишка на многих серверах. Это мод  +B
(большое  "Б"). Это тот же самый бан, но его не видно в банлисте,
что  открывает некоторые перспективы :). Вообще такой бан  вполне
можно  увидеть и сделать это достаточно просто, только далеко  не
каждый  новичок сможет это сделать, и даже многие об этом  просто
не догадываются…

 +--------------------------------------------------------------+
 | /mode #channel +B                                            |
 +--------------------------------------------------------------+

Такая команда выведет список всех модов +B на канале #channel.
Для  любого типа каналов подходит еще и такой совет: На  наиболее
важных  персон  канала (в частности как минимум  фаундера)  стоит
поставить  мод  +e (или даже +E). Это моды исключения  из  банов.
Ставиться  на  маску  (так  же  как  и  бан)  и  если  кто-то  из
пользователей попадает под эту маску то ему пофигу абсолютно  все
баны.  Оба  мода действуют аналогично +b и +B, то  есть  их  либо
видно в банлисте (а точнее тут уже так называемый exclusion list)
либо  из  видно  не будет. Думаю, понятно, что посмотреть  список
исключений (+e) в мирке можно открыв Channel modes и нажав там на
кнопочку  "Exclusions". Посмотреть список +Е можно так же  как  и
+B.
Рассмотрим еще как привилегированные юзеры могут обходить баны на
канале. Если кто-то вас забанил и вы как минимум аоп на калане то
вы можете снять с себя бан.

 +--------------------------------------------------------------+
 | /msg chanserv unban #channel me                              |
 +--------------------------------------------------------------+

Если вы соп, то можете пригласить себя на канал через консерву:
 +--------------------------------------------------------------+ 
 |/msg chanserv invite #channel <nick>                          |
 +--------------------------------------------------------------+

Если  вы на канал приглашены то вы сможете зайти не смотря на  то
что стоит бан. Можно даже написать несложный скрипт, что если кто-
то  вас  побанит и кикнет с канала, вы приглашаете себя на канал,
заходите,  получаете опу и снимаете бан. Возможно  кто-то  скажет
что   можно  сделать  проще:  просто  разбаним  себя  с   помощью
chanserv’а и спокойно зайдем. Да действительно можно  и  так,  но
где  гарантии того что тот кто вас побанил не напишет  простейший
скрипт, который ставит бан в случае, если его снимают…
Есть ещё одна опция - редактирование уровней доступа. (levels)  С
её помошью можно очень гибко настроить управление вашим каналом и
распределением прав для sop'ов, aop'ов, owners, etc ну и  простых
юзеров.  Сразу  предупреждаю,  что  эта  команда  рассчитана   на
продвинутых юзеров и новичку в ней будет сложно разобраться. Но я
попытаюсь  разложить всё как можно подробней. Думаю  лучше  будет
привести наглядный пример работы с помощью кансервы:

 +--------------------------------------------------------------------+
 | Синтаксис: LEVELS канал {SET | DIS[ABLE] | LIST | RESET} [пункт    |
 | [уровень]]                                                         |
 | Введите /ChanServ HELP LEVELS для получения дальнейшей информации. |
 +--------------------------------------------------------------------+

 +--------------------------------------------------------------------+  
 |/cs help levels                                                     |    
 +--------------------------------------------------------------------+
 
 +--------------------------------------------------------------------+
 | /cs help levels desc                                               |
 +--------------------------------------------------------------------+

 +--------------------------------------------------------------------+
 | The following feature/function names are understood. Note that the |
 | levels for AUTODEOP and NOJOIN are maximum levels, while all others|    
 | are minimum levels.                                                |
 | AUTOOP Автоматический статус оператора                             |
 | AUTOVOICE Автоматический +v                                        |
 | AUTODEOP Запрещено получение статуса оператора                     |
 | NOJOIN Запрещено заходить на канал, если есть опция RESTRICTED     |
 | INVITE Разрешено использовать команду INVITE                       |
 | AKICK Разрешено использовать команду AKICK                         |
 | SET Разрешено использовать команду SET (но не для FOUNDER/PASSWORD)|
 | CLEAR Разрешено использовать команду CLEAR                         |
 | UNBAN Разрешено использовать команду UNBAN                         |
 | OP-DEOP Разрешено использовать команды OP/DEOP                     |
 | ACC-LIST Разрешено смотреть список доступа                         |
 | ACC-CHANGE Разрешено изменять список доступа                       |
 | MEMO Разрешено смотреть список и читать записки канала             |
 | VOICE Разрешено использовать команды VOICE/DEVOICE                 |
 +--------------------------------------------------------------------+

 +--------------------------------------------------------------------+
 | /cs help access levels                                             |
 +--------------------------------------------------------------------+

 +------------------------------------------------------------------------+
 | User access levels By default, the following access levels are defined:|
 | Founder Full access to ChanServ functions; automatic opping upon       |
 | entering channel. Note that only one person may have founder status (it|
 | cannot be given using the ACCESS command).                             |
 | 10 Access to AKICK command; automatic opping.                          |
 | 5 Automatic opping.                                                    |
 | 3 Automatic voicing.                                                   |
 | 0 No special privileges; can be opped by other ops (unless SECUREOPS is|
 | set).                                                                  |
 | <0 May not be opped.                                                   |
 | These levels may be changed, or new ones added, using the LEVELS       |
 | command; type /ChanServ HELP LEVELS forinformation.                    |
 +------------------------------------------------------------------------+

Я не буду пояснять все подкоманды, имхо тут и так всё понятно. По        
крайней  мере, разберетесь во время экспериментов, не всё  ж  вам       
тут готовенькое давать.                                                  
Думаю  теперь  вы  в состоянии защитить свой канал  и  оптимально
настроить его под обстановку.

Ну  и  конечно же для хорошей защиты нужно ставить defense-ботов.
Самым  популярным  ботом сейчас является бот  серии  Eggdrop.  Он
поддерживает  большое  количество подключаемых  tcl  модулей  для
более  удобной  и  гибкой  настройки и конфигурации  бота.  Но  я
считаю,  что  если нужен хороший бот то нужно его писать  самому.
Рекомендовать   я  вряд  ли  что-то  возьмусь.   Ботов   огромное
количество и каждый должен выбрать сам для своих целей. Но все же
возьмусь  привести пример одного достаточно неплохого  бота.  Его
исходников  у  меня нет, впрочем, как и самого  бота.  Его  можно
посмотреть в действии на ижевском сервере irc.mark-itt.ru,  канал
#udsu.  Там  висит KOPOBA. Вот бот такого класса может  считаться
хорошим…

P.S:  Если кто-то что-то хочет добавить к моей статье, хочет что-
то чтобы я описал что-то еще, затронул более глубокие темы защиты
и      прочее…      Вобщем,     если     у      кого-то      есть
предложения/пожелания/замечания/дополнения/etc/etc  :), То пишите
мне.  Все  ваши  предложения будут  учтены  и  вы  их  увидите  в
следующем выпуске нашего журнала.