Как защитить phpmyadmin

Хорошо, таким образом, у меня есть несколько сайтов на vps с сертификатами SSL. У меня есть ультрасовременная установка защиты, а также растяжка. Мой вопрос затем касается phpmyadmin безопасности. Если мой IP 123.123.123.123, я могу получить доступ к phpmyadmin, использующему 123.123.123.123/mypmyadmin-IHaveChangedThisURL.

И даже при том, что я изменил phpmyadmin URL, phpmyadmin все еще доступен, если можно найти URL.

Я добавил пустой файл HTML к корневому каталогу и таким образом, никакой индекс каталога не дан с помощью vps имени хоста или vps IP.

Есть ли что-либо еще, что я могу сделать для защиты использования IP и пытаюсь добраться до phpmyadmin и т.д.?

Любое руководство ценится.Спасибо.

4
задан 28 July 2017 в 11:20

1 ответ

Могли быть сделаны несколько вещей. Я объясню свои идеи и путь, как они могли быть реализованы в Apache2.


1. Используйте Подключение HTTPS для защиты данных из сниффинга


2. Измените URI PhpMyAdmin

Для изменения URI, в рамках конфигурации по умолчанию, необходимо отредактировать /etc/phpmyadmin/apache.conf и измените первую часть (/phpmyadmin) из этой директивы:

Alias /phpmyadmin /usr/share/phpmyadmin

Apache перезапуска и Вы сможете получить доступ к PhpMyAdmin через новый URI.


3. Выполните PhpMyAdmin на другом порте

Вот пошаговое руководство: Как выполнить PhpMyAdmin на другом порте. Не забывайте открывать этот порт в Брандмауэр.


4. Доступ PhpMyAdmin только локально через туннель SSH

Выполните PhpMyAdmin на другом порте. Давайте предположим, что это - порт 99. Закройте этот порт в Брандмауэр. Затем установите соединение SSH командой, подобной как:

ssh -fTN -R 99:localhost:99 <user>@<domain>or<ip>
  • Эта команда создаст туннель ssh, где удаленное -R порт 99 передается локальному порту 99 на localhost (127.0.0.1).
  • Опции -fTN продвинет соединение в к фону.

Затем PhpMyAdmin должен быть доступным через веб-браузер Вашей локальной машины на URL http://localhost:99/. Больше идей могло быть находкой здесь:


5. Защитите путь PhpMyAdmin URI через Аутентификацию по паролю

Больше деталей могло быть найдено в руководстве этого Apache: Аутентификация и авторизация. Пакет apache2-utils должен быть установлен. Короче говоря шаги:

  • Создайте папку за пределами /var/www, где файл паролей будет сохранен. Затем генерируйте файл паролей. Давайте возьмем имя этой новой папки, /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 название файла, в котором будет сохранен пароль.
    • user имя для входа в систему, которое будет использоваться.
    • ********* пароль :)
    • -c средства создают новый файл. Если эта опция опущена htpasswd команда попытается добавить новое login name к существующему .htpasswd.file.
  • Измените тип аутентификации PhpMyAdmin посредством редактирования /etc/phpmyadmin/apache.conf таким образом (или создают .htaccess файл):

    <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>
    
  • Включите модули и перезапустите Apache2 для применения новой конфигурации:

    sudo a2enmod authz_core authz_user authn_file
    sudo systemctl restart apache2.service
    
  • Теперь для доступа к URI PhpMyAdmin необходимо обеспечить имя для входа в систему user и password.


6. Защитите путь PhpMyAdmin URI через Двухфакторную аутентификацию (2FA):

  • Следуйте за шагами 1 и 3 от этого руководства для генерации .google_authenticator файл, расположенный в Вашем $HOME каталог. На шаге 4 описан, как генерировать коды аутентификации.

  • Создайте новый каталог под /var/www-auth. Давайте возьмем имя этой новой папки, google_authenticator:

    sudo mkdir -p /var/www-auth/google_authenticator
    
  • Скопируйте файл $HOME/.google_authenticator в тот каталог и изменение его полномочия (это должно быть читаемо для 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
    

    Обратите внимание на то, что имя файла определяет имя для входа в систему! Имя файла будет использоваться в качестве имени пользователя при входе безопасного веб-сайта.

  • Измените новый файл путем добавления директивы " PASSWORD=qwerty, где qwerty новый пароль входа в систему.

    E3CY3TNSNBXXXXXX
    " RESETTING_TIME_SKEW ...
    " RATE_LIMIT 3 30 ...
    " WINDOW_SIZE 17
    " DISALLOW_REUSE 48885555 ...
    " TOTP_AUTH
    " PASSWORD=qwerty
    4567...
    
  • Установка mod_authn_google для Apache2. К сожалению, я, этот модуль недоступен в репозитории Ubuntu, но мы можем получить его из этого репозитория. Шаги: (1) переходят к Вашему Downloads, (2) загружают пакет dba-apa24-mod_authn_google-r22... .rpm, (3) извлечение mod_authn_google.so, (4) помещают файл в /usr/lib/apache2/modules/, (5) дайте соответствующие разрешения, (6) Создайте файл загрузки модуля:

    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
    
  • Измените тип аутентификации PhpMyAdmin посредством редактирования /etc/phpmyadmin/apache.conf таким образом (или создают .htaccess файл):

    <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>
    
  • Включите модули и перезапустите Apache2 для применения новой конфигурации:

    sudo a2enmod authz_core authz_user authn_google
    sudo systemctl restart apache2.service
    
  • Теперь для доступа к URI PhpMyAdmin необходимо обеспечить имя для входа в систему user, password и 6 цифр token code:

    enter image description here


7. Используйте ModSecurity для Apache

С ModSecurity можно добавить более гибкие ограничения на URI PhpMyAdmin. В этом ответе, под разделом "ModSecurity Rules> SAS> Iptables", я описал короче говоря, как мы можем создать пользовательские правила для ModSecurity.

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

Другие вопросы по тегам:

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