[Предложение] Закрыть распрстраненные и уязвимые папки

  • 60 Ответов
  • 3534 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

flyingspook

  • ********
  • 3606
  • + 236 -
Уже долгие годы существует Joomla и сообщество. Годы идут, а самые элементарные вещи не сделаны.

Есть предложение самое простое, давно хотел написать все забывал, начали обсуждать и пришли к выводу сначала у нас разместить, потом на org вынести, если у нас поддержат.
Уже многие разработчики либо используют либо пишут рекомендации по закрытию основных доступных папок и выполнение сценариев PHP на стороне сервера и любые другие типы сценариев, установив их с использованием htaccess.
Вот и предложить включение в дистрибьютив в некоторые папки htaccess и расписать все для пользователей. Если их внести в движок сразу в коробочную сборку, то отпадают многие проблемы. И они ни кому не помешают в таких папках как

Код
images
logs
tmp
backup

есть еще и папки которые можно вообще от просмотра закрывать, к примеру

Код
backups

что в голове вообще не укладывается почему сразу это не сделано в то время как она появилась в сборке, а она практически с самого начала.

Вот не понимаю почему давно их не добавили в инсталляцию, странно это.

Для понимания речь не идет о бейсик авторизации, речь об закрытии папок которые используют сторонние расширения и в основном такие как не свой редактор и медиа менеджер, те которые несут непосредственную угрозу.
Еще не путаем
Код
Options -Indexes
он на просмотр закрывает, а самый простой пример на не выполнение скриптов
Код
<Files ~ "\.(php|php3|php5|php4|phtml|htm|shtml)$">
deny from all
</Files>

Каждый высказывает свое мнение и добавляет от себя что считает необходимым.
« Последнее редактирование: 10.06.2014, 14:33:32 от b2z »


*

b2z

  • *****
  • 7449
  • + 741 -
  • Разраблю понемногу
Звучит логично, но должны быть на 100% уверены, что images, logs и tmp не используются разработчиками для исполнения скриптов.

*

flyingspook

  • ********
  • 3606
  • + 236 -
Звучит логично, но должны быть на 100% уверены, что images, logs и tmp не используются разработчиками для исполнения скриптов.
Многие не используют, все давно за всех продумано, это не бейсик авторизация и при установке из системы можно если они будут мешать их "отключать/удалять" и после загрузки расширения "включать/создавать".

Папки tmp и logs можно вообще выносить за пределы движка, это допускалось и допускается в системе.

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

*

b2z

  • *****
  • 7449
  • + 741 -
  • Разраблю понемногу
Про логи вообще другая басня, называю такое "на хрена козе баян", логов в самой Joomla не было и нету
Как это нет? Логи есть. Расширения туда логируют и Joomla тоже логирует.

*

flyingspook

  • ********
  • 3606
  • + 236 -
Как это нет? Логи есть. Расширения туда логируют и Joomla тоже логирует.
Да но логируется не то что хотелось бы в них видеть. На счет папки logs и tmp выше написал их можно вынести за ядро.

*

draff

  • *******
  • 2739
  • + 169 -
  • step by step
+ еще бы по умолчанию отключенная регистрация пользователей

*

flyingspook

  • ********
  • 3606
  • + 236 -
+ еще бы по умолчанию отключенная регистрация пользователей
это да, многие не используют сайты с регистрацией, а кому она нужна могут включить её

*

b2z

  • *****
  • 7449
  • + 741 -
  • Разраблю понемногу
это да, многие не используют сайты с регистрацией, а кому она нужна могут включить её
Давайте не будем все в одной теме обсуждать...

*

b2z

  • *****
  • 7449
  • + 741 -
  • Разраблю понемногу
Да но логируется не то что хотелось бы в них видеть. На счет папки logs и tmp выше написал их можно вынести за ядро.
Сейчас Joomla сделана так, что все находится рядом. Все "выносы" делаются ручками, а значит logs и tmp должны остаться на месте.

*

verstalshik

  • *******
  • 1787
  • + 93 -
Полностью ЗА
+ убрать из папки images папку banners
+ убрать все, что содержит слово banners - названия позиции, классы и тд. и еще есть целый набор слов, которые надо выжечь каленым железом.
очень это все портит жизнь верстальщикам))), чьи клиенты пользуются AdBlock и иже...
❶ НЕ СПРАВЛЯЕШЬСЯ САМ???  Поможем тут...  ❷ Калькулятор доставки - ЗАКАЖИ!!!...  ❸ Каталог компаний - ЖМИ!!!...  ❹ НОВИЧКИ! ВСЕ сюда! Первая консультация БЕСПЛАТНО!!

*

voland

  • ********
  • 9337
  • + 419 -
  • СКАЙП утерян! Пишите в телеграм @volandku
Полностью поддерживаю.
Насчет папок logs и tmp - вроде бы путь к ним указывается в конфиге и выносить можно без хаков.

*

b2z

  • *****
  • 7449
  • + 741 -
  • Разраблю понемногу
+ убрать из папки images папку banners
+ убрать все, что содержит слово banners - названия позиции, классы и тд. и еще есть целый набор слов, которые надо выжечь
Это отдельный разговор.

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

Мы обсуждаем вот это:

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

images
logs
tmp

Я правильно понял, что предлагается такой .htaccess:
Код: ini
<Files ~ "\.(php|php3|php5|php4|phtml|htm|shtml)$">
deny from all
</Files>

И еще - наличие .htaccess не может как-то спровоцировать ошибку сервера?

*

voland

  • ********
  • 9337
  • + 419 -
  • СКАЙП утерян! Пишите в телеграм @volandku
Я правильно понял, что предлагается такой .htaccess:
Код: ini
<Files ~ "\.(php|php3|php5|php4|phtml|htm|shtml)$">
deny from all
</Files>


И еще - наличие .htaccess не может как-то спровоцировать ошибку сервера?

Хороший вопрос.
Nginx и майкрософтовский сервер просто проигнорируют.
А вот апач с запрещенными пользовательскими директивами теоритически вроде может.. или нет?

*

flyingspook

  • ********
  • 3606
  • + 236 -
Мы обсуждаем вот это:

Я правильно понял, что предлагается такой .htaccess:
Код: ini
<Files ~ "\.(php|php3|php5|php4|phtml|htm|shtml)$">
deny from all
</Files>

И еще - наличие .htaccess не может как-то спровоцировать ошибку сервера?


да обсуждаем именно закритие на выполнение скриптов РНР в папках

код htaccess надо изначально сформировать и обсуждать он может быть другим

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

@b2z
на счет logs & tmp просто объяснил что они перенаправляться могут и так на высказывание
Звучит логично, но должны быть на 100% уверены, что images, logs и tmp не используются разработчиками для исполнения скриптов.
в них можно добавлять htaccess, а также и выносить за пределы ядра

Обсуждать это не будем обсуждаем конкретно вот это:
в папки
Код
cache
administrator\cache\
cli - если не помешает
media - если не помешает
htaccess с содержимым
Код
deny from all
в папки
Код
images
logs
tmp
htaccess с содержимым
Код
<Files ~ "\.(php|php3|php5|php4|phtml|htm|shtml)$">
deny from all
</Files>
или
Код
<IfModule mod_php5.c>
  php_flag engine 0
</IfModule>
или
Код
php_flag engine  off
RemoveHandler .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml
AddType application/x-httpd-php-source .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml

вариантов несколько и их можно объединить топик создавали давно и описали самые востребованные тут


Собирать код надо совместно с разработчиками тут что то закрывать надо на выполнение либо отключать вообще. Вот краткое описание что в основном требуется.

Код

php_flag engine 0
AddType "text/html" .php .cgi .pl .fcgi .fpl .phtml .shtml .php2 .php3 .php4 .php5 .asp .jsp


# Отключаем PHP.
RemoveType php


<IfModule mod_php4.c>
  php_flag engine 0
</IfModule>

<IfModule mod_php5.c>
  php_flag engine 0
</IfModule>


# запрет на запуск файлов
RemoveHandler .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml
AddType application/x-httpd-php-source .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml

# запрет доступа к файлам
Order Deny, Allow
Deny from all
« Последнее редактирование: 10.06.2014, 16:53:47 от flyingspook »

*

flyingspook

  • ********
  • 3606
  • + 236 -
Хороший вопрос.
Nginx и майкрософтовский сервер просто проигнорируют.
А вот апач с запрещенными пользовательскими директивами теоритически вроде может.. или нет?

Голый Nginx да, но это не относится к сайту вообще, у него нет настроек кроме как на сервере конфиг писать, мы его не затрагиваем.
На голом мало кто сайты юзает это не массово, надо быть немного в теме что бы его настроить, основная масса сайтов на связке работают Nginx + Apache

В дистрибутиве тоже htaccess есть если что  ;D и он ни как не рассчитан на Nginx


*

flyingspook

  • ********
  • 3606
  • + 236 -
Вот как вариант закрыть содержание папки с правами 777 на просмотр и работу с ней, есть такое решение не новое и отрабатывает полностью.
Код
<IfModule mod_authz_host.c>
    Deny from all
</IfModule>
Оно полностью рабочее.

*

flyingspook

  • ********
  • 3606
  • + 236 -
Options может приводить к ошибке
извиняюсь скопипастил, исправил  ;D

Как замена может выступить.

Код
DirectoryIndex index.html index.htm index.php

Но не везде сработает, папки на листинг вообще надо закрывать на стороне сервера, это намного правильнее.

Самый простой проверенный и верный это файл index.html в каждой папке и если на сервере что то с настройками даже случится все равно содержимое папки ни кто не увидит. Но увы не во всех папках его увидишь как было, есть и видимо будет, тут уж самим его размещать ручками в нужные папки приходилось и придется.  ;D
« Последнее редактирование: 10.06.2014, 17:01:35 от flyingspook »

*

darkghost

  • *******
  • 2100
  • + 94 -
Полностью ЗА
+ убрать из папки images папку banners
+ убрать все, что содержит слово banners - названия позиции, классы и тд. и еще есть целый набор слов, которые надо
целиком поддерживаю! Только за! Приходится в ручную мудрить защиту этих папок (запрет на выполнение скриптов), а вот с banners --- особый разговор

*

PaLyCH

  • ******
  • 971
  • + 127 -
  • Архитектор сайтов

а самый простой пример на не выполнение скриптов
Код
<Files ~ "\.(php|php3|php5|php4|phtml|htm|shtml)$">
deny from all
</Files>

Это правильное решение, которые реально работает в плане безопасности. При этом его положить во все папки, акромя /administrator

 Но у него есть один подводный камень. Например есть модуль AJAX поиска товаров, который вызывает выполнение скрипт, например /modules/mod_search_ajax/ajax.php. То этот поиск не будет выполнен. Решается простым путем. В папку /modules кладется выше описанный htaccess, а в папку с модулем -
Код
[code]<Files ~ "\.(php|php3|php5|php4|phtml|htm|shtml)$">
allow from all
</Files>
[/code]


Таким образом безопасность будет на уровне

*

AlekVolsk

  • ********
  • 6301
  • + 336 -
Папки tmp и logs можно вообще выносить за пределы движка, это допускалось и допускается в системе.

Про логи вообще другая басня, называю такое "на хрена козе баян", логов в самой Joomla не было и нету и зачем их вывод нужен не понятно, а папка есть и вкл/выкл плагина есть. Мое видение так вообще или сделать подробное логирование, что сами дописываем постоянно или убрать вообще логирование ошибок из движка.
По поводу логов - лучше первое (подробное логирование), а еще лучше настраиваемое логирование - каждый сам для себя выберет необходимый уровень наполнения логов.
По поводу темпа - имхо, нельзя из движка, т.к. инсталл/апдейт всего через него проходит (оч.подробно разбирал работу com_installer, там абсолютно все через темп).

Да но логируется не то что хотелось бы в них видеть. На счет папки logs и tmp выше написал их можно вынести за ядро.
Логи есть. Расширения туда логируют и Joomla тоже логирует.
Имхо, это бред а не логи. Кто знаком с логами сквида, меня поймет.

+ еще бы по умолчанию отключенная регистрация пользователей
Да, на большей части сайтов вообще не нужна (но пусть будет - отключенная), а вот внедренное универсальное расширение интеграции с соц.сетями (авторизация, публикация контента) более чем пригодится большинству.

+ убрать из папки images папку banners
+ убрать все, что содержит слово banners - названия позиции, классы и тд. и еще есть целый набор слов, которые надо выжечь каленым железом.
очень это все портит жизнь верстальщикам))), чьи клиенты пользуются AdBlock и иже...
Когда ставлю клиентам машину (новую или после ремонта с переустановкой оси), adblock изначально настраиваю в параноидальный режим (рубить все, в т.ч. соц.сети ;) (шютка)). Я бы баннеры за ядро выпилил поставлял бы отдельно (не люблю рекламу).

Я правильно понял, что предлагается такой .htaccess:
Код: ini
<Files ~ "\.(php|php3|php5|php4|phtml|htm|shtml)$">
deny from all
</Files>
И еще - наличие .htaccess не может как-то спровоцировать ошибку сервера?
Хороший вопрос.
Nginx и майкрософтовский сервер просто проигнорируют.
А вот апач с запрещенными пользовательскими директивами теоритически вроде может.. или нет?
Имхо, решаемо все, не на уровне .htaccess, так на уровне ядра. Апач (денвер) это понимает, только тормозить стал резко.
.htaccess можно пихать куда угодно, хоть в каждой папке настраивай. На битриксе наблюдал - там во всех публичных папках целые простыни иногда ваяют.

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

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

*

AlekVolsk

  • ********
  • 6301
  • + 336 -
Это правильное решение, которые реально работает в плане безопасности. При этом его положить во все папки, акромя /administrator

 Но у него есть один подводный камень. Например есть модуль AJAX поиска товаров, который вызывает выполнение скрипт, например /modules/mod_search_ajax/ajax.php. То этот поиск не будет выполнен. Решается простым путем. В папку /modules кладется выше описанный htaccess, а в папку с модулем -
Код
[code]<Files ~ "\.(php|php3|php5|php4|phtml|htm|shtml)$">
allow from all
</Files>
[/code]


Таким образом безопасность будет на уровне
Взял на заметку, поднял себе в топ ближайших задач

*

b2z

  • *****
  • 7449
  • + 741 -
  • Разраблю понемногу
Цитировать
Мы обсуждаем комплексное решение по оптимизации движка кмс, безопасность + удобство старта + повышение гибкости общего конфигурирования.
Нет, поэтому предлагаю не оффтопить. Уже сейчас наичинается сложность с отслеживанием постов по теме.

Я так понял, что примерно определились:

Предложение включить в папки /administrator/cache, /cache, /images, /logs, /media и /tmp дистрибьютива файл .htaccess со следущим содержимым:
Код: ini
<Files ~ "\.(php|php3|php5|php4|phtml|htm|shtml)$">
deny from all
</Files>

*

PaLyCH

  • ******
  • 971
  • + 127 -
  • Архитектор сайтов
Нет, поэтому предлагаю не оффтопить. Уже сейчас наичинается сложность с отслеживанием постов по теме.

Я так понял, что примерно определились:

Предложение включить в папки /administrator/cache, /cache, /images, /logs, /media и /tmp дистрибьютива файл .htaccess со следущим содержимым:
Код: ini
<Files ~ "\.(php|php3|php5|php4|phtml|htm|shtml)$">
deny from all
</Files>
Не совсем верно, как я писал выше - положить такой файл во ВСЕ папки, акромя /administrator

*

flyingspook

  • ********
  • 3606
  • + 236 -
Я так понял, что примерно определились:

Предложение включить в папки /administrator/cache, /cache, /images, /logs, /media и /tmp дистрибьютива файл .htaccess со следущим содержимым:
Код: ini
<Files ~ "\.(php|php3|php5|php4|phtml|htm|shtml)$">
deny from all
</Files>
не совсем правильно
в /administrator/cache, /cache
Код
deny from all
в остальные папки кроме /administrator
Код
<Files ~ "\.(php|php3|php5|php4|phtml|htm|shtml)$">
deny from all
</Files>

*

flyingspook

  • ********
  • 3606
  • + 236 -
точнее даже может получится так
Код
<Files ~ "\.(php|php3|php5|php4|phtml|htm|shtml)$">
deny from all
</Files>

# запрет на запуск файлов
RemoveHandler .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml
AddType application/x-httpd-php-source .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml

это надо уже конкретно рассматривать на орг форуме с разработчиками

*

AlekVolsk

  • ********
  • 6301
  • + 336 -
в /administrator/cache, /cache
Код
deny from all
в остальные папки кроме /administrator
Код
<Files ~ "\.(php|php3|php5|php4|phtml|htm|shtml)$">
deny from all
</Files>
# запрет на запуск файлов
RemoveHandler .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml
AddType application/x-httpd-php-source .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml
+ решение от Палыча:
В папку /modules кладется выше описанный htaccess, а в папку с модулем -
Код
[code]<Files ~ "\.(php|php3|php5|php4|phtml|htm|shtml)$">
allow from all
</Files>
[/code]
Таким образом безопасность будет на уровне

Ничего не пропустил?

*

b2z

  • *****
  • 7449
  • + 741 -
  • Разраблю понемногу
Лично я против костылей. Пользователи ничего дополнительно не должны создавать, чтобы у них что-то заработало. И уверен, что на такое не пойдут. Это я про AJAX.

*

PaLyCH

  • ******
  • 971
  • + 127 -
  • Архитектор сайтов
Лично я против костылей. Пользователи ничего дополнительно не должны создавать, чтобы у них что-то заработало. И уверен, что на такое не пойдут.

Костыль? ты про что именно?