Como proteger o phpmyadmin

3

OK, tenho vários sites em um vps com certificados ssl. Eu tenho a configuração de segurança mod, bem como o tripwire. Minha pergunta, então, diz respeito à segurança do phpmyadmin. Se meu IP for 123.123.123.123, posso acessar o phpmyadmin usando 123.123.123.123/mypmyadmin-IHaveChangedThisURL.

E mesmo que eu mudei o url do phpmyadmin, o phpmyadmin ainda está acessível se você puder encontrar o url.

Eu adicionei um arquivo html em branco ao diretório raiz e, portanto, nenhum índice de diretório é fornecido usando o nome de host vps ou o IP vps.

Existe mais alguma coisa que eu possa fazer para proteger o uso do IP e tentativas de chegar ao phpmyadmin etc?

Qualquer orientação é apreciada. Obrigado.

    
por Hawk007 21.07.2017 / 15:01

1 resposta

3

Várias coisas podem ser feitas. Vou explicar minhas idéias e como elas poderiam ser implementadas no Apache2.

1. Use uma conexão HTTPS para proteger seus dados de sniffing

2. Mude o URI do PhpMyAdmin

Para alterar o URI, dentro da configuração padrão, você deve editar /etc/phpmyadmin/apache.conf e alterar a primeira parte ( /phpmyadmin ) desta diretiva:

Alias /phpmyadmin /usr/share/phpmyadmin

Reinicie o Apache e você poderá acessar o PhpMyAdmin através do novo URI.

3. Execute o PhpMyAdmin na porta diferente

Aqui está um manual passo-a-passo: Como executar o PhpMyAdmin em uma porta diferente . Não esqueça de abrir esta porta no Firewall.

4. Acesse o PhpMyAdmin apenas localmente através do túnel SSH

Execute o PhpMyAdmin na porta diferente. Vamos supor que seja a porta 99 . Feche esta porta no Firewall. Em seguida, estabeleça a conexão SSH por um comando similar a:

ssh -fTN -R 99:localhost:99 <user>@<domain>or<ip>
  • Este comando criará o túnel ssh , em que o controle remoto -R port 99 é encaminhado para a porta local 99 no localhost ( 127.0.0.1 ).
  • As opções -fTN enviarão a conexão para o plano de fundo.

Em seguida, o PhpMyAdmin deve estar acessível através do navegador da sua máquina local no URL http://localhost:99/ . Mais ideias podem ser encontradas aqui:

5. Proteja o caminho do URI do PhpMyAdmin através da autenticação por senha

Mais detalhes podem ser encontrados neste manual do Apache: Autenticação e Autorização . O pacote apache2-utils deve ser instalado. Em suma, os passos são:

  • Crie uma pasta fora de /var/www , onde o arquivo de senha será mantido. Em seguida, gere o arquivo de senha. Vamos supor que o nome dessa nova pasta seja /var/www-auth :

    $ sudo mkdir /var/www-auth
    $ cd /var/www-auth
    $ sudo htpasswd -c .htpasswd.phpmyadmin <user>
    New Password: *********
    Re-Type New Password: *********
    Adding Password For User <user>
    
    • .htpasswd.phpmyadmin é o nome do arquivo no qual a senha será armazenada.
    • user é o nome de login que será usado.
    • ********* é a senha:)
    • -c significa criar novo arquivo. Se esta opção for omitida, o comando htpasswd tentará adicionar o novo login name a um .htpasswd.file existente.
  • Modifique o tipo de autenticação PhpMyAdmin, através da edição /etc/phpmyadmin/apache.conf desta maneira (ou crie .htaccess file):

        <Directory /usr/share/phpmyadmin>
        .....
            <IfModule mod_authz_core.c>
                <IfModule mod_authn_file.c>
                    AuthType Basic
                    AuthName "The name of the authentication form - type some user and password hints"
                    AuthUserFile /var/www-auth/.htpasswd.phpmyadmin
                </IfModule>
                Require valid-user
            </IfModule>
        .....
        </Directory>
    
  • Ative os módulos e reinicie o Apache2 para aplicar a nova configuração:

        sudo a2enmod authz_core authz_user authn_file
        sudo systemctl restart apache2.service
    
  • Agora, para acessar o URI do PhpMyAdmin, você deve fornecer o nome de login user e seu password .

