Triển khai Tường lửa ứng dụng web (WAF) với Node.js Express

Tram Ho

1. Trước hết

1.1. Tổng quan về Web Application Firewall (WAF)

Tường lửa ứng dụng web (WAF) là một giải pháp bảo mật giúp bảo vệ các ứng dụng web khỏi các cuộc tấn công khác nhau như SQL injection, cross-site scripting (XSS) và bao gồm tệp từ xa (RFI). WAF phân tích và lọc lưu lượng HTTP/HTTPS để xác định và chặn các yêu cầu độc hại trước khi chúng đến được ứng dụng web của bạn.

1.2. Tầm quan trọng của WAF trong Node.js Express

Node.js Express là một khung ứng dụng web phổ biến để xây dựng các ứng dụng web nhanh, có thể mở rộng và linh hoạt. Do được sử dụng rộng rãi, điều quan trọng là phải đảm bảo tính bảo mật cho ứng dụng Express của bạn. Việc triển khai WAF trong Express giúp cải thiện đáng kể tính bảo mật của ứng dụng web của bạn và bảo vệ nó khỏi các mối đe dọa mạng khác nhau.

2. Các thành phần tường lửa ứng dụng web

2.1. Bộ quy tắc

Bộ quy tắc là tập hợp các quy tắc mà WAF sử dụng để phân tích và lọc lưu lượng truy cập đến. Các quy tắc này dựa trên Bộ quy tắc lõi (CRS) của Dự án bảo mật ứng dụng web mở (OWASP), các quy tắc tùy chỉnh hoặc kết hợp các quy tắc đó.

2.2.Chính sách

Chính sách là các cài đặt xác định cách WAF xử lý các yêu cầu. Chứa các cài đặt như chọn bộ quy tắc, lọc yêu cầu và hành động cần thực hiện khi quy tắc được kích hoạt.

2.3. Các chế độ WAF

WAF có thể hoạt động ở hai chế độ:

  • Chế độ giám sát: WAF chỉ phân tích và ghi lại lưu lượng, nó không chặn các yêu cầu. Chế độ này hữu ích để kiểm tra và tinh chỉnh các quy tắc của bạn.
  • Chế độ chặn: WAF chủ động chặn các yêu cầu phù hợp với các quy tắc được xác định trong chính sách.

3. Thiết lập ứng dụng Node.js Express

Trước khi triển khai WAF, hãy thiết lập một ứng dụng Node.js Express cơ bản.

3.1. Cài đặt phụ thuộc

Tạo một thư mục mới cho dự án của bạn và chạy lệnh sau để khởi tạo một dự án Node.js mới.

npm init -y

Cài đặt Express và các phụ thuộc cần thiết khác.

npm install express body-parser helmet

3.2. Tạo ứng dụng Express cơ bản

Tạo một tệp mới có tên app.js trong thư mục dự án của bạn và thêm đoạn mã sau.

const express = require ( 'express' ) ;
const bodyParser = require ( 'body-parser' ) ;
const helmet = require ( 'helmet' ) ;

const app = express ( ) ;

app . use ( helmet ( ) ) ;
app . use ( bodyParser . json ( ) ) ;
app . use ( bodyParser . urlencoded ( { extended : true } ) ) ;

app . get ( '/' , ( req , res ) => {
  res . send ( 'こんにちは、世界!' ) ;
} ) ;

const PORT = process . env . PORT || 3000 ;
app . listen ( PORT , ( ) => {
  console . log ( `サーバーはポート${ PORT }で実行されています` ) ;
} ) ;

4. Triển khai WAF trong Node.js Express

Sử dụng gói express-waf để triển khai WAF trong ứng dụng Node.js Express của bạn. express-waf là một phần mềm trung gian dễ sử dụng.

4.1. Cài đặt gói express-waf

Cài đặt gói express-waf bằng cách chạy lệnh sau:

npm install express-waf

4.2. Định cấu hình phần mềm trung gian express-waf

Thêm đoạn mã sau vào tệp app.js của bạn để định cấu hình phần mềm trung gian express-waf.

const expressWaf = require ( 'express-waf' ) ;

