<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://support.qbpro.ru/index.php?action=history&amp;feed=atom&amp;title=Nginx_%D0%BD%D0%B5%D0%BF%D1%80%D0%BE%D0%B1%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B9_Web-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80</id>
	<title>Nginx непробиваемый Web-сервер - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://support.qbpro.ru/index.php?action=history&amp;feed=atom&amp;title=Nginx_%D0%BD%D0%B5%D0%BF%D1%80%D0%BE%D0%B1%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B9_Web-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80"/>
	<link rel="alternate" type="text/html" href="https://support.qbpro.ru/index.php?title=Nginx_%D0%BD%D0%B5%D0%BF%D1%80%D0%BE%D0%B1%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B9_Web-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80&amp;action=history"/>
	<updated>2026-06-02T23:14:35Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.38.1</generator>
	<entry>
		<id>https://support.qbpro.ru/index.php?title=Nginx_%D0%BD%D0%B5%D0%BF%D1%80%D0%BE%D0%B1%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B9_Web-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80&amp;diff=974&amp;oldid=prev</id>
		<title>imported&gt;Vix: Новая страница: «'''Полный тюнинг движка: Делаем из nginx непробиваемый Web-сервер'''  Выделенный Web-сервер на ос…»</title>
		<link rel="alternate" type="text/html" href="https://support.qbpro.ru/index.php?title=Nginx_%D0%BD%D0%B5%D0%BF%D1%80%D0%BE%D0%B1%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B9_Web-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80&amp;diff=974&amp;oldid=prev"/>
		<updated>2013-09-09T20:16:51Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «&amp;#039;&amp;#039;&amp;#039;Полный тюнинг движка: Делаем из nginx непробиваемый Web-сервер&amp;#039;&amp;#039;&amp;#039;  Выделенный Web-сервер на ос…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''Полный тюнинг движка: Делаем из nginx непробиваемый Web-сервер'''&lt;br /&gt;
&lt;br /&gt;
Выделенный Web-сервер на основе nginx – отличный способ повышения производительности Web-сайтов. В скорости обработки статического контента ему просто нет равных: он легко выдерживает несколько тысяч одновременных соединений и может быть легко оптимизирован и подогнан под любую конфигурацию. Однако? выступая в качестве фронт-энда для Apache, nginx оказывается наиболее уязвимым местом всей Web-инфраструктуры, поэтому безопасности nginx необходимо уделить особое внимание.&lt;br /&gt;
&lt;br /&gt;
Эта статья – своего рода ликбез, или, если хочешь, резюме всех техник повышения безопасности nginx. В ней не будет теории, описания основ настройки Web-сервера и прочей воды. Вместо этого ты получишь исчерпывающий практический материал, описывающий все основные шаги, которые необходимо проделать для того, чтобы получить по-настоящему защищенный Web-сервер.&lt;br /&gt;
&lt;br /&gt;
==Установка==&lt;br /&gt;
Пакет nginx доступен в прекомпилированном виде для любого дистрибутива. Однако собрав сервер самостоятельно, ты сможешь сделать его более компактным и надежным, а также получишь возможность изменить строку приветствия Web-сервера, чтобы отбить несмышленых скрипт-кидди.&lt;br /&gt;
&lt;br /&gt;
'''Измени строку приветствия Web-сервера'''&lt;br /&gt;
&lt;br /&gt;
* Скачай исходники nginx, открой файл src/http/ngx_http_header_filter_module.c и найди следующие две строки:&lt;br /&gt;
&lt;br /&gt;
 static char ngx_http_server_string[] = &amp;quot;Server: nginx&amp;quot; CRLF;&lt;br /&gt;
 static char ngx_http_server_full_string[] = &amp;quot;Server: &amp;quot; NGINX_VER CRLF;&lt;br /&gt;