6. Proteja o caminho do URI do PhpMyAdmin através da autenticação de dois fatores (2FA):

  • Siga as etapas 1 e 3 em esta manual para gerar o arquivo .google_authenticator , localizado no diretório $HOME . Na etapa 4 é descrito como gerar códigos de autenticação.

  • Crie um novo diretório em /var/www-auth . Vamos supor que o nome dessa nova pasta seja google_authenticator :

    sudo mkdir -p /var/www-auth/google_authenticator
    
  • Copie o arquivo $HOME/.google_authenticator nesse diretório e altere suas permissões (ele deve ser legível para www-data ):

    sudo cp $HOME/.google_authenticator /var/www-auth/google_authenticator/user
    sudo chown www-data:www-data /var/www-auth/google_authenticator/user
    

    Por favor, note que o nome do arquivo determina o nome de login! O nome do arquivo será usado como nome de usuário durante o login no seu site seguro.

  • Modifique o novo arquivo adicionando a diretiva " PASSWORD=qwerty , em que qwerty é a nova senha de login.

    E3CY3TNSNBXXXXXX
    " RESETTING_TIME_SKEW ...
    " RATE_LIMIT 3 30 ...
    " WINDOW_SIZE 17
    " DISALLOW_REUSE 48885555 ...
    " TOTP_AUTH
    " PASSWORD=qwerty
    4567...
    
  • Instale mod_authn_google para o Apache2. Infelizmente eu este módulo não está disponível no repositório do Ubuntu, mas podemos obtê-lo de este repositório .Os passos são: (1) vá para o seu Downloads , (2) faça o download do pacote dba-apa24-mod_authn_google-r22... .rpm , (3) extraia mod_authn_google.so , (4) coloque o arquivo em /usr/lib/apache2/modules/ , (5) conceda permissões apropriadas, (6) Crie o arquivo de carregamento do módulo:

    cd $HOME/Downloads
    wget http://download.opensuse.org/repositories/home:/csbuild:/DBA/RedHat_RHEL-7/x86_64/dba-apa24-mod_authn_google-r22-1.1.x86_64.rpm
    rpm2cpio dba-apa24-mod_authn_google-r22-1.1.x86_64.rpm | cpio -iv --to-stdout ./DBA/apache24/WWW/2.4.x/modules/mod_authn_google-r22.so > mod_authn_google.so
    sudo mv mod_authn_google.so /usr/lib/apache2/modules/
    sudo chown root:root /usr/lib/apache2/modules/mod_authn_google.so
    sudo chmod g-w /usr/lib/apache2/modules/mod_authn_google.so
    echo "LoadModule authn_google_module /usr/lib/apache2/modules/mod_authn_google.so" | sudo tee /etc/apache2/mods-available/authn_google.load
    sudo a2enmod authn_google
    
  • Modifique o tipo de autenticação PhpMyAdmin, através da edição /etc/phpmyadmin/apache.conf desta maneira (ou crie .htaccess file):

        <Directory /usr/share/phpmyadmin>
        .....
            <IfModule mod_authz_core.c>
                <IfModule mod_authn_google.c>
                    AuthType Basic
                    AuthName "The name of the authentication form - type some user and password hints"
                    AuthBasicProvider "google_authenticator"
                    GoogleAuthUserPath /var/www-auth/google_authenticator
                    GoogleAuthCookieLife 3600
                    GoogleAuthEntryWindow 2
                </IfModule>
                Require valid-user
            </IfModule>
        .....
        </Directory>
    
  • Ative os módulos e reinicie o Apache2 para aplicar a nova configuração:

        sudo a2enmod authz_core authz_user authn_google
        sudo systemctl restart apache2.service
    
  • Agora, para acessar o URI do PhpMyAdmin, você deve fornecer o nome de login user , seu password e 6 dígitos token code :

7. Use o ModSecurity para o Apache

Com o ModSecurity, você pode adicionar restrições mais flexíveis ao URI do PhpMyAdmin. Em esta resposta , na seção "ModSecurity Rules & gt; SAS & gt; Iptables ", descrevi resumidamente como podemos criar regras personalizadas para o ModSecurity.

    
por pa4080 24.07.2017 / 15:03