// 必要な設定でexpress-wafを初期化
const waf = expressWaf ( {
  mode : 'blocking' ,
  ruleSets : {
    owasp : true ,
    custom : [
      {
        id : '1001' ,
        message : 'カスタムルール:User-Agent "BadBot"のリクエストをブロック' ,
        regex : / BadBot / i ,
        target : 'headers' ,
        action : 'block' ,
      } ,
    ] ,
  } ,
} ) ;

// express-wafミドルウェアを使用
app . use ( waf . middleware ) ;

Trong đoạn mã trên, chúng tôi đang làm như sau:

  • Nhập gói express-waf.
  • Khởi tạo phần mềm trung gian express-waf với các cài đặt được yêu cầu. Đặt chế độ thành ‘chặn’, bật bộ quy tắc OWASP và thêm quy tắc tùy chỉnh để chặn yêu cầu bằng “BadBot” trong tiêu đề Tác nhân người dùng.
  • Thêm waf.middleware vào ứng dụng Express của bạn.

4.3. Kiểm tra WAF

Bây giờ chúng tôi đã triển khai WAF trong ứng dụng Express của mình, hãy kiểm tra nó bằng cách gửi yêu cầu có tiêu đề Tác nhân người dùng bị chặn.

  • Bắt đầu ứng dụng Express của bạn.
node app.js
  • Sử dụng công cụ như curl để gửi yêu cầu có tiêu đề Tác nhân người dùng bị chặn.
curl -H "User-Agent: BadBot" http://localhost:3000

Bạn sẽ thấy phản hồi rằng yêu cầu của bạn đã bị chặn.

{ "message" : "Webアプリケーションファイアウォールによってリクエストがブロックされました" }

5. Tinh chỉnh cài đặt WAF

5.1. Chuyển sang chế độ giám sát

Để chuyển WAF sang chế độ giám sát, hãy cập nhật cài đặt chế độ trong khởi tạo express-waf.

const waf = expressWaf ( {
  mode : 'monitoring' ,
  // ...他の設定
} ) ;

Ở chế độ giám sát, WAF chỉ ghi nhật ký các yêu cầu bị chặn và không chủ động chặn chúng. Điều này hữu ích để thử nghiệm và tinh chỉnh bộ quy tắc của bạn.

5.2. Tùy chỉnh các phản hồi bị chặn

Để tùy chỉnh phản hồi được gửi tới ứng dụng khách khi yêu cầu bị chặn, hãy cập nhật cài đặt blockResponse trong quá trình khởi tạo express-waf.

const waf = expressWaf ( {
  // ...他の設定
  blockResponse : {
    status : 403 ,
    message : 'Webアプリケーションファイアウォールによってアクセスが禁止されました' ,
  } ,
} ) ;

Trong ví dụ trên, chúng tôi đặt trạng thái phản hồi thành 403 và cập nhật thông báo thành “Truy cập bị cấm bởi Tường lửa ứng dụng web”.

bản tóm tắt

Trong bài viết này, chúng ta đã thảo luận về tầm quan trọng của việc triển khai tường lửa ứng dụng web (WAF) trong ứng dụng Node.js Express của bạn. Bạn đã học về các thành phần WAF. Có các bộ quy tắc, chính sách và chế độ. Sau đó, nó chỉ ra cách triển khai WAF trong ứng dụng Express bằng cách sử dụng phần mềm trung gian express-waf. Chúng tôi cũng đã giải thích cách định cấu hình và tinh chỉnh WAF.

Việc kết hợp WAF vào ứng dụng Node.js Express của bạn có thể cải thiện đáng kể tính bảo mật và bảo vệ chống lại các mối đe dọa mạng khác nhau. Điều này giúp có thể cung cấp các ứng dụng web an toàn hơn và bảo mật hơn khi sử dụng.

cuối cùng

Tôi luôn mắc nợ. Tôi hy vọng bạn thích bài viết này và học được một cái gì đó mới.

Hẹn gặp lại các bạn trong bài viết tiếp theo! Nếu bạn thích bài viết này, hãy nhấn “THÍCH” và đăng ký để ủng hộ tôi. Cảm ơn rất nhiều.

Giới thiệu

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo