Vị trí đặt trang Web

Một phần của tài liệu Đồ án xây dựng cấu hình các ứng dụng phía server trong hệ điều hành linux fedora 5 0 (Trang 76 - 81)

Tất cả các khai báo dùng để định nghĩa các tính năng cho mỗi website được phân thành nhóm cùng nhau ở bên trong đoạn mã <VirtualHost>, hoặc có trong file:

httpd.conf. Trong đoạn mã <VituralHost> thường chứa:

Servername: Định nghĩa tên của các website

DocumentRoot: Định nghĩa thư mục nơi các trang web đặt ở đó

Mặc định, Apache tìm thư mục DocumentRoot từ phần mục lục, hoặc trang

index.html. Ví dụ, nếu có một servername là: www.my_site.com với thư mục

DocumentRoot là: /home/www/site1 thì Apache sẽ hiển thị nội dung của file:

/home/www/site1/index.html đó là nơi mà trình duyệt web sẽ hiển thị nội dung trang

web: http://www.my_site.com. Có một vài trình soạn thảo như Microsoft FrontPage tạo các file với đuôi mở rộng là: “.htm” chứ không phải là: “.html” như FrontPage. Vấn đề xuất hiện đó là Apache không chấp nhận trang mục lục với đuôi mở rộng như vậy khi đó để giải quyết vấn đề đó là phải tạo một liên kết giữa 2 file này để apache có thể hiểu được nội dung của 2 trang đó là như nhau. Dưới đây là minh hoạ cho việc tạo một liên kết tới file:

[root@dhxd tmp]# cd /home/www/site1

[root@dhxd site1]# ln 9s index.htm index.html [root@dhxd site1]# ll index.*

9rw9rw9r99 1 root root 48590 Jun 18 23:43 index.htm

lrwxrwxrwx 1 root root 9 Jun 21 18:05 index.html 9> index.htm [root@dhxd site1]#

4.5.1.1 Vị trí đặt file mặc định

Mặc định, Apache tìm tất cả các file của trang web trong thư mục: /var/www/html/.

Trong các ví dụ sẽ sử dụng thư mục” /home/www để minh hoạ cách người dùng có thể đặt các file trang web ở các vị trí khác nhau.

4.5.1.2 File Permissions

Apache sẽ hiển thị các file trang web ngay khi chúng có thể đọc được nhưng trước đó phải chắc chắn rằng tất cả các file và các thư mục con trong thư mục DocumentRoot có được sự cho phép (permission). Nó là một giải pháp để giải quyết vấn đề nảy sinh khi một người dùng (không phải là người quản trị hệ thống) được phép dùng các dịch vụ như FTP hay SCP mà không cần phải nhập mật mã của người quản trị hệ thống khi họ muốn cập nhật các file.

Để thực hiện được việc này, cần thực hiện các bước sau: . Tạo một tài khoản với thư mục chủ là: /home/www

. Gộp tất cả các file trong thư mục: /home/www và các thư mục con cùng một quyền sở hữu

. Thay đổi sự cho phép trong thư mục: /home/www tới 755, khi đó cho phép tất cả người dùng bao gồm cả apache có thể đọc các file trong thư mục đó.

Câu lệnh như sau:

[root@dhxd tmp]# useradd 9g users www

[root@dhxd tmp]# chown 9R www:users /home/www [root@dhxd tmp]# chmod 755 /home/www

Để kiểm tra quyền sở hữu mới có thể sử dụng lệnh ll như sau:

[root@dhxd tmp]# ll /home/www/site1/index.*

9rw9rw9r99 1 www users 48590 Jun 25 23:43 index.htm

lrwxrwxrwx 1 www users 9 Jun 25 18:05 index.html 9> index.htm [root@dhxd tmp]#

4.5.1.3 Bảo mật nội dung cho các trang Web

Bắt đầu từ bản Fedora 3.0 đã giới thiệu các công cụ cơ bản về bảo mật đó là định nghĩa nâng cao bảo mật cho Linux (SELinux–Sercurity Enhanced Linux). Sử dụng các tính năng bảo mật này trong chế độ Linux đồ hoạ với giao diện như sau:

Hình 4.3: Cửa sổ SELinux

Một trang web có thể có được sự cho phép (permission) đúng nhưng apache sẽ không thể đọc được nếu như người dùng gán nội dung bảo mật với deamon không khớp nhau, khi đó sẽ có thông báo: “403 Forbidden”. Khi một file được tạo ra, nó sẽ thừa kế các nội dung bảo mật của thư mục do vậy nếu đặt các trang Web tại thư mục mặc định: /var/www/ thì chúng sẽ thừa hưởng nội dung bảo mật của thư mục đó tức là thư mục mặc định được hệ thống lựa chọn trước và như vậy người dùng đặc biệt là những người mới có thể tránh được rất nhiều các lỗi khi làm việc.

4.5.1.4 Bảng nhãn file ngữ cảnh bảo mật SELinux

Mã HTTP Miêu tả

httpd_sys_script_ro_t Sử dụng cho các tập lệnh CGI để đọc các file và các thư mục

