Apache закрыть доступ к файлам

Обновлено: 04.07.2024

Следуйте за нами на Фейсбуке, в Твиттере и других социальных сетях.

Содержание

«ДокуВики» — это веб-приложение и оно часто используется на публичных серверах, доступных из интернета. Это означает, что есть бо́льший риск подвергнуться нападению злонамеренных людей, чем, например, при применении на вашей настольной системе.

«ДокуВики» разработана с учётом требований безопасности. Мы пытаемся найти баланс между дружелюбием к пользователю и безопасностью, но предпочитаем безопасность пользе, когда компромисс не может быть найден.

Эта страница должна дать краткий обзор, на какие аспекты заострить внимание, чтобы удостовериться, что ваша «ДокуВики» безопасна.

Создание отчетов и уведомлений

Если обнаружена проблема безопасности в «ДокуВики», пожалуйста, сообщите нам. Предпочтительные способы:

Для небольших багов предпочтительнее первые два способа. Насчет очень серьезных ошибок, которые могут быть использованы для написания эксплойтов для «ДокуВики», рекомендуем пользоваться приватной перепиской.

Все предыдущие проблемы безопасности описаны в bugtracking system.

В зависимости от серьезности найденной проблемы безопасности, либо она будет исправлена в будущем выпуске (по очень незначительным проблемам), либо будет выпущен срочный bugfix-релиз. В последнем случае пользователи будут проинформированы через механизм проверки обновлений.

Вы должны всегда использовать самую последнюю версию «ДокуВики», поскольку старые версии никогда не исправляются.

Безопасность веб-доступа

«ДокуВики» хранит конфигурацию и cтатьи в файлах. Эти файлы никогда не должны быть доступны непосредственно из сети. Распространяемый tarball содержит ряд .htaccess файлов, которые указывают веб-серверу Apache закрыть доступ к определенным папкам.

Если вы не используете веб-сервер Apache, или ваш Apache не использует .htaccess -файлы, вы должны вручную защитить свою установку

Следующие папки не должны быть доступны из сети:

Запрет доступа к папкам в Apache

Самый простой путь состоит в том, чтобы включить поддержку файлов .htaccess в вашей конфигурации Apache. Посмотрите учебник Apache по .htaccess.

«ДокуВики» поставляется с правильно сконфигурированными .htaccess -файлами. Содержимое файла .htaccess для блокировки доступа к папке, в которой он находится, должно быть следующим (корректно для версий 2.2 и 2.4):

Возможно, Apache2 в целом, либо по-особому в Ubuntu, настраивается несколько иначе, чем Apache1.x.

Сделайте /etc/init.d/apache2 reload для обновления конфига Apache и файлы .htaccess будут работать.

[Эту поправку можно применить к отдельной папке с установленной ДокуВики, нп. /var/www/путь-к-dokuwiki , а не к глобальным настройкам всего сервера]

Другой путь состоит в использовании директивы LocationMatch внутри описания VirtualHost. Это немного более эффективно чем файлы .htaccess . Ниже директивы Directory добавьте:

Вышеуказанное может вызвать проблемы, если у вас есть еще один «корень», что включает в себя папки data|conf|bin|inc . Например, другой вики-проект. Вы можете избежать этой проблемы путем расширения вашего LocationMatch в пределах папки (тут неясно You can avoid this problem by extending your LocationMatch within your wiki installation folder.).

Запрет доступа к папкам в IIS

Доступ к упомянутым папкам может быть отключен в параметрах конфигурации IIS.


Это перевод очень интересной лично для меня статьи, которым я хочу поделиться с уважаемым хабрасообществом. Некоторые из приведенных рецептов я уже встречал на Хабре, но разрозненно и далеко не все из нижеприведенного.

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

Если же вам нужны базовые сведения о предназначении данного файла, то вы можете получить из нашей статьи введение в .htaccess (перевод данной статьи не делал, так как там основы, их достаточно в русскоязычном сегменте Сети, но если будет проявлен интерес, то можно и ее перевести для полноты картины — прим. переводчика), в которой достаточно подробно раскрыты все аспекты его применения.

Итак, полезные примеры использования. htaccess:

1. Управление доступом к файлам и каталогам

Защита паролем — это одно, но иногда может понадобиться полностью блокировать доступ пользователей к определенному файлу или папке. Обычно это относится к системным папкам, таким, например, как includes, доступ к которым должны иметь приложения, но не пользователи.

Чтобы сделать это, поместите данный код в файл. htaccess и сохраните его в каталоге к которому закрываете доступ:


Однако учитывайте, что доступ будет блокирован для всех пользователей, включая и вас. Открыть доступ для конкретного пользователя можно прописав его IP-адрес. Вот код, который для этого потребуется:


где xxx. xxx. xxx. xxx — это ваш IP. Для задания разрешенных диапазонов IP-адресов вы можете заменить три последние цифры. Например, написав вместо них «0/12», вы зададите диапазон IP-адресов одной сети, что избавит вас от необходимости вводить в список все разрешенные IP-адреса отдельно.

Если вы хотите заблокировать доступ к определенному файлу, включая сам. htaccess, используйте следующий фрагмент кода:


Если вы хотите указать определенные IP-адреса которым надо запретить доступ, перечислите их при помощи allow from.

Если же вы хотите заблокировать доступ к файлам определенного типа, используйте этот код:

2. Запрет на просмотр директорий

Для предотвращения просмотра директорий сайта добавьте в .htaccess следующий код:


Если же по какой-то причине вы хотите разрешить просмотр всех директорий, используйте код:

3. Ускорение времени загрузки за счет сжатия файлов

Сжимать можно файлы любого типа. Например, для сжатия HTML-файлов добавьте код:


Для сжатия текстовых файлов используйте:


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


Кроме того, вы можете сжать все ваши JavaScript, HTML и CSS файлы при помощи GZIP. Для этого используйте следующий код:

4. Защита сайта от вставки изображений с других ресурсов

Если вы хотите запретить добавление ссылок на изображения со сторонних ресурсов, добавьте в файл .htaccess код:

5. Блокировка посетителей, перешедших с определенного домена

Если вы не хотите видеть на своем сайте пользователей с конкретного домена, то вы можете запретить им доступ. Например, пользователей с нежелательных ресурсов (сайты для взрослых, хакерские сайты и т. д.) вы можете перенаправлять на страницу 403 Forbidden. Для этого необходимо включить mod_rewrite, хотя, как правило, он включен по умолчанию. Добавьте в .htaccess код:

6. Блокирование запросов от определенных браузеров

Если в ваших файлах журналов появились записи о посещении особых браузеров (это могут быть имитирующие работу браузера боты или пауки), вы можете запретить им доступ на свой сайт, добавив несколько строк в. htaccess:


Замените badbot1, badbot1 и т. д. именами ботов из вашего журнала. Это закроет посторонним программам доступ к вашему сайту.

7. Кэширование файлов

Кэширование файлов — еще один способ ускорить загрузку вашего сайта. Вот то, что вам нужно прописать в .htaccess:


Вы можете добавить больше типов файлов (или удалить некоторые из них) в перечисленныq в данном примере список файлов. Вы также можете указать время сохранения файлов в кэше (в секундах) при помощи переменной max-age.

8. Отключение кэширования для разных типов файлов

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

Просто укажите типы файлов, для которых нужно отключить кэширование.

9. Обход диалога загрузки

По умолчанию при попытке загрузить файл с веб-сервера отображается диалог, который спрашивает вас, хотите ли вы сохранить файл или открыть его. Этот диалог особенно раздражает при скачивании больших медиа- или PDF-файлов. Если файлы, которые вы загрузили на сервер, предназначены исключительно для скачивания, вы можете облегчить жизнь пользователей, установив загрузку действием по умолчанию. Добавьте в. htaccess следующее:

10. Переименование файла .htaccess

Если вы по каким-то причинам хотите переименовать файл .htaccess, то вы можете это сделать. Теоретически, переименование файла .htaccess не должно вызывать проблем с приложениями, запущенными на вашем сервере, но если вы заметите появление ошибок выполнения сценариев после переименования файла, то просто переименуйте его обратно.


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

11. Замена стартовой страницы сайта

Если вы хотите установить главную страницу, отличную от стандартной (index.html, index.php, index.htm и т. д.), добавьте следующий код в файл .htaccess:


Замените mypage.html на URL страницы, которую вы хотите использовать в качестве главной.

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

.htaccess позволяет устанавливать некоторые значения, непосредственно влияющие на работу PHP приложений. Например, если вы хотите установить в PHP ограничение на размер загружаемых файлов, чтобы не забивать хостинг большими файлами:


Вы можете установить любое значение, в примере размер файла ограничен 15M (MБ). Помимо этого вы можете ограничить максимальный размер передаваемых при загрузке в PHP данных:


Вы можете заменить 10М на любое требуемое вам значение. Если вам не требуется постоянное выполнение скриптов, вы можете ограничить время их выполнения с помощью строки:


240 — время выполнения (в секундах), после которого скрипт будет остановлен, вы можете изменить это значение на любое другое. Наконец, если вы хотите ограничить время анализа скриптом исходных данных, используйте следующий код:


Установите вместо 180 любое требуемое вам время (в секундах).

14. Скрытие типов файлов

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


И это лишь часть того, что может .htaccess, а вообще он позволяет сделать гораздо больше. Например, вы можете установить автоматический перевод страниц вашего сайта, установить часовой пояс сервера, удалить WWW из URL-адресов или использовать причудливые представления каталогов и т.д. Но в любом случае, прежде чем начинать эксперименты с файлом .htaccess, всегда сохраняйте резервную копию оригинального .htaccess, чтобы при возникновении проблем можно было быстро восстановить работу сайта.

UPD (спасибо akuma) расширение РНР для скрытия формата файлов приведено как пример и использование этого трюка в реальном проекте может оказаться небезопасным

Столкнулся на днях с проблемой, которую я бы назвал классической и имеющей непосредственное отношение к безопасности не только сайта, но и всего веб-сервера. Суть проблемы — это просмотр содержимого папки на веб-сервере Apache.

Теория вопроса

Дело все в том, что в директивах Apache определен файл или список файлов, которые будут показаны по умолчанию.


пример листинга директории

Как же решить эту проблему? На самом деле все очень просто. Мне известны два способа:

  • запретить листинг, используя файл .htaccess ;
  • запретить построение списка файла на уровне сервера.

Рассмотрим оба способа более подробно.

Запрет листинга каталогов через .htaccess

Достаточно добавить всего одну простую строчку:

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

Как Вы уже могли заметить, разница между запретом и разрешением состоит только в символе - . Именно он обозначает, что индексирование папки запрещено.

С первым способом решения задачи все. Он идеален для тех случаев, когда нет доступа к конфигурации сервера, либо отсутствует желание/навыки в них лезть.

Запрет листинга каталогов через директивы Apache

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

Для верности — можно перезагрузить Apache. Небольшая шпаргалка, которая поможет в поисках системного файла.

Местонахождение данного файла напрямую зависит от операционной системы, установленной на сервере, а также версии Apache. Приведу небольшой список, который может облегчить поиск.

Debian, Ubuntu

apache 2.2
/etc/apache2/apache2.conf

FreeBSD

Linux (CentOS, Fedora)

Gentoo

Заключение

В результате работы обоих способов, вместо листинга папок мы получим ошибку 403, которая сообщает нам о том, что доступ закрыт (access forbidden). Задача решена. Благодарю за внимание!

В предыдущей статье о LAMP мы выполняли установку и базовую настройку. Сегодня поговорим о конфигурационных файлах Apache. Вы узнаете, как изменять глобальные настройки веб-сервера с учетом своих потребностей. В качестве примера я покажу, как запретить или ограничить доступ к папке.

Основной конфигурационный файл Apache в Ubuntu 16.04 и новее находится по адресу:

Установки, определенные в нем, могут быть перезаписаны в файлах .htaccess. Влияние каждого .htaccess распространяется на ту папку, в которой он находится и на все вложенные в нее папки. При этом, если во вложенной папке будет свой .htaccess, он будет иметь преимущество перед расположенным выше.

Синтаксис apache.conf и .htaccess.

Сразу скажу, что синтаксис этих двух документов идентичен.
Чтобы открыть apache.conf для редактирования, воспользуйтесь командой:

Синтаксис apache.conf и .htaccess

Если вам не нравится gedit, замените его любым другим текстовым редактором (например, nano). Можно обойтись без sudo, но в этом случае вы, скорее всего, сможете только просматривать содержимое файла, но не изменять его.

Не лишним будет определить директиву ServerName. Стандартное значение — 127.0.0.1.

Директивы могут занимать несколько строк, в этом случае их называют блочными. Рассмотрим для примера директиву Directory:

Синтаксис apache.conf и .htaccess

Давайте выясним, что они означают.

AllowOverride None запрещает использование файлов .htaccess в данной директории. Чтобы разрешить перезаписывать любые параметры, замените None на All. Вы также можете указать группы настроек, разрешенных к перезаписи. Например, чтобы разрешить только те директивы из .htaccess, которые меняют режим доступа, следует указать AllowOverride AuthConfig.

Require all granted разрешает доступ к директории для всех без исключений. В более ранних версиях Apache применялся другой вариант — Allow from all, имеющий то же значение.

Как запретить или ограничить доступ к директории?

Начиная с версии Apache 2.4 для регулирования доступа к директории используется директива Require. Она может располагаться как в глобальном файле настроек, так и в любом .htaccess. Раньше те же функции выполняли Order, Allow и Deny.

Итак, для того чтобы полностью запретить доступ, воспользуйтесь такой конструкцией:

Полностью запретить доступ надоедливому или регулярно вредящему пользователю можно таким образом:

Require not ip 123.456.789.012

подставив его ip вместо чисел.

Если убрать из этой конструкции not, доступ будет разрешен только с указанного ip. Можно также указать имя разрешенного или запрещенного хоста, указав вместо ip host.

Эти правила могут находиться внутри блочных директив <RequireAll> , <RequireAny> и , которые разрешается вкладывать друг в друга для построения сложных правил доступа. Подробнее об этом читайте в документации Apache.

После сохранения файла не лишним будет проверить его синтаксис — вдруг в процессе редактирования мы допустили ошибку или сделали опечатку? Для этого введем команду:

Как запретить или ограничить доступ к директории

При обнаружении ошибки будут указаны сведения о ней.

Чтобы изменения, внесенные в конфигурационные файлы, подействовали, необходимо перезапустить веб-сервер командой

В следующих статьях я продолжу рассказывать о связке LAMP.

Если вы хотите прочесть о каком-то конкретном аспекте этой темы, напишите в комментариях.

Читайте также: