Используя mod_rewrite для завершения работу веб-сайта

Уровень, ограничивающий попытки входа в систему, является простым способом предотвратить некоторые высокоскоростные нападения подбора пароля. Однако трудно ограничить распределенные нападения, и многие работают в низком темпе за недели или месяцы. Я лично предпочитаю избегать использования инструментов автоматического ответа как fail2ban. И это по двум причинам:

  1. Законные пользователи иногда забывают свои пароли. Я не хочу запрещать законным пользователям свой сервер, вынуждая меня вручную включить их учетные записи снова (или хуже, попытайтесь выяснить, какой из запрещенных IP-адресов 100/1000 их).
  2. IP-адрес не является хорошим идентификатором для пользователя. Если у Вас есть многочисленные пользователи позади единственного IP (например, школа, которая выполняет NAT на 500 студенческих машинах) отдельный пользователь, высказывающий несколько неверных предположений, может посадить Вас в мире боли. В то же время большинство попыток подбора пароля, которые я вижу, распределяется.

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

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP

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

2
задан 28 May 2010 в 05:29
6 ответов

как насчет помещения:

Order deny,allow
Deny from all
Allow from ip.ad.dre.ss

в Вашем .htaccess файл? или даже в httpd конфигурации в масштабе всей системы?

4
ответ дан 3 December 2019 в 09:10
  • 1
    потому что затем Вы don' t получают пользовательский " down" сообщение (если Вы также не изменяете 403 сообщения об ошибке), –  Good Person 28 May 2010 в 11:51

Если можно достигнуть (виртуальной) конфигурации хоста, почему бы не добавить эти строки?

<Location />
    Order deny,allow
    Deny from all
    Allow from 1.1.1.1
    ErrorDocument 403 /down.php
</Location>
<Location /down.php>
    Order allow,deny
    Allow from all
</Location>
2
ответ дан 3 December 2019 в 09:10

Проверьте свой апачский файл журнала на наличие ошибок, возможно, что Вы будете видеть 404 где-нибудь для about/down.php. Иначе, Модификация по умолчанию Переписывают отладку подсказок, следуйте:

Попытайтесь добавить это к своей конфигурации http (Где-нибудь в конфигурации, она не работает в htaccess или virtualhost уровне),

RewriteLog /tmp/rewrite.log
RewriteLogLevel 9

Это предоставит Вам линию за линией explaination того, чему это пытается соответствовать против того, какой regex, и каково окончательное решение.

Удалите эти строки впоследствии, иначе однажды Вы обнаружите, что у Вас нет почти такого дискового пространства, как Вы думали, что Вы должны...

1
ответ дан 3 December 2019 в 09:10

Спасибо за подсказку о RewriteLog. Я проверил его, и похоже, что .htaccess файл в корне сайта только относится к каталогам, которые не имеют их собственного .htaccess файла со строкой "RewriteEngine на".

отметьте, 12.345.678.90 мой IP, и 99.888... IP, я хочу позволить видеть материал.

12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b878d060/initial] (1) [perdir /srv/www/mysite.com/about/] pass through 

/srv/www/mysite.com/about/
12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b879b090/subreq] (1) [perdir /srv/www/mysite.com/about/] pass through 

/srv/www/mysite.com/about/index.html
12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b879b090/subreq] (1) [perdir /srv/www/mysite.com/about/] pass through 

/srv/www/mysite.com/about/index.cgi
12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b879b090/subreq] (1) [perdir /srv/www/mysite.com/about/] pass through 

/srv/www/mysite.com/about/index.pl
12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b879b090/subreq] (1) [perdir /srv/www/mysite.com/about/] pass through 

/srv/www/mysite.com/about/index.php
12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b8791070/initial] (1) [perdir /srv/www/mysite.com/about/] pass through 

/srv/www/mysite.com/about/css/about.css

12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b87df100/initial] (3) [perdir /srv/www/mysite.com/] strip per-dir prefix: 

/srv/www/mysite.com/requires/css/header.css -> requires/css/header.css
12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b87df100/initial] (3) [perdir /srv/www/mysite.com/] applying pattern 

'down.php$' to uri 'requires/css/header.css'
12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b87df100/initial] (4) [perdir /srv/www/mysite.com/] RewriteCond: 

input='12.345.678.90' pattern='!^(99\.888\.777\.88)$' => matched
12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b87df100/initial] (2) [perdir /srv/www/mysite.com/] rewrite 

'requires/css/header.css' -> '/down.php'
12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b87df100/initial] (1) [perdir /srv/www/mysite.com/] internal redirect with 

/down.php [INTERNAL REDIRECT]
12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b8790810/initial/redir#1] (3) [perdir /srv/www/mysite.com/] strip per-dir 

prefix: /srv/www/mysite.com/down.php -> down.php
12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b8790810/initial/redir#1] (3) [perdir /srv/www/mysite.com/] applying pattern 

'down.php$' to uri 'down.php'
12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b8790810/initial/redir#1] (3) [perdir /srv/www/mysite.com/] strip per-dir 

prefix: /srv/www/mysite.com/down.php -> down.php

12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b8790810/initial/redir#1] (3) [perdir /srv/www/mysite.com/] applying pattern 

'^(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])-((19|20)\d\d)/?(/([a-zA-Z0-9_-]{1,20}))?$' to uri 'down.php'
12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b8790810/initial/redir#1] (1) [perdir /srv/www/mysite.com/] pass through 

/srv/www/mysite.com/down.php
12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b879d098/initial] (3) [perdir /srv/www/mysite.com/login/] strip per-dir 

prefix: /srv/www/mysite.com/login/js/ajax_login.js -> js/ajax_login.js
12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b879d098/initial] (3) [perdir /srv/www/mysite.com/login/] applying pattern 

'^([a-z0-9]+/?){0,3}$' to uri 'js/ajax_login.js'
12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b879d098/initial] (1) [perdir /srv/www/mysite.com/login/] pass through 

/srv/www/mysite.com/login/js/ajax_login.js
12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b8796080/initial] (3) [perdir /srv/www/mysite.com/login/] strip per-dir 

prefix: /srv/www/mysite.com/login/images/ajax_busy.gif -> images/ajax_busy.gif
12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b8796080/initial] (3) [perdir /srv/www/mysite.com/login/] applying pattern 

'^([a-z0-9]+/?){0,3}$' to uri 'images/ajax_busy.gif'
12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b8796080/initial] (1) [perdir /srv/www/mysite.com/login/] pass through 

/srv/www/mysite.com/login/images/ajax_busy.gif
12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b8796080/initial] (1) [perdir /srv/www/mysite.com/about/] pass through 

/srv/www/mysite.com/about/images/edit.png

Как Вы видите, about/index.php страница содержит файл CSS, который расположен в/, требует. Выше, правило IP-адреса относится к файлу CSS, и это перенаправляется. Правило IP-адреса пропускается, если я помещаю, .htaccess файл в / требует только с строкой:

RewriteEngine on
0
ответ дан 3 December 2019 в 09:10
  • 1
    Я нашел решение: .htaccess файлы в подкаталогах как / о должны иметь строку: RewriteOptions наследовались, Это заставляет их наследовать правила от родительских каталогов .htaccess больше информации здесь: rankinglabs.com/Mod_Rewrite#Thank-You-For-Visiting ! Однако я думаю, что иду, делают сценарий для моего сервера, который я выполняю для закрытия сайта. Это просто деактивирует подпапку .htaccess файлы, когда я захочу закрыть веб-сайт. Иначе другие правила в моей корневой папке будут применены на каждую загрузку страницы и возможно производительность вреда.Спасибо! –  moolagain 29 May 2010 в 03:56

Сделайте это во всей подпапке .htaccess файлы.

RewriteEngine On
RewriteOptions Inherit

Посмотрите больше: http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#RewriteOptions

0
ответ дан 3 December 2019 в 09:10

почему не выполнение IP сверяется с php?

может посмотреть sth. как это

< ?php if($_SERVER['REMOTE_ADRR'] != '66.777.888.99') exit; ? >
0
ответ дан 3 December 2019 в 09:10

Теги

Похожие вопросы