Việc Apache chạy trên hệ điều hành Linux không có nghĩa là bạn không
cần cập nhật. Những lỗ hổng mới và những nguy cơ bảo mật luôn thường
trực. Bạn nên thường xuyên cập nhật để vá những lỗ hổng và sửa những
lỗi bảo mật đó. Nếu đã cài đặt Apache cùng với trình quản lý gói của
bản phân phối, bạn có thể thực hiện cập nhật rất dễ dàng. Và nếu cài
đặt từ nguồn, cần đảm bảo rằng quá trình cập nhật sẽ không làm thay đổi
module hay những thành phần phụ của website. Ngoài ra nếu sử dụng PHP
thì trong quá trình cập nhật Apache bạn phải đồng thời cập nhật cả hai.
2 Vận hành Apache theo từng đối tượng
Apache thường được cài đặt cho nhiều nhóm hay nhiều người dùng. Một
trong những người hay mắc lỗi nhất là root user (có quyền như admin) mà
hậu quả là tạo ra một số lỗi rất nghiêm trọng. Hay nói theo cách khác
cả Apache và MySQL đều do cùng một đối tượng người dùng hay nhóm người
dùng vận hành. Nếu một người gây ra lỗ hổng, thì người khác có thể phải
hứng chịu hậu quả. Biện pháp tốt nhất để tránh tình trạng này đó là đảm
bảo Apache được vận hành như một Apache dành cho một người dùng hay một
nhóm nhất định. Để thực hiện điều này, bạn chỉ cần mở file httpd.conf
và kiểm tra những dòng có dạng:
User Group
Sau đó thay đổi các mục này thành:
User apache Group apache
Nếu gặp lỗi xảy ra trong khi thay đổi có nghĩa là nhóm hay người dùng khai báo không tồn tại và bạn cần phải tạo mới.
3. Tắt bỏ những dịch vụ không cần thiết
Có một vài dịch vụ hay tính năng bạn sẽ muốn tắt bỏ hoặc chặn. Tất cả
những dịch vụ này có thể được hủy bỏ trong file httpd.conf. Những dịch
vụ/tính năng này có thể gây ra một số lỗi sau:
Directory browsing: Dịch vụ này được hủy bỏ
trong một thẻ Directory (thường được khởi chạy trong gốc tài liệu) bằng
cách sử dụng Options Directive và cài đặt nó với “-Indexing”.
Server side Includes: Đây là một công cụ khác có thể hủy bỏ trong thẻ Directory bằng cách sử dụng Options Directive và cài đặt nó với “-Includes”.
CGI execution: Nếu website không sử dụng đến
CGI, bạn nên tắt bỏ dịch vụ này bằng cách sử dụng Options Directive và
cài đặt nó với “-ExecCGI” trong tag thư mục.
Symbolic links: Cài đặt công cụ này trong một thẻ Directory với “-FollowSymLinks”.
None: Bạn có thể tắt bỏ mọi tùy chọn (theo những cách trên) bằng cách sử dụng “None” với Option Directive.
4. Hủy bỏ những module không sử dụng
Apache gồm có rất nhiều module. Để xem có bao nhiêu module đang chạy, dùng lệnh grep –n LoadModule httpd.conf
từ trong thư mục cấu hình Apache. Lệnh này sẽ hiển thị cho bạn mọi
module mà Apache đang tải cùng với vị trí dòng của những module này. Để
hủy bỏ những module không cần thiết, bạn chỉ cần bổ sung kí tự “#” vào
đầu dòng của module cần tắt bỏ.
5. Giới hạn truy cập
Giả sử bạn có một mạng intranet chứa nhiều thông tin quan trong của
công ty và bạn không muốn cho người ngoài mạng riêng của mình truy cập
vào nhóm thông tin này. Để làm được điều đó, bạn chỉ cần giới hạn truy
cập vào mạng nội bộ của bạn bằng cách bổ sung đoạn mã dưới đây vào file
httpd.conf trong thẻ Directory của bạn:
Order Deny, Allow Deny from all Allow from 192.168.1.0/16
Trong đó 192.168.1.0/16 là địa chỉ mạng nội bộ
của bạn. Sau khi thực hiện thay đổi trong file httpd.conf, bạn cần khởi
động lại Apache để áp dụng các thay đổi này.
6. Hạn chế yêu cầu
Tấn công từ chối duchj vụ (DoS) luôn có thể xay ra khi bạn cho phép
khối lượng yêu cầu lớn trên Apache. Apache có một lệnh điều hướng là LimitRequestBody được đặt trong thẻ thư mục. Số lượng giới hạn phụ thuộc vào nhu cầu của website. Theo mặc định thì LimitRequestBody được đặt giá trị vô hạn.
7. Sử dụng module mod_security
Một trong những module quan trọng nhất của Apache là mod_security. Module này xử lý nhiều tác vụ, gồm lọc, lọc biểu thức thông thường, mã hóa URL và ẩn địa chỉ server. Việc cài đặt mod_security cũng khá phức tạp. Trước tiên bạn phải bổ sung hai lệnh điều hướng unique_id và security2 vào vùng module của Apache. Sau đó chạy lệnh:
service apache2 configtest
Khi nhận được thông báo Syntax OK là bạn đã cài đặt thành công.
8. Không cho phép duyệt tìm bên ngoài tài liệu gốc
Việc cho phép duyệt bên ngoài tài liệu gốc có thể gây ra nhiều vấn đề.
Nếu không cần thiết phải bật dịch vụ này, tốt nhất bạn nên tắt bỏ nó.
Trước tiên, bạn sẽ phải hiệu thẻ Directory của thư mục gốc như sau:
<Directory />
Order Deny, Allow Deny from all Options None AllowOverride None
</Directory>
Sau đó, nếu cần bổ sung tùy chọn cho bất kì thư mục nào
trong tài liệu gốc, bạn sẽ phải bổ sung một thẻ Directory mới cho mỗi
thư mục.
9. Ẩn số phiên bản cua Apache
Một trong những biện pháp phòng ngừa tốt nhất đó là giấu những thông
tin về dịch vụ của bạn đến mức có thể. Một trong những thông tin cần ẩn
đi đó là số phiên bản của Apache. Làm như vậy bạn sẽ ngăn những người
dùng không mong muốn có thể xâm nhập một cách nhanh chóng vào máy chủ
web của bạn. Bạn chỉ cần bổ sung đoạn mã sau vào trong thẻ Directory
của tài liệu gốc:
ServerSignature Off ServerTokens Prod
10. Ẩn file cấu hình httpd.conf
Một trong những biên pháp bảo mật tốt nhất đó là làm ẩn đi file
httpd.conf. Bởi vì file này chứa nhiều thông tin cấu hình cũng như
những cài đặt. Nếu mọi người không thấy nó, nghĩa là họ không thể thay
đổi nội dung bên trong, và tất nhiên những cài đặt của bạn vẫn được giữ
nguyên. Để ẩn đi file httpd.conf bạn chỉ cần sử dụng lệnh sau:
chattr +i /path/to/httpd.conf
Trong đó /path/to/httpd.conf là đường dẫn tới file cấu hình Apache.