The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Ограничение доступа и ресурсов, безопасность

   Корень / Администратору / Сетевые сервисы / WWW, Apache httpd / Ограничение доступа и ресурсов, безопасность

----* Диапазоны IP-адресов облачных сервисов Amazon, Google, OVH, DigitalOcean и Microsoft (доп. ссылка 1)   [комментарии]
  Иногда на сервере возникает необходимость динамического определения подключения пользователя, транзитно использующего окружение в одном из арендуемых облачных сервисов.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Наиболее простой способ получения и обновления сертификатов Let's Encrypt   [комментарии]
  В рамках проекта dehydrated (https://github.com/lukas2511/dehydrated) развивается shell-скрипт для автоматизации действий по получению SSL-сертификатов в некоммерческом удостоверяющем центре Let's Encrypt (https://letsencrypt.org/). Регистрация в сервисе, получение сертификата и его последующее обновление предельно упрощено и требует только указания домена в файле конфигурации, создания проверочного пути на сайте и запуска скрипта.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Блокировка атаки на Joomla силами nginx и apache (доп. ссылка 1)   [комментарии]
  Продолжается [[https://www.opennet.ru/opennews/art.shtml?num=43521 массовая атака]] на сайты под управлением Joomla. К сожалению на базе данной CMS в сети много сайтов, администраторы которых не спешат устанавливать обновления. На системах хостинга можно попытаться блокировать типовую автоматизированную атаку централизованно, на стороне сервера.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Получение сертификата через общедоступный удостоверяющий центр LetsEncrypt (доп. ссылка 1) (доп. ссылка 2)   [комментарии]
  Удостоверяющий центр [[https://letsencrypt.org/ LetsEncrypt]] контролируется сообществом и позволяет любому желающему бесплатно получить TLS-сертификат для организации доступа через защищённое соединение к своему сайту. Для прохождения верификации перед получением сертификата достаточно продемонстрировать контроль над доменом через размещения файла с ключом на web-сервере или запуска специального автоматизированного крипта.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Как сменить корень документов в Apache/nginx в CentOS 7 и RHEL 7 с SELinux   [комментарии]
  По умолчанию для Apache, nginx и других http-серверов при использовании SELinux в CentOS 7 и RHEL 7 область видимости ограничена директорией /var/www. Для смены корня документов на /home/site следует включить новые директории в правила httpd_sys_content_t и httpd_sys_script_exec_t.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Использование amon для дополнительной защиты PHP-интерпретатора от выполнения внешних программ (доп. ссылка 1)   [комментарии]
  Для экспресс-блокировки выполняемых при работе определенного PHP-скрипта внешних программ удобно использовать библиотеку amon.so (http://www.lucaercoli.it/amon.html), которая подменяет своим обработчиком системный вызов execve() и контролирует его выполнение. Библиотека amon.so рассчитана на тесное взаимодействие с PHP и учитывает особенности его работы, позволяя защититься от простейших атак и блокировать работу бэкдоров, подобных r57shell.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Использование mod_qos для минимизации паразитной нагрузки на сайт (доп. ссылка 1)   [комментарии]
  Apache-модуль mod_qos (http://mod-qos.sourceforge.net/) позволяет организовать разделение запросов по приоритетам и обеспечить выполнение только приоритетных запросов при таких нештатных ситуациях, как перегрузка сервера. В качестве реакции при нехватке серверных ресурсов mod_qos может блокировать неприоритетные запросы, динамически изменять значения таймаутов, добавлять искусственную задержку перед выполнением запроса и принудительно завершать TCP-соединения.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Увеличение безопасности WordPress на типовом хостинге (доп. ссылка 1)   Автор: Pentarh Udi  [комментарии]
  Небольшой дайджест по обеспечению безопасности WordPress и других PHP OpenSource приложений. Рассмотрено, что можно сделать на среднестатистическом хостинге.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Особенности работы длительно выполняющихся PHP скриптов в Apache (доп. ссылка 1)   Автор: mysqlperformanceblog.com  [комментарии]
 Рассмотрим поведение Apache при принудительном закрытии клиентом окна браузера, в котором отображался вывод еще не завершенного PHP скрипта. Например, скрипт зациклился или пользователь устал ждать конца операции.

Особенность в том, что скрипт будет принудительно завершен, только в момент физического вывода данных, т.е. после сброса буфера, например после отправки большого числа данных или вызова функций ob_flush() и flush(). Если вывода данных клиенту не производится или буфер вывода остается несброшенным, то скрипт так и будет выполняться до истечении времени заданного через параметр настройки PHP - max_execution_time. При этом не важно, в какое значение в конфигурации PHP установлен параметр ignore_user_abort.

В качестве обходного пути для прерывания скриптов в течение длительного времени не производящих вывод данных, например, вследствие выполнения длительного SQL запроса, можно использовать расширение pcntl, вызывая функцию pcntl_alarm(таймаут). В отличие от max_execution_time/set_time_limit, определяющих максимальное время утилизации CPU (при выполнении запросов к SQL серверу процессорное время расходуется минимально и скрипт может оставаться висеть днями), функция pcntl_alarm оперирует секундами реального времени.

 
----* apache2 + mod_ntlm2 на FreeBSD (доп. ссылка 1)   Автор: Comatoz  [комментарии]
  Прозрачная авторизация пользователя через его доменную учетную запись
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Логгирование POST-запросов в apache (доп. ссылка 1)   Автор: mahoro  [комментарии]
 
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Ограничение трафика для виртуального хоста в apache (доп. ссылка 1)   [комментарии]
 Нижеприведенные настройки ограничат скорость для виртуального хоста в 1024kbps, с возможностью обслуживания не больше 10 запросов в секунду и максимумом в 30 открытых коннектов. Каждый посетитель может установить не больше трех одновременных соединений и получить данные на скорости не выше 20kb/s . Кроме того, виртуальный хост может за 4 недели израсходовать не более 100 Мб трафика, если лимит будет превышен скорость будет ограничена в 128kbps.

<VirtualHost 1.2.3.4>
  ServerName www.example.com
  ServerAdmin webmaster@example.com
  DocumentRoot /var/www
  CBandLimit 100M
  CBandExceededSpeed 128 5 15
  CBandSpeed 1024 10 30
  CBandRemoteSpeed 20kb/s 3 3
  CBandScoreboard /var/www/scoreboard
  CBandPeriod 4W
</VirtualHost>

 
----* Как совместить использование SuPHP и mod_php в одном apache (доп. ссылка 1)   Автор: pookey.co.uk  [обсудить]
 
По умолчанию будет использоваться SuPHP.
В httpd.conf:
   LoadModule suphp_module        modules/mod_suphp.so
   LoadModule php4_module         modules/libphp4.so
   AddType application/x-httpd-php .php
   AddType application/x-httpd-php-source .phps
   AddHandler x-httpd-php .php
   suPHP_Engine on
   php_admin_flag engine off

Для избранных хостов активируем mod_php:

   <VirtualHost ..>
     suPHP_Engine off
     RemoveHandler .php
     php_admin_flag engine on
     ...
  </VirtualHost>
 
----* Авторизация в Apache2 из стандартной группы LDAP   Автор: Андрей  [обсудить]
 
Авторизация в Apache2 из стандартной группы Ldap (objectClass=posixGroup)

В .htaccess прописать параметры модуля mod_auth_ldap
   AuthType Basic
   AuthName "For Administrators only!"
   AuthLDAPURL ldap://ldap.local/dc=local
   AuthLDAPRemoteUserIsDN off
   AuthLDAPGroupAttribute memberUid
   AuthLDAPGroupAttributeIsDN off
   require group cn=admins_group,ou=group,dc=local

Для поддержки протокола ldaps:// необходимо в файле
/etc/httpd/conf.d/ldap.conf определить параметры:
   LDAPTrustedCA /etc/pki/tls/certs/ca.cert
   LDAPTrustedCAType  BASE64_FILE

ca.cert это публичный сертификат которым подписан сертификат сервиса ldaps.
 
----* Как ограничить в Apache объем данных передаваемых в POST запросе. (доп. ссылка 1)   [обсудить]
 
В .htaccess или в файле конфигурации:
  LimitRequestBody 50000
 
----* Как изменить строку идентифицирующую версию Apache и некоторые модули.   [обсудить]
 
Директива ServerTokens устанавливает формат вывода информации в поле Server:
ServerTokens Minimal
#    Server: Apache/1.3.0
ServerTokens ProductOnly
#    Server: Apache
ServerTokens OS
#    Server: Apache/1.3.0 (Unix)
ServerTokens Full
#    Server: Apache/1.3.0 (Unix) PHP/3.0
 
----* Как ограничить число соединений от одного IP в Apache   [обсудить]
 
Устанавливаем модуль mod_limitipconn и изменяем httpd.conf:
ExtendedStatus On
<Directory />
...
    MaxConnPerIP 10
</Directory>
 
----* Как максимально ограничить пользовательские PHP скрипты.   [обсудить]
  В httpd.conf в блок конфигурации каждого виртуального хоста добавляем:
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Как ограничить размер памяти и CPU для CGI в Apache   [обсудить]
 
Ограничим память в 32 Мб, процессорное время 30 сек., одновременно может быть
запущено не более 60 пользовательских CGI скриптов.
В <VirtualHost ...>:
RLimitMEM   32000000 32000000
RLimitCPU   10       30
RLimitNPROC 60       60
 
----* Как преодолеть барьер в 256 одновременных соединений в Apache   [обсудить]
 
Пересоберите apache изменив в httpd.h константу HARD_SERVER_LIMIT с 256
на большее число.
 
----* Как ограничить доступ к определенному файлу.   [обсудить]
 
Запретим доступ к .txt файлам:
<Files ~ "\.txt">
    Order allow,deny
    Deny from all
</Files>
Доступа к .cgi и только с IP 1.2.3.4 через пароль, остальным нет доступа.
<Files ~ "\.cgi">
    Order allow,deny
    Allow from 123.123.123.123
    AuthType Basic
    AuthName "ENTER PASSWORD"
    AuthUserFile /home/user/.htpasswd
    <Limit GET POST PUT>
        require valid-user
    </Limit>
    Deny from all
</Files>
 
----* Как ограничить доступ к директории только для определенных IP   [обсудить]
 
В .htaccess:
order allow,deny
allow from 10.0.0.0/24 176.1.2.3 194.67.48.0/24 
 
----* Как организовать парольный доступ к директории   [комментарии]
 
в .htaccess:
        AuthType Basic
        AuthName "Private block"
        AuthUserFile путь к файлу с паролями
        require valid-user
или require user user1 user2...
Создать файл паролей: htpasswd -c .passwd user
добавить нового пользователя: htpasswd .passwd user
 
----* Как отбить простой DDoS в nginx   Автор: Ilya  [комментарии]
 
Все мы сталкивались с зажатым F5 и просто озверевшими ботами, уже давно не
секрет, что мораль у данных личностей довольно слаба, а желание забить канал
высоко, именно по этому данный сниппет в nginx может срезать львиную долю таких
неуравновешенных личностей.

Суть идеи  в следующем:

   map "$http_accept_encoding:$remote_addr" $ban_ban {
    "~*(.*):(1.1.1.1|2.2.2.2)"  0; #  тут перечисляем кому "можно"
    "~*(.*gzip.*|.*identity.*):(.*)"  0; # выделяем запросы с gzip в заголовке Accept-Encoding
    default        1; # ban
   }

   if ($ban_ban = 1) {
        return 444;
   }


TL;DR: большинство дельцов, не обращают внимание на заголовок gzip в своих
запросах, им важно забить серверу исходящий канал (вот и не требуют gzip) -
мораль  в том, что легитимный пользователь/браузер ВСЕГДА посылает gzip/deflate
в своих "ожиданиях" от сервера. Как следствие такое помогает избежать 90%
простейших атак.
 

 Версия для печати





Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру