Cara Pasang dan Konfigur CyberPanel pada Server CentOS 7 anda
Menggunakan Sistem Berbeza? Pengenalan CyberPanel adalah salah satu panel kawalan pertama di pasaran yang merupakan sumber terbuka dan menggunakan OpenLiteSpeed. Apa itu
ModSecurity adalah modul firewall aplikasi web sumber terbuka (WAF) yang bagus untuk melindungi Apache, Nginx, dan IIS dari pelbagai serangan siber yang mensasarkan potensi kelemahan dalam pelbagai aplikasi web
Dalam artikel ini, kami akan memasang dan mengkonfigurasi ModSecurity untuk Nginx pada CentOS 7, Debian 8, dan Ubuntu 16.04.
root
.Ikuti panduan ini , kemas kini Kernel dan Pakej pelayan anda ke versi terkini yang tersedia.
Sebelum berjaya menyusun Nginx dan ModSecurity, anda perlu memasang beberapa pakej perisian seperti berikut.
a) Pada 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) Pada Debian 8 atau 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
Oleh kerana beberapa ketidakstabilan yang dilaporkan di ModSecurity untuk cawangan induk Nginx, buat masa ini, secara rasmi disyorkan untuk menggunakan versi terbaru nginx_refactoring
cawangan itu bila boleh.
Muat turun nginx_refactoring
cawangan ModSecurity untuk Nginx:
cd /usr/src
git clone -b nginx_refactoring https://github.com/SpiderLabs/ModSecurity.git
Menyusun ModSecurity:
a) Pada 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
Catatan: dua sed
perintah di atas digunakan untuk mencegah pesan peringatan ketika menggunakan versi automake yang lebih baru.
b) Pada Debian 8 atau Ubuntu 16.04:
cd ModSecurity
./autogen.sh
./configure --enable-standalone-module --disable-mlogc
make
Muat turun dan susun semula keluaran stabil Nginx terkini yang ada Nginx 1.10.3
pada masa penulisan:
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
a) Pada CentOS 7:
Pertama, anda perlu membuat pengguna khusus nginx
dan kumpulan khusus nginx
untuk Nginx:
groupadd -r nginx
useradd -r -g nginx -s /sbin/nologin -M nginx
Kemudian kumpulkan Nginx sambil mengaktifkan modul ModSecurity dan 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
Ubah suai pengguna lalai Nginx:
sed -i "s/#user nobody;/user nginx nginx;/" /usr/local/nginx/conf/nginx.conf
b) Pada Debian 8 atau Ubuntu 16.04:
Pertama, anda harus menggunakan pengguna yang ada www-data
dan kumpulan yang ada www-data
.
Kemudian kumpulkan Nginx sambil mengaktifkan modul ModSecurity dan 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
Ubah suai pengguna lalai Nginx:
sed -i "s/#user nobody;/user www-data www-data;/" /usr/local/nginx/conf/nginx.conf
Setelah Nginx berjaya dipasang, fail berkaitan akan berada di:
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"
anda boleh menguji pemasangan dengan:
/usr/local/nginx/sbin/nginx -t
Sekiranya tidak ada yang salah, outputnya mestilah:
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
Untuk kemudahan anda, anda boleh menyediakan fail unit sistemd untuk 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
Melangkah ke hadapan, anda boleh memulakan / menghentikan / memulakan semula Nginx seperti berikut:
systemctl start nginx.service
systemctl stop nginx.service
systemctl restart nginx.service
vi /usr/local/nginx/conf/nginx.conf
Cari segmen berikut dalam http {}
segmen:
location / {
root html;
index index.html index.htm;
}
Masukkan baris di bawah ke dalam location / {}
segmen:
ModSecurityEnabled on;
ModSecurityConfig modsec_includes.conf;
#proxy_pass http://localhost:8011;
#proxy_read_timeout 180s;
Hasil akhirnya adalah:
location / {
ModSecurityEnabled on;
ModSecurityConfig modsec_includes.conf;
#proxy_pass http://localhost:8011;
#proxy_read_timeout 180s;
root html;
index index.html index.htm;
}
Simpan dan tutup:
:wq!
Catatan: Konfigurasi Nginx di atas hanyalah contoh konfigurasi untuk menggunakan Nginx sebagai pelayan web dan bukannya proksi terbalik. Sekiranya anda menggunakan Nginx sebagai proksi terbalik, hapus #
watak dalam dua baris terakhir dan buat pengubahsuaian yang sesuai dengannya.
/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
Catatan: Konfigurasi di atas akan menerapkan semua Peraturan Teras ModSecurity OWASP dalam owasp-modsecurity-crs/rules/
direktori. Sekiranya anda ingin menerapkan peraturan selektif sahaja, anda harus membuang include owasp-modsecurity-crs/rules/*.conf
garis, dan kemudian tentukan peraturan tepat yang anda perlukan selepas langkah 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
fail:
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
Mulakan Nginx:
systemctl start nginx.service
Buka port 80 untuk membenarkan akses luar:
a) Pada CentOS 7:
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --reload
b) Pada 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
c) Pada Ubuntu 16.04:
ufw allow OpenSSH
ufw allow 80
ufw default deny
ufw enable
Arahkan penyemak imbas web anda ke:
http://203.0.113.1/?param="><script>alert(1);</script>
Gunakan grep
untuk mengambil mesej ralat seperti berikut:
grep error /usr/local/nginx/logs/error.log
Hasilnya harus merangkumi beberapa mesej ralat yang serupa dengan:
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"]
Itu sahaja. Seperti yang anda lihat, modul ModSecurity berjaya mencatat serangan ini sesuai dengan dasar tindakan lalai. Sekiranya anda ingin membuat lebih banyak tetapan tersuai, sila teliti dan edit /usr/local/nginx/conf/modsecurity.conf
dan /usr/local/nginx/conf/owasp-modsecurity-crs/crs-setup.conf
fail dengan teliti.
Menggunakan Sistem Berbeza? Pengenalan CyberPanel adalah salah satu panel kawalan pertama di pasaran yang merupakan sumber terbuka dan menggunakan OpenLiteSpeed. Apa itu
Apache Maven adalah alat pengurusan projek perisian sumber terbuka dan bebas yang banyak digunakan untuk menyebarkan aplikasi berbasis Java. Prasyarat yang baru
FFmpeg adalah penyelesaian sumber terbuka yang popular untuk merakam, menukar, dan menstrim audio dan video, yang banyak digunakan dalam semua jenis perkhidmatan streaming dalam talian. Saya
Menggunakan Sistem Berbeza? Backdrop CMS 1.8.0 adalah Sistem Pengurusan Kandungan (CMS) sumber mudah alih, mudah alih, percuma dan terbuka yang membolehkan kami
Menggunakan Sistem Berbeza? AirSonic adalah pelayan streaming media sumber terbuka dan terbuka. Dalam tutorial ini, saya akan membimbing anda melalui proses penyebaran a
Pengenalan Komposer adalah pengurus pergantungan yang popular untuk PHP yang dapat mempermudah pemasangan dan kemas kini perpustakaan yang diperlukan untuk projek anda
RockMongo adalah alat Pengurusan MongoDB berasaskan web yang serupa dengan alat Pengurusan MySQL: phpMyAdmin. Tutorial ini akan merangkumi proses installin
.NET NET adalah rangka kerja pembangunan merentas platform terbuka yang disusun oleh Microsoft dan masyarakat NET yang semakin berkembang. Dengan bantuan .NE
Menggunakan Sistem yang berbeza? Netdata adalah bintang yang semakin meningkat dalam bidang pemantauan metrik sistem masa nyata. Berbanding dengan alat lain yang serupa, Netdata:
Menggunakan Sistem yang berbeza? Dalam tutorial ini, saya akan menerangkan cara menyediakan pelayan Starbound di CentOS 7. Prasyarat Anda perlu memiliki permainan ini untuk anda
Django adalah rangka kerja Python yang popular untuk menulis aplikasi web. Dengan Django, anda dapat membina aplikasi dengan lebih cepat, tanpa mencipta semula roda. Sekiranya anda mahu
Selamat datang ke tutorial Vultr yang lain. Di sini, anda akan belajar cara memasang dan menjalankan pelayan SAMP. Panduan ini ditulis untuk CentOS 6. Prasyarat Anda akan hadir
Revive Adserver adalah sistem penayangan iklan sumber terbuka dan bebas yang dapat digunakan untuk mengelola iklan di laman web, dalam aplikasi, dan / atau dalam pemutar video. Dalam artikel ini,
Parse Server adalah alternatif sumber terbuka untuk perkhidmatan backend Parse yang sedang ditutup. Sekiranya anda peminat perkhidmatan ini, anda masih boleh menikmati perkhidmatan ini
Menggunakan Sistem Berbeza? Elgg adalah mesin rangkaian sosial sumber terbuka yang membolehkan penciptaan persekitaran sosial seperti rangkaian sosial kampus dan
Pengenalan Caddy adalah program pelayan web yang muncul dengan sokongan asli untuk HTTP / 2 dan HTTPS automatik. Dengan kemudahan penggunaan dan keselamatan, Caddy dapat b
Gambaran Keseluruhan Artikel ini dimaksudkan untuk membantu anda mendapatkan cluster Kubernet dan berjalan dengan kubeadm dalam waktu singkat. Panduan ini akan menggunakan dua pelayan, di
Pengenalan Mengendalikan sistem Linux bermaksud seseorang menggunakan baris perintah lebih kerap daripada tidak. Perlu menaip nama direktori panjang berulang-ulang sebagai wel
OpenCart adalah penyelesaian keranjang belanja sumber terbuka yang popular yang direka untuk memberikan fungsi, kemudahan penggunaan, dan penampilan yang sangat baik. Dengan OpenCart, anda pasti
Menggunakan Sistem Berbeza? Pengenalan Sails.js adalah rangka kerja MVC untuk Node.js, mirip dengan Ruby on Rails. Ia menjadikan untuk mengembangkan aplikasi moden
Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1
Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.
Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.
Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.
Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.
CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?
Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.
Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!
Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.
Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut