- Как защитить папку Apache паролем в Windows
- Что надёжнее: защита сервера паролем или с помощью контроля доступа
- Настройка HTTP Basic аутентификации на Apache в Windows
- Доступ к web-странице на сервере Apache с паролем Дневник Максим Боголепов
- Доступ к web-странице на сервере Apache с паролем
- HackWare.ru
- Этичный хакинг и тестирование на проникновение, информационная безопасность
- Как защитить веб-сервер Apache от взлома в Windows
- Оглавление
- 1. Запрет доступа из вне к MariaDB/MySQL
- 2. Запрет доступа из вне к Apache
- 3. Установка пароля на MariaDB/MySQL
- 4. Блокировка доступа к phpMyAdmin
- 5. Удаление тестовых файлов, архивов с исходным кодом, резервных копий файлов
- 6. Запрет просмотра содержимого папок без индексного файла
- 7. Для публичных веб-серверов блокируйте доступ к папкам, в которых хранятся резервные копии и промежуточные результаты работы
- 8. Как спрятать версию веб-сервера
- 9. Установка файлового файервола mod_security
- Заключение
Как защитить папку Apache паролем в Windows
Эта инструкция расскажет как установить пароль на папку веб-сервера Apache в Windows
Что надёжнее: защита сервера паролем или с помощью контроля доступа
Если вы хотите закрыть свой веб-сервер от посторонних, кто рассмотрите вариант с блокировкой по IP. Например, если вы используете веб-сервер на локальном компьютере и в локальной сети, то вы можете разрешить доступ локальным IP, а для всех остальных заблокировать доступ к веб-серверу. Если вам такой вариант подходит, то смотрите статью «Контроль доступа к сайту (блокировка по IP, User-Agent)».
Но если вам необходим доступ к веб-серверу глобально, но вы хотите ограничить доступ посторонних ко всему серверу или отдельным папкам, то придётся выбрать защиту паролем.
Настройка HTTP Basic аутентификации на Apache в Windows
Данный способ настоятельно рекомендуется сочетать с HTTPS, в противном случае имя пользователя и пароль будут передаваться в открытом виде! Смотрите статью «Apache SSL: переход Apache на HTTPS».
Показанные ниже команды вы можете использовать без изменений если установили веб-сервер по следующей инструкции: «Как установить веб-сервер Apache c PHP, MySQL и phpMyAdmin на Windows». В противном случае вам нужно будет отредактировать пути до исполнимых файлов и файлов настроек.
Необходимо включить поддержку файла .htaccess, поскольку в нём будут храниться настройки по защите папки паролем. Если вы это ещё не сделали, то смотрите статью «Файл .htaccess в Apache».
Защищать паролем мы будем папку basic-protected, у меня эта папка расположена по пути C:\Server\data\htdocs\basic-protected — создаёте её и проверьте, что она доступна в веб-браузере http://localhost/basic-protected/.
Мы создадим файл C:\Server\bin\Apache24\conf\.htpasswd в котором будут храниться имена пользователей и хеши их паролей. Для этого мы воспользуемся утилитой htpasswd.exe
Синтаксис использования этой утилиты:
Откройте командную строку (Win+x → Windows PowerShell) и выполните в ней эту команду, заменив ИМЯ на желаемое, например:
Дважды введите пароль пользователя, этот пароль будет защищать папку от посторонних.
Если вы хотите добавить ещё пользователей и паролей, то используйте эту же самую команду, но без опции -c, то есть:
Опция -c означает создать новый файл. Если файл уже существует, то он будет предварительно удалён.
Опция -B означает использовать для шифрования пароля bcrypt. В настоящее время это считается очень безопасным. В дополнении к этой опции вы можете использовать флаг -C со значением от 4 до 17. Он устанавливает время вычисления, используемое для алгоритма bcrypt (чем выше, тем безопаснее, но медленнее). Значением по умолчанию является 5.
Ещё пара опций, которые могут вам пригодиться с командой htpasswd.exe?
- -D означает удалить пользователя. Если имя пользователя существует в указанном файле htpasswd, оно будет удалено.
- -v означает проверить пароль. Убедитесь, что указанный пароль соответствует паролю пользователя, хранящемуся в указанном файле htpasswd.
Теперь в папке basic-protected создадим файл .htaccess со следующим содержимым:
Вновь откроем адрес http://localhost/basic-protected/ и убедимся, что теперь для доступа к папке необходимо ввести имя пользователя и пароль:
Если имя или пароль неправильные, то будет выведена ошибка Unauthorized с запретом просмотра содержимого папки и файлов в ней.
Доступ к web-странице на сервере Apache с паролем Дневник Максим Боголепов
Доступ к web-странице на сервере Apache с паролем
Иногда встает вопрос, как сделать так, чтобы некоторый контент на вашем web-сервере под управлением Apache был скрытым, (“не для всех”), а доступ осуществлялся по паролю. У меня такая необходимость возникла для того, чтобы скрыть от лишних любопытных глаз пользователей полную статистику посещений другими пользователями ресурсов интернета, которую для меня собирает lightsquid. |
Некоторое отступление: на этом же сервере стоит SAMS , вот пусть там они и смотрят, сколько именно они накачали за день 😉 Но это тема для отдельной статьи.
Итак, все очень просто. Нам необходимо найти или создать в папке с документами страницы на вашем web-сервере к которой вы хотите сделать доступ по паролю вот такой файл: .htaccess. Т.е. /path to folder/.htaccess
В него надо написать следующие магические строки:
Что же это все означает?
— в первой строке мы указали, какой тип аутентификации надо произвести.
— во второй строке указано наименование зоны, в которую надо пройти аутентификацию (написать можно любую строку).
— в третьей строке указан полный путь к файлу, где будут храниться пара login:password. Логин в открытой виде, пароль в зашифрованном виде.
— в четвертой строке указан логин, под которым необходимо пройти аутентификацию.
Теперь надо задать пароль системе с указанием файла, в котором надо хранить пароль. В командной строке набираем:
и нажимаем ввод. Вводим необходимый пароль и подтверждаем его. В случае успешной операции команда выдаст сообщение Adding password for user Stat. Значит файл создан и пароль в него записан. Ключ -c команды htpasswd указывает на создание (при отсутствии) или перезаписи существующего файла с паролем.
Все, теперь пробуем получить доступ к странице статистики на нашем web-сервере. Apache перезапускать не надо. При попытке доступа к страничке, появится окошко с заглавием, которое вы указали во второй строке файла .htaccess и запросом логина и пароля.
Рис.1 (если вы пользуетесь браузером Internet Explorer)
Рис.2 (если вы пользуетесь браузером Mozilla Firefox)
Только при указании этой пары теперь можно попасть на данную страничку.
Это если бегло. Если вам интересен сам процесс происходящего в момент аутентификации на странице, советую почитать следующие статьи:
Rating: 4.3/5(3 votes cast)
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Как защитить веб-сервер Apache от взлома в Windows
Оглавление
Многие веб-мастера, а также программисты изучающие PHP, используют Apache в Windows для тренировки. Но не нужно забывать, что Apache — это полноценный веб-сервер, который в своей конфигурации по умолчанию призван обслуживать любые запросы, из какой бы сети они не пришли: локальной или глобальной сети Интернет. При этом в Windows веб-сервер Apache запущен с высокими привилегиями. Если резюмировать без лишних объяснений: уязвимый скрипт на веб-сервере может скомпрометировать всю систему Windows.
Если у вас белый IP, то к вашему веб-серверу может подключиться кто угодно из интернета. Также если вы, к примеру, подключены к локальной сети, например, через Wi-Fi, то опять же — к вашему веб-серверу может подключиться любой компьютер из этой локальной сети. Это может стать причиной утечки исходного кода, который вы разрабатываете или тестируете, либо компрометация компьютера.
Поэтому необходимо принять меры для правильной настройки компонентов веб-сервера. Благодаря принятым мерам веб-сервер Apache полностью сохранит свою работоспособность для пользователя, который запускает сайты работая за этим компьютером, но к этому серверу никто не сможет подключиться: ни в локальной, ни в глобальной сети.
1. Запрет доступа из вне к MariaDB/MySQL
Стандартный веб-сервер имеет две сетевые службы:
- сам веб-сервер, который прослушивает 80 порт (при включении HTTPS, то ещё прослушивается и 443 порт)
- сетевая служба системы управления базами данных, то есть MariaDB или MySQL, которая прослушивает порт 3306
СУБД является сетевой службой, что удобно, поскольку можно подключиться к MariaDB/MySQL с другого компьютера и выполнить разнообразные действия с базами данных. Для локальных процессов это тоже нормально — они подключаются к сетевой службе используя виртуальный сетевой интерфейс Loopback (можно перевести как «возвратная петля»). Если не вдаваться в дебри, это такой способ подключиться к сетевой службе, которая работает на этом же компьютере. То есть мы как будто делаем запрос в сеть, а сетевая служба видит эти пакеты как будто бы они пришли из сети. То есть клиент сетевой службы и сама сетевая служба работают как надо, но трафик на самом деле с компьютера никуда не уходит.
По умолчанию MariaDB/MySQL принимают подключения, пришедшие с любого компьютера. Чтобы MariaDB/MySQL принимали подключения только он веб-приложений, работающих на этом компьютере, в файле my.cnf должна содержаться строка
Пример конфигурационного файла my.cnf:
После внесения изменений в конфигурационный файл службу нужно перезапустить (или перезагрузить компьютер).
Теперь MariaDB/MySQL прослушивает только IP адрес 127.0.0.1, который относится к Loopback. Это, в свою очередь, означает, что никто из вне (вне компьютера, на котором работает веб-сервер), не сможет подключиться к MariaDB/MySQL. При этом сайты и другие приложения будут работать с базами данных как ни в чём не бывало — они как раз и используют такие соединения к адресу 127.0.0.1.
2. Запрет доступа из вне к Apache
Что касается веб-сервера, то здесь настройка зависит от ваших нужд — для чего именно нужен сервер?
Если вы используете сервер только для написания скриптов, тестирования сайтов и вам не нужно, чтобы к нему могли подключаться из вне, тогда в файле C:\Server\bin\Apache24\conf\httpd.conf найдите директиву Listen, по умолчанию её значение:
И замените его на
Чтобы изменения вступили в силу, перезапустите сервер:
После этого никакое устройство ни в глобальной, ни в локальной сети не сможет подключиться к вашему веб-серверу. Но вы как и раньше без проблем сможете открывать его содержимое в веб-браузере используя адрес http://localhost/
Если вы хотите сделать так, чтобы сервер Apache был доступен для всех в локальной сети, но не доступен в глобальной сети, то есть два варианта.
Присвоить компьютеру с сервером статичный адрес, а затем прописать его с директивой Listen локальный_IP:80. Получится именно тот эффект, который нужен: веб сервер будет отвечать на запросы из локальной сети и будет игнорировать запросы из Интернета. Подробности о настройке статичного IP смотрите в статье «Как веб-сервер на своём компьютере сделать доступным для других».
- Также есть второй способ, более простой чем первый:
В папке C:\Server\data\htdocs\ (это наша корневая папка веб-документов), создайте файл .htaccess, и в него впишите:
Этой строкой мы разрешили для доступа к серверу устройствам с IP из всех локальных диапазонов, а также петлевым адресам, для всех остальных при попытке подключиться к серверу будет выводиться сообщение:
Вы можете отредактировать приведённую выше строку под ваши нужды, например, можно убрать диапазоны 10.0.0.0/8 и 172.16.0.0/12, если они не используются в вашей локальной сети. IP адреса из 10.0.0.0/8 могут использоваться Интернет-провайдером для NAT, а 172.16.0.0/12 могут использоваться для локальных сетей на уровне города (такие есть/были у некоторых провайдеров). Следовательно, если вы оставите диапазоны 10.0.0.0/8 и 172.16.0.0/12, то при стечении ряда обстоятельств (кабель Интернет-провайдера напрямую подключён к компьютеру без роутера, а Интернет-провайдер использует диапазоны 10.0.0.0/8 и 172.16.0.0/12) пользователи этих локальных сетей смогут подключиться к вашему серверу при этих настройках.
Поэтому также попробуйте
Если всё работает и проблем нет, то остановитесь именно на втором варианте.
Кстати, дополнительная информация про контроль, кто может иметь доступ к вашему сайту (локальному или на хостинге), вы найдёте в статье «Контроль доступа к сайту (блокировка по IP, User-Agent)».
3. Установка пароля на MariaDB/MySQL
По умолчанию у пользователя root пустой пароль. Поскольку мы отключили доступ к серверу MariaDB/MySQL из вне, то это не так опасно. Тем не менее остаётся угроза, что злоумышленник найдёт уязвимость в веб-приложении и сможет выполнить подключение через него. Поэтому при желании для дополнительного усиления сервера можно установить пароль для пользователя root в MariaDB/MySQL.
Для этого откройте командную строку, в неё введите:
Замените новый_пароль на ваш пароль.
4. Блокировка доступа к phpMyAdmin
Возможно вы пропустили второй шаг, на котором был заблокирован доступ к веб-серверу с других компьютеров, поскольку, например, вам нужно, чтобы веб-сервер был доступен для подключения извне.
Если это так, то в любом случае нужно заблокировать доступ к phpMyAdmin — на локальном компьютере обычно он не должен быть открытым для других. Доступный для подключения phpMyAdmin позволяет брутфорсить пароль (взламывать методом перебора), а в случае если вы вовремя не обновляете phpMyAdmin, то атакующий также может воспользоваться найденными в старых версиях phpMyAdmin уязвимостями и проникнуть в систему.
Чтобы закрыть доступ к phpMyAdmin в папке /phpmyadmin/ на сервере создайте файл .htaccess и скопируйте в него:
Это нужно, чтобы в phpMyAdmin не могли зайти посторонние — обязательно это сделайте. Для проверки, что запрет работает, попробуйте открыть с какого-нибудь другого устройства (например, с мобильного телефона) адрес вида http://ваш_сайт/phpmyadmin/ или http://ваш_IP/phpmyadmin/ — должно появиться сообщение, что доступ запрещён и ошибка 403. Либо просто удалите папку /phpmyadmin/, если вам не нужен phpMyAdmin.
Аналогично сделайте с другими папками на сервере, в которые не должно быть доступа посторонним.
5. Удаление тестовых файлов, архивов с исходным кодом, резервных копий файлов
Удалите файл с phpinfo(); или другие проверочные файлы, которые создавались в процессе установки и тестирования веб-сервера.
6. Запрет просмотра содержимого папок без индексного файла
По умолчанию если зайти в папку без индексного файла, то показывается список всех файлов в этой папке. Скорее всего, вам это не нужно (и это хуже для безопасности). Поэтому в конфигурационном файле Apache httpd.conf найдите директиву
После неё найдите строку
Чтобы изменения вступили в силу, перезапустите веб-сервер.
7. Для публичных веб-серверов блокируйте доступ к папкам, в которых хранятся резервные копии и промежуточные результаты работы
Этот пункт для тех, кто не заблокировал полностью доступ к веб-серверу с других компьютеров, а использует его в качестве публичного сервера, а также в качестве среды разработки.
Если вы разрабатываете и тестируете скрипты прямо на этом сервере, то закройте доступ к папке, в которой находятся файлы проекта с помощью .htaccess как это показано чуть выше. Не храните бэкапов, файлы резервных копий, например, index.php,bak на этом сервере!
Для настройки ограничений рекомендуется ознакомиться со статьёй «Контроль доступа к сайту (блокировка по IP, User-Agent)».
8. Как спрятать версию веб-сервера
Если в командной строке вы выполните:
То будут выведены примерно следующие данные:
Обратите внимание на строку:
Из неё можно сделать вывод о точных версиях Apache и PHP, а также о том, что веб-сервер запущен на операционной системе Windows. Это может помочь атакующему. Эта строка является часть HTTP заголовка и отправляется каждый раз, когда делается запрос к веб-серверу.
Двумя директивами можно отключить вывод данной информации.
Откройте файл httpd.conf (C:\Server\bin\Apache24\conf\httpd.conf) и добавьте туда две директивы:
Чтобы изменения вступили в силу, перезапустите сервер:
Снова делаем проверку:
Как можно увидеть, теперь выводится информации намного меньше:
9. Установка файлового файервола mod_security
Файловый файервол исследует каждый запрос, пришедший к веб-серверу, и в случае если этот запрос представляет угрозу для веб-приложения или веб-сайта, то файловый файервол блокирует этот запрос.
То есть даже если на вашем веб-сервере имеется уязвимый скрипт или сайт, то mod_security не позволит злоумышленнику эксплуатировать эту уязвимость
mod_security это файловый фейервол, система обнаружения и предотвращения вторжений.
Рассмотрим установку mod_security в Apache, запущенный на Windows.
[РАЗДЕЛ В ПРОЦЕССЕ ПОДГОТОВКИ]
Заключение
Относитесь к веб-серверу на своём компьютере как к публичному: всё, что не закрыто и не заблокировано это как проходной двор. Отнеситесь к этому серьёзно, так как через веб-сервер можно скомпрометировать (взломать) весь компьютер!