WAF là gì? Tường lửa ứng dụng web khác firewall

Trả lời nhanh: WAF (Web Application Firewall) là tường lửa ứng dụng web: nó đứng trước website hoặc API và lọc các yêu cầu bất thường, như câu lệnh lạ nhét vào ô nhập liệu hay rất nhiều request nhằm làm nghẽn. Firewall mạng lọc theo địa chỉ và cổng. WAF nhìn vào nội dung yêu cầu web. Bật WAF không thay việc vá lỗ hổng trong chính ứng dụng.

Điểm chính

  • WAF bảo vệ ứng dụng web và API. Firewall thông thường bảo vệ mạng, không đọc được logic của từng trang.
  • Nó chặn các mẫu tấn công đã biết và một phần lưu lượng bất thường. Nó không biết mọi lỗi riêng của phần mềm mình viết.
  • Chế độ chỉ ghi log nên chạy trước khi chặn, để khỏi chặn nhầm khách đặt hàng hay khách nộp form.
  • Quy tắc cần được cập nhật, và người vận hành phải xem những lần chặn để biết là tấn công thật hay là chức năng mới.
  • WAF là một lớp. Tài khoản quản trị, bản vá và quyền trên máy chủ vẫn phải làm riêng.
Mục lục
  1. WAF là gì?
  2. WAF khác firewall chỗ nào?
  3. Nên bật chặn ngay hay chỉ ghi log?
  4. WAF không làm hộ những việc này
  5. Câu hỏi thường gặp

WAF là gì?

WAF (Web Application Firewall) là lớp lọc đặt trước ứng dụng web. Mọi yêu cầu từ trình duyệt hoặc từ ứng dụng khác đi tới website, cổng API, trang đăng nhập đều có thể đi qua WAF trước. WAF xem nội dung yêu cầu: đường dẫn, tham số, cookie, phần thân gửi lên. Yêu cầu giống các kiểu tấn công đã biết thì bị chặn hoặc bị ghi lại. Yêu cầu bình thường thì được chuyển tiếp tới ứng dụng.

Firewall mạng làm việc khác. Nó quyết định gói tin từ địa chỉ nào, tới cổng nào, được đi hay không. Nó không đọc một form đăng nhập có đang bị nhét câu lệnh lạ hay không. Vì vậy một máy chủ đã mở cổng web cho cả thế giới vẫn cần một lớp nhìn được nội dung web, nếu ứng dụng đó có dữ liệu đáng giữ. An ninh mạng là cả bức tranh. WAF chỉ là một mảnh.

WAF không sửa mã nguồn. Lỗi vẫn nằm trong ứng dụng. WAF giảm cơ hội khai thác lỗi đó trong lúc chờ vá, và chặn một phần các đợt dò tự động. Coi WAF là cách khỏi phải vá là để lỗ hổng ở lại.

WAF khác firewall chỗ nào?

Firewall mạng WAF
Nhìn vào Địa chỉ, cổng, một số trạng thái kết nối Nội dung yêu cầu HTTP: đường dẫn, tham số, thân
Chặn kiểu gì Nguồn không được phép, cổng không mở Mẫu tấn công web, request dị thường
Không thấy Logic từng trang Ai được vào mạng nội bộ nếu không đi qua web
Đặt ở đâu Cổng mạng, máy chủ Trước website và API

Một số thiết bị gom cả hai. Khi đọc tài liệu, hãy tách quy tắc mạng và quy tắc ứng dụng web. Tắt nhầm nhóm thứ hai thì website vẫn "có firewall" nhưng form đăng nhập không được lọc.

Một yêu cầu web đi qua WAF 1. Khách gửi mở trang, nộp form, gọi API 2. WAF xem đường dẫn, tham số, tần suất 3. Khớp mẫu xấu chặn hoặc ghi log 4. Không khớp chuyển tới ứng dụng 5. Ứng dụng xử lý vẫn phải tự kiểm dữ liệu
Bước 5 không được bỏ. WAF lọc bên ngoài, ứng dụng vẫn phải không tin dữ liệu người dùng. Sơ đồ do VBPO Tech Blog tổng hợp.

Nên bật chặn ngay hay chỉ ghi log?

Chỉ ghi log trước. Trong vài ngày hoặc một tuần, xem WAF định chặn những gì. Đơn hàng, cổng thanh toán, trang quản trị và các API của ứng dụng di động hay bị chặn nhầm vì tham số dài hoặc vì ký tự đặc biệt hợp lệ.

Sau khi đã loại các nhầm đó, mới bật chặn với các quy tắc chắc. Quy tắc không chắc thì để ở chế độ ghi, có người xem. Bật chặn toàn bộ ngay ngày đầu dễ làm khách không đặt được hàng mà không ai biết vì sao, chỉ thấy trang báo lỗi.

Người vận hành cần một việc lặp: mỗi tuần xem các lần chặn nhiều bất thường, và mỗi lần phát hành tính năng mới thì xem log ngày hôm đó. Tính năng mới hay bị tưởng là tấn công vì nó gửi dữ liệu theo kiểu WAF chưa thấy.

WAF không làm hộ những việc này

  • Vá lỗi ứng dụng. Bản vá vẫn phải lên lịch. WAF chỉ là lớp tạm nếu có quy tắc che đúng lỗi đó, và lớp tạm không nên thành lớp mãi.
  • Bảo vệ mật khẩu quản trị. Mật khẩu yếu, dùng chung, không có bước xác minh thứ hai, thì WAF không ngăn người đã có mật khẩu.
  • Phân quyền trong ứng dụng. Người dùng thường xem được dữ liệu của người khác vì lỗi logic thì WAF thường không thấy, vì từng request trông hợp lệ.
  • Máy chủ bị chiếm từ một kênh khác. Cập nhật hệ điều hành, khoá cổng không cần, và quyền trên máy vẫn là việc riêng.
  • Dữ liệu rò từ chính sách sao lưu. File sao lưu để ở chỗ công khai thì không đi qua WAF.

Ví dụ minh hoạ. Cửa hàng trực tuyến bị công cụ tự động thử hàng nghìn tên đăng nhập trong một giờ. Firewall mạng không chặn vì các request đều tới đúng cổng web. WAF nhận tần suất bất thường trên trang đăng nhập và chặn các địa chỉ đó. Tuần sau họ phát hành trang tải hoá đơn, khách thật bị chặn vì đường dẫn có ký tự WAF cho là lạ. Họ xem log, nới đúng quy tắc của trang đó, giữ chặt trang đăng nhập. Nếu không có bước xem log, họ sẽ tắt cả WAF và mất luôn phần bảo vệ đăng nhập.

Lưu ý: quy tắc tải về từ nhà cung cấp không biết ứng dụng của mình. Sau mỗi đợt cập nhật quy tắc, hãy thử các đường khách hay đi: đăng nhập, đặt hàng, thanh toán, tải file. Một quy tắc mới có thể chặn đúng tính năng vừa chạy tốt hôm trước.

Câu hỏi thường gặp

Có firewall rồi có cần WAF không?

Cần nếu có website hoặc API mở cho người bên ngoài và ứng dụng đó xử lý dữ liệu đáng giữ. Firewall vẫn cần để đóng các cổng không dùng. Hai lớp không thay nhau.

WAF có làm website chậm không?

Thêm một lớp kiểm tra thì thêm một chút thời gian. Với cấu hình bình thường, khách thường không thấy. Chậm rõ khi bật quá nhiều quy tắc kiểm thân của các request rất lớn, như tải file. Những đường đó nên được tách quy tắc, không tắt cả WAF.

WAF chặn nhầm khách thì xử lý sao?

Tìm đúng quy tắc trong log, đối chiếu với việc khách đang làm, rồi nới quy tắc đó hoặc loại trừ đúng đường dẫn. Không tắt toàn bộ vì một lần chặn nhầm. Ghi lại lý do nới để lần cập nhật quy tắc sau không bị quên.

Đặt WAF trên đám mây hay trên máy mình?

Đặt trên đám mây thì nhà cung cấp vá quy tắc giúp và chịu lưu lượng lớn, nhưng dữ liệu request đi qua họ. Đặt tại máy mình thì dữ liệu ở lại, và mình tự cập nhật. Chọn theo yêu cầu dữ liệu được phép đi qua đâu, không chỉ theo giá.

API nội bộ có cần WAF không?

Nếu API chỉ nằm trong mạng đã khoá, firewall và phân quyền có thể đủ. Nếu API nhận gọi từ ứng dụng di động hoặc từ đối tác bên ngoài, nó là bề mặt web và nên được lọc như website. Đừng để API "nội bộ" nhưng lại mở trên internet mà không có lớp nào xem nội dung.

WAF có thay bài kiểm thử xâm nhập không?

Không. Kiểm thử tìm lỗi logic và lỗi cấu hình mà WAF không thấy. WAF vận hành hàng ngày. Kiểm thử làm theo đợt, trước khi phát hành hoặc theo định kỳ. Làm một trong hai chưa phải đã xong việc bảo vệ ứng dụng.