Hình 3.12. Cơ chế hoạt động của ModSecurity

Một phần của tài liệu 816 nghiên cứu và đề xuất một số giải pháp đảm bảo an toàn thông tin cho phần mềm phục vụ quản lí hàng hóa của công ty cổ phần dịch vụ hàng hóa nội bài (NCTS),Khóa luận tốt nghiệp (Trang 58 - 80)

không có dịch vụ chính

thức từ Apache

Nginx cũng tương tự Apache về các phương thức hỗ trợ. Công ty đằng sau Nginx cung cấp một sản phẩm thương mại được gọi là Nginx Plus.Với một loạt các tính năng bổ sung:

load-balancing, media streaming, và monitoring.

Đồng Thị Linh - K19HTTTB 43

Khóa luận tốt nghiệp Nghiên cứu và đề xuất giải pháp đảm bảo an toàn thông tin cho phần mềm phục vụ quản lí hàng hóa của NCTS

Bảng 3.1. So sánh Apche và Nginx

Cả NGINX và Apache đều là hai máy chủ ủy quyền có thể phục vụ các máy chủ

web trong nhiều lĩnh vực khác nhau và đều có những thế mạnh riêng biệt. Với tốc độ xử lý nhanh của NGINX có thể xử lý tất cả các yêu cầu từ người dùng để đảm bảo rằng máy chủ không bị quá tải, gây tê liệt hệ thống.

3.1.2. Giới thiệu về OpenSSL

OpenSSL là một thư viện mã nguồn mở được sử dụng để mã hóa dữ liệu và triển khai các giao thức mạng. Được phát hành lần đầu tiên vào năm 1998, nó có sẵn trong các hệ thống Linux, Windows, macOS và BSD. OpenSSL cho phép người dùng

thực hiện các tác vụ liên quan đến SSL khác nhau, bao gồm CSR (Yêu cầu ký chứng chỉ), tạo khóa riêng và cài đặt chứng chỉ SSL.

OpenSSL hỗ trợ:

- Nhiều thuật toán mã hóa: AES, DES, 3DES, Blowfish, CAST, Idea, RC2, RC5.

Hình 3.6. Kiến trúc mới của hệ thống NCTS

Máy chủ ủy quyền được xây dựng đặt trước vùng Server đảm bảo rằng tất cả các kết nối từ Client lên Server đều phải đi qua máy chủ ủy quyền. Máy chủ ủy quyền sẽ thay thế Web Server giao tiếp với Client bằng sử dụng bộ giao thức SSL/TLS dựa trên OpenSSL.

Khóa luận tốt nghiệp Nghiên cứu và đề xuất giải pháp đảm bảo an toàn thông tin cho phần mềm phục vụ quản lí hàng hóa của NCTS

- Mã hóa dòng: RC4.

- Các giải thuật băm: MD2, MD4, MD5, SHA-1, SHA-224, SHA-256 ... - MAC: HMAC, MDC2

- Các giải thuật mã hóa công khai: DH, DSA, RSA, ECC, Diffie-Hellman. OpenSSL được xây dựng bởi thành bốn thành phần chính:

- Libcrypto: Đây là thư viện cốt lõi để cung cấp việc triển khai nhiều nguyên

thủy mã hóa. Ngoài ra, nó cung cấp một tập hợp các dịch vụ hỗ trợ được

libssl và

libcrypto sử dụng, cũng như triển khai các giao thức như CMS và OCSP. - Công cụ: Chức năng của libcrypto có thể được mở rộng thông qua công cụ

API.

Thông thường các công cụ là các module có thể tải động được đăng ký với libcrypto và sử dụng các móc có sẵn để cung cấp các triển khai thuật toán mã hóa. Thông thường đây là các triển khai thay thế của các thuật toán đã được libcrypto cung

cấp (ví dụ: để cho phép tăng tốc phần cứng của thuật toán), nhưng chúng cũng có thể bao gồm các thuật toán không được triển khai trong OpenSSL mặc định (ví dụ: công cụ GOST thực hiện họ thuật toán GOST). Một số công cụ được cung cấp như một phần của bản phân phối OpenSSL và một số được cung cấp bởi các bên thứ ba bên ngoài (again, GOST).

- Libssl: Thư viện này phụ thuộc vào libcrypto và thực hiện các giao thức TLS

và DTLS.

- Các ứng dụng : Các ứng dụng này là một tập hợp các công cụ dòng lệnh sử

dụng các thành phần libssl và Iibcrypto cơ bản để cung cấp một bộ mã hóa và

các tính

năng khác như:

Tạo và kiểm tra khóa và tham số

Đồng Thị Linh - K19HTTTB 45

Khóa luận tốt nghiệp Nghiên cứu và đề xuất giải pháp đảm bảo an toàn thông tin cho phần mềm phục vụ quản lí hàng hóa của NCTS Kiểm tra ASN.1.

3.1.3. Mô tả kiến trúc mới của hệ thống

3.1.1. Cài đặt và thiết lập

3.1.4.1. Cấu hình cơ bản của máy chủ ủy quyền

- Bộ vi xử lý dành riêng cho máy chủ

- Bộ nhớ trong RAM tối thiểu 64GB, bộ nhớ ngoài tối thiểu 1TB - Hệ điều hành mã nguồn mở Ubuntu 18.04 LTS

- Cài đặt và cấu hình sẵn hai card mạng, trong đó ở card mạng thứ nhất có địa chỉ IP công khai và cổng đón yêu cầu từ bên ngoài Internet là 10.14.136.3:1234;

ở card mạng thứ hai có địa chỉ IP nội bộ là 192.168.1.2 để kết nối với một hoặc một số máy chủ dữ liệu thực.

3.1.4.2. Cài đặt và thiết lập

a. Cập nhật hệ thống

sudo apt update && sudo apt upgrade -y__________________________

sudo apt install build-essential -y_________________________________

c. Tải và giải nén NGINX và các công cụ cần thiết

Wget https://nginx.Org/download/nginx-1.16.1.tar.gz && tar

zxvf nginx-1.16.1.tar.gz

# PCRE version 4.4 - 8.40

Wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz && tar xzvf pcre-8.40.tar.gz

# zlib version 1.1.3 - 1.2.11

Wget http://www.zlib.net/zlib-1.2.11.tar.gz && tar xzvf zlib- 1.2.11.tar.gz

# OpenSSL version 1.0.2 - 1.1.0

Wget https://www.openssl.org/source/openssl-1.K1g.tar.gz && tar xzvf openssl-1.1.1g.tar.gz_____________________________________ d. Cấu hình và cài đặt ./configure --prefix=/usr/share/nginx \ --sbin-path=/usr/sbin/nginx \ --modules-path=/usr/lib/nginx/modules \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --pid-path=/run/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --user=www-data \ --group=www-data \ --build=Ubuntu \ --http-client-body-temp- path=/var/lib/nginx/body \ --http-fastcgi-temp- path=/var/lib/nginx/fastcgi \ --http-proxy-temp- path=/var/lib/nginx/proxy \ --http-scgi-temp-path=/var/lib/nginx/scgi \ --http-uwsgi-temp- path=/var/lib/nginx/uwsgi \ ___________________--with-openssl=../openssl-1.1.1g \______________ Đồng Thị Linh - K19HTTTB 46

Khóa luận tốt nghiệp Nghiên cứu và đề xuất giải pháp đảm bảo an toàn thông tin cho phần mềm phục vụ quản lí hàng hóa của NCTS

--with-openssl-opt=enable- ec_nistp_64_gcc_128 \ --with-openssl-opt=no-nextprotoneg \ --with-openssl-opt=no-weak-ssl-ciphers \ --with-openssl-opt=no-ssl3 \ --with-pcre=../pcre-8.40 \ --with-pcre-jit \ --with-zlib=../zlib-1.2.11 \ --with-compat \ --with-file-aio \ --with-threads \ --with-http_addition_module \ --with-http_auth_request_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_gunzip_module \ --with-http_gzip_static_module \ --with-http_mp4_module \ --with-http_random_index_module \ --with-http_realip_module \ --with-http_slice_module \ --with-http_ssl_module \ --with-http_sub_module \ --with-http_stub_status_module \ --with-http_v2_module \ --with-http_secure_link_module \ --with-mail \ --with-mail_ssl_module \ --with-stream \ --with-stream_realip_module \ --with-stream_ssl_module \ --with-stream_ssl_preread_module \ --with-debug \

--with-cc-opt='-g -O2 -fPIE -fstack- protector-strong -Wformat -Werror=format-security -Wdate- time -D_FORTIFY_SOURCE=2' \

--with-ld-opt='-Wl,-Bsymbolic-functions - fPIE -pie -Wl,-z,relro -Wl,-z,now'

make

______sudo make install___________________________________________

e. Kiểm tra phiên bản NGINX

Đồng Thị Linh - K19HTTTB 47

Khóa luận tốt nghiệp Nghiên cứu và đề xuất giải pháp đảm bảo an toàn thông tin cho phần mềm phục vụ quản lí hàng hóa của NCTS

sudo nginx -v && sudo nginx -V

# nginx version: nginx/1.16.1 (Ubuntu)

# built by gcc 5.4.0 20160609 (Ubuntu 18.04 LTS)

# built with OpenSSL 1.1.1g

# TLS SNI support enabled

# configure arguments: --prefix=/etc/nginx . . .

# . . .

# . . . sudo nginx -t

# Will throw this error nginx: [emerg] mkdir() "/var/lib/nginx/body" failed (2: No such file or directory)

# Just create directory

______mkdir -p /var/lib/nginx && sudo nginx -t_____________________

f. Tạo tệp đơn vị systemd cho NGINX

sudo nano /etc/systemd/system/nginx.service [Unit]

Description=A high performance web server and a reverse proxy server

After=network.target [Service]

Type=forking

PIDFile=/run/nginx.pid

ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'

ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;' ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload

ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid

T imeoutStopSec=5 KillMode=mixed [Install]

WantedBy=multi-user.target_____________________________________

g. Bắt đầu và kích hoạt dịch vụ NGINX

Đồng Thị Linh - K19HTTTB 48

Khóa luận tốt nghiệp Nghiên cứu và đề xuất giải pháp đảm bảo an toàn thông tin cho phần mềm phục vụ quản lí hàng hóa của NCTS

sudo systemctl start nginx.service && sudo systemctl enable

nginx.service_____________________________________________________

h. Kiểm tra xem NGINX có tự động khởi động không

sudo systemctl is-enabled nginx.service

#

enabled_____________________________________________________

i. Kiểm tra xem NGINX có đang hoạt động không

sudo systemctl status nginx.service ps aux | grep nginx

curl -I I27.0.0.1

____________________________________________________

j. Khởi động lại VPS Ubuntu để xác minh rằng NGINX tự động khởi động:

sudo shutdown -r now____________________________________________

k. Tạo hồ sơ ứng dụng UFW NGINX

sudo nano /etc/ufw/applications.d/nginx [Nginx HTTP]

title=Web Server (Nginx, HTTP)

description=Small, but very powerful and efficient web server ports=80/tcp

[Nginx HTTPS]

title=Web Server (Nginx, HTTPS)

description=Small, but very powerful and efficient web server ports=443/tcp

[Nginx Full]

title=Web Server (Nginx, HTTP + HTTPS)

description=Small, but very powerful and efficient web server ports=80,443/tcp_____________'____________________________________

l. Liệt kê danh sách ứng dụng của máy chủ ủy quyền

sudo ufw app list

# Available applications: # Nginx Full # Nginx HTTP # Nginx HTTPS________________________________________________ Đồng Thị Linh - K19HTTTB 49

Khóa luận tốt nghiệp Nghiên cứu và đề xuất giải pháp đảm bảo an toàn thông tin cho phần mềm phục vụ quản lí hàng hóa của NCTS

#HTTPS server # server { listen 1234 ssl; location ~ \.php$ { proxy_pass 192.168.1.100; } } '"________________________________________________________

Trong đó, địa chỉ IP của máy chủ ủy quyền trong mạng nội bộ là 192.168.1.2, còn địa chỉ IP của máy chủ thực là 192.168.1.100.

m. Thiết lập kết nối an toàn SSL/TLS cho máy chủ ủy quyền

#HTTPS server # server { listen 1234 ssl; #ssl configuration ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_certificate /etc/ssl/certs/server.crt; ssl_certificate_key /etc/ssl/private/server.key; ssl_protocols TLSv1.2; ssl_prefer_server_ciphers on; }____________________________________________________________

Trong đó, chứng thư số server.crt và khóa mật server.key tự tạo hoặc được cấp bởi một tổ chức chứng thực tin cậy CA.

Đồng Thị Linh - K19HTTTB 50

Khóa luận tốt nghiệp Nghiên cứu và đề xuất giải pháp đảm bảo an toàn thông tin cho phần mềm phục vụ quản lí hàng hóa của NCTS

Khóa luận tốt nghiệp Nghiên cứu và đề xuất giải pháp đảm bảo an toàn thông tin cho phần mềm phục vụ quản lí hàng hóa của NCTS

3.1. Xây dựng bộ giao thức đảm bảo an toàn kết nối SSL/TLS trên

máy trạm

dựa trên công nghệ mạng riêng ảo và OpenSSL 3.2.1. Công nghệ mạng riêng ảo Stunnel

Stunnel là phần mềm VPN mã nguồn mở có vai trò thiết lập kênh truyền dữ liệu

an toàn giữa máy chủ và máy khách. Stunnel sử dụng các công cụ mật mã trong bộ OpenSSL để đóng gói và mã hóa các thông điệp truyền thông trong mô hình TCP/IP.

3.2.1.1. Tính năng của Stunnel

- Tối ưu hóa bảo mật, tính di động và khả năng mở rộng

- Hỗ trợ các tính năng bảo mật OpenSSL: Kiểm soát các truy cập với TLS - PSK và chứng chỉ, thu hồi chứng chỉ CRL và OCSP,...

- Chuyển hướng kết nối máy khách TLS về lỗi xác thực - Hỗ trợ IPv6

3.2.1.2. Cách thức hoạt động của Stunnel

Stunnel có thể cài đặt được ở cả phía máy chủ và máy khách. Tuy nhiên, hầu hết các web server đều hỗ trợ tích hợp bộ giao thức đảm bảo an toàn kết nối SSL/TLS

nên Stunnel chủ yếu được cài đặt phía máy khách phục vụ cho những ứng dụng không

thể tích hợp SSL/TLS. Ở phía máy khách, Stunnel lắng nghe các kết nối không được mã hóa từ ứng dụng và chuyển tiếp chúng qua kết nối SSL/TLS được mã hóa gửi đến

máy chủ ở xa.

3.2.2. Cài đặt Stunnel

3.2.1. Cấu hình hệ thống

Sau khi tiến hành cài đặt xong, chúng ta cần thiết lập các tham số cho ứng dụng

NCTS và công cụ stunnel trên máy khách.

3.2.3.1. Thiết lập trên ứng dụng NCTS

Khóa luận tốt nghiệp Nghiên cứu và đề xuất giải pháp đảm bảo an toàn thông tin cho phần mềm phục vụ quản lí hàng hóa của NCTS

Hình 3.7. Cài đặt Stunnel

Trong quá trình cài đặt, chương trình sẽ sinh các khóa bí mật và công khai kèm với chứng thư số cần thiết phục vụ cho bộ giao thức SSL/TLS cho phía máy khách.

Hình 3.8. Stunnel sinh khóa bí mật và khóa công khai kèm chứng thư số

Đồng Thị Linh - K19HTTTB 53

Khóa luận tốt nghiệp Nghiên cứu và đề xuất giải pháp đảm bảo an toàn thông tin cho phần mềm phục vụ quản lí hàng hóa của NCTS

chủ ủy quyền, còn giữa máy chủ thực và máy chủ ủy quyền sẽ kết nối thông qua một mạng nội bộ riêng tư độc lập.

; TLS front-end to a web server [https]

accept = 127.0.0.1:8080 connect = 10.14.136.3:1234

cert = stunnel.pem_______________________________________________

Hình 3.10. Cấu hình Stunnel trên máy khách

Nhắc lại rằng, nguyên lý làm việc của Stunnel là lắng nghe các kết nối không được mã hóa từ ứng dụng và chuyển tiếp chúng qua kết nối SSL/TLS được mã hóa gửi đến máy chủ ở xa. Do đó, ứng dụng NCTS cần phải trỏ tới địa chỉ IP và cổng port

của máy localhost (127.0.0.1:8080) trên chính máy khách chứa Stunnel.

Hình 3.9. Ứng dụng NCTS trỏ tới địa chỉ IP của máy khách chứa Stunnel

3.2.3.1. Thiết lập trên phần mềm Stunnel

Đối với phần mềm Stunnel, chúng ta cần thiết lập cổng lắng nghe “accept=127.0.0.1:8080” nơi mà ứng dụng NCTS gửi dữ liệu tới. Tiếp theo, những dữ liệu này sau khi được Stunnel mã hóa sẽ được chuyển tiếp cho máy chủ ủy quyền của NCTS nên địa chỉ đích của máy chủ này cần được thiết lập bởi câu lệnh “connect=10.14.136.3: 1234”. Chú ý rằng đây là địa chỉ IP công khai của máy

