Статья очень перекликается с "Разбиение диска для увеличения производительности" (в плане секурности).
Но у меня вопросы:
1. Это где же сейчас делают Web-сервера _БЕЗ_ PERL, PHP, MYSQL??? И _ДАЖЕ__БЕЗ_ CGI??? Да такого (с позволения сказать) web-master'а уволят в 5 минут...
Ну и соответствующие мысли про статические страницы и т. п.
2. Не совсем понятен процесс компиляции. Никаких рекомендаций не заметно. А ведь для действительно нормального применения "нестандартных" CFLAGS (к примеру, "-march=pentium4 -msse2" для gcc 3.2.2) нужно ручками править configure-скрипт...
3. Не совсем понятна необходимость в chroot. IMHO, тут нужно что-то одно: либо делать персональный UID/GID для Апача, либо chroot... Делать и то, и другое - это особо острая форма шизофрении. И примерно как "масло масляное"...
4. Не совсем понятен отказ от динамических библиотек: ведь динамическая загрузка библиотек на то и создана, чтобы система работала наиболее продуктивно под высокими нагрузками.
5. Не совсем понятен принцип первоначального отказа собирать достаточно много модулей (тот же PHP, к примеру). Ведь всё-равно, в httpd.conf в AddModule эти модули не прописаны... Зато в случае необходимости была бы возможность быстренько модуль добавить без пересборки Апача...
Есть ещё много менее существенных вопросов... Но не суть. Хотелось бы получить вразумительные ответы хотя бы на эти вопросы.
Для целей отдачи статического контента есть гораздо более
легкие, гораздо более быстрые и безопасные веб-серверы.
Безопасный Апаче - мертвый Апаче.
И может уже хватит постить подобные пробы пера разных недоучек?
Дополню предыдущего оратора, сразу цитатой из статьи:
"...Скрыв номер версии Apache, выключив службу индексации каталогов...". Ну и где в статье написано - какой хидер-файл нужно править для скрытия версии Апача? Собственно, достаточно добавить всего 3-4 строчки, чтобы слова в конце статьи не расходились с делом. В общем, статья выглядит не до конца завершённой.
2ROOT
1. Наверно бесплатный хостинг. Или домашняя (или корпоративная)
страничка. Хотя не совсем ясно зачем тогда сюда Апач.
2. А тут про оптимизацию вообще ни слова. Статья то не про оптимизацию,
а про защищенность
3. Вот ни фига. Если сделаешь только UID/GID, то при взломе появляется возможность проверить что вообще на сервере. Если сделать только chroot,
то это вообще бесполезно (root'овый процесс спокойно поднимается наверх).
Хотя с учетом того, что "Apache Web server должен быть единственной
службой, запущенной в системе" действительно можно просто скинуть
то что автор положил в chroot в корень.
4. Разве? Динамическая загрузка к продуктивности работы практически
перпендикулярна. Единственное на что она влияет -- динамическая
библиотека не грузится, если не использована. Но то что тут указано
используется всегда по определению.
5. Чтобы соблазна не было :-))
Хотя, если честно напоминает процедуру сертификации WinNT
на безопасность.
Шаг 1: устанавливаем WinNT на компьютер без сетевой карты и модема
......
Вот неповеришь, апач для lor - без perl, без php, без cgi и без mysql собран ;)
По поводу uid change/chroot: если просто поменять uid - то остается шанс увеличить привилегии через локальную дыру коих обычно всегда больше чем ремотных. А если делать chroot от рута, то тебе из него любой пионер за две секунды выйдет.
По поводу динамических библиотек - они как раз привносят определенные тормоза при загрузке, а так же расходуют память больше (ну или там своп, у кого как) по сравнению со статически слинкованными.
к тому же статически слинкованный бинарь проще ложить в chroot по очевидным причинам.
По поводу модулей - опять же чтобы эта байда с загрузкой ложила - сильно больше всего нужно пихать в chroot.
Хотя chroot все равно отстой. Нужно юзать что-нибудь адванцнутое. Например UML. Ну или специальные виртуализирующие патчи.
Если автор пишет о скрытии версии Апача, то (IMNSHO) - он должен написать в статье САМ - какую строку надо править. Впрочем, я не жадный - вот приблизительный текст.
----------------
Для изменения заголовка, отправляемого Вэб-сервером Apache, необходимо отредактировать файл src/include/httpd.h и изменить строки:
#define SERVER_BASEPRODUCT "Apache"
#define SERVER_BASEREVISION "1.3.x"
на (например):
#define SERVER_BASEPRODUCT "Bill_Gates"
#define SERVER_BASEREVISION "666"
После чего выполнить компиляцию и установку Web-сервера. До запуска также необходимо добавить директиву в hhtpd.conf:
ServerTokens Min
-----------------
WBR. SOLDIER from UINC Team.
Не нужен мне, green, твой "риспект". Найди еще 199 green'ов и
будет тебе отличная статья по тематике ;) За меньшее я не
работаю. А ламерье естесно пишет забесплатно. Я бы еще с них
брал деньги за потраченное на просмотр время.
[q]Web сервер будет доступен через Интернет;[/q]
приколол -)
[q]Будут использоваться только статические HTML страницы[/q]
в профессиональном хвостинге тоже? -). имха в этом случае всем надо раздавать статичные страницы, и брать определ?нные бабки и ставить на особый контроль тех, кто хочет SSI, PHP, CGI, Perl.
[q]Сервер будет поддерживать name-based virtual hosting механизм[/q]
в проф. хостинге без vhosts запутаешься, а если минимальный веб-стервак можно и без ентой хрени. прям в httpd.conf все виртуальные хвосты (что, кстати вполне удовлетворяет большинству провайдеров).
[q]Некоторые Web страницы будут доступны только пользователям с определенным IP адресом[/q]
ну предоставление такой возможности -- само собой =), имха http://server.com/phpmyadmin/ должно контролироваться не только: order allow, deny deny from all allow from 212.212.212.* а и с помощью authtype basic, и вообще лучше по SSL =)
[q]Сервер будет записывать все Web запросы (включая информацию о Web браузерах)[/q]
логи -- фарефа ;)
root@FreeBSD:~# cat /etc/apache/httpd.conf|grep combined
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /var/log/apache/access.log combined
[q]Даже маленький неприметный сценарий может очень сильно уменьшить уровень защиты Web сервера.[/q]
например в php большинство проблемм решается довольно просто -- safe_mode =)
[q]Операционная система должна быть максимально защищена как от локальных, так и от удаленных атак;[/q]
например ставить nosuid и noexec на партиции, куда можно писать с правами веб-сервера.
[q]Сервер не должен предоставлять какие-либо сетевые сервисы, кроме HTTP: (80/TCP);[/q]
про SSL/443 забыли?.. ;) или OpenSSL -- дырка 1? ;)
поэтому е? за борт, как и проч. типа пхп, cgi и т.п.?.. ;) к тому ж не всегда можно выделять отдельно сервер под веб, отдельно под мыло, отдельно под днс, отдельно под другую хрень. довольно часто все три начала объединяют под одним веб-стерваком -)
[q]Перед установкой Apache мы должны выбрать операционную систему, на которой будет работать наш Web сервер.[/q]
имхо, опять лучше юзать либо *BSD либо солярку. Линух со своей дырищей ptrace/kmode в ядре изрядно подмочил свою репутацию.
[q]Единственная операционная система, которую я не рекомендую использовать MS Windows[/q]
имха, кто решил ставить винду -- понимает, что становится целью номер один для хакеров -)
[q]pw groupadd apache[/q]
имха, лучше groupadd -g 65534 apache (если этот gid занят, то юзаем чуть ниже ;) 65533 -))
[q]Следующий шаг вы должны загрузить самую последнюю версию Apache Web server.[/q]
имха, ветка 2.0.x черезчур сырая и дырявая! лучше юзать 1.3.x, на момент написания 1.3.27 -- the best choice =)
в конфиге апача, по умолчанию нифига не включаем поддержки ssi, ssl, php, cgi, делаем ето непосредственно в виртуал хвостах. тоесть вот так: user@server:/etc/apache/vhosts$ cat /etc/apache/vhosts/host.server.ru #///////////////////////////////////////////////////////////////////////////// #//// #//// http://host.server.ru/ #//// #/////////////////////////////////////////////////////////////////////////////
Если включаете поддержку SSI, незабудьте отключить всякие левые команды, типа <!-- #exec "cat /etc/passwd" -->, параметром: IncludesNoExec, разумеется php в safe_mode.
зы. вопрос, а в java есть что-то типа safe_mode?.. максимум что я делал, это поднимал весь jre под левым ограниченным юзером -)
[q]Для целей отдачи статического контента есть гораздо более легкие, гораздо более быстрые и безопасные веб-серверы. Безопасный Апаче - мертвый Апаче. И может уже хватит постить подобные пробы пера разных недоучек?[/q]
полностью согласен! имха для статичных сайтов лучше юзать другие веб-стерваки (но не IIS!!! -)), хотя, они тоже дырявые =)
[q]Дополню предыдущего оратора, сразу цитатой из статьи: "...Скрыв номер версии Apache, выключив службу индексации каталогов...".[/q]
хм, в конфиге ставим ServerSignature Off или этого недостаточно?..
[q]Ну и где в статье написано - какой хидер-файл нужно править для скрытия версии Апача?[/q]
я как то извращался, прямо в сырочках меняя все стандартные сообщения об ошибках и т.п. -) (хотя есть ErrorDocument, но в сырочках прикольнее =), там url не меняется на ErrorDocument 404 /missing.html =)):
файл /usr/local/src/apache_1.3.27/src/main/http_protocol.c, коды ошибок:
#ifdef UTS21
/* The second const triggers an assembler bug on UTS 2.1.
* Another workaround is to move some code out of this file into another,
* but this is easier. Dave Dykstra, 3/31/99
*/ static const char * status_lines[RESPONSE_CODES] = #else static const char * const status_lines[RESPONSE_CODES] = #endif {
"100 Continue",
"101 Switching Protocols",
"102 Processing",
#define LEVEL_200 3
"200 OK",
...
"403 Forbidden",
"404 Not Found",
и функция API_EXPORT(void) ap_send_error_response(request_rec *r, int recursive_error). Например:
case NOT_FOUND: ap_rvputs(r, "The requested URL ", ap_escape_html(r->pool, r->uri), " was not found on this server.<P>\n", NULL); break;
Гм. Ну ты же понимаешь что классический русский язык как таковой уже практически прекратил свое существование ;) И лично я себе голову мертвыми языками забивать не намерен.
Так бери деньги. ;) Выйди к переходу к метро с плакатом во всю грудь "читаю ваши статьи за деньги! Дорого! Не гербалайф!", представляешь какая успешная бизнес-модель?
green, а я не знал, что ко всем своим недостаткам ты еще пишешь ламерские статьи ;) Можно взглянуть на образчик твоего творчества? Деньги просто так не платятся ;)
Ты знаешь, ламерские статьи пользуются спросом, поэтому пишу ;)
Но поскольку непонятно как сбивать денег с анонима - предоставь мне гарантии оплаты вперед, и тогда будет тебе url ;)
To green
> классический русский язык как таковой уже практически прекратил свое существование ;)
> И лично я себе голову мертвыми языками забивать не намерен
Я далёк от идей Баркашова, но за такое по ебальнику съездил бы с удовольствием!
andrew
green, ну что ж ты ломался как девочка, вполне сносные статьи
у тебя. Не то, чтобы фонтан, но на ламерские не тянут.
Так штааа... обломался ты с вознаграждением ;(
Да, а вот дистрибутив у тебя самый что ни на есть ламерский.
Тока я за это не плачу ;) У себя под одеялом кто как хочет,
так и дрочит. Меня это не трогает.
>>Сервер будет поддерживать name-based virtual hosting механизм<<
>про SSL/443 забыли?.. ;) или OpenSSL -- дырка 1? ;)
Если мне не изменяет память, при использовании name-based virtual hosting испоьзовать SSL невозможно.
Слава Богу, что есть люди, которые пишут статьи бесплатно,
это соответствует идеологии OpenSoft и Linux. От этого выигрывает
все сообщество пользователей Linux. Ты наверное из тех людей,
которые снег зимой продают.