www.nhipsongcongnghe.net
Làm reverse proxy với Linux + Apache,
Bảo vệ máy chủ
1. Giới thiệu
Chào các fan hâm mộ Linux,
Bài viết này chủ yếu dựa trên hai tài liệu là "Web Security Appliance With Apache and
mod_security" của Ivan, tác giả mod_security và "Securing Apache 2: Step-by-Step" của
Artur Maj. Bà con có thể xem đây là một bản dịch tiếng Việt của hai tài liệu trên, kèm theo
những suy nghĩ riêng của bản thân tôi dựa vào kinh nghiệm thực tế khi triển khai reverse
proxy -0-. Bài viết này có thể xem là một case study thuộc tập tài liệu "Bảo vệ máy chủ an
toàn với phần mềm tự do".
Nhiệm vụ của chúng ta là bảo vệ một hay nhiều content web-server -1- nằm trong vùng
Internal -2-, các web-server này có thể là Apache httpd, hoặc Microsoft IIS, hoặc có thể
chỉ là một web-server đơn giản được embedded vào một ứng dụng nào đó. Để hoàn thành
nhiệm vụ, chúng ta sẽ tập trung vào xây dựng một firewall/ids hoạt động ở tầng
application, trong tài liệu này gọi là reverse-proxy, sử dụng Apache httpd -3- trên nền
Linux.
2. Reverse proxy là gì?
Một proxy, theo định nghĩa, là một thiết bị đứng giữa server và client, tham gia vào "cuộc
trò chuyện" giữa hai bên. Khái niệm proxy mà chúng ta thường dùng hàng ngày tốt hơn
nên được gọi là một forward proxy: một thiết bị đứng giữa một client và tất cả server mà
client đó muốn truy cập vào. Một reverse proxy làm công việc hoàn toàn ngược lại: nó
đứng giữa một server và tất cả client mà server này phải phục vụ. Reverse proxy giống
như một nhà ga kiêm một trạm kiểm soát, các request từ client, bắt buộc phải ghé vào
reverse proxy, tại reverse proxy sẽ kiểm soát, lọc bỏ các request không hợp lệ, và luân
chuyển các request hợp lệ đến đích cuối cùng là các server. Chú ý là một reverse proxy có
thể luân chuyển request cho nhiều server cùng lúc.
Lợi thế lớn nhất của việc sử dụng reverse proxy là ở khả năng quản lí tập trung. Một khi đã
đẩy được tất cả traffic đi qua một trạm kiểm soát duy nhất (là reverse proxy), chúng ta có
thể áp dụng nhiều "đồ nghề" khác để tăng cường an ninh cho hệ thống của mình. Dĩ nhiên,
bất kì sản phẩm hay công nghệ nào cũng có ưu và khuyết điểm của nó, đi cùng với single
point of access bao giờ cũng là "bóng ma" single point of failure. Single point of failure có
thể được giải quyết bằng cách xây dựng cluster. Đây là một vấn đề hoàn toàn vượt qua
khỏi phạm vi của bài viết này, tôi chỉ xin giới thiệu bồ nào muốn tìm hiểu về cluster trên
Linux thì thử ghé vào http://www.linux-ha.org. Ngoài ra áp dụng reverse proxy đúng cách
sẽ giúp tăng cường performance cũng như nâng cao scalability của các web-application
chạy trên các content server. Chút xíu nữa, tôi sẽ đi vào chi tiết các ưu điểm của reverse
proxy cũng như làm thế nào để khai thác các ưu điểm đó.
3. Cài đặt máy chủ reverse-proxy