bảo mật máy chủ apache - Pdf 71

Bảo mật cho máy chủ web Apache
trang này đã được đọc lần
Theo thống kê tháng 9 của Netcraft, Apache là máy chủ web được dùng nhiều nhất trên Internet
(chiếm đến 64,52% thị phần). Tuy nhiên, để cấu hình một máy chủ web Apache sao cho bảo
mật không phải là một chuyện đơn giản và ai cũng có thể làm được. Bài viết "Bảo mật cho máy
chủ web Apache" (Securing Apache: Step-by-Step) do anh hnd dịch sẽ giúp cho việc xây dựng
một máy chủ web có tính an tòan bảo mật cao dễ dàng hơn.
Bảo mật Apache: từng bước một
Tác giả: Artur Maj)
Chào các fan quan tâm đến bảo mật cho Apache.
Tôi quyết định dịch bài này và thêm vào phần "Lời bàn và mở rộng" cho các đoạn quan trọng
trong bài viết, hy vọng phần nào giúp các bạn ứng dụng những vấn đề này trong môi trường thật
sự. Mời các bạn xem phần thứ nhất.
Tài liệu này theo dạng chỉ dẫn từng bước cách cài đặt và chỉnh lý Apache 1.3.x web server với
mục đích xử lý và phòng tránh các trường hợp đột nhập lúc những yếu điểm của chương trình
này được khám phá.
Chức năng
Trước khi bắt đầu kiện toàn bảo mật Apache, chúng ta phải xác định rõ chức năng cần thiết nào
của server sẽ được xử dụng. Tính đa năng của Apache tạo ra những khó khăn để thực hiện một
mô thức tổng quát với mục đích kiện toàn bảo mật cho server trong mọi trường hợp có thể được.
Ðây là lý do tài liệu này dựa trên các chức năng sau:
- Web server có thể truy cập từ Internet; và,
- Chỉ những trang HTML tĩnh (static HTML pages) sẽ được phục vụ
- server hỗ trợ tên miền cho cơ chế dịch vụ ảo
- các trang web đã ấn định chỉ có thể truy cập từ các cụm IP addresses hoặc người dùng (khai
báo căn bản)
- server sẽ tường trình trọn bộ các thỉnh cầu (bao gồm những thông tin về các web browsers)
Ðiều đáng nhấn mạnh ở đây là mô hình trên không hỗ trợ PHP, JSP, CGI hoặc bất cứ công nghệ
nào khác có thể tạo cơ hội tương tác đến các dịch vụ Web. Ứng dụng cho những công nghệ trên
có thể dẫn đến những đe dọa to lớn cho vấn đề bảo mật, dù chỉ là một đoạn script nhỏ, kín đáo
cũng có thể giảm thiểu mức triệt để bảo mật của server. Tại sao? trước hết, các ứng trình

nên nghiên cứu thêm về những thiết kế này ở một số URL sau tùy theo công nghệ bạn đang
dùng:
http://www.object-arts.com/Educatio...erviews/MVC.htm
http://www.enode.com/x/markup/tutorial/mvc.html
http://www.phppatterns.com/index.ph...cleview/19/1/1/
http://www.dmbcllc.com/asp_mvc.aspx
http://www.jdance.com/jsparchitecture.shtm
http://www.redbooks.ibm.com/abstracts/sg245755.html
http://www.redbooks.ibm.com/abstracts/sg245754.html
Bạn có thể dùng google để search thêm các tài liệu về MVC với keyword: "MVC Pattern" hoặc
tham khảo một số tài liệu chuyên ngành từ các website lớn như http://java.sun.com/ hoặc
http://www.ibm.com/
Những trù bị bảo mật
Một trong những nhân tố quan trọng nhất cho mọi công trình điện toán là việc xác thực các trù
bị bảo mật. Ðiều này phải được thoả mãn trước khi công trình được ứng tạo. Các trù bị bảo mật
cho web server của chúng ta như sau:
- hệ điều hành phải được kiện toàn càng chặt chẽ càng tốt, bao gồm việc phòng bị cho những
tấn công từ bên ngoài lẫn bên trong;
- server không được cung cấp bất cứ dịch vụ nào khác ngoại trừ HTTP: (80/TCP);
- truy cập từ xa đến server phải được khiển tác bởi tường lửa, thiết bị này chặn trọn bộ những
tiếp nối cho lối ra và cho phép những tiếp nối cho lối vào đến cổng 80/TCP của web server mà
thôi;
- web server Apache là dịch vụ duy nhất hiện hữu trên hệ thống;
- chỉ có những modules nào tuyệt đối cần thiết mới được cho phép hoạt động;
- các trang web dùng cho công tác chẩn xét và tự động hoá mục lục phải được tắt bỏ;
- server nên giảm thiểu tối đa vấn đề tiết lộ những thông tin của chính server (mật tính qua ẩn
tính)
- Apache server phải chạy bằng UID/GID riêng biệt (tín chỉ cá nhân, tín chỉ nhóm), không được
dùng bất cứ process nào khác của hệ thống;
- các process của Apache phải có giới hạn nhất định đến hệ thư mục (chrooting); và,

-s /sbin/nologin: không cho user Apache dùng bất cứ một shell nào cả. Có một số trường hợp
dùng -s /bin/true thay vì nologin ở trên, true là một lệnh không thực thi gì cả và hoàn toàn vô
hại.
Lý do không cho phép user Apache có thư mục $HOME và không được cấp một "shell" nào cả vì
nếu account Apache này bị nhân nhượng, tin tặc cũng không có cơ hội tiếp cận với system ở mức
độ cần thiết cho thủ thuật gia tăng chủ quyền. Trên môi trường *nix nói chung, "shell" là giao
diện giữa người dùng và hệ thống, không có shell thì không có cơ hội tiếp cận xa hơn. Nếu phần
thiết lập trên cung cấp user Apache một $HOME và cho phép dùng một shell nào đó thì đã không
mang giá trị gì trên quan điểm "kiện toàn".
Chuẩn bị software
Bước kế tiếp là bước tải phiên bản Apache mới nhất từ web site Apache
(http://www.apache.org). Chỉ có một số chọn lựa tiện ích được phép hoạt động trong quá trình
biên dịch mà thôi, bởi thể, quyết định tải mã nguồn về biên dịch thay vì tải bản nhị phân (binary)
là điều hết sức quan trọng.
Sau khi tải software về, chúng ta phải xả nén. Kế tiếp, chúng ta quyết định modules nào được
phép hoạt động. Bản tường trình tổng quan về các modules hiện hữu cho phiên bản mới nhất
của Apache 1.3.x (1.3.27) có ở: http://httpd.apache.org/docs/mod/
Những modules của Apache
Chọn lựa các modules là một trong những bước quan trọng nhất trong vấn đề bảo mật Apache.
Chúng ta nên theo luật: càng ít càng tốt. Ðể thoả mãn chức năng và những trù bị bảo mật, các
modules sau cần được cho phép:
Tên module
httpd_core: Chứa các chức năng cốt lõi của Apache, cần thiết cho bất cứ Apache nào.
mod_access: Cung cấp chế độ khiển tác dựa trên tên máy, địa chỉ IP, hoặc các tính chất yêu cầu
thuộc về các clients. Bởi vì module này cần cho các chỉ phối (directive) "order", "allow" và
"deny", nó cần được cho phép.
mod_auth: Cần thiết để ứng dụng vấn đề khai báo người dùng cho việc sử dụng các hồ sơ
nguyên bản (khai báo căn bản cho HTTP), được chỉ định trong chức năng trù bị.
mod_dir: Cần thiết để tìm kiếm và phục vụ các hồ sơ thư mục: "index.html", "default.htm", v..v..
mod_log_config: Cần thiết để ứng hiệu báo cáo những yêu cầu thực hiện đến server.

module=mime --enable-module=auth
(lệnh trên trải dài trong 1 dòng, không tách rời ra thành nhiều dòng)
make
su
umask 022
make install
chown -R root:sys /usr/local/apache
Lời bàn và mở rộng:
Ðối với các bạn chưa làm quen hoặc chỉ mới bắt đầu làm quen đến *nix, khái niệm biên dịch
software có lẽ khá mới mẻ và lạ lẫm. Tuy nhiên, cảm giác này chỉ ở bước đầu trong quá trình làm
quen mà thôi. Hầu như các bước trong phân đoạn "biên dịch software" cho các software khác
nhau đều tương tự như nhau.
Ðiều lý thú trong vấn đề "biên dịch software" trên phương diện bảo mật ở đây, ngoài cơ hội có
thể xem mã nguồn, tìm lỗi, tìm lổ hổng từ mã nguồn, bạn còn có cơ hội thiết lập và biên dịch
software mình cần theo ý muốn. Trong đoạn lệnh ./configure ở trên minh hoạ cụ thể tính "tự do"
ở chỗ bạn có toàn quyền muốn thêm hoặc bớt module tùy thích. Tính linh động trong vấn đề
biên dịch software và tính đóng kín khi dùng một "installshield" trở nên hiển nhiên khi đem ra so
sánh. Khi bạn phải cài một software gồm các binaries đã được biên dịch (theo khuôn khổ nào đó)
sẵn, bạn không có nhiều cơ hội quyết định hoặc chọn lựa theo ý muốn nữa. Ðây là một trong
những nguyên tắc khá quan trọng cho những ai quan tâm hoặc làm việc trực tiếp đến vấn đề
bảo mật.
Ðổi "root" của server
Bước kế tiếp giới hạn các process của Apache truy dụng vào các hệ thống hồ sơ. Chúng ta có thể
thực hiện vấn đề này bằng cách "chrooting" phần daemon chính của server (httpd). Tổng thể mà
nói, thủ thuật "chrooting" có nghĩa là tạo một cấu trúc nguồn thư mục mới, dời chuyển các hồ sơ
daemon vào đó và chạy các daemon thích ứng trong môi trường mới này. Nhờ vào đó, daemon
(và cái process con) chỉ sẽ truy dụng đến cấu trúc thư mục mới.
Chúng ta bắt đầu chu trình này bằng cách tạo ra một thư mục mới bên trong thư mục
/chroot/httpd:
mkdir -p /chroot/httpd/dev


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status