Bảo mật Apache

Bảo mật web server là công việc quan trọng thường bị bỏ qua khi triển khai website, bảo mật Apache đồng nghĩa với việc hạn chế những thông tin rò rỉ, không cho phép user không có quyền hạn được phép truy cập vào. Sau đây là 1 số thủ thuật cho phép bạn tăng cường độ bảo mật cho Apache

1/ Ẩn thông tin Apache (version) và thông tin hệ điều hành

Thông thường với thiết lập ban đầu, Apache sẽ hiển thị phiên bản (version) của Apache với phiên bản của hệ điều hành đang sử dụng. Điều này nguy hiểm nếu hacker có thể tận dụng phiên bản cũ đang gặp lỗi để khai thác

Những thông tin hiển thị như trên là không cần thiết, ta có thể tắt nó đi bằng cách sửa file httpd.conf

Sau có chỉnh ServerSignature thành Off, và chỉnh ServerTokens thành Prod

Tiếp tục bạn hãy restart Apache để xem kết quả

2/ Tắt Directory Listing

Chức năng Directory Listing cho phép Apache hiển thị danh sách file và folders khi web users truy cập vào 1 path trên website nếu path đó không có file index. Điều này rất nguy hiểm bởi vì web users có thể thấy toàn bộ file sau đó tìm cách khai thác lỗ hổng trên các file.

Để tắt chức năng này, bạn có thể tùy chỉnh phần Options trong <Directory> của file httpd.conf

Kết quả sau khi tắt Directory Listing

3/ Tắt những module không sử dụng đến

Nếu Apache đang bật những module của nó bạn không dùng tới thì tốt nhất nên tắt bớt, để Apache đỡ tốn tài nguyên cũng như hạn chế bị khai thác lỗ hổng trên các module đó. Bạn có thể hiển thị danh sách các module đang được enable bằng cách gõ httpd -M

Một số module không sử dụng tới bạn có thể tắt bớt như mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex … bằng cách thêm dấu # (comment) vào trước module đó trên file httpd.conf. Ví dụ

Sau khi lưu lại httpd.conf, bạn cần restart Apache để mọi thiết lập sẽ được lưu lại

4/ Hạn chế truy cập đến các file nằm ngoài thư mục gốc (root directory)

Nếu bạn muốn chắc chắn rằng các file nằm ngoài thư mục gốc (web root directory) không được phép truy cập, bạn phải đảm bảo thư mục gốc được hạn chế bởi tùy chọn AllowDeny trong file cấu hình Apache httpd.conf

Một khi bạn hạn chế truy cập bên ngoài web root directory, bạn sẽ không thể truy cập vào bất cứ file nào nằm trên thư mục khác trên web server, nếu cố gắng truy cập thì Apache sẽ trả lại mã lỗi 404.

5/ Sử dụng mod_evasive để hạn chế các cuộc tấn công DDOS

Nếu bạn muốn bảo vệ website trước những cuộc tấn công DDOS, bạn có thể sử dụng mod_evasive của Apache lên. Đây là mod (module) của 1 bên thứ 3 giúp cho Apache có thể phát hiện và ngăn chặn và giảm thiểu thiệt hại nếu website của bạn dính phải cuộc tấn công DDOS. Bạn có thể tải module đó tại đây.

https://drive.google.com/uc?export=download&id=0B_vqvT0ovzHcdkNKWmduZWRwbGM

6/ Sử dụng mod_security để tăng cường khả năng bảo mật của Apache

Module này hoạt động như 1 bức tường lửa (firewall) giúp cho bạn có thể theo dõi và quan sát luồng truy cập (traffic) vào Apache theo thời gian thực. Nó có thể giúp Apache ngăn chặn kiểu tấn công như brute forte.

7/ Hạn chế kích thước request gửi lên Apache

Mặc định, Apache không có bất cứ hạn chế nào về kích thước http request được gửi đến nó có thể dẫn đến 1 cuộc tấn công DDOS. Bạn có thể giới hạn kích thước của 1 request gửi đến bằng cách thêm vào option LimitRequestBody, giá trị cho option này có thể được set từ 0 cho đến 2GB (tức là 2147483647 bytes) tùy theo nhu cầu của bạn.

Tạo trang đăng nhập đơn giản (basic authentication) cho 1 URL với .htaccess

Đôi lúc bạn cần bảo vệ 1 URL trên website của mình bằng 1 form đăng nhập đơn giản, hãy thêm đoạn code sau vào file .htaccess để Apache bắt buộc người dùng phải nhập username và password.

Trong đó <path-to-web-url> là đường dẫn URL trên website của bạn và <path-to-htpasswd-file> là đường dẫn đến file .htpasswd (lưu username và password) trên server của bạn.