&lt;br /&gt;
* Замени их на что-то вроде этого:&lt;br /&gt;
&lt;br /&gt;
 static char ngx_http_server_string[] = &amp;quot;Server: ][ Web Server&amp;quot; CRLF;&lt;br /&gt;
 static char ngx_http_server_full_string[] = &amp;quot;Server: ][ Web Server&amp;quot; CRLF;&lt;br /&gt;
&lt;br /&gt;
'''Удали все неиспользуемые тобой nginx-модули'''&lt;br /&gt;
&lt;br /&gt;
Некоторая часть модулей nginx подключается к Web-серверу прямо во время компиляции, и любой из них таит в себе потенциальную опасность. Возможно, в будущем в одном из них будет найдена уязвимость, и твой сервер окажется под угрозой. Отключив ненужные модули, ты сможешь значительно снизить риск возникновения такой ситуации.&lt;br /&gt;
&lt;br /&gt;
* Выполни сборку с помощью следующих команд:&lt;br /&gt;
&lt;br /&gt;
 # ./configure --without-http_autoindex_module --without-http_ssi_module&lt;br /&gt;
 # make&lt;br /&gt;
 # make install&lt;br /&gt;
&lt;br /&gt;
Так ты получишь nginx с заранее отключенными (и в большинстве случаев бесполезными) модулями SSI (Server Side Includes) и Autoindex. Чтобы узнать, какие модули можно безболезненно выбросить из Web-сервера, запусти скрипт configure с флагом '--help'.&lt;br /&gt;
&lt;br /&gt;
Препарируем nginx.conf&lt;br /&gt;
После установки nginx следует настроить. На страницах журнала уже был материал, описывающий этот процесс, мы же будем придерживаться темы статьи и поговорим о способах повышения безопасности сервера.&lt;br /&gt;
&lt;br /&gt;
'''Отключи показ версии сервера на всех ошибочных страницах'''&lt;br /&gt;
&lt;br /&gt;
Добавь в файл nginx.conf строку &amp;quot;server_tokens off&amp;quot;. Это заставит nginx скрывать информацию о типе и версии Web-сервера на страницах, генерируемых в ответ на ошибочный запрос клиента.&lt;br /&gt;
&lt;br /&gt;
'''Настрой защиту от срыва стека'''&lt;br /&gt;
&lt;br /&gt;
* Добавь в секцию server следующие строки:&lt;br /&gt;
&lt;br /&gt;
 # vi /etc/nginx/nginx.conf&lt;br /&gt;
&lt;br /&gt;
  # Максимальный размер буфера для хранения тела запроса клиента&lt;br /&gt;
  client_body_buffer_size 1K;&lt;br /&gt;
  # Максимальный размер буфера для хранения заголовков запроса клиента&lt;br /&gt;
  client_header_buffer_size 1k;&lt;br /&gt;
  # Максимальный размер тела запроса клиента, прописанный в поле Content-Length заголовка. Если сервер должен поддерживать загрузку файлов, это значение необходимо увеличить&lt;br /&gt;
  client_max_body_size 1k;&lt;br /&gt;
  # Количество и размер буферов для чтения большого заголовка запроса клиента&lt;br /&gt;
  large_client_header_buffers 2 1k;&lt;br /&gt;
&lt;br /&gt;
* Обрати внимание на директиву large_client_header_buffers. По умолчанию, для хранения строки URI nginx выделяет четыре буфера, размер каждого из которых равен размеру страницы памяти (для x86 это 4 Кб). Буферы освобождаются каждый раз, когда по окончанию обработки запроса соединение переходит в состояние keep-alive. Два буфера по 1 Кб могут хранить URI длиной только 2 Кб, что позволяет бороться с ботами и DoS-атаками.&lt;br /&gt;
&lt;br /&gt;
* Для повышения производительности добавь следующие строки:&lt;br /&gt;
&lt;br /&gt;
 # vi /etc/nginx/nginx.conf&lt;br /&gt;
&lt;br /&gt;
  # Таймаут при чтении тела запроса клиента&lt;br /&gt;
  client_body_timeout   10;&lt;br /&gt;
  # Таймаут при чтении заголовка запроса клиента&lt;br /&gt;
  client_header_timeout 10;&lt;br /&gt;
  # Таймаут, по истечению которого keep-alive соединение с клиентом не будет закрыто со стороны сервера&lt;br /&gt;
  keepalive_timeout     5 5;&lt;br /&gt;
  # Таймаут при передаче ответа клиенту&lt;br /&gt;
  send_timeout          10;&lt;br /&gt;
&lt;br /&gt;
'''Контролируй количество одновременных соединений'''&lt;br /&gt;
&lt;br /&gt;
* Для защиты Web-сервера от перегрузки и попыток осуществить DoS-атаку добавь в конфиг следующие строки:&lt;br /&gt;
&lt;br /&gt;
 # vi /etc/nginx/nginx.conf&lt;br /&gt;
&lt;br /&gt;
  # Описываем зону (slimits), в которой будут храниться состояния сессий. Зона размером 1 Мб может хранить около 32000 состояний, мы устанавливаем ее размер равным 5 Мб&lt;br /&gt;
  limit_zone slimits $binary_remote_addr 5m;&lt;br /&gt;
  # Задаем максимальное количество одновременных соединений для одной сессии. По сути, это число задает максимальное количество соединений с одного IP&lt;br /&gt;
  limit_conn slimits 5;&lt;br /&gt;
&lt;br /&gt;
Первая директива должна находиться в секции HTTP, вторая – в секции location. Когда количество соединений выйдет за пределы лимитов, клиент получит сообщение «Service unavailable» с кодом 503.&lt;br /&gt;
&lt;br /&gt;
'''Разреши коннекты только к своему домену'''&lt;br /&gt;
&lt;br /&gt;
Взломщики могут использовать ботов для сканирования подсетей и поиска уязвимых Web-серверов. Обычно боты просто перебирают диапазоны IP-адресов в поисках открытых 80 портов и посылают запрос HEAD для получения информации о веб-сервере (или главной странице). Ты можешь легко предотвратить такой скан, запретив обращение к серверу по IP-адресу (добавить в подсекцию location):&lt;br /&gt;
&lt;br /&gt;
 # vi /etc/nginx/nginx.conf&lt;br /&gt;
&lt;br /&gt;
  if ($host !~ ^(host.com|www.host.com)$ ) {&lt;br /&gt;
  return 444;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
'''Ограничь количество доступных методов обращения к Web-серверу'''&lt;br /&gt;
&lt;br /&gt;
Некоторые боты используют различные методы обращения к серверу для попытки определения его типа и/или проникновения, однако в документе RFC 2616 четко сказано, что Web-сервер не обязан реализовывать их все, и неподдерживаемые методы могут просто не обрабатываться. Сегодня используемыми остаются только методы GET (запрос документа), HEAD (запрос заголовков сервера) и POST (запрос на публикацию документа), поэтому все остальные можно безболезненно отключить с помощью помещения следующих строк в секцию server конфигурационного файла:&lt;br /&gt;
&lt;br /&gt;
 # vi /etc/nginx/nginx.conf&lt;br /&gt;
&lt;br /&gt;
  if ($request_method !~ ^(GET|HEAD|POST)$ ) {&lt;br /&gt;
  return 444;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
'''Отшивай ботов'''&lt;br /&gt;
&lt;br /&gt;
Другой способ блокирования ботов, сканеров и прочей нечисти основан на определении типа клиента (user-agent). Он не слишком эффективен, потому как большинство ботов косят под вполне легитимные браузеры, но в ряде случаев остается полезным:&lt;br /&gt;
&lt;br /&gt;
 # vi /etc/nginx/nginx.conf&lt;br /&gt;
&lt;br /&gt;
  # Блокируем менеджеры загрузки&lt;br /&gt;
  if ($http_user_agent ~* LWP::Simple|BBBike|wget) {&lt;br /&gt;
  return 403;&lt;br /&gt;
  }&lt;br /&gt;
  # Блокируем некоторые типы ботов&lt;br /&gt;
  if ($http_user_agent ~* msnbot|scrapbot) {&lt;br /&gt;
  return 403;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
'''Блокируй Referrer-спам'''&lt;br /&gt;
&lt;br /&gt;
Если твой сайт публикует Web-логи в общедоступном виде, ты легко можешь стать жертвой Referrer-спама (когда спам-боты обращаются к твоему серверу, указывая в заголовке referrer – адрес рекламируемого сайта). Такой вид спама может легко испортить SEO-рейтинги интернет-страницы, поэтому его необходимо блокировать в обязательном порядке. Один из способов сделать это – занести наиболее частые слова, встречающиеся в адресах рекламируемых сайтов, в черный список.&lt;br /&gt;
&lt;br /&gt;
 # vi /etc/nginx/nginx.conf&lt;br /&gt;
&lt;br /&gt;
  # Секция server&lt;br /&gt;
  if ( $http_referer ~* (babes|forsale|girl|jewelry|love|nudit|organic|poker|porn|sex|teen) )&lt;br /&gt;
  {&lt;br /&gt;
  return 403;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
'''Блокируй хотлинк'''&lt;br /&gt;
&lt;br /&gt;
Хотлинк – это включение в страницу изображения (или иного контента) с другого сайта. По сути, это воровство, потому как изображение, на которое ты потратил не один час своего свободного времени, не только свободно используется другими, но и создает нагрузку на твой Web-сервер, не приводя на него посетителей. Для борьбы с хотлинками достаточно сделать так, чтобы изображения отдавались клиенту только в том случае, если он запросил их, уже находясь на сайте (другими словами, заголовок referrer-запроса должен содержать имя твоего сайта). Добавь в секцию server конфигурационного файла nginx.conf следующие строки (host.com – это адрес твоего сайта):&lt;br /&gt;
&lt;br /&gt;
 # vi /etc/nginx/nginx.conf&lt;br /&gt;
&lt;br /&gt;
  location /images/ {&lt;br /&gt;
  valid_referers none blocked www.host.com host.com;&lt;br /&gt;
  if ($invalid_referer) {&lt;br /&gt;
  return 403;&lt;br /&gt;
  }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
В качестве альтернативы ты можешь настроить сервер на отдачу специального баннера с сообщением о воровстве вместо запрашиваемого изображения. Для этого замени строку «return 403» на строку:&lt;br /&gt;
&lt;br /&gt;
 rewrite ^/images/uploads.*\.(gif|jpg|jpeg|png)$ http://www.host.com/banned.jpg last&lt;br /&gt;
&lt;br /&gt;
'''Защищай важные каталоги от посторонних'''&lt;br /&gt;
&lt;br /&gt;
Как и любой другой Web-сервер, nginx позволяет регулировать доступ к каталогам на основе IP-адресов и паролей. Эту возможность можно использовать для закрытия некоторых частей сайта от посторонних глаз. Например, для отрезания URI от внешнего мира:&lt;br /&gt;
&lt;br /&gt;
 # vi /etc/nginx/nginx.conf&lt;br /&gt;
&lt;br /&gt;
  location /uploads/ {&lt;br /&gt;
  # Разрешаем доступ только машинам локальной сети&lt;br /&gt;
  allow 192.168.1.0/24;&lt;br /&gt;
  # Отшиваем всех остальных&lt;br /&gt;
  deny all;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Теперь к документам каталога uploads будут иметь доступ только пользователи локальной сети. Для установки пароля придется проделать более сложные действия. Сначала необходимо создать приватный для nginx-файл паролей и добавить в него необходимых пользователей (в качестве примера добавим пользователя admin):&lt;br /&gt;
&lt;br /&gt;
 # mkdir /etc/nginx/.htpasswd&lt;br /&gt;
 # htpasswd -c /etc/nginx/.htpasswd/passwd admin&lt;br /&gt;
&lt;br /&gt;
* Далее открой файл nginx.conf и впиши в него следующие строки:&lt;br /&gt;
&lt;br /&gt;
 # vi /etc/nginx/nginx.conf&lt;br /&gt;
&lt;br /&gt;
  location /admin/ {&lt;br /&gt;
  auth_basic &amp;quot;Restricted&amp;quot;;&lt;br /&gt;
  auth_basic_user_file /etc/nginx/.htpasswd/passwd;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Новых пользователей можно добавить с помощью следующей команды:&lt;br /&gt;
&lt;br /&gt;
 # htpasswd -s /etc/nginx/.htpasswd/passwd пользователь&lt;br /&gt;
&lt;br /&gt;
'''Используй SSL'''&lt;br /&gt;
&lt;br /&gt;
Если твой сайт работает с приватными данными пользователей, такими как номера кредитных карт, пароли от других сервисов, или же предоставляет доступ к другой важной информации, которая может стать лакомым кусочком для третьих лиц, позаботься о шифровании. Nginx хорошо работает с SSL, и этой возможностью нельзя пренебрегать.&lt;br /&gt;
&lt;br /&gt;
Для настройки SSL-шифрования средствами nginx достаточно выполнить несколько простых шагов. Сначала ты должен создать сертификат с помощью следующей последовательности команд:&lt;br /&gt;
&lt;br /&gt;
  # cd /etc/nginx&lt;br /&gt;
  # openssl genrsa -des3 -out server.key 1024&lt;br /&gt;
  # openssl req -new -key server.key -out server.csr&lt;br /&gt;
  # cp server.key server.key.org&lt;br /&gt;
  # openssl rsa -in server.key.org -out server.key&lt;br /&gt;
  # openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt&lt;br /&gt;
&lt;br /&gt;
* Затем описать сертификат в конфигурационном файле nginx:&lt;br /&gt;
&lt;br /&gt;
 # vi /etc/nginx/nginx.conf&lt;br /&gt;
&lt;br /&gt;
  server {&lt;br /&gt;
  server_name host.com;&lt;br /&gt;
  listen 443;&lt;br /&gt;
  ssl on;&lt;br /&gt;
  ssl_certificate /etc/nginx/server.crt;&lt;br /&gt;
  ssl_certificate_key /etc/nginx/server.key;&lt;br /&gt;
  access_log /etc/nginx/logs/ssl.access.log;&lt;br /&gt;
  error_log /etc/nginx/logs/ssl.error.log;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
* После этого можно перезагрузить Web-сервер:&lt;br /&gt;
&lt;br /&gt;
 # /etc/init.d/nginx reload&lt;br /&gt;
&lt;br /&gt;
Естественно, без поддержки со стороны самого Web-сайта это делать бессмысленно.&lt;br /&gt;
&lt;br /&gt;
==Другие способы==&lt;br /&gt;
&lt;br /&gt;
'''Установи правильные значения системных переменных'''&lt;br /&gt;
&lt;br /&gt;
Открой файл /etc/sysctl.conf и помести в него следующие строки:&lt;br /&gt;
&lt;br /&gt;
 # vi /etc/sysctl.conf&lt;br /&gt;
&lt;br /&gt;
  # Защита от smurf-атак&lt;br /&gt;
  net.ipv4.icmp_echo_ignore_broadcasts = 1&lt;br /&gt;
  # Защита от неправильных ICMP-сообщений&lt;br /&gt;
  net.ipv4.icmp_ignore_bogus_error_responses = 1&lt;br /&gt;
  # Защита от SYN-флуда&lt;br /&gt;
  net.ipv4.tcp_syncookies = 1&lt;br /&gt;
  # Запрещаем маршрутизацию от источника&lt;br /&gt;
  net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;
  net.ipv4.conf.default.accept_source_route = 0&lt;br /&gt;
  # Защита от спуфинга&lt;br /&gt;
  net.ipv4.conf.all.rp_filter = 1&lt;br /&gt;
  net.ipv4.conf.default.rp_filter = 1&lt;br /&gt;
  # Мы не маршрутизатор&lt;br /&gt;
  net.ipv4.ip_forward = 0&lt;br /&gt;
  net.ipv4.conf.all.send_redirects = 0&lt;br /&gt;
  net.ipv4.conf.default.send_redirects = 0&lt;br /&gt;
  # Включаем ExecShield&lt;br /&gt;
  kernel.exec-shield = 1&lt;br /&gt;
  kernel.randomize_va_space = 1&lt;br /&gt;
  # Расширяем диапазон доступных портов&lt;br /&gt;
  net.ipv4.ip_local_port_range = 2000 65000&lt;br /&gt;
  # Увеличиваем максимальный размер TCP-буферов&lt;br /&gt;
  net.ipv4.tcp_rmem = 4096 87380 8388608&lt;br /&gt;
  net.ipv4.tcp_wmem = 4096 87380 8388608&lt;br /&gt;
  net.core.rmem_max = 8388608&lt;br /&gt;
  net.core.wmem_max = 8388608&lt;br /&gt;
  net.core.netdev_max_backlog = 5000&lt;br /&gt;
  net.ipv4.tcp_window_scaling = 1&lt;br /&gt;
&lt;br /&gt;
'''Размести корневой каталог Web-сервера на выделенном разделе'''&lt;br /&gt;
&lt;br /&gt;
Поместив корневой каталог Web-сервера в выделенный раздел и запретив на нем размещение любых исполняемых файлов и файлов-устройств, ты обезопасишь остальную часть системы от тех, кто сможет получить доступ к корню Web-сервера. При этом запись в файле /etc/fstab должна иметь примерно такой вид:&lt;br /&gt;
&lt;br /&gt;
 /dev/sda5 /nginx ext4 defaults,nosuid,noexec,nodev 1 2&lt;br /&gt;
&lt;br /&gt;
'''Помести nginx в chroot/jail-окружение'''&lt;br /&gt;
&lt;br /&gt;
Любая современная *nix-система позволяет запереть приложение в изолированной среде исполнения. В Linux для этого можно использовать технологии KVM, Xen, OpenVZ и VServer, во FreeBSD – Jail, в Solaris – Zones. Если ни одна из этих технологий не доступна, ты можешь поместить nginx в классический chroot, который хоть и намного более хрупок, но большинство взломщиков остановить сможет.&lt;br /&gt;
&lt;br /&gt;
'''Установи правила SELinux для защиты nginx'''&lt;br /&gt;
&lt;br /&gt;
Хорошей альтернативой изолированным средам исполнения являются локальные системы обнаружения и предотвращения вторжений, такие как SELinux или AppArmor. Будучи правильно настроенными, они смогут предотвратить попытки взлома Web-сервера. По дефолту ни одна из них не настроена для работы в связке с nginx, однако в рамках проекта SELinuxNginx (http://sf.net/projects/selinuxnginx/) были созданы правила для SELinux, которые может использовать любой желающий. Остается только скачать и установить:&lt;br /&gt;
&lt;br /&gt;
  # tar -zxvf se-ngix_1_0_10.tar.gz&lt;br /&gt;
  # cd se-ngix_1_0_10/nginx&lt;br /&gt;
  # make&lt;br /&gt;
  # /usr/sbin/semodule -i nginx.pp&lt;br /&gt;
&lt;br /&gt;
'''Настрой брандмауэр'''&lt;br /&gt;
&lt;br /&gt;
Обычно nginx устанавливают на выделенных машинах, готовых к высокой нагрузке, поэтому зачастую он остается единственным сетевым сервисом, работающим на сервере. Чтобы обезопасить сервер, достаточно создать совсем небольшой набор правил, которые будут открывать 80, 110 и 143-й порты (если, конечно, nginx должен работать еще и как IMAP/POP3-прокси) и закрывать от внешнего мира все остальное.&lt;br /&gt;
&lt;br /&gt;
'''Ограничь количество соединений с помощью брандмауэра'''&lt;br /&gt;
&lt;br /&gt;
Для не слишком нагруженного Web-сайта хорошей идеей будет ограничить количество попыток соединений с одного IP-адреса в минуту. Это сможет уберечь тебя от некоторых типов DoS-атак и брутфорса. В Linux это можно сделать с помощью стандартного iptables/netfilter-модуля state:&lt;br /&gt;
&lt;br /&gt;
# iptables -A INPUT -p tcp --dport 80 -i eth0 \&lt;br /&gt;
  -m state --state NEW -m recent --set&lt;br /&gt;
  # iptables -A INPUT -p tcp --dport 80 -i eth0 \&lt;br /&gt;
  -m state --state NEW -m recent --update \&lt;br /&gt;
  --seconds 60 --hitcount 15 -j DROP&lt;br /&gt;
&lt;br /&gt;
* Правила урезают лимит на количество подключений с одного IP в минуту до 15. То же можно сделать и с помощью pf:&lt;br /&gt;
&lt;br /&gt;
 # vi /etc/pf.conf&lt;br /&gt;
&lt;br /&gt;
 webserver_ip=&amp;quot;1.1.1.1&amp;quot;&lt;br /&gt;
  table &amp;lt;abuse&amp;gt; persist&lt;br /&gt;
  block in quick from &amp;lt;abuse&amp;gt;&lt;br /&gt;
  pass in on $ext_if proto tcp to $webserver_ip \&lt;br /&gt;
  port www flags S/SA keep state \&lt;br /&gt;
  (max-src-conn 100, max-src-conn-rate 15/60, \&lt;br /&gt;
  overload &amp;lt;abusive_ips&amp;gt; flush)&lt;br /&gt;
&lt;br /&gt;
Кроме лимита на количество последовательных подключений (15 в минуту), данное правило устанавливает дополнительный лимит на количество одновременных подключений равный 100.&lt;br /&gt;
&lt;br /&gt;
'''Настрой PHP'''&lt;br /&gt;
&lt;br /&gt;
Если ты используешь nginx в связке с PHP, не забудь настроить и его. Вот как должен выглядеть конфигурационный файл /etc/php/php.ini защищенного сервера:&lt;br /&gt;
&lt;br /&gt;
  # vi /etc/php/php.ini&lt;br /&gt;
&lt;br /&gt;
  # Отключаем опасные функции&lt;br /&gt;
  disable_functions = phpinfo, system, mail, exec&lt;br /&gt;
  # Максимальное время исполнения скрипта&lt;br /&gt;
  max_execution_time = 30&lt;br /&gt;
  # Максимальное время, которое может потратить скрипт на обработку данных запроса&lt;br /&gt;
  max_input_time = 60&lt;br /&gt;
  # Максимальное количество памяти, выделяемое каждому скрипту&lt;br /&gt;
  memory_limit = 8M&lt;br /&gt;
  # Максимальный размер данных, отсылаемых скрипту с помощью метода POST&lt;br /&gt;
  post_max_size = 8M&lt;br /&gt;
  # Максимальный размер загружаемых файлов&lt;br /&gt;
  upload_max_filesize = 2M&lt;br /&gt;
  # Не показывать ошибки PHP-скриптов пользователям&lt;br /&gt;
  display_errors = Off&lt;br /&gt;
  # Включаем Safe Mode&lt;br /&gt;
  safe_mode = On&lt;br /&gt;
  # Включаем SQL Safe Mode&lt;br /&gt;
  sql.safe_mode = On&lt;br /&gt;
  # Позволяем выполнять внешние команды только в этом каталоге&lt;br /&gt;
  safe_mode_exec_dir = /путь/к/защищенному/каталогу&lt;br /&gt;
  # Защищаемся от утечки информации о PHP&lt;br /&gt;
  expose_php = Off&lt;br /&gt;
  # Ведем логи&lt;br /&gt;
  log_errors = On&lt;br /&gt;
  # Запрещаем открытие удаленных файлов&lt;br /&gt;
  allow_url_fopen = Off&lt;br /&gt;
&lt;br /&gt;
== Выводы ==&lt;br /&gt;
Применив описанные в статье рекомендации, ты получишь гораздо более защищенный Web-сервер. Но имей в виду, что не все техники подойдут к твоей конфигурации. Например, защита от брутфорса, основанная на урезании размеров буферов, выделяемых nginx под обработку запросов клиентов, может привести к падению производительности, а в некоторых случаях и к сбоям в обработке запросов. Ограничение на количество подключений нанесет сильный удар по производительности даже средненагруженного Web-сайта, но принесет пользу, если страница имеет низкий поток посетителей. Всегда проверяй, как внесенные тобой изменения повлияли на производительность и общую работоспособность Web-страницы.&lt;br /&gt;
&lt;br /&gt;
'''О герое дня'''&lt;br /&gt;
&lt;br /&gt;
Nginx – один самых производительных и популярных Web-серверов в мире. Согласно данным Netcraft, он используется для поддержки более чем 12 миллионов Web-сайтов по всему миру, включая таких мастодонтов как Rambler, Yandex, Begun, Wordpress.com, Wrike, SourceForge.net, vkontakte.ru, megashara.com, Либрусек и Taba.ru. Грамотная архитектура, основанная на мультиплексировании соединений с помощью системных вызовов select, epoll (Linux), kqueue (FreeBSD) и механизме управления памятью на основе пулов (небольших буферов от 1 до 16 Кб), позволяет nginx не проседать даже под очень высокими нагрузками, выдерживая свыше 10000 одновременных соединений (так называемая проблема C10K). Изначально написан Игорем Сысоевым для компании Rambler и открыт в 2004 году под BSD-подобной лицензией.&lt;br /&gt;
* [http://www.xakep.ru/post/54168/?print=true Xakep.ru -Web-сервер] администрирование&lt;/div&gt;</summary>
		<author><name>imported&gt;Vix</name></author>
	</entry>
</feed>