Bloqueia o acesso da Wiki somente à senha, mas permanece aberto para uma sub-rede via .htaccess

2

Basicamente, temos um Wiki que contém algumas informações confidenciais armazenadas nele - não o melhor que eu sei, mas meu antecessor o configurou. Eu quero ser capaz de solicitar acesso por senha de qualquer pessoa que não esteja na sub-rede da rede local. Aqueles na sub-rede local devem ser capazes de prosseguir sem digitar uma senha.

O seguinte .htaccess não parece funcionar mais, pois permite acesso não local sem exigir a senha:

AuthName "Our Wiki"
AuthType Basic
AuthUserFile /path/to/passwd/file
AuthGroupFile /dev/null
Require valid-user
Allow from 192.168
Satisfy Any
order deny,allow

E eu não posso descobrir o porquê. O WikkaWiki que ele deveria estar protegendo foi recentemente atualizado, o que destruiu o arquivo .htaccess, então eu restaurei o acima da memória / googling. Talvez eu esteja perdendo uma importante diretriz?

O completo .htaccess é o seguinte:

AuthName "Our Wiki"
AuthType Basic
AuthUserFile /path/to/passwd/file
AuthGroupFile /dev/null
Require valid-user
Allow from 192.168
Satisfy Any

SetEnvIfNoCase Referer ".*(adultsite|picturesplace|learnthebiz|pi-o).*" BadReferrer

order deny,allow
deny from env=BadReferrer

<IfModule mod_rewrite.c>
        # turn on rewrite engine
        RewriteEngine on
        RewriteBase /
        # if request is a directory, make sure it ends with a slash
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^(.*/[^/]+)$ $1/

        # if not rewritten before, AND requested file is wikka.php
        # turn request into a query for a default (unspecified) page
        RewriteCond %{QUERY_STRING} !wakka=
        RewriteCond %{REQUEST_FILENAME} wikka.php
        RewriteRule ^(.*)$ wikka.php?wakka= [QSA,L]

        # if not rewritten before, AND requested file is a page name
        # turn request into a query for that page name for wikka.php
        RewriteCond %{QUERY_STRING} !wakka=
        RewriteRule ^(.*)$ wikka.php?wakka=$1 [QSA,L]
</IfModule>
    
por Treffynnon 30.09.2009 / 11:34

4 respostas

3

você está errado nesta linha

order deny,allow

deve ser

order allow,deny

Veja a tabela em mod_authz_host documentation

    
por 01.11.2009 / 23:10
1

Por que você considera manter informações confidenciais no Wiki ruins? Se suas conexões HTTP forem executadas por TLS, não haverá danos.

Para o seu problema. Estamos usando o MediaWiki e acabei de tentar editar o LocalSettings.php:

$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['read'] = false;

if ($_SERVER['REMOTE_ADDR']=='192.168.1.1') {
  $wgGroupPermissions['*']['read'] = true;
  $wgGroupPermissions['*']['edit'] = true;
}

... e funciona. O que este pedaço de código faz é que ele bloqueia a leitura / edição, se o usuário não estiver logado. Mas o IP do cliente é igual ao acima, ele pode editar e ler livremente o Wiki.

Talvez você possa hackear o PHP de WikkaWiki de maneira semelhante.

    
por 30.09.2009 / 14:18
0

Para restringir o wiki apenas aos usuários que receberam credenciais de login, você pode editar o wikka.php na linha 405 (logo acima do $wikka->Run ) adicionando as seguintes linhas.

if('UserSettings' != $page and
   !is_array($wakka->GetUser())) {
    header('Location: /UserSettings');
    exit;
}

Em seguida, na sua configuração do wikka, você também desejará impedir que novos registros sejam permitidos. Caso contrário, alguém poderia simplesmente registrar e ver suas informações importantes. Na linha 51 mude o seguinte de:

'allow_user_registration' => '1',

para:

'allow_user_registration' => '0',

Agora todos serão desafiados por uma senha para acessar qualquer página da wiki, exceto a página de login ('UserSettings'). Isso não é uma coisa ruim, porque é muito mais rápido navegar na wiki quando estiver logado de qualquer forma, já que ele não precisa fazer o nome de host aparecer!

Não é bem o que eu esperava, mas funciona mesmo assim.

Obrigado por todas as suas sugestões a todos.

    
por 02.11.2009 / 14:46
0

Tente isto:

Order deny,allow
Deny from all
AuthName "Our Wiki"
AuthType Basic
AuthUserFile /path/to/passwd/file
AuthGroupFile /dev/null
Require valid-user
Allow from 192.168
Satisfy Any

Você também deve considerar remover / comentar este bloco:

SetEnvIfNoCase Referer ".*($LIST_OF_ADULT_WORDS).*" BadReferrer

order deny,allow
deny from env=BadReferrer

já que as diretivas na parte superior devem obrigar qualquer solicitante externo a autenticar primeiro.

    
por 30.09.2009 / 13:27