1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Thủ thuật sử dụng máy tính: Kiện Toàn Bảo Mật Cho Apache - Phần 2 pot

13 310 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 147,59 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong cấu hình đưa ra ở trên có hai hosts ảo được Web server hỗ trợ: - www.ebank.lab www.e-bank.lab - www.test.lab Nội dung của các Web site trên được chứa trong các thư mục:... - /chr

Trang 1

Kiện Toàn Bảo Mật Cho Apache - Phần 2

Chỉnh lý Apache

Bước đầu tiên là tháo bỏ hồ sơ

/chroot/httpd/usr/local/apache/conf/httpd.conf và tạo một hồ sơ mới thay

thế vào với nội dung tương tự như sau:

Code:

# =================================================

# Basic settings

# ================================================= ServerType standalone

ServerRoot "/usr/local/apache"

PidFile /usr/local/apache/logs/httpd.pid

ScoreBoardFile /usr/local/apache/logs/httpd.scoreboard

ResourceConfig /dev/null

AccessConfig /dev/null

# =================================================

# Performance settings

Trang 2

# ================================================= Timeout 300

KeepAlive On

MaxKeepAliveRequests 100

KeepAliveTimeout 15

MinSpareServers 5

MaxSpareServers 10

StartServers 5

MaxClients 150

MaxRequestsPerChild 0

# =================================================

# Apache's modules

# ================================================= ClearModuleList

AddModule mod_log_config.c

AddModule mod_mime.c

AddModule mod_dir.c

AddModule mod_access.c

AddModule mod_auth.c

Trang 3

# =================================================

# General settings

# ================================================= Port 80

User apache

Group apache

ServerAdmin Webmaster@www.ebank.lab

UseCanonicalName Off

ServerSignature Off

HostnameLookups Off

ServerTokens Prod

<IfModule mod_dir.c>

DirectoryIndex index.html

</IfModule>

DocumentRoot "/www/vhosts"

# =================================================

# Access control

# =================================================

<Directory />

Options None

Trang 4

AllowOverride None

Order deny,allow

Deny from all

</Directory>

<Directory "/www/vhosts/www.ebank.lab">

Order allow,deny

Allow from all

</Directory>

<Directory "/www/vhosts/www.test.lab">

Order allow,deny

Allow from all

</Directory>

# =================================================

# MIME encoding

# =================================================

<IfModule mod_mime.c>

TypesConfig /usr/local/apache/conf/mime.types

</IfModule>

DefaultType text/plain

<IfModule mod_mime.c>

Trang 5

AddEncoding x-compress Z

AddEncoding x-gzip gz tgz

AddType application/x-tar tgz

</IfModule>

# =================================================

# Logs

# ================================================= LogLevel warn

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

LogFormat "%h %l %u %t \"%r\" %>s %b" common

LogFormat "%{Referer}i -> %U" referer

LogFormat "%{User-agent}i" agent

ErrorLog /usr/local/apache/logs/error_log

CustomLog /usr/local/apache/logs/access_log combined

# =================================================

# Virtual hosts

# ================================================= NameVirtualHost *

<VirtualHost *>

Trang 6

DocumentRoot "/www/vhosts/www.ebank.lab"

ServerName "www.ebank.lab"

ServerAlias "www.e-bank.lab"

ErrorLog logs/www.ebank.lab/error_log

CustomLog logs/www.ebank.lab/access_log combined

</VirtualHost>

<VirtualHost *>

DocumentRoot "/www/vhosts/www.test.lab"

ServerName "www.test.lab"

ErrorLog logs/www.test.lab/error_log

CustomLog logs/www.test.lab/access_log combined

</VirtualHost>

Cấu hình trên chỉ có những lệnh cần thiết để thoả mãn chức năng hoạt động

và các trù bị bảo mật Trong cấu hình đưa ra ở trên có hai hosts ảo được Web server hỗ trợ:

- www.ebank.lab ( www.e-bank.lab )

- www.test.lab

Nội dung của các Web site trên được chứa trong các thư mục:

Trang 7

- /chroot/httpd/www/vhosts/www.ebank.lab

- /chroot/httpd/www/vhosts/www.test.lab

Mỗi Web site có riêng log files được chứa trong các thư mục:

- /chroot/httpd/usr/local/apache/logs/www.ebank.lab

- /chroot/httpd/usr/local/apache/logs/www.test.lab

Các thư mục trên phải được tạo ra trước khi Apache hoạt động lần đầu tiên - nếu không Apache sẽ không làm việc đúng mức Chủ nhân của các thư mục trên nên là root:sys, và chủ quyền nên chỉnh thành 0755

So sánh với hồ sơ cấu hình mặc định của Apache, có những thay đổi sau:

* Số modules được ứng động đã giảm thiểu đáng kể,

* Apache không tiết lộ thông tin version number (phiên bản) (dùng các directives: ServerTokens, ServerSignature),

*

Các process của Apache (ngoại trừ process của root) được chỉnh định bằng chủ quyền riêng biệt của user/group bình thường (dùng các directives: User, Group),

*

Apache chỉ cho phép truy cập vào các thư mục, các thư mục con và các hồ

sơ đã được quy định cụ thể trong hồ sơ cấu hình (dùng các directives:

Directory, Allow); mọi requests khác đều bị từ chối theo mặc định,

Trang 8

Apache sẽ log nhiều thông tin hơn với các HTTP requests

Lời bàn và mở rộng:

Configuration trên của Artur Maj triển khai theo lối "blank paper", có nghĩa

là bắt đầu từ trang giấy trắng Ðây là lối khai triển rất hay cho các config đòi hỏi tính bảo mật cao Lý do: dùng config mặc định có sẵn của Apache sẽ có nhiều cơ hội thiếu sót những điểm quan trọng vì config mặc định của

Apache chứa quá nhiều thông tin, mở cửa cho quá nhiều thứ có thể tạo lỗ hổng Ðiều đáng nêu ra là configuration này rất gọn gàng và khoa học cho các phần của cấu hình Khi cần phải thêm bớt và thay đổi, một cấu hình gọn gàng giúp cho vấn đề quản lý dễ dàng và chính xác hơn, tất nhiên cũng sẽ giảm thiểu những lỗi (ít khi nhận thấy được) trong quá trình chỉnh định

Một điểm quan trọng khác cũng nên nhắc đến là các chi tiết về "Directives" tác giả bài viết đề cập trong phần giải thích Tác giả đã không khai triển và giải thích chi tiết tác dụng của các "directives" này, có lẽ, ông ta giả định người dùng ở mức độ quan tâm đến bảo mật cho Apache hẳn phải nắm vững

cơ chế làm việc của Apache và những "directives" dùng trong configuration của Apache Ở điểm này, cá nhân tôi cho rằng việc tham khảo và nghiên cứu

kỹ lưỡng các "directives" dùng trong Apache là một việc tối cần thiết nếu muốn bảo đảm hoạt tính và mật tính của Apache Bạn có thể tham khảo chi tiết các "directives" trên website của Apache ở:

http://httpd.apache.org/docs/mod/directives.html (cho Apache 1.3.x)

http://httpd.apache.org/docs-2.0/mod/quickreference.html (cho Apache 2.x)

Trang 9

Ứng dụng các directives trong cấu hình của Apache một cách khoa học và thích hợp với nhu cầu là một điều không đơn giản Việc đầu tiên giúp cho quá trình ứng dụng này là tạo cho mình một thói quen chuẩn bị cẩn thận và chính xác những phần tố cần dùng Nếu bạn đã quen cách chỉnh định một server cho "nhanh" và có để "chạy liền" thì nên điều chỉnh lại thói quen này một khi đã dấn thân vào những điều thuộc về bảo mật

Apache cũng cung cấp một số tài liệu cho vấn đề kiện toàn bảo mật cho Apache server, bạn nên tham khảo thêm ở:

http://httpd.apache.org/docs/misc/security_tips.html (cho Apache 1.3.x) và

http://httpd.apache.org/docs-2.0/misc/security_tips.html(cho Apache 2.x) Hai tài liệu trên gần giống nhau, tuy nhiên có những tiểu tiết quan trọng cần tham khảo kỹ lưỡng

Bước cuối

Cuối cùng chúng ta nên tạo một đoạn "script" khởi động "apache.sh" với nội dung tương tự như sau:

Code:

#!/bin/sh

CHROOT=/chroot/httpd/

HTTPD=/usr/local/apache/bin/httpd

PIDFILE=/usr/local/apache/logs/httpd.pid

Trang 10

echo -n " apache"

case "$1" in

start)

/usr/sbin/chroot $CHROOT $HTTPD

;;

stop)

kill `cat ${CHROOT}/${PIDFILE}`

;;

*)

echo ""

echo "Usage: `basename $0` {start|stop}" >&2

exit 64

;;

esac

exit 0

Ðoạn script trên nên được đưa vào đúng thư mục (tùy hệ thống UNIX nào),

Trang 11

nơi các script khởi động mặc định được cất giữ Trong trường hợp dùng

FreeBSD, script này nằm ở thư mục /usr/local/etc/rc.d

Lời bàn và mở rộng:

Ðối với những ai quen dùng *nix, đoạn script trên có lẽ rất đơn giản và dễ hiểu Ðiều đáng đề cập ở đây là một cái script đơn giản nhưng lại quan trọng

vì nó "ép" Apache khởi động trong môi trường "jail", dùng binary và tạo

log thuộc môi trường "jail" này

Trên Linux và một số system V thì "startup script" này nên đặt trong /etc/rc.d/init.d (hoặc /etc/init.d) và tạo symbolic link vào đúng "run level",

bạn có thể tham khảo thêm chi tiết tùy loại *nix nào đang dùng Tất nhiên bạn có thể điều chỉnh tùy thích "startup script" này nhưng điều quan trọng là phải nắm vững tinh thần "jail" được nêu ra ở trên

Tổng kết

Các phương pháp trên cho phép tạo nên mức bảo mật chặt chẽ hơn cho Apache so với cấu hình mặc định có sẵn sau khi cài đặt

Bằng phương pháp chỉ cho phép những modules tuyệt đối cần thiết cho Apache hoạt động, server của chúng ta không hẳn bị nhân nhượng khi một yếu điểm nào đó bị khám phá trong nhóm các modules của Apache Dấu version number của Apache, "chrooting" và hạn chế cấu hình của Apache làm cho các trường hợp đột phá đến server trở nên rất khó khăn Một môi trường "chrooted" còn có thêm một ưu điểm quan trọng - miễn nhiễm đến số lớn các loại tấn công, lý do chính là vì thiếu "shell" (/bin/sh, /bin/csh vâng vâng ) Ngay cả nếu tin tặc thao tác thành công các lệnh trên hệ thống,

Trang 12

nhưng để thoát ra khỏi môi trường "chroot" là vấn đề không đơn giản

Lời bàn và mở rộng:

Ngoài những điểm Artur Maj tổng kết ở trên, có lẽ điều cần mở rộng vài vấn

đề bên ngoài phạm vi Apache Trên thực tế, việc kiện toàn chính Apache phải đi song song với việc kiện toàn trọn bộ server mà Apache chạy Nếu tin tặc không tấn công và đột nhập được qua môi trường "chrooted" của

Apache, vẫn có thể đột nhập qua ngõ khác nếu server chạy Apache không được kiện toàn Cực đoan hơn, cho dù Apache server được một firewall bảo

vệ vẫn không thể phó mặc cho firewall mà lơ là chuyện kiện toàn server mà Apache chạy Kiện toàn bảo mật đúng nghĩa là một công tác đòi hỏi một cách nhìn tổng quát cho trọn bộ môi trường hoạt động

Trước khi kết thúc, tôi xin nhấn mạnh một điều quan trọng cho vấn đề bảo mật nói chung đó là: luôn luôn theo dõi, cập nhật software và thường xuyên kiểm soát cấu hình cũng như hoạt động của server Không có software nào không có bugs và yếu điểm Cho nên, việc theo dõi và bảo trì là một công tác hàng đầu trong vấn đề bảo mật Kiện toàn bảo mật không thích hợp với

tư duy "set and forget" (chỉnh lý rồi phó mặc) Kiện toàn bảo mật có lẽ cũng không nên theo tư duy theo kiểu "marketing hype" (quảng cáo sản phẩm một cách quá đáng ) ví dụ như "keep intruders at bay" hoặc "unbreakable

systems" Ðiều chắc chắn bạn có thể thực hiện là làm chậm bước tấn công

và đột phá của tin tặc để có thể đối phó kịp thời

Mọi góp ý xin gởi lên Diễn Đàn Tin Học - VNInformatics

Hẹn gặp lại các bạn!

Trang 13

Designed by FSOSR Email : fsosr2005@yahoo.com.vn

Ngày đăng: 22/07/2014, 08:20

TỪ KHÓA LIÊN QUAN

w