Как обезопасить 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 соединение для защиты ваших данных от прослушивания
Сначала включите модуль SSL, если он не включен:
sudo a2enmod ssl
,Откройте порт 443 (HTTPS) в брандмауэр. Вы должны использовать свой собственный порт здесь.
Следуйте этому руководству и включите бесплатный сертификат Let's Encrypt.
Проверьте этот ответ и отключите слабые шифры.
Тогда вы можете заставить всех пользователей использовать 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/
, Больше идей можно найти здесь:
- Доступ к удаленным нескольким серверам за NAT
- IPTables разрешают только локальный доступ
- Разрешить доступ к Ubuntu Server только с определенных IP-адресов
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.