GIT – HTTP là một giao thức cho phép trình duyệt Web Browser và servers có thể giao tiếp với nhau. Nó chuẩn hoá các thao tác cơ bản mà một Web phải làm được.

HTTP bắt  đầu là 1 giao thức  đơn giản giống như với các giao thức chuẩn khác trên Internet, thông tin điều khiển được truyền dưới dạng văn bản thô thông qua kết nối TCP. Do đó, kết nối HTTP có thể thay thế bằng cách dùng lệnh “telnet” chuẩn.

Apache là một phần mềm có nhiều tính năng mạnh và linh hoạt dùng để làm Web Server .

  • Hỗ trợ đầy đủ những giao thức HTTP trước đây như HTTP/1.1
  • Có thể cấu hình và mở rộng với những module của công ty thứ ba
  • Cung cấp source code đầy đủ với license không hạn chế.
  • Chạy trên nhiều hệ điều hành như NT/9x, Netware 5.x, OS/2 và trên hầu hết các hệ điều hànhUnix.

Cài đặt Apache

Gói cài đặt của Apache được cung cấp trong DVD hoặc bạn có thể tìm tải trên trang chủ tại địa chỉ http://

Bạn cài đặt bằng lệnh # -ivh CentOS/-*.rpm

Sau khi cài đặt bạn khởi động dịch vụ bằng lệnh

[root@server ~]# chkconfig httpd on
[root@server ~]# service httpd restart

Website mặc định

Mặc định website của bạn cần lưu trong địa chỉ /var/www/ và file mặc định là index.html. Để thử nghiệm, bạn uoload một website.

Bạn có nhiều giải pháp cho việc upload một website lên webserver, FTP là một gợi ý tốt. Nếu muốn đơn giản hơn thì bạn dùng một tiện ích SSH nào đó để gửi file lên. Ở đây, tôi giả định rằng bạn có thể thực hiện được những đều đó.

Sau đó bạn chỉ cần thử lại webserver của mình bằng cách truy cập địa chỉ ip của server, ví dụ ở đây là 192.168.40.100. Để có thể truy cập được bằng tên bạn cần cấu hình thêm cho việc phân giải tên miền.

image

Hình 1: Website được tạo mặc định và truy cập thành công

Cấu hình cho website

Tiếp theo bạn tìm hiểu cách cấu hình cho website, để ở một thư mục khác. Ví ở đây, tôi tạo thư mục /mysite và tập tin trang chủ của website lúc này là home.html.

Đầu tiên trên máy server, bạn cũng chuẩn bị một thư mục /mysite upload website mẫu của bạn lên, có tập tin trang chủ là homt.html

Sau đó mở file cấu hình httpd ra, tại đường dẫn /etc/httpd/conf/httpd.conf khảo sát một số thông số sau đây:

Dòng 256: Dòng này cấu hình server name cho website. Nó đang ở trạng thái ghi chú, bạn bỏ dấu thăng đi, và sửa lại thành www.mysite.com nếu bạn muốn, bỏ luôn :80 phía sau không bạn không có sự thay đổi nào về port mặc định của website.

ServerName www.example.com:80

Dòng 281 và 306: Dòng này cấu hình lưu trữ web mặc định. Bạn phải thay đổi lại cho đúng với thư mục chứa web của mình hiện tại. Ví dụ ở đây là:

Dòng 281: DocumentRoot “/mysite”

Dòng 306: <Directory “/mysite”>

 

Dòng 391: Chỉ ra những file nào sẽ là trang chủ của website. Khi truy cập vào thư mục, những file này sẽ được truy cập đầu tiên. Bạn cần bỏ thêm home.html vào

DirectoryIndex index.html index.html.var home.html

Sau đó bạn lưu file cấu hình và khởi động lại dịch vụ httpd, kết quả website của bạn lúc này đã bị thay đổi.

image

Hình 2: Webiste mới khi đã cấu hình thư mục lưu trữ cho web

Tạo alias cho website

Bây giờ bạn cần có thêm một alias cho web của mình theo địa chỉ http://192.168.40.100/love chẳng hạn. Bạn hãy tạo một thư mục nữa chứa web của mình, nằm trong thư mục /mysite và đưa website mới lên.

sau đó mở file cấu hình ra, dòng 539 đến 546 dùng để cấu hình alias, bạn copy đoạn đó, hoặc sửa lại từ đó luôn, để có một đoạn như sau:

Alias /love “/mysite/love”

<Directory “/mysite/love”>
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Đây chính là kết quả trong http://192.168.40.100/love của bạn đây

image

Nhưng đó không phải là những gì mà chúng ta mong muốn, những gì chúng ta đang mong đợi ở phần tiếp theo.

Chứng thực cho website

Ở đây ta giả dụ rằng trang /love của bạn tạo lúc nãy là trang nội bộ, và chỉ có user trong mạng mới vào được. Tức là bạn cần một chứng thực khi vào trang này. Có hai kiểu chứng thực.

Chứng thực thông thường

Với kiểu này, mật khẩu sẽ không được mã hóa. Bạn sử dụng lại đoạn cấu hình alias ở trên, thêm vài thông tin nữa.

Alias /love “/mysite/love”

<Directory “/mysite/love”>
Options Indexes MultiViews
AuthType Basic #KIỂU CHỨNG THỰC CƠ BẢN
AuthName “admin”  #CHỨNG THỰC DÀNH CHO AI, THÔNG BÁO SẼ HIỂN THỊ TRONG MÀN HÌNH ĐĂNG NHẬP
AuthUserFile /etc/httpd/conf/user #ĐƯỜNG DẪN ĐẾN TẬP TIN LƯU USER
Require user admin1 #USER LÀ ADMIN1 ĐƯỢC PHÉP ĐĂNG NHẬP
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Tiếp theo bạn cần tạo user admin1, user này không là user trong , nên phải tảo bằng lệnh sau

# htpasswd -c /etc/httpd/conf/user admin1
# htpasswd /etc/httpd/conf/user admin2

Lệnh ở đây tạo ra 2user, trong đó tham số –c chỉ xuất hiện với lệnh đầu tiên, khi file /etc/httpd/conf/user chưa được tạo ra.

Kiểm tra những gì vừa làm bằng cách vào địa chỉ http://192.168.40.100/love Một thông báo yêu cầu đăng nhập hiện ra, đăng nhập bằng admin1 thì vào được, bằng admin2 thì không vào được.

image

Chứng thực có mã hóa

Với kiểu này việc chứng thực bài bảng hơn, yêu cầu mã hóa mật khẩu truyền đi. Đến ví dụ này tôi mở rộng cho bạn thêm một vấn đề nữa, là cấp quyền cho nhóm. Nếu bạn làm theo cách trên là cấp quyền chỉ cho user cũng không sao.

Bạn sửa lại đoạn cấu hình ở trên như sau:

Alias /love “/mysite/love”

<Directory “/mysite/love”>
Options Indexes MultiViews
AuthType Digest #CHỌN KIỂU CHỨNG THỰC LÀ DIGEST
AuthName “private”
AuthUserFile /etc/httpd/conf/userdigest #CHỈ ĐỊNH TẬP TIN CHỨA USER
AuthGroupFile /etc/httpd/conf/group #CHỈ ĐỊNH TẬP TIN CHỨA NHÓM
Require group admin #NHÓM ĐƯỢC PHÉP CHỨNG THỰC
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Cũng như trên, bạn phải tạo user, tuy nhiên user admin1 ở đây sẽ khác admin1 ở trên kia.

htdigest -c /etc/httpd/conf/userdigest private admin1

htdigest /etc/httpd/conf/userdigest private admin2

Khác biệt là bạn phải tạo thêm group chứa hai user là admin1 và admin2. Bạn tạo mới file /etc/httpd/conf/group nhập vào nội dung

admin: admin1 admin2

Cuối cùng là khởi động lại dịch vụ và kiểm tra những gì bạn vừa cấu hình. Nếu thành công thì hai user admin1 và admin2 hai đều logon vào được.

image

Còn nhiều vấn đề khác về cấu hình web server. Tuy nhiên, khuôn khổ bài viết có hạn nên tôi tạm dừng ở đây. Mời các bạn tiếp tục đón xem các bài viết tiếp theo.

CẤU HÌNH WEB CHO MỖI USER

Sẽ có lúc chúng ta cần có 1 nhu cầu, rằng mỗi user được tạo ra từ hệ thống, sẽ có một trang web của riêng mình. Ví dụ như nhân viên cuteo sẽ có địa chỉ website cho riêng anh ấy là http://www.youcompany.com/cuteo

Bây giờ chúng ta sẽ đi thực hành đều đó:

Đầu tiên, bạn khoan hãy tạo user, mà hãy đi tạo một thư mục html trong thư mục /etc/skel Điều này sẽ làm cho mỗi user tạo ra sẽ có 1 thư mục nằm trong thư mục cá nhân /home/username Sau đó mới tạo user

[root@server ~]# mkdir /etc/skel/html
[root@server ~]# useradd cuteo
[root@server ~]# passwd cuteo

Tiếp theo bạn cần một chút cấu hình trong file cấu hình của httpd.

Mở nó ra, tìm dòng 355, đặt thêm 1 dấu 3 ở đầu dòng, để bỏ đi chức năng này.

#UserDir disable

Dòng 362, bạn bỏ dấu # đi nếu có, và sửa lại thành

UserDir html

html ở đây chính là thư mục chứa web cho mỗi nhân viên.

Dòng 370 đến 381 bạn bỏ dấu # đi, và sửa lại dòng 370 như hình bên dưới đây (sửa dòng 370):

<Directory /home/*/html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>

Để có website, user cuteo phải tự thiết kế và upload web của mình lên, bằng giao thức FTP chẳng hạn. Bạn có thể triển khai giao thức FTP cho nhân viên, để học thoải mái upload website lên.

Khổi động lại dịch vụ, thì user đã có một website riêng của họ tại địa chỉ http://<ip>/~cuteo Để nhân viên không phải gõ /~cuteo mà chỉ cần gõ /cuteo bạn cần tạo thêm 1 redirec cho mỗi user đó.

Đôi khi bạn sẽ gặp phải lỗi “Forbidden” nguyên nhân là do bị giới hạn quyền truy cập của người dùng. Bạn nên thay đổi lại bằng lệnh

chmod 750 /home/cuteo/html

Điều khiển truy cập

Ngoài việc bảo mật nội dung của website bằng sự chứng thực (username và ), apache còn giới hạn việc truy cập của người dùng dựa trên những thông tin khác được  đề cập trong Access Control. Sử dụng directive Allow/Deny để cho phép/cấm việc truy cập tài nguyên dựa trên tên hoặc địa chỉ IP.

Allow/Deny Directive: Cú pháp khai báo Allow/Deny như sau

Allow/Deny from [address]

+  Allow có nghĩa cho phép các host/network/domain truy xuất vào Web server.
+  Deny có nghĩa cấm các host/network/domain truy xuất vào Web server.
+  address  là địa chỉ IP/địa chỉ đường mạng hay tên máy tính, tên miền.

Ví dụ:

Deny from 11.22.33.44
Deny from host.example.com
Deny from 192.101.205
Deny from exampleone.com example

Bạn sử dụng Order để kết hợp giữa Allow và Deny trong việc giới hạn việc truy cập. Nếu thứ tự của Order là Deny, Allow thì Deny được kiểm tra trước tiên và bất kỳ những client nào không phù hợp với Deny hoặc phù hợp với một Allow thì được phép truy cập đến server. Ngược lại, nếu thứ tự của Order là Allow, Deny thì Allow được kiểm tra trước và bất kỳ client nào không phù hợp với một điều kiện Allow hoặc phù hợp với một điều kiện Deny thì bị cấm truy cập đến server.

Ví dụ về một điều khiển truy cập ít giới hạn nhất.

<Directory “/usr/web”>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>

Satisfy directive:

– Satisfy directive được dùng để chỉ ra nhiều tiêu chuẩn cần phải được xem xét trong việc bảo mật nội dung website. Satisfy có 2 giá trị là all và any. Mặc định, Satisfy nhận giá trị all, điều này có nghĩa là nếu nhiều tiêu chuẩn được chỉ ra thì tất cả những tiêu chuẩn này phải thoả mãn thì người dùng mới được phép truy cập tài nguyên. Còn giá trị any có nghĩa là một trong những tiêu chuẩn này hợp lệ thì user được phép truy cập đến tài nguyên.

– Một ứng dụng của việc sử dụng access control là giới hạn, những người dùng bên ngoài mạng khi truy cập tài nguyên cần phải có username và password còn tất cả những máy tính trong mạng thì không cần.

<Directory /usr/local/apache/htdocs/sekrit>
AuthType Basic
AuthName intranet
AuthUserFile /etc/httpd/conf/users
AuthGroupFile /etc/httpd/conf/groups
Require group customers
Allow from internal.com
Satisfy any
</Directory>

Bài viết này nằm trong dự án  website : www.gocit.vn, forum hổ trợ forum.gocit.vn , xem thêm tại link http://www.gocit.vn/du-an-linux-toan-tap/
Print Friendly

Comments

comments

Bài viết liên quan