Изучение 26 методов анализа больших данных: часть 1
Изучение 26 методов анализа больших данных: часть 1
ModSecurity - это модуль брандмауэра веб-приложений с открытым исходным кодом (WAF), который отлично защищает Apache, Nginx и IIS от различных кибератак, направленных на потенциальные уязвимости в различных веб-приложениях.
В этой статье мы установим и настроим ModSecurity для Nginx в CentOS 7, Debian 8 и Ubuntu 16.04.
root.Следуя этому руководству , обновите ядро и пакеты вашего сервера до последней доступной версии.
Прежде чем вы сможете успешно скомпилировать Nginx и ModSecurity, вам необходимо установить несколько пакетов программного обеспечения следующим образом.
а) на CentOS 7:
yum groupinstall -y "Development Tools"
yum install -y httpd httpd-devel pcre pcre-devel libxml2 libxml2-devel curl curl-devel openssl openssl-devel
shutdown -r now
б) В Debian 8 или Ubuntu 16.04:
apt-get install -y git build-essential libpcre3 libpcre3-dev libssl-dev libtool autoconf apache2-dev libxml2-dev libcurl4-openssl-dev automake pkgconf
Из-за нескольких нестабильностей, о которых сообщалось в главной ветке ModSecurity for Nginx, на данный момент официально рекоменду��тся использовать последнюю версию nginx_refactoringветки всякий раз, когда это возможно.
Загрузите nginx_refactoringветку ModSecurity для Nginx:
cd /usr/src
git clone -b nginx_refactoring https://github.com/SpiderLabs/ModSecurity.git
Скомпилируйте ModSecurity:
а) на CentOS 7:
cd ModSecurity
sed -i '/AC_PROG_CC/a\AM_PROG_CC_C_O' configure.ac
sed -i '1 i\AUTOMAKE_OPTIONS = subdir-objects' Makefile.am
./autogen.sh
./configure --enable-standalone-module --disable-mlogc
make
Примечание: две sedкоманды выше используются для предотвращения появления предупреждающих сообщений при использовании более новых версий automake.
б) В Debian 8 или Ubuntu 16.04:
cd ModSecurity
./autogen.sh
./configure --enable-standalone-module --disable-mlogc
make
Загрузите и разархивируйте последнюю стабильную версию Nginx, которая Nginx 1.10.3на момент написания:
cd /usr/src
wget https://nginx.org/download/nginx-1.10.3.tar.gz
tar -zxvf nginx-1.10.3.tar.gz && rm -f nginx-1.10.3.tar.gz
а) на CentOS 7:
Во-первых, вам нужно создать выделенного пользователя nginxи выделенную группу nginxдля Nginx:
groupadd -r nginx
useradd -r -g nginx -s /sbin/nologin -M nginx
Затем скомпилируйте Nginx, включив модули ModSecurity и SSL:
cd nginx-1.10.3/
./configure --user=nginx --group=nginx --add-module=/usr/src/ModSecurity/nginx/modsecurity --with-http_ssl_module
make
make install
Измените пользователя Nginx по умолчанию:
sed -i "s/#user nobody;/user nginx nginx;/" /usr/local/nginx/conf/nginx.conf
б) В Debian 8 или Ubuntu 16.04:
Во-первых, вы должны использовать существующего пользователя www-dataи существующую группу www-data.
Затем скомпилируйте Nginx, включив модули ModSecurity и SSL:
cd nginx-1.10.3/
./configure --user=www-data --group=www-data --add-module=/usr/src/ModSecurity/nginx/modsecurity --with-http_ssl_module
make
make install
Измените пользователя Nginx по умолчанию:
sed -i "s/#user nobody;/user www-data www-data;/" /usr/local/nginx/conf/nginx.conf
После успешной установки Nginx соответствующие файлы будут расположены по адресу:
nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx modules path: "/usr/local/nginx/modules"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
Вы можете проверить установку с:
/usr/local/nginx/sbin/nginx -t
Если ничего не происходит, вывод должен быть:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
Для вашего удобства вы можете настроить системный файл для Nginx:
cat <<EOF>> /lib/systemd/system/nginx.service
[Service]
Type=forking
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
KillStop=/usr/local/nginx/sbin/nginx -s stop
KillMode=process
Restart=on-failure
RestartSec=42s
PrivateTmp=true
LimitNOFILE=200000
[Install]
WantedBy=multi-user.target
EOF
Двигаясь вперед, вы можете запустить / остановить / перезапустить Nginx следующим образом:
systemctl start nginx.service
systemctl stop nginx.service
systemctl restart nginx.service
vi /usr/local/nginx/conf/nginx.conf
Найдите следующий сегмент внутри http {}сегмента:
location / {
root html;
index index.html index.htm;
}
Вставьте следующие строки в location / {}сегмент:
ModSecurityEnabled on;
ModSecurityConfig modsec_includes.conf;
#proxy_pass http://localhost:8011;
#proxy_read_timeout 180s;
Окончательный результат должен быть:
location / {
ModSecurityEnabled on;
ModSecurityConfig modsec_includes.conf;
#proxy_pass http://localhost:8011;
#proxy_read_timeout 180s;
root html;
index index.html index.htm;
}
Сохранить и выйти:
:wq!
Примечание. Приведенная выше конфигурация Nginx является лишь примером конфигурации для использования Nginx в качестве веб-сервера, а не обратного прокси-сервера. Если вы используете Nginx в качестве обратного прокси-сервера, удалите #символ в последних двух строках и внесите в них соответствующие изменения.
/usr/local/nginx/conf/modsec_includes.conf:
cat <<EOF>> /usr/local/nginx/conf/modsec_includes.conf
include modsecurity.conf
include owasp-modsecurity-crs/crs-setup.conf
include owasp-modsecurity-crs/rules/*.conf
EOF
Примечание. Приведенная выше конфигурация будет применять все основные правила OWASP ModSecurity в owasp-modsecurity-crs/rules/каталоге. Если вы хотите применять только выборочные правила, вы должны удалить include owasp-modsecurity-crs/rules/*.confстроку, а затем указать точные правила, которые вам нужны, после шага 4.5.
cp /usr/src/ModSecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf
cp /usr/src/ModSecurity/unicode.mapping /usr/local/nginx/conf/
/usr/local/nginx/conf/modsecurity.confфайл:
sed -i "s/SecRuleEngine DetectionOnly/SecRuleEngine On/" /usr/local/nginx/conf/modsecurity.conf
cd /usr/local/nginx/conf
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
cd owasp-modsecurity-crs
mv crs-setup.conf.example crs-setup.conf
cd rules
mv REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
mv RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf
Запустите Nginx:
systemctl start nginx.service
Откройте порт 80, чтобы разрешить внешний доступ:
а) на CentOS 7:
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --reload
б) в Debian 8:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
touch /etc/iptables
iptables-save > /etc/iptables
в) В Ubuntu 16.04:
ufw allow OpenSSH
ufw allow 80
ufw default deny
ufw enable
Направьте свой веб-браузер на:
http://203.0.113.1/?param="><script>alert(1);</script>
Используйте grepдля получения сообщений об ошибках следующим образом:
grep error /usr/local/nginx/logs/error.log
Вывод должен включать несколько сообщений об ошибках, которые похожи на:
2017/02/15 14:07:54 [error] 10776#0: [client 104.20.23.240] ModSecurity: Warning. detected XSS using libinjection. [file "/usr/local/nginx/conf/owasp-modsecurity-crs/rules/REQUEST-941-APPLICATION-ATTACK-XSS.conf"] [line "56"] [id "941100"] [rev "2"] [msg "XSS Attack Detected via libinjection"] [data "Matched Data: found within ARGS:param: \x22><script>alert(1);</script>"] [severity "CRITICAL"] [ver "OWASP_CRS/3.0.0"] [maturity "1"] [accuracy "9"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-xss"] [tag "OWASP_CRS/WEB_ATTACK/XSS"] [tag "WASCTC/WASC-8"] [tag "WASCTC/WASC-22"] [tag "OWASP_TOP_10/A3"] [tag "OWASP_AppSensor/IE1"] [tag "CAPEC-242"] [hostname ""] [uri "/index.html"] [unique_id "ATAcAcAkucAchGAcPLAcAcAY"]
Вот и все. Как видите, модуль ModSecurity успешно зарегистрировал эту атаку в соответствии со своей политикой действий по умолчанию. Если вы хотите сделать больше пользовательских настроек, пожалуйста , внимательно просматривать и редактировать /usr/local/nginx/conf/modsecurity.confи /usr/local/nginx/conf/owasp-modsecurity-crs/crs-setup.confфайлы.
Изучение 26 методов анализа больших данных: часть 1
Прочтите блог, чтобы узнать о различных уровнях архитектуры больших данных и их функциях самым простым способом.
Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.
Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.
Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.
По мере того, как наука развивается быстрыми темпами, принимая на себя большую часть наших усилий, также возрастает риск подвергнуться необъяснимой сингулярности. Прочтите, что может значить для нас необычность.
CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?
Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!
Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.
Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше