Đăng ký Đăng nhập

Tài liệu Naxsi ngixn

.PDF
22
508
116

Mô tả:

1 TÌM HIỂU VỀ NAXSI Giới thiệu Naxsi Apache có một web application firewall và cũng là một security module cực mạnh là mod_security. Nginx cũng có một security module mạnh tương tự, đó chính là NAXSI. NAXSI là module phát triển dành riêng cho Nginx, NAXSI là viết tắt của Nginx Anti XSS and SQL Injection. Sử dụng NAXSI cho phép bạn bảo vệ web application của bạn tốt hơn với cách viết rules uyển chuyển, đa dạng, tốc độ xử lý nhanh. 2 NAXSI được viết tắt từ “Nginx Anti XSS and SQL Injection”, là một web application firewall được phát triển dành riêng cho Nginx. NAXSI hoàn toàn open source và miễn phí. NAXSI có thể tự động phát hiện và ngăn chặn các cuộc tấn công bằng XSS và SQL Injection vào web application của bạn, thông qua hệ thống rules linh hoạt và bạn cũng có thể tự xây dựng thêm rules cho NAXSI. Cách làm việc của NAXSI rất đơn giản, NAXSI tự động đọc và phân tích các POST và GET request gửi đến webserver. Nếu phát hiện các dấu hiệu khả nghi, như chứa các string liên quan đến SQL Injection, XSS, thì tự động block các request từ IP đó, cách block là redirect truy cập sang một địa chỉ URL khác. So sánh: Nginx usage in February 2013. 3 Bảng so sánh tốc độ sử lý trả về 4 Hoạt động của NAXSI: 5 6 Rules:  URL : Checks on the search pattern in the URL (server path).  ARGS: Searches for the pattern in the request arguments.  FILE_EXT: Tests the file attachment for the search pattern.  BODY: Checks the body of a POST request for the search pattern; can be further limited with$BODY_VAR:VarName.  HEADERS : Finds the search pattern in the header of a request; can be further delimited:$HEADERS_VAR:UserAgent, $HEADERS_VAR:Cookie, $HEADERS_VAR:ContentType,$HEADERS_VAR:Connection, $HEADERS_VAR:Accept-Encoding. Một vài Rules mẫu:  MainRule "str:/manager/html/upload" "msg:DN SCAN Tomcat" "mz:URL" "s:$UWA:8" id:42000217 ;  MainRule "rx:type( *)=( *)[\"|']symbol[\"|']" "msg:DN APP_SERVER Possible RAILS Exploit using type=symbol" "mz:BODY" "s:$ATTACK:8" id:42000233 ;  MainRule "str:basic ywrtaw46ywrtaw4=" "msg:APP_SERVER Tomcat admin-admin credentials" "mz:$URL/manager|$HEADERS_VAR:Authorization" "s:$ATTACK:8" id:42000216 ; 7  MainRule "str:http://" "msg:http:// scheme" "mz:ARGS|BODY|$HEADERS_VAR:Cookie" "s:$RFI:8" id:1100 ;  MainRule "str:/*" "msg:mysql comment (/*)" "mz:BODY|URL|ARGS|$HEADERS_VAR:Cookie" "s:$SQL:8" id:1003 ; 8 Cài đặt và cấu hình a. Cài đặt NAXSI là một module được phát triển riêng, do đó để cài đặt NAXSI và Nginx các bạn phải biên dịch (compile) Nginx từ source code, chứ không thể cài đặt qua YUM hay APT-GET. Sau đây, xin giới thiệu cách cài Nginx và Naxsi trên Cenos 6.5. Chú ý: Tất cả thực hiện dưới quyền root. - Cài các gói cần thiết: yum -y install gcc gcc-c++ make zlib-devel pcre-devel openssl-devel - Tải và giải nén Nginx (1.9.3), Naxsi (0.54rc3) bằng các lệnh sau : cd /usr/local/src/ wget http://nginx.org/download/nginx-1.9.3.tar.gz tar -zxvf nginx-1.9.3.tar.gz wget https://github.com/nbs-system/naxsi/archive/0.54rc3.tar.gz tar -zxvf 0.54rc3 - Ta được các file và thư mục sau: - Tiếp theo các bạn tiến hành compile Nginx source kèm với NAXSI module. Quan trọng trong câu lệnh có dòng “--add-module=../naxsi-0.54rc3/naxsi_src/” để thực hiện việc gán thêm module vào Nginx. Thực hiện các lệnh compile như sau: cd nginx-1.9.3 ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --confpath=/etc/nginx/nginx.conf --add-module=../naxsi-0.54rc3/naxsi_src/ --error-logpath=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pidpath=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp9 path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temppath=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp -user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --withhttp_addition_module --with-http_sub_module --with-http_dav_module --withhttp_flv_module --with-http_mp4_module --with-http_gunzip_module --withhttp_gzip_static_module --with-http_random_index_module --withhttp_secure_link_module --with-http_stub_status_module --withhttp_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --withipv6 --with-http_spdy_module --with-cc-opt='-O2 -g -pipe -Wp,D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 m64 -mtune=generic' make make install Vậy là xong quá trình cài Nginx và Naxsi vào máy. Cấu hình Xong quá trình cài đặt Nginx và Naxsi vào máy. Giờ sẽ qua cấu hình để Naxsi chạy được trên Nginx. Để hoạt động thì NAXSI cần 2 files, một file chứa các rules và một file cấu hình sử dụng NAXSI. Sau khi cài đặt xong các bạn cần sao chép file chứa rules của NAXSI vào thư mục cấu hình Nginx. Các bạn thực hiện các lệnh sau: cp /usr/local/src/naxsi-0.54rc3/naxsi_config/naxsi_core.rules /etc/nginx/ -fv Tiếp theo mở file /etc/nginx/nginx.conf, chuyển tới phần http{} và include file naxsi_core.rules vào ngay dòng đầu tiên của http{} để thông báo cho Nginx biết các rules này nằm ở đây. nano /etc/nginx/nginx.conf 10 Sau khi include file naxsi_core.rules thì có nghĩa là Nginx để biết các rules sẽ nằm ở đâu. Công việc tiếp theo của mình là cấu hình cho Nginx sử dụng các rules này như thế nào. Giờ các bạn tiến hành mở file /etc/nginx/naxsi.rules nano /etc/nginx/naxsi.rules Sau đó thì cấu hình file naxsi.rules # Bật NAXSI module SecRulesEnabled; # URL trả về khi client bị block DeniedUrl "/RequestDenied"; # Số lần phát hiện dẫn đến block CheckRule "$SQL >= 8" BLOCK; CheckRule "$RFI >= 8" BLOCK; CheckRule "$TRAVERSAL >= 4" BLOCK; CheckRule "$EVADE >= 4" BLOCK; CheckRule "$XSS >= 8" BLOCK; Mở lại file nginx.conf và thêm vào các dòng như trong hình: 11 Vậy là xong phần cấu hình. Giờ ta cần làm một số thao tác để chạy dịch vụ Nginx. - Tạo tài khoản hệ thống Nginx: useradd -r nginx - Tạo file nginx trong đường dẫn sau “/etc/init.d/nginx” và thêm nội dung file như sau: #!/bin/sh # # nginx - this # # chkconfig: # description: # # processname: # config: # pidfile: # user: script starts and stops the nginx daemin - 85 15 Nginx is an HTTP(S) server, HTTP(S) reverse \ proxy and IMAP/POP3 proxy server nginx /etc/nginx/nginx.conf /var/run/nginx.pid nginx # Source function library. . /etc/rc.d/init.d/functions 12 # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx="/usr/sbin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/etc/nginx/nginx.conf" lockfile=/var/run/nginx.lock start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 echo -n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } restart() { configtest || return $? stop start } reload() { configtest || return $? echo -n $"Reloading $prog: " killproc $nginx -HUP RETVAL=$? echo } 13 force_reload() { restart } configtest() { $nginx -t -c $NGINX_CONF_FILE } rh_status() { status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|tryrestart|reload|force-reload|configtest}" exit 2 14 esac - Thêm lệnh sau: chmod +x /etc/init.d/nginx - Thiết lập dịch vụ khởi động cùng hệ thống: chkconfig --add nginx chkconfig --level 345 nginx on - Thay đổi các giá trị trong file nginx.conf: types_hash_bucket_size 64; server_names_hash_bucket_size 128; 15 - Tạo đường dẫn sau “/var/cache/nginx/client_temp”: - Khởi động dịch vụ Nginx: service nginx start Chúng ta kiểm tra kết quả: 16 Thử kiểm tra với đường dẫn sau: http://127.0.0.1/?a=%3C Sau khi nhập vào thì đường dẫn có vấn đề thì Naxsi sẽ kiểm tra và Nginx trả về lỗi như hình trên. Chúng ta kiểm tra nội dung mà naxsi bắt lỗi tại file naxsi_error.log 17 Như vậy là xong bước cài đặt và cấu hình cho Naxsi chạy trên Nginx với địa chỉ localhost. Nếu muốn đọc và tìm hiểu thêm thì có thể tham khảo thêm tại: https://vuvps.com/bai-viet/huong-dan-cau-hinh-naxsi-security-module-cho-nginx/ https://github.com/nbs-system/naxsi/wiki 18 Tìm hiểu về NGINX Giới thiệu Nginx Nginx là một máy chủ reverse proxy mã nguồn mở cho các giao thức HTTP, HTTPS, SMTP, IMAP và POP3. Nginx được biết tới bởi sự miễn phí, có hiệu năng cao, sự ổn định cao, nhiều tính năng, cấu hình đơn giản và tiết kiệm tài nguyên. Nginx được phát triển bởi Igor Sysoev vào nằm 2002, được phân phối ra công chúng lần đầu vào nằm 2004. Nginx là một trong số các máy chủ giải quyết được vấn đề C10K. Không giống các máy chủ truyền thống, Nginx không dựa vào thread để xử lý yêu cầu. Thay vào đó nó sử dụng một kiến trúc bất đồng bộ hướng sự kiện linh hoạt. Kiến trúc này được sử dụng ít nhưng quan trọng là có thể dự đoán được bộ nhớ tải. Nginx hoạt động dưới giấy phép 2-clause BSD, trên các nền tảng Linux, BSD, Mac OS X, Solaris, AIX, HP-UX cũng như các hệ điều hành dựa trên Unix. 19 Cài đặt Nginx Bình thường cài đặt Nginx bằng cách compile từ source. Nhưng nhiều khi cũng bất tiện với các bạn mới. Xin giới thiệu cách cài với lệnh yum. Đầu tiên, gói Nginx không có sẵn mà ta phải cài thêm gói EPEL thì mới cài được. Thực hiện lệnh sau: yum install epel-release Cài gói Nginx với lệnh sau: yum -y install nginx Khởi động Nginx: service nginx start 20
- Xem thêm -

Tài liệu liên quan