Russian Apache Switch to English
Switch to Russian koi8-r
windows=1251
cp-866
iso8859-5
Russian Apache Как это работает Рекоммендации Где взять Как установить Как настроить Статус и поддержка
Краткий обзор FAQ Список рассылки Благодарности Поиск по серверу Powered by Russian Apache
Russian Apache mailing list archive (apache-rus@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[apache-rus] ?????? ?? Basic Auth ?????



Увидев, с какой скорость перебирает пароли по http
прога WWWHack (http://www.wwwhack.com/),
я решил сделать какую нибудь защиту от этого.
Точно подходящего решения не нашлось,
зато выяснилось что блокировать лучше не юзеров,
т.к. в этом случае легко реализовать DoS атаку,
в результате которой заблокируются все юзеры :-((.
Лучше блокировать "подозрительные" IP-адреса.

Наиболее подошел для этого модуль SpeedLimit.pm
(http://www.modperl.com/book/source/wrapmod-code-1.02.tar.gz.),
который, проще говоря, ограничивает число http-запросов в единицу времени с
какого-либо ip-адреса.
Лучше бы найти модуль, который ограничивал бы число
именно неудачных аутентификаций с одного IP-адреса,
но за неимением лучшего........

Установил Perl5.005_03 на FreeBSD 2.2.6,
а SpeedLimit.pm  требовал модуль IPC-Shareable-0.60, который требовал
Storable-1.0.11.

Пришлось установить и их.
Установил apache_1.3.19rusPL30.4:
./configure  --activate-module=src/modules/perl/libperl.a \
                  --enable-shared=perl \
и mod_perl-1.25 как DSO:
perl Makefile.PL \
        USE_APXS=1 \
        WITH_APXS=/usr/local/apache/bin/apxs \
        EVERYTHING=1 \

Фрагмент конфига Апача:
---------------------------------------
    LoadModule perl_module        libexec/libperl.so
    PerlModule Apache::SpeedLimit.
    Alias /perl/ /usr/local/apache/perl/

    <Location /perl>
      SetHandler perl-script
      PerlHandler Apache::Registry
      Options ExecCGI
      PerlSendHeader On
      allow from all

      PerlAccessHandler      Apache::SpeedLimit
      PerlSetVar             SpeedLimit      61
      PerlSetVar             SpeedSamples    20
      PerlSetVar             SpeedForgive    10

    </Location>
---------------------------------------


Но SpeedLimit.pm не хочет работать:
$ httpd -t
Syntax error on line 282 of /usr/local/apache/conf/httpd.conf:
Undefined subroutine &IPC::SysV::SEM_UNDO called at
/usr/local/lib/perl5/site_perl/5.005/IPC/Shareable.pm line 45.
BEGIN failed--compilation aborted at
/usr/local/apache/lib/perl/Apache/SpeedLimit.pm line 6.

Т.е. mod_perl все-таки находит модуль IPC::SysV.
Однако, SEM_UNDO в нем встречается, но это уж точно не subroutine:
@EXPORT_OK = qw(
..........
        SEM_A SEM_ALLOC SEM_DEST SEM_ERR SEM_ORDER SEM_R SEM_UNDO
........
)

После продолжительной переписки с автором IPC::Shareable
выяснилось, что дело якобы в эмуляции каких-то SysV-функций
через модуль  IPC::SysV под моей FreeBSD 2.2.6:
> > Can I use IPC-Shareable on FreeBSD 2.2.6 at all?
> > Or only on SysV-ish OSes?
>
> It should work on FreeBSD; as far as I know it's supported SysV IPC for
> some time, and I've been in contact with people who have used it on
> FreeBSD.
>
> Perhaps SysV IPC isn't compiled into your kernel?  Unfortunately, I don't
> use FreeBSD myself so I can't tell you how to find out.

Порывшись в директориях, я нашел
/usr/local/lib/perl5/5.00503/IPC/SysV.pm
/usr/local/lib/perl5/5.00503/i386-freebsd/auto/IPC/SysV/SysV.bs
/usr/local/lib/perl5/5.00503/i386-freebsd/auto/IPC/SysV/SysV.so
Все это включено в стандартный Perl 5.005_03
и должно работать!

Самое смешное:
Берем IPC-SysV-1.03, файлы из которого совпадают
по размеру с включенными в Perl 5.005_03.
После успешного make Makefile.pl делаю
---------------------------------------
$make
.....................
SysV.xs: In function `XS_IPC__Msg__stat_pack':
SysV.xs:69: storage size of `Perl_ds' isn't known
SysV.xs: In function `XS_IPC__Msg__stat_unpack':
SysV.xs:89: dereferencing pointer to incomplete type
SysV.xs:92: dereferencing pointer to incomplete type
SysV.xs:95: dereferencing pointer to incomplete type
SysV.xs:97: dereferencing pointer to incomplete type
SysV.xs:99: dereferencing pointer to incomplete type
SysV.xs:101: dereferencing pointer to incomplete type
SysV.xs:103: dereferencing pointer to incomplete type
SysV.xs:105: dereferencing pointer to incomplete type
SysV.xs:107: dereferencing pointer to incomplete type
SysV.xs:109: dereferencing pointer to incomplete type
SysV.xs:111: dereferencing pointer to incomplete type
SysV.xs:113: dereferencing pointer to incomplete type
SysV.xs:115: dereferencing pointer to incomplete type
SysV.xs:117: dereferencing pointer to incomplete type
SysV.xs: In function `XS_IPC__Semaphore__stat_unpack':
SysV.xs:135: dereferencing pointer to incomplete type
SysV.xs:138: dereferencing pointer to incomplete type
SysV.xs:140: arithmetic on pointer to an incomplete type
SysV.xs:140: dereferencing pointer to incomplete type
SysV.xs:141: arithmetic on pointer to an incomplete type
SysV.xs:141: dereferencing pointer to incomplete type
SysV.xs:142: arithmetic on pointer to an incomplete type
SysV.xs:142: dereferencing pointer to incomplete type
SysV.xs:143: arithmetic on pointer to an incomplete type
SysV.xs:143: dereferencing pointer to incomplete type
SysV.xs:144: arithmetic on pointer to an incomplete type
SysV.xs:144: dereferencing pointer to incomplete type
SysV.xs:145: arithmetic on pointer to an incomplete type
SysV.xs:145: dereferencing pointer to incomplete type
SysV.xs:146: arithmetic on pointer to an incomplete type
SysV.xs:146: dereferencing pointer to incomplete type
SysV.xs:147: arithmetic on pointer to an incomplete type
SysV.xs:147: dereferencing pointer to incomplete type
SysV.xs: In function `XS_IPC__Semaphore__stat_pack':
SysV.xs:158: storage size of `Perl_ds' isn't known
*** Error code 1

Stop.
---------------------------------------

Однако, я сам компилил и устанавливал Perl 5.005_03,
и мата насчет IPC::SysV не было!
Полез в сырец perl5.005_03/ext/IPC/SysV,
а сырцы этого модуля действительно отличаются!
Как минимум, make для него прошел без ошибок.
А "make test":
---------------------------------------
$ make test
PERL_DL_NONLAZY=1 /usr/bin/perl -Iblib/arch -Iblib/lib
-I/usr/local/lib/perl5/5.00503/i386-freebsd -I/usr/local/lib/perl5/5.00503
-e 'use Test::Harness qw(&runtests $verbose); $verbose=0;
runtests @ARGV;' t/*.tt/msg...............
Can't load 'blib/arch/auto/IPC/SysV/SysV.so' for module IPC::SysV:
Undefined symbol "_ftok" in perl:blib/arch/auto/IPC/SysV/SysV.so
at /usr/local/lib/perl5/5.00503/i386-freebsd/DynaLoader.pm line 169.

at blib/lib/IPC/SysV.pm line 54
BEGIN failed--compilation aborted at t/msg.t line 1.dubious
        Test returned status 255 (wstat 65280, 0xff00)
t/sem...............Can't load 'blib/arch/auto/IPC/SysV/SysV.so' for module
IPC:
:SysV: Undefined symbol "_ftok" in perl:blib/arch/auto/IPC/SysV/SysV.so at
/usr/
local/lib/perl5/5.00503/i386-freebsd/DynaLoader.pm line 169.

 at blib/lib/IPC/SysV.pm line 54
BEGIN failed--compilation aborted at t/sem.t line 12.
dubious
        Test returned status 255 (wstat 65280, 0xff00)
FAILED--2 test scripts could be run, alas--no output ever seen
*** Error code 2

Stop.
---------------------------------------


Итак (уф-ф!), вопрос:
Реально ли заставить этот модуль заработать,
или есть другие подходящие для сабжа
модули/настройки конфигов?





=============================================================================
=               Apache-Rus@xxxxxxxxxxxxx mailing list                       =
Mail "unsubscribe apache-rus" to majordomo@xxxxxxxxxxxxx if you want to quit.
=       Archive avaliable at http://www.lexa.ru/mail-archive                =







Спонсоры сайта:

[ Russian Apache ] [ Как это работает ] [ Рекомендации ] [ Где взять ] [ Как установить ] [ Как настроить ] [ Статус и поддержка ] [ Краткий обзор ] [ FAQ ] [ Список рассылки ] [ Благодарности ] [ Поиск по серверу ] [ Powered by Russian Apache ] [ Apache-talk archive ]

"Russian Apache" includes software developed by the Apache Group for use in the Apache HTTP server project (http://www.apache.org/) See Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C) 1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.