Đồng Thị Linh - K19HTTTB 54

Khóa luận tốt nghiệp Nghiên cứu và đề xuất giải pháp đảm bảo an toàn thông tin cho phần mềm phục vụ quản lí hàng hóa của NCTS

3.2. Thiết lập module phát hiện tấn công dựa trên phần mềm tường lửa

ModSecurity

3.3.1. Giới thiệu ModSecurity

Hình 3.11. Mô hình sử dụng Mod security

ModSecurity là phần mềm tường lửa ứng dụng web mã nguồn mở được Ivan Ristic phát triển nhằm lọc các lưu lượng HTTP dựa trên một tập quy tắc. ModSecurity

là một module mở rộng cho các chương trình Web server như Apache, Nginx, IIS có khả năng chống lại hàng loạt các cuộc tấn công đã biết và chưa biết trước khi chúng tác động vào ứng dụng web như XSS, SQL Injiection, XXs Session hacking, ...

Máy chủ web giúp ModSecurity thực hiện các tác vụ liên quan đến cơ sở hạ tầng như:

Khóa luận tốt nghiệp Nghiên cứu và đề xuất giải pháp đảm bảo an toàn thông tin cho phần mềm phục vụ quản lí hàng hóa của NCTS

-Tách các luồng kết nối vào (inbound connection stream) thành các HTTP request.

- Giải mã SSL.

- Bóc tách gói tin HTTP request ra thành từng phần

- Gọi đến ModSecurity, chọn các ngữ cảnh cấu hình chính xác

- Tách phần body của HTTP request nếu cần thiết.

ModSecurity sử dụng cách tiếp cận hỗn hợp (hybrid approach) nhờ vào cơ chế bóc tách gói tin HTTP (HTTP parsing), đây là một cách tiếp cận rất hiệu quả vì nó làm giảm khối lượng công việc trùng lặp khi xử lý gói tin HTTP. Một vài điểm bất lợi trong cách tiếp cận này đó là không phải lúc nào ModSecurity cũng có thể truy cập đến luồng dữ liệu thô (raw data) vì web server có thể không xử lý các dữ liệu trong một vài cơ chế an toàn. Trong trường hợp web server sử dụng Apache, cách tiếp cận hỗn hợp có một vài điểm cần lưu ý đó là:

- Các dòng request và header thường trả về NUL-byte. Đây thường không ảnh hưởng đến hoạt động của ModSecurity vì những gì Apache không thể nhìn thấy

không gây ảnh hưởng đến module hoặc ứng dụng nào. Đây chỉ là một hành vi của

Apache giúp che đậy thông tin.

- Apache thưởng chuẩn hóa các request header, kết hợp nhiều header sử dụng cùng một tên và thu gọn các header thường kéo dài nhiều hơn hai dòng. Bước chuẩn

hóa này có thể gây khó khăn trong việc phát hiện các dấu hiệu lẩn tránh tinh vi.

- Cơ chế xử lý nhanh các request của Apache làm cho ModSecurity không thể xử lý các request này ngoài việc nhận diện chúng trong bước ghi nhật ký. Các request

Khóa luận tốt nghiệp Nghiên cứu và đề xuất giải pháp đảm bảo an toàn thông tin cho phần mềm phục vụ quản lí hàng hóa của NCTS

3.3.2. Chức năng chính

ModSecurity cung cấp bốn chức năng chính như sau:

- Parsing - phân tích: ModSecurity sẽ cố gắng thu thập nhiều dữ liệu nhất có

thể. Các định dạng dữ liệu được hỗ trợ bởi các trình phân tích cú pháp an toàn (security-conscientious parser) sẽ bóc tách từng bit dữ liệu và lưu trữ chúng

Một phần của tài liệu 816 nghiên cứu và đề xuất một số giải pháp đảm bảo an toàn thông tin cho phần mềm phục vụ quản lí hàng hóa của công ty cổ phần dịch vụ hàng hóa nội bài (NCTS),Khóa luận tốt nghiệp (Trang 58 - 80)

Tải bản đầy đủ (DOCX)

(80 trang)
w