Как обезопасить phpmyadmin

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

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

Я добавил пустой html-файл в корневой каталог, и поэтому не указывается индекс каталога с использованием имени хоста vps или IP-адреса vps.

Что еще я могу сделать, чтобы защитить использование IP и попытки попасть в phpmyadmin и т. Д.?

Любое руководство приветствуется. Благодарю.

1 ответ

Решение

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


1. Используйте HTTPS соединение для защиты ваших данных от прослушивания


2. Измените URIPhpMyAdmin

Чтобы изменить 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. Защитите путь URIPhpMyAdmin через аутентификацию по паролю.

Более подробную информацию можно найти в этом руководстве 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
    
  • Теперь, чтобы получить доступ к URIPhpMyAdmin, вы должны указать логин user И его password,


6. Защитите путь URIPhpMyAdmin с помощью двухфакторной аутентификации (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
    "ПАРОЛЬ = 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
    
  • Теперь, чтобы получить доступ к URIPhpMyAdmin, вы должны указать логин user, его password и 6 цифр token code:


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

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

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