httpd_sys_script_ra_t Tương tự như: “httpd_sys_script_ro_t“ nhưng cho phép nối thêm dữ liệu tới các file bằng tập lệnh CGI httpd_sys_script_rw_t Các file với kiểu này có thể được thay đổi bằng một

tập lệnh CGI bao gồm xoá bỏ.

httpd_sys_script_exec_t Kiểu này yêu cầu để chạy các tập lệnh CGI

Bảng 4.1: Bảng nhãn file ngữ cảnh bảo mật SELinux

4.5.1.5 Bảo mật cho tập lệnh CGI

Có thể dùng Apache để ngay lập tức thi hành các chương trình bởi các tập lệnh CGI (Common Gateway Interface) .Các tập lệnh CGI có thể được viết bởi nhiều ngôn ngữ khác nhau như Perl hay PHP và được dùng để xuất một trang Web mới hay cập nhật các file dữ liệu. Mặc định các tập lệnh CGI được đặt trong thư mục:

/var/www/cgi_bin/ và người dùng có thể tìm thấy đường dẫn đó từ nội dung của file:

httpd.conf.

Trong trường hợp mặc định một số URL với chuỗi ký tự: /cgi_bin/ sẽ ngay lập tức Apache tìm một tệp tin thi hành tương đương trong thư mụ đó. Ví dụ, với URL:

http://192.168.1.100/cgi_bin/test/test.cgi thì Apache sẽ thi hành tập lệnh:

/var/www/cgi_bin/test/test.cgi.SELinux phải được sửa đổi theo giá trị như trong bảng

nhãn file ngữ cảnh bảo mật SELinux cho mỗi tập lệnh CGI để chạy trong thư mục khác hoặc để truy cập các file dữ liệu. Ví dụ, tập lệnh test.cgi viết bằng ngôn ngữ PERL đã được tạo để hiển thị từ “Khoa CNTT.Truong DHXD” như sau:

#!/usr/bin/perl

# CGI Script "test.cgi" print qq(

<html> <head>

<meta http_equiv="Content_Language" content="en_us"> <meta http_equiv="Content_Type" content="text/html"> <title>Linux Home Networking</title>

</head> <body>

</body> </html> );

Trong ví dụ trên sử dụng câu lệnh ScriptAlias đã chỉ tới thư mục: /home/www/cgi. bin/ thay cho thư mục: /var/www/cgi_bin/ như mặc định.

ScriptAlias /cgi9bin/ "/home/www/cgi9bin/"

Người quản trị hệ thống tạo thư mục: /home/www/cgi_bin/, thay đổi nhãn bảo mật với

mã: httpd_sys_script_exec_t, và sau đó tạo tập lệnh: /home/cgi_bin/test/test.cgi với tập

tin chạy cho phép chính xác:

[root@dhxd tmp]# mkdir 9p /home/www/cgi9bin/test

[root@dhxd tmp]# chcon 9h 9t httpd_sys_script_exec_t /home/www/cgi9bin/ [root@dhxd tmp]# mkdir /home/www/cgi9bin/test

[root@dhxd tmp]# ls 9Z /home/www/cgi9bin

drwxr9xr9x root root root:object_r:httpd_sys_script_exec_t test [root@dhxd tmp]# vi /home/www/cgi9bin/test/test.cgi

[root@dhxd tmp]# chmod o+x /home/www/cgi9bin/test/test.cgi [root@dhxd tmp]#

Có một vấn đề nảy sinh khi tồn tại file: test.cgi được dùng cho website thứ 2 nào đó trong cùng một webserver. File đã được sao chép tới thư mục: /web/cgi_bin/site2/ bởi ScriptAlias trong website thứ 2 nhưng ngữ cảnh bảo mật thì không được sao chép cùng với nó.

File đó thừa kế ngữ cảnh của thư mục mà nó nằm trong đó.

[root@dhxd tmp]# cp /home/www/cgi9bin/test/test.cgi /web/cgi9bin/site2/test.cgi [root@dhxd tmp]# ls 9Z /web/cgi9bin/site2/test.cgi

9rw9r99r9x root root root:object_r:tmp_t /web/cgi9bin/site2/test.cgi [root@dhxd tmp]#

File permission không cho phép và thông báo lỗi lại xuất hiện, khi đó người dùng có thể sửa chữa chỉ bằng cách thay đổi ngữ cảnh bảo mật của file: test.cgi như sau:

[root@dhxd tmp]# tail /var/log/httpd/error_log

[Fri Dec 24 18:36:08 2004] [error] [client 216.10.119.250] (13)Permission denied: access to /cgi9bin/texcelon/test.cgi denied

Dec 24 18:36:08 dhxd kernel: audit(1103942168.549:0): avc: denied { getattr } for pid=2191 exe=/usr/sbin/httpd path=/web/cgi9bin/site2/test.cgi dev=hda5 ino=77491 scontext=system_u:system_r:httpd_t tcontext=root:object_r:tmp_t tclass=file

[root@dhxd tmp]#

Một phần của tài liệu Đồ án xây dựng cấu hình các ứng dụng phía server trong hệ điều hành linux fedora 5 0 (Trang 76 - 81)

Tải bản đầy đủ (PDF)

(95 trang)