Встановіть Plesk на CentOS 7
Використання іншої системи? Plesk — це власна панель керування веб-хостом, яка дозволяє користувачам адмініструвати свої персональні та/або клієнтські веб-сайти, бази даних
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
b) У 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 для головної гілки 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.
b) У 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
b) У 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
Для вашої зручності ви можете налаштувати файл модуля systemd для 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
b) На 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
файли.
Використання іншої системи? Plesk — це власна панель керування веб-хостом, яка дозволяє користувачам адмініструвати свої персональні та/або клієнтські веб-сайти, бази даних
Squid — популярна безкоштовна програма для Linux, яка дозволяє створювати веб-проксі для переадресації. У цьому посібнику ви дізнаєтеся, як встановити Squid на CentOS, щоб перетворити вас
Вступ Lighttpd — це форк Apache, який має набагато меншу ресурсомісткість. Він легкий, звідси його назва, і досить простий у використанні. Встановити
VULTR нещодавно вніс зміни на свою сторону, і тепер усе має працювати нормально з коробки з увімкненим NetworkManager. Якщо ви бажаєте вимкнути
Icinga2 — це потужна система моніторингу, і при використанні в моделі «майстер-клієнт» вона може замінити потребу в перевірках моніторингу на основі NRPE. Майстер-клієнт
Використання іншої системи? Apache Cassandra — це безкоштовна система керування базами даних NoSQL з відкритим вихідним кодом, яка розроблена для забезпечення масштабованості, високої
Використання іншої системи? Microweber — це CMS та інтернет-магазин із відкритим вихідним кодом. Вихідний код Microweber розміщено на GitHub. Цей посібник покаже вам
Використання іншої системи? Vanilla forum — це програма з відкритим вихідним кодом, написана на PHP. Це повністю настроюваний, простий у використанні та підтримує зовнішній вигляд
Використання іншої системи? Mattermost — це автономна альтернатива службі обміну повідомленнями Slack SAAS з відкритим кодом. Іншими словами, з Mattermost ви бл
Панель керування Plesk має дуже гарну інтеграцію для Lets Encrypt. Lets Encrypt є одним із єдиних постачальників SSL, які надають сертифікати повністю
Lets Encrypt — це центр сертифікації, який надає безкоштовні сертифікати SSL. cPanel створив чітку інтеграцію, щоб ви і ваш клієнт
Використання іншої системи? Concrete5 — це CMS з відкритим вихідним кодом, яка пропонує багато відмінних і корисних функцій, які допомагають редакторам легко створювати вміст.
Використання іншої системи? Review Board — це безкоштовний інструмент з відкритим кодом для перегляду вихідного коду, документації, зображень та багато іншого. Це веб-програмне забезпечення
У цьому посібнику ви дізнаєтеся, як налаштувати автентифікацію HTTP для веб-сервера Nginx, що працює на CentOS 7. Вимоги Щоб почати, вам знадобиться
Використання іншої системи? GoAccess — це аналізатор веб-журналів з відкритим вихідним кодом. Ви можете використовувати його для аналізу журналів у режимі реального часу в терміналі або
YOURLS (Your Own URL Shortener) — програма для скорочення URL-адрес і аналізу даних із відкритим вихідним кодом. У цій статті ми розглянемо процес встановлення
Використання іншої системи? Вступ ArangoDB — це відкрита база даних NoSQL з гнучкою моделлю даних для документів, графіків і ключів-значень. це є
Вступ Каталог /etc/ відіграє важливу роль у функціонуванні системи Linux. Причина цього в тому, що майже кожна конфігурація системи
Багато системних адміністраторів керують великою кількістю серверів. Якщо потрібно отримати доступ до файлів на різних серверах, увійти на кожен окремо бл
У цьому посібнику буде описано процес встановлення ігрового сервера Half Life 2 на систему CentOS 6. Крок 1: Встановлення необхідних умов Щоб налаштувати ou
Штучний інтелект не в майбутньому, він тут прямо в сьогоденні У цьому блозі Прочитайте, як програми штучного інтелекту вплинули на різні сектори.
Ви також стали жертвою DDOS-атак і спантеличені методами запобігання? Прочитайте цю статтю, щоб вирішити свої запитання.
Можливо, ви чули, що хакери заробляють багато грошей, але чи замислювалися ви коли-небудь, як вони заробляють такі гроші? давайте обговоримо.
Ви хочете побачити революційні винаходи Google і як ці винаходи змінили життя кожної людини сьогодні? Тоді читайте в блозі, щоб побачити винаходи Google.
Концепція самокерованих автомобілів, щоб вирушати в дороги за допомогою штучного інтелекту, є мрією, яку ми давно мріємо. Але, незважаючи на кілька обіцянок, їх ніде не видно. Прочитайте цей блог, щоб дізнатися більше…
Оскільки наука розвивається швидкими темпами, бере на себе багато наших зусиль, ризики піддати себе незрозумілій Сингулярності також зростає. Читайте, що може означати для нас сингулярність.
Методи зберігання даних можуть розвиватися з моменту народження Даних. Цей блог висвітлює еволюцію зберігання даних на основі інфографіки.
Прочитайте блог, щоб дізнатися про різні шари архітектури великих даних та їх функціональні можливості найпростішим способом.
У цьому цифровому світі пристрої розумного дому стали важливою частиною життя. Ось кілька дивовижних переваг пристроїв розумного дому щодо того, як вони роблять наше життя гідним життя та спрощують його.
Нещодавно Apple випустила додаткове оновлення macOS Catalina 10.15.4, щоб виправити проблеми, але схоже, що оновлення викликає більше проблем, що призводять до блокування комп’ютерів Mac. Прочитайте цю статтю, щоб дізнатися більше