Андрей Смирнов
Время чтения: ~10 мин.
Просмотров: 29

Как закрыть сайт паролем с помощью htaccess

Где применяется

Использовать данный метод можно всегда, когда нужно от лишних глаз пользователей и разных программных ботов закрыть файлы, дирректории (папки на сервере) или, скажем, админку в WordPress.

Стойкость высокая обеспечивается лишь серьёзным паролем, простые пароли можно вскрывать простым подбором, поэтому постарайтесь придумать пароль посложнее. В идеале: цифры, буквы заглавные и маленькие латинского алфавита, а также разные специальные символы, как то «тире», «подчёркивание», «дефис», «собака», «кавычки», «процент» и прочие.

Также, этот способ защитит от подбора пароля в основную админку путём двойной авторизации. Пока не будет пройдена первая авторизация со стороны сервера, к второй путник просто не будет допущен. Это будет отличной защитой для админки Вордпресса в папке WP-admin.

Ещё можно закрыть свой сайт на время агрессивной DDOS атаки на весь сайт или туже админпанель, либо определённый раздел вебсайта. При этом, доступ для самого админа или редакторов, вебмастера, программиста может сохраниться при условии знания ими логина и пароля.

Вариантов на самом деле много: от доступа в платную зону и скачивания файлов оттуда до распределения зон пользования разными сотрудниками.

SQL-инъекции и XSS-атаки

Рекомендация, относящаяся к обеспечению защиты от SQL-инъекций и XSS-атак, требует самого подробного объяснения, ведь целью злоумышленников здесь являются конкретные данные из базы данных (SQL-инъекция) и пользовательские данные (XSS-атака). Стоит также понимать, что вопросы, связанные с SQL-инъекциями, затрагивают обширный раздел, посвящённый обеспечению безопасного доступа ко всем хранилищам данных, включая реляционные базы данных и базы данных NoSQL, и включают вопросы безопасности запросов (необходимо избегать нелегитимных входных данных в составе SQL-команд и наилучшим решением является использование параметризованных запросов, которые можно применять к конструкциям SQL/OQL и хранимым процедурам), конфигурации (необходимо убедиться в корректной настройке имеющихся средств обеспечения безопасности СУБД и платформы, на которой она установлена), аутентификации (должна выполняться по защищенному каналу) и соединений (в связи с существованием нескольких способов взаимодействия с базой данных (посредством службы или API), необходимо обеспечить безопасность соединений с помощью шифрования и аутентификации). Что касается межсайтового выполнения сценариев (XSS-атака), то в данном случае последствия средней степени тяжести могут нанести отражённая XSS или XSS на основе объектной модели документа (DOM), а к серьезным последствиям может привести межсайтовое выполнение хранимых сценариев с исполнением кода в браузере пользователя с целью кражи учётных данных, перехвата сессий или установки вредоносного программного обеспечения. Главной мерой защиты в данном случае является экранирование (добавление определённых комбинаций символов перед символами или строками для недопущения их некорректной интерпретации), кодирование данных (преобразование определённых символов в комбинации символов, которые не представляют опасности для интерпретатора) на стороне сервера и использование набора HTTP-заголовков, в частности, Set-Cookie с параметрами HttpOnly и Secure, а также X-XSS-Protection со значением 1. Общей мерой защиты, используемой для предотвращения внедрения SQL-кода и межсайтового выполнения сценариев, является проверка всех входных данных на соответствие синтаксической и семантической норме. Под синтаксической нормой следует понимать полное соответствие входных данных ожидаемой форме представления, а семантическая норма свидетельствует о том, что входные данные не выходят за пределы конкретного функционала.

Создаём файлы

Нам нужно создать всего два файла и поместить их в ту директорию, которую мы хотим защитить. В случае с ограничением доступа в админку Вордпресса, нужно добавить их в папку WP-ADMIN на сервере, в случае защиты всего сайта (домена) кладём в корневую директорию.

Итак, открываем любой текстовый редактор, например, Notepad++ и создаём пока два пустых файла: .htaccess и .htpasswd . Точки в начале обязательны. Таким образом, это текстовые файлы без имени, но с разными расширениями.

В .htaccess вставляем вот такой текст:

Всего 4 строчки. Нам интересна только третья. После AuthUserFile нужно вставить полный путь до защищаемой папки, в которой будет лежать файл .htpasswd. Впрочем, он может лежать и в любом другом месте на сайте, тогда указываем полный путь от корня сервера к нему.

Создаём файл .htpasswd с паролями

Для того, чтобы установить пароль, сначала мы должны сгенерировать файл .htpasswd. Делается это с помощью утилиты htpasswd, которая существует в версии как для Linux, так и для Windows.

htpasswd -c .htpasswd admin

Ключ указывает, что необходимо создать новый файл с паролями. .htpasswd — имя генерируемого файла. admin – логин пользователя, которому будет разрешен доступ в закрытую часть сайта. После запуска утилиты со всеми нужными параметрами, появится запрос на ввод пароля и его повтор. Если файл .htaccess у вас уже создан, и вы хотите добавить в него нового пользователя, просто запустите утилиту, указав файл с паролями без ключа –c.

Создаваемый файл является текстовым и содержит логин пользователя и хеш-пароля, которые, разделены двоеточием. По умолчания, алгоритм хеширования – DES. Но его можно сменить и использовать алгоритм MD5 с ключом –m, но лучший вариант использование алгоритма SHA(ключ -s).

Как узнать полный путь от корня сервера

Это можно сделать тремя способами:

  • У поддержки хостинга;
  • С помощью глобальной функции phpinfo ();
  • Угадать. И это не шутка! В большом количестве случаев на обычном хостинге путь будет иметь вид: /home/users/p/login/domains/site.ru/wp-admin/, где login — это имя пользователя хостинга, а вторая выделенная цветом часть — просто путь на самом сайте с его доменом в начале без всяких http и https.

Но всё же надёжнее всего узнать через функцию phpinfo. Создаём любой файл в нужной нам папке на сервере, главное, чтобы расширение файла было .php . Например: siteinfo.php . Его опять же можно создать с помощью любого текстового редактора, Notepad++ я рекомендую всегда!

В этот файл пишем всего одну строчку:

phpinfo ();

Если возникла сложность с созданием столь простого скриптика или просто лень, то можете скачать его по этой ссылке.

Остаётся лишь залить этот файл на свой хостинг в нужную папочку сайта и открыть его в браузере. Откроется вот такая информационная таблица:

0.png

В ней в поддаблице Apache Environment находим строку SCRIPT_FILENAME (лучше воспользоваться поиском в браузере путём одновременного нажатия клавиш CTRL+F) и ввода в открывшееся в правом верхнем углу окно поиска скопированную комбинацию: SCRIPT_FILENAME).

Вот та строка, что я заботливо выделил жёлтым цветом и ещё сильнее заботясь навёл на неё оранжевую стрелочку, и есть искомый путь. Вот его и вставляем в третью строку нашего .htaccess, предварительно заменив после последнего слеша название файла на .htpasswd

Предварительная проверка: если на этом этапе всё сделано правильно, значит при обращении к нужной папке через браузер уже сейчас должно всплывать окошко с предложением ввести логин и пароль. Его внешний вид зависит от самого браузера, но это будет примерно так:

0-1-500x249.png

Но как же так, мы же его не указали ни имя пользователя, ни пароль…

Действительно, войти не удастся на данный момент никак, нам нужно указать хотя бы один логин и пароль в файле .htpasswd, что и является его прямым и единственным предназначением.

Защита админки WordPress на хостинге Linux

  1. 1.

    Перейдите в директорию сайта и вставьте в файл .htaccess следующие строки (если файла не существует, создайте его):

    <files>  AuthType Basic  AuthName "Private zone"  AuthUserFile путь-до-корневой-папки-сайта/.htpasswd  Require valid-user  </files>

    Узнать путь до корневой папки сайта вы можете по инструкции.

  2. 2.Находясь в директории сайта создайте файл .htpasswd. В данном файле будет храниться логин и пароль (в захешированном виде). Доступ к защищённой директории будет возможен только по этому логину и паролю.
  3. 3.Для создания связки логин-пароль перейдите по ссылке. Введите логин и пароль и нажмите Генерировать.Скопируйте результат работы программы и сохраните его в созданный ранее файл .htpasswd.

Внимание Обратите внимание, что пароль в файле .htpasswd будет храниться в захешированном виде. И при доступе в защищенную директорию нужно будет указывать сам пароль, а не его хеш.

Для смены пароля вам необходимо просто повторить процедуру генерации с тем же логином: Онлайн-генератор.

Для добавления нового пользователя просто сгенерируйте новую связку логина-пароля и добавьте её в файл .htpasswd с красной строки.

Если форма аутентификации более не нужна, просто закомментируйте добавленные ранее строки в файле .htaccess. Для этого в начале каждой строки поставьте значок #. Вы можете также просто удалить данные строки.54 —>

или qwerty?

Рекомендация по использованию надежных и сложных паролей не только и не столько про пароли, а в целом про аутентификацию и управление сессиями пользователей. Существует три уровня аутентификации и использование только паролей относится лишь к первому – самому простому уровню (второй – многофакторная аутентификация; третий – аутентификация на основе шифрования). Однако даже здесь есть ряд требований к самим паролям, механизму восстановления пароля, а также к безопасному хранению паролей. Управление сессиями позволяет контролировать состояние аутентификации пользователя для работы с веб-сайтом без повторной аутентификации. К сессиям также предъявляются требования к созданию и завершению.

Защита административной панели

Заключительной рекомендацией является защита административной панели веб-сайта, ведь она является одним из слабых мест в общей системе из-за обширного функционала, связанного с добавлением/редактированием постов и страниц, работой с файлами и многим другим. Поэтому важным условием является обеспечить надлежащий контроль доступа, а также максимальную скрытность от злоумышленников местонахождения административной панели, реализуемую простым переносом адреса на нестандартный и максимальной защитой данной точки входа посредством защиты от перебора, фильтрации по IP-адресам и т.д. При создании системы контроля доступа следует придерживаться следующих принципов: отправка всех запросов через систему контроля доступа; запрет доступа по умолчанию (т.е. отклонять запрос, если он не был разрешен специально); минимальные привилегии для всех пользователей, программ или процессов; отказ от использования ролевой модели управления доступом, жёстко заданной в коде; регистрация всех событий, связанных с контролем доступа.

Безопасность сторонних модулей

Что касается рекомендации, относящейся к использованию безопасных сторонних модулей в своих приложениях, то эта тема пожалуй одна из самых важных, ведь большинство вредоносных атак происходит через сторонние модули. Суть данного пункта заключается в том, чтобы использовать фреймворки и библиотеки со встроенными функциями безопасности, которые помогут разработчикам свести к минимуму появление уязвимостей в процессе реализации. Хотелось бы выделить более детальные рекомендации, касаемо данного пункта: используйте сторонние модули из доверенных источников, которые поддерживаются сообществом и активно разрабатываются; поддерживайте в актуальном состоянии список всех сторонних модулей; используйте только тот функционал, который требуется в рамках вашего приложения.

Журналирование и мониторинг

Рекомендация, относящаяся к журналированию всех событий и мониторингу событий безопасности, уже упоминалась при рассмотрении методов защиты от DDoS-атак, но в данном случае рассматривается более широкая сторона вопроса, связанная с обнаружением атак и противодействием им, а также расследованием уже случившихся инцидентов безопасности. Таким образом, кроме стандартных средств журналирования, предоставляемых веб-сервером, необходимо убедиться в регистрации времени события и идентификатора пользователя, а также потенциально опасной активности, характерной для вашего веб-сайта. В случае обнаружения вредоносной активности ваше приложение должно заблокировать пользовательскую сессию или заблокировать по IP-адресу, в общем принять меры и сообщить об этом администратору. Тут уже речь идет о таких средствах, как WAF или IDS/IPS.

Защита от DDoS

Если ваш хостинг-провайдер предоставляет услуги защиты от DDoS-атак или вы пользуетесь услугами анти-DDoS-сервисов, то этот вопрос можно считать закрытым, но почему бы не усилить защиту и не организовать её своими руками, что несомненно является трудоёмкой задачей и подразумевает одновременное использование следующих техник: если в качестве веб-сервера используется Apache, то необходимо поставить перед ним кеширующий прокси – Nginx или Lighttpd, а лучше на фронтенде использовать Nginx, но с несколькими надстройками (ограничить размеры буферов и соединения в Nginx, настроить тайм-ауты и т.п.; использовать модуль testcookie-nginx; использовать фильтрацию по URL и отдавать нестандартный код 444, который позволяет закрыть соединение и не отдавать ничего в ответ); в некоторых случаях использовать блокировку по географическому признаку; автоматизировать процесс анализа логов веб-сайта, обращая особое внимание на объём трафика, время ответа сервера, количество ошибок и количество запросов в секунду.Используемые источники:

  • https://code66.ru/htaccess-i-htpasswd/
  • https://m.habr.com/ru/company/vdsina/blog/503772/
  • http://www.adm-blog.ru/view/kak_zakrjit_sait_parolem_htpasswd.html
  • https://www.reg.ru/support/hosting-i-servery/bezopasnost-hostinga/kak-zaschitit-adminku-wordpress

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации