Повышенная безопасность

Роберт

Аналитик
На всякий случай (от греха подальше) хочу отключить лишние функции:
disable_functions exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
Года два назад помнится что это можно было сделать только в php.ini и соответсвенно отключалось для всех. Хотел поинтересоваться, вдруг что-то изменилось в новых версиях РНР и может теперь это можно отключать в виртувальных хостах через php_admin_value или как-то подругому, чтобы кому-то оставить, а кому-то отключить? (php стоит как модуль)
 

Роберт

Аналитик
Тоесть это намёк что всё-таки есть возможность через виртуальные хосты? (без поднятия нескольких апачей и без всяких неизвестных патчей)
 

Absinthe

жожо
Роберт, Vin-Diesel А документацию посмотреть никак?
Первая же ссылка по disable_functions в гугле дает четкий, развернутый и однозначный ответ.
 

Роберт

Аналитик
Absinthe
Первая ссылка в гуглом проиндексирована - 13 окт 2008, я же спросил - вдруг что-то изменилось в новых версиях РНР
 

DiMA

php.spb.ru
Команда форума
Для безопасности можно сделать чуть больше, чем просто chroot, disable_functions, да все пхп-файлы и каталоги read only. Эти пункты весьма очевидны. Кстати, они не спасут, если поимев шелл от www юзера, хацкер применит дырку в ОС, повысив свои права до рута, после чего любые конфиги можно исправить. И хацкер, скорее всего, пойдет оставлять бекдор где-то в пхп файле, а не с помощью руткита для ОС. Последний более палевный вариант (открытые соединения на левых портах, доп.процессы, файрволом м.б. все закрыто и т.д.), чем незаметный пхп файл среди тонны таких же, что точно будет доступно вместе с самим сайтом.

Здесь вопрос - как поймать хацкера и дополнительно как защититься от ботов, ищущих дырки и автоматизированно внедряющих бекдор в какой-то php/js/css файл (js - спам с вирусами для посетителей, не менее опасно, чем бекдор в пхп). Например, очевидно, хацкер руками, а бот самостоятельно, будут пытаться делать скан каталогов, запись файлов, инклюды или эвал. В php.ini это не запретишь, самим программерам нужно. Но ведь можно открыть исходнички пхп, переименовать пару функций, а на их место поставить загрушку с сигнализацией. От упертого хацкера это, конечно, не спасет, он почитает код проекта и оценит фишку с подменой phpinfo/glob/include/eval/fopen. Пока будет приходит в себя, "сигнализация" вам пришлет "привет" и даст время. От пионера и наглых ботов - гарантированно защитит. Дырка у вас никуда не денется, но пользоваться ею для массовых зловредных операций (ddos/спам) будет невозможно из-за не работающего кода по записи файла или исполнении как-то записанного файла с бекдором.

Помимо бекдоров на пхп, сейчас намного выгоднее сам HTML сайт заразить скрытым инклюдом вируса и эксплуатировать дырки конкретных браузеров, подсовывая нужный эксплоит с бекдором. Тут нужно не допустить перезапись html/js/css и прочих шаблонов. Вроде как один зараженный комп (т.е. бот) у ботоводов пару баксов стоит, копеечку можно заработать .-) Поймать такую дырку будет в 100 раз сложнее, чем бекдор в ОС или на пхп. Ушлепки не будут выдавать ВСЕГДА и ВСЕМ вирусный код. Например, только по ночам, только первому уникальному IP, только неавторизованным пользователям, только по стране, только под соотв. дырявую версию браузера и т.д... Иначе слишком быстро спалятся на жалобах уважаемых в проекте пользователях или сам админ заметит что-то. Думаете, вы не в группе риска? Почитайте свои html/js на предмет опасных функций, обфусцированных непонятных строк кода и левых доменных имен, мало ли что .-)
 

Роберт

Аналитик
DiMA,
Фрагмент теоретическиой статьи интересный (примерно в духе: Представьте Вселенную... планеты... и какие-то мелкие людишки... чтобы они не делали - ничего во вселенной не изменится... и зачем тогда нам что-то делать?)

Но если спуститься к реальности: Есть свой хостинг на своих серверах. Есть друг, который хочет поставить свой маленький сай. Он (его сотрудники или программисты которых он нанимает) могут закидывать файлы на сервер через FTP. Мне не жалко для друга ни места на многотерробайтном жёстком диске в RAID5, ни части 100 мегабитного обтического канала, ни вычислительных ресурсов восьмипотокового процессора i7-2600K. Но блин так не хочется чтобы он снёс мои проэкты! (кто знает в каком настроении его программисты закидывают коды на сервер, может это бешенный фрилансер который ради прикола захотел снести всё с компа) Вот и надо примитивно закрыть доступ от опасных системных комманд.

Я понял что закрыть для одного виртуального хоста невозможно.
Поднять второй apache с другим php.ini - не проблема, но они оба не будут сидеть на 80-том порту, а адрес типа ввв.мойсайт.ру:8080 никому не нужен.
Работу РНР как CGI даже не рассматриваю (сейчас куча местных флеймеров прицепится с вопросом - "Почему?")
 

DiMA

php.spb.ru
Команда форума
Коллега, ты как-то слишком далек от веба, аж слеза наворачивается...

1. Эта проблема решается установкой приватного облака (по-русски - личные N виртуалок на собственном железе из одной или более физических тачек). Клепай там сколько виртуалок, сколько нужно для разных проектов. Забудь о настройках пхп. На крайняк, chroot прокатит.

2. Якобы проблема "адрес типа ввв.мойсайт.ру:8080" не проблема. Поставь на 80й порт свой личный балансер, который будет перекидывать трафик на N других подчиненных веб-сервера с произвольными портами.

3. "Работу РНР как CGI даже не рассматриваю". В рунете имеются два ругательных слова. Это - апачъ и битриксъ. Да, для мелких сайтов, которым все равно, апач+битрикс рулят (ибо по барабану че там внутри). Но как бы уже давно все на php-fpm сидят, а это чистой воды CGI и не с апачем вообще. Работает на порядок лучше апача. Если начать разбираться, ты сам не сможешь ответить на вопрос, зачем тебе апач и чем не устроит нормальное решение. Единственный честный ответ - тебе лень изучать новые технологии, проще фреймерастами обозвать всех. Сиди ты на апаче до гроба, мне не жалко, только не говори никому .-)

В общем, в мат.часть, коллега, топай.
 

Роберт

Аналитик
Ну очень близко к диалогу:
Вопрос: У меня на Хонде при поворотах на скорости слышится скрежет. Чтобы это могло быть?
Ответ: Пересаживайся на самолёт, там при воворотах скрежета не будет...

Хотя в любом случае много интересного написал.

1) Про облака приватности - в гугле не нашёл. Это фишки юникса?

2) Про балансер понравилось больше всего. Вопрос - есть ли под Windows хорошие?

3) Вот тут подумалось - может и впрямь от веба отдалился? Если Апач это ругательное слово, то РНР это тоже нецензурщина (оба доминируют, а у любого доминирующего продукта сразу образуется армия тех кому это не нравится, ну примерно как с виндоусом, который стоит на 95% компьютеров и при этом если школьник не прокричит фразу - "Виндоус маст дай!", он не может претендовать на звание "Кул хацкера" в своём классе). Про "битриксъ" вообще первый раз в жизни слышу.
Вот с фразой "Но как бы уже давно все на php-fpm сидят" не соглашусь. Или у тебя есть статистика которая это может подвердить?
Пошёл в гугл искать чем же хорош php-fpm, и второй ссылкой вышел украинский http://www.php-fpm.org.ua/, где первыми же строками идёт:
---
Официальная версия PHP, стабильно работает только под Apache, через интерфейс взаимодействия модулей. И хотя Apache является стандартом де-факто в Интернете, популярность таких вебсерверов, как Nginx и Lighttpd не стоит преуменьшать. Достоинства этих серверов максимально проявляются в отдаче статики, но оба они умеют взаимодействовать со скриптовыми языками(их интерпретаторами), через интерфейс FastCGI. По своему опыту, могу утверждать, что хотя FastCGI работает относительно mod_php медленнее, но нагрузку держит намного лучше и более рационально расходуются ресурсы серверов.
---
Как-то после выделенных фраз даже изучать не хочется. "Рациональный расход ресурсов" и "лучше держит нагрузку" - это как-то сомнительно по сравнению с "медленне". Если вдруг когда-то наступит момент когда твоя система не сможет держать нагрузку - поставь балансер и забудешь проблемы (добавляй машины пропорционально росту наргузки, зато останешься на "стандарте де-факто" и не надо будет ставить нестабильны эксперементальные системы, которые всё равно упрутся в то что нагрузка превзайдёт их лимиты).

P.S. Не "фреймерастами", а "флеймерами" (всётаки совершенно разные значения)
P.P.S. За тысячу двадцать четыре килобитых одного мегабитого дают :)
 

DiMA

php.spb.ru
Команда форума
облако - это серверный вариант VMware или другой среды виртуализации

балансер - любой веб-сервер
 

Роберт

Аналитик
> балансер - любой веб-сервер
Жаль, я надеялся что это программы которые и реальные IP-адреса на другие машины передть могут...
Примеров конечно много в сети видел как это решить через создание своих переменных, но тогода опять упираемся в нагрузку на первую машину...
 

fixxxer

К.О.
Партнер клуба
Роберт
для твоих целей достаточно обычного openvz.

про php-fpm это ты глупости читаешь, производительность примерно одинакова, фишка в экономии памяти и более гибкой конфигурации.
 

Роберт

Аналитик
fixxxer
Про php-fpm это не мои слова, это что я прочитал во второй ссылке гугла...
Лет 10 назад помню что РНР как модуль работал лучше (уже не вспомню какие, но толи серверные переменные, толи ещё какие-то нельзя было получить если он как CGI).
Лет 5 назад была мысль попробывать поставить nginx. Тогда на интернет-магазин друга направили DDOS-атаку и хостер отключил его, потому что из-за атаки упали все кто сидел на этом же сервере. Человек в среднем продавал сотню телефонов в день, и один час простоя это потеря 100$ чистой прибыли, и он попросил помочь. Скачал себе их сайт, перенаправили DNS на меня. Вначале нагрузка положила и мою машину (AMD 3.0GHz, WindowsXP+Apache+PHP+MySQL), потом сделал старовую страницу интернет-магазина стационарной, и всё стало работать нормально. От обнаружения проблемы до востановления работаспособности прошло около часа. Основная волна атаки кончилась через сутки, но ещё месяц шли запоздалые отгласы, то с одного, то с другого, то с третьего адреса серия из нескольких десятков заходов. Если на третий день в минуту таких серий с заходами было около 10 (ну тоесть 30*10 = около 300 заходов в минут), то через неделю 10 таких серий было уже в час. Я тогда был уверен что справился с проблемой, но позже, анализируя лог заметил что максимальное количество запросов в секунду не привышало 200 (и почти всё время было выше сотни), из чего сделал предположение что больше 200 запросов в секунду мой апач выполнить не мог. Но часто ли бывают такие потребности у обычных пользователей?

Сегодня решил почитать о достоинствах php-fpm, о том как настраивают, плюсы и минусы (чтобы назло DiME не отставать от веба) и по первой же ссылки гугла на фразу php-fpm читаю в хабре - http://habrahabr.ru/post/136740/ - статью этого года (1-2 абзац):
---
давным давно (больше года назад) поставил на него Debian 5.0 Lenny (это была вторая в жизни установка linux-системы, до этого ставил только Ubuntu на рабочий ноутбук) и панель управления ISPConfig3 по мануалу. Держу на нем несколько (штук 40) сайтов друзей и клиентов, Redmine, SVN и еще немного по мелочам.
Периодически все это безобразие падает (load average > 20), и приходится на сервере раз в пару часов перегружать apache или высасывать из пальца очередную попытку оптимизации. В общем полный раздрай и разруха.
---
У меня тоже около пол сотни сайтов, на WindowsXP и за 10 лет никогда с такими проблемами не сталкивался. Сервера иногда почти по году стояли и ничего не падало и не переполняло... Вот и думаю - а может всёже переход на nginx это необходимость выдержать нагрузку, а обычная карявость рук?

Гуляя по сети никогда не встречаю ситуации чтобы какой-то сайт не мог ответить, кроме nginx! Почти каждый день то там, то там гуляя по сайту вдруг видишь белый лист, с 50X ошибкой и подписью типа - "nginx 0.6.38" (что-то типа: http://glukoteka.ru/static/bugs/preview/154.jpg ), и точно знаешь что если несколько раз нажмёшь F5 то страница загрузится. И ведь сайты не с большой посещаемостью! Но на апачевских серверах такого не встретишь.

Подытожив, всё же решил что никакой необходимости в переходе на nginx нету. Нагрузки больше 200 запросов в секунду нет, а по стабильности апач выигрывает...

Я правильно понял, что OpenVZ это аналог VirtualBox?
Может ты знаешь - есть ли балансервы под виндоус? (специально заточенная под это, а не на базе веб-сервера)
 

fixxxer

К.О.
Партнер клуба
пол сотни сайтов, на WindowsXP
О господи, это ужасно.

Если зачем-то действительно нужен Windows (не знаю, там, для интеграции с 1С), то лучше всего работает IIS + php-fastcgi (через встроенный в IIS fastcgi manager). nginx для windows вообще не предназначен, он там еле работает, windows-версия существует просто "чтобы было". На windows-сервере есть своя виртуализация, azure. Там наверняка есть и балансировка и все такое - я не в курсе
 

fixxxer

К.О.
Партнер клуба
Гуляя по сети никогда не встречаю ситуации чтобы какой-то сайт не мог ответить, кроме nginx! Почти каждый день то там, то там гуляя по сайту вдруг видишь белый лист, с 50X ошибкой и подписью типа - "nginx 0.6.38" (что-то типа: http://glukoteka.ru/static/bugs/preview/154.jpg ), и точно знаешь что если несколько раз нажмёшь F5 то страница загрузится. И ведь сайты не с большой посещаемостью! Но на апачевских серверах такого не встретишь.
Если ты не троллишь, а серьезно говоришь, то у меня просто нет слов. Не хочу ругаться, но объяснять совершеннейше банальные и очевидные вещи тоже не хочу
 
Сверху