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

ОК, поэтому у меня есть несколько сайтов на vps с сертификатами ssl. У меня есть настройка безопасности мод, а также tripwire. Затем мой вопрос относится к безопасности phpmyadmin. Если мой IP-адрес 123.123.123.123, я могу получить доступ к phpmyadmin, используя 123.123.123.123/mypmyadmin-IHaveChangedThisURL.

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

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

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

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

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

3 ответа

Можно сделать несколько вещей. Я объясню свои идеи и способ их реализации в Apache2.

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

Сначала включите модуль SSL, если он не включен: sudo a2enmod ssl. Отверните порт 443 (HTTPS) в брандмауэр. Здесь вы должны использовать свой пользовательский порт. Следуйте этому руководству и включите бесплатный сертификат от Let's Encrypt. Проверьте этот ответ и отключите «Слабые шифры». Затем вы можете заставить всех пользователей использовать 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>
Сначала включите модуль SSL, если он не включен: sudo a2enmod ssl. Параметры -fTN будут нажимать на соединение на заднем плане.

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

Параметры -fTN будут подталкивать соединение к фону. Отпустить порт 443 (HTTPS) в брандмауэр. Вы должны использовать свой пользовательский порт здесь. Разрешить доступ к Ubuntu Server только с определенных IP-адресов

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

В этом руководстве Apache можно найти более подробную информацию: Как запустить PhpMyAdmin на другом порту . Необходимо установить пакет apache2-utils. Короче говоря, следующие шаги:

Разрешить сервер Ubuntu Доступ только к определенному IP-адресу

OPEN-порту 443 (HTTPS) в брандмауэре. Вы должны использовать свой пользовательский порт здесь.

    <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>
Следуйте этому руководству и включите бесплатный сертификат от Let's Encrypt.

Следуйте этому руководству и включите бесплатный сертификат от Let's Encrypt.

6. Защитите путь URI PhpMyAdmin с помощью двухфакторной аутентификации (2FA):

Откройте порт 443 (HTTPS) в брандмауэре. Здесь вы должны использовать свой пользовательский порт.

    <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>
Создайте новый каталог под /var/www-auth. Предположим, что имя этой новой папки - google_authenticator:
sudo mkdir -p /var/www-auth/google_authenticator

Следуйте этому руководству и включите бесплатный сертификат от Let's Encrypt.

Проверьте этот ответ и отключите «Слабые шифры».

Проверьте этот ответ и отключите «Слабые шифры».

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
Затем вы можете заставить всех пользователей использовать HTTPS.

Затем вы можете заставить всех пользователей использовать HTTPS.

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

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

Создайте папку вне /var/www, где будет храниться файл паролей. Затем создайте файл паролей. Предположим, что имя этой новой папки - /var/www-auth:

3
ответ дан 22 May 2018 в 20:19
  • 1
    Если бы был лишний параноик (в данном случае это было бы очень хорошо), я бы предположил виртуальный хост, предназначенный для обслуживания phpmyadmin только для локального хоста, а затем с использованием туннеля ssh и прокси-сервера браузера - поэтому phpmyadmin доступен только в том случае, если также доступен доступ ssh ... – taifwa 24 July 2017 в 20:22
  • 2
    # pa4080 awesome. Я собираюсь держать меня занятым некоторое время и может потребовать другие ответы, но я думаю, что я использую это. кроме, может быть, ssl. Я разрешаю шифровать сертификаты на всех доменах и поэтому не знаю, могу ли я применить их с помощью IP? Не уверен в этом, но я приступлю к этому завтра. Еще раз спасибо за потрясающий ответ. Очень признателен. – Hawk007 24 July 2017 в 22:54
  • 3
    @ Hawk007 Я рад помочь! Вы не можете применять SSL / TLS-сертификат с использованием IP-адреса, но по умолчанию для настройки PhpMyAdmin должен быть доступен через https://each-of-your.domains/phpmyadmin-uri. Я намеренно написал этот параметр, потому что вы сказали, что используете SSL, но имеете доступ к PhpMyAdmin через IP-адрес сервера. – pa4080 25 July 2017 в 00:34
  • 4
    Основной источник безопасности должен исходить из вашего надежного пароля и обеспечения безопасности данных при транзите через TLS. Все остальное - это просто безопасность через неясность, и ее можно легко обойти. – Eiver 21 February 2018 в 16:57
  • 5
    @Eiver, я переупорядочил параметры. – pa4080 23 February 2018 в 12:57

Можно сделать несколько вещей. Я объясню свои идеи и способ их реализации в Apache2.

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

Сначала включите модуль SSL, если он не включен: sudo a2enmod ssl. Отверните порт 443 (HTTPS) в брандмауэр. Здесь вы должны использовать свой пользовательский порт. Следуйте этому руководству и включите бесплатный сертификат от Let's Encrypt. Проверьте этот ответ и отключите «Слабые шифры». Затем вы можете заставить всех пользователей использовать 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> Сначала включите модуль SSL, если он не включен: sudo a2enmod ssl. Параметры -fTN будут нажимать на соединение на заднем плане.

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

Параметры -fTN будут подталкивать соединение к фону. Отпустить порт 443 (HTTPS) в брандмауэр. Вы должны использовать свой пользовательский порт здесь. Разрешить доступ к Ubuntu Server только с определенных IP-адресов

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

В этом руководстве Apache можно найти более подробную информацию: Как запустить PhpMyAdmin на другом порту . Необходимо установить пакет apache2-utils. Короче говоря, следующие шаги:

Разрешить сервер Ubuntu Доступ только к определенному IP-адресу

OPEN-порту 443 (HTTPS) в брандмауэре. Вы должны использовать свой пользовательский порт здесь.

<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> Следуйте этому руководству и включите бесплатный сертификат от Let's Encrypt.

Следуйте этому руководству и включите бесплатный сертификат от Let's Encrypt.

6. Защитите путь URI PhpMyAdmin с помощью двухфакторной аутентификации (2FA):

Откройте порт 443 (HTTPS) в брандмауэре. Здесь вы должны использовать свой пользовательский порт.

<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>
Создайте новый каталог под /var/www-auth. Предположим, что имя этой новой папки - google_authenticator: sudo mkdir -p /var/www-auth/google_authenticator

Следуйте этому руководству и включите бесплатный сертификат от Let's Encrypt.

Проверьте этот ответ и отключите «Слабые шифры».

Проверьте этот ответ и отключите «Слабые шифры».

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 Затем вы можете заставить всех пользователей использовать HTTPS.

Затем вы можете заставить всех пользователей использовать HTTPS.

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

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

Создайте папку вне /var/www, где будет храниться файл паролей. Затем создайте файл паролей. Предположим, что имя этой новой папки - /var/www-auth:

3
ответ дан 18 July 2018 в 09:55

Можно сделать несколько вещей. Я объясню свои идеи и способ их реализации в Apache2.

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

Сначала включите модуль SSL, если он не включен: sudo a2enmod ssl. Отверните порт 443 (HTTPS) в брандмауэр. Здесь вы должны использовать свой пользовательский порт. Следуйте этому руководству и включите бесплатный сертификат от Let's Encrypt. Проверьте этот ответ и отключите «Слабые шифры». Затем вы можете заставить всех пользователей использовать 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> Сначала включите модуль SSL, если он не включен: sudo a2enmod ssl. Параметры -fTN будут нажимать на соединение на заднем плане.

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

Параметры -fTN будут подталкивать соединение к фону. Отпустить порт 443 (HTTPS) в брандмауэр. Вы должны использовать свой пользовательский порт здесь. Разрешить доступ к Ubuntu Server только с определенных IP-адресов

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

В этом руководстве Apache можно найти более подробную информацию: Как запустить PhpMyAdmin на другом порту . Необходимо установить пакет apache2-utils. Короче говоря, следующие шаги:

Разрешить сервер Ubuntu Доступ только к определенному IP-адресу

OPEN-порту 443 (HTTPS) в брандмауэре. Вы должны использовать свой пользовательский порт здесь.

<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> Следуйте этому руководству и включите бесплатный сертификат от Let's Encrypt.

Следуйте этому руководству и включите бесплатный сертификат от Let's Encrypt.

6. Защитите путь URI PhpMyAdmin с помощью двухфакторной аутентификации (2FA):

Откройте порт 443 (HTTPS) в брандмауэре. Здесь вы должны использовать свой пользовательский порт.

<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>
Создайте новый каталог под /var/www-auth. Предположим, что имя этой новой папки - google_authenticator: sudo mkdir -p /var/www-auth/google_authenticator

Следуйте этому руководству и включите бесплатный сертификат от Let's Encrypt.

Проверьте этот ответ и отключите «Слабые шифры».

Проверьте этот ответ и отключите «Слабые шифры».

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 Затем вы можете заставить всех пользователей использовать HTTPS.

Затем вы можете заставить всех пользователей использовать HTTPS.

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

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

Создайте папку вне /var/www, где будет храниться файл паролей. Затем создайте файл паролей. Предположим, что имя этой новой папки - /var/www-auth:

3
ответ дан 24 July 2018 в 19:28

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

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