Защита паролем каталогов при доступе с внешних IP-адресов с использованием Apache - PullRequest
0 голосов
/ 27 марта 2012

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

В настоящее время /etc/apache2/sites-available/default выглядит так:

    <VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

    <Location / >
       AuthType Digest
       AuthName "intranet"
       AuthDigestDomain /var/www/ http://10.1.2.2

       AuthDigestProvider file
       AuthUserFile /etc/apache2/passwords
       Require user user1
       SetEnv R_ENV "/var/www"
   </Location>

   <Location /dir1>
        AuthType Digest
        AuthName "dir"
        AuthDigestDomain /var/www/dir1/ http://10.1.2.2/dir1

        AuthDigestProvider file
        AuthUserFile /etc/apache2/passwords
        Require user user2
        SetEnv R_ENV "/var/www/dir1"
    </Location>

    <Location /dir2>
        AuthType Digest
        AuthName "dir"
        AuthDigestDomain /var/www/ http://10.1.2.2/dir2

        AuthDigestProvider file
        AuthUserFile /etc/apache2/passwords
        Require user user2
        SetEnv R_ENV "/var/www/dir2"
    </Location>

</VirtualHost>

У меня была добыча на документации Apache по аутентификации , но я не могу понять, как я тогда реализовал бы защиту паролем в этом.

1 Ответ

1 голос
/ 27 марта 2012

Немного поиска подняло это http://www.askapache.com/htaccess/apache-authentication-in-htaccess.html

В основном это изменилось:

<Location / >
   AuthType Digest
   AuthName "intranet"
   AuthDigestDomain /var/www/ http://10.1.2.2

   AuthDigestProvider file
   AuthUserFile /etc/apache2/passwords
   Require user user1
   SetEnv R_ENV "/var/www"
</Location>

к этому:

<Location />
    Order deny,allow
    Deny from all
    AuthType Digest
    AuthName "intranet"
    AuthDigestDomain /var/www/ http://10.1.2.2

    AuthDigestProvider file
    AuthUserFile /etc/apache2/passwords
    Require valid-user
    SetEnv R_ENV "/var/www"
    Allow from 10.1.2.0/24
    Satisfy Any
</Location>

Протестировано и все работает без сбоев.

...