Giới hạn truy cập theo tài khoản sử dụng

Một phần của tài liệu Tài liệu Đồ án tốt nghiệp: Hướng dẫn cơ bản Linux pptx (Trang 70 - 79)

Nếu muốn bảo vệ các trang thông tin của mình trên Website bằng cách yêu cầu ng−ời dùng phải nhập vào tên tài khoản (username) và mật khẩu

(password) thì Apache cũng có sẵn module mod_auth để đáp ứng yêu cầu này. Apache cung cấp 2 khả năng xác thực ng−ời dùng là Basic authentication và Digest authentication. Trong đó, Digest authentication đ−ợc đánh giá là an toàn

Đồ án tốt nghiệp

hơn nh−ng lại ít đ−ợc phát triển. Cách xác thực đ−ợc sử dụng phổ biến với các Web server Apache hiện nay là basic authentication, cách xác thực này sử dụng 64 bit để mã hóa tên tài khoản và mật khẩu tr−ớc khi gửi đến server. Điều này còn có nghĩa là việc chặn thông tin trên đ−ờng truyền để giải mã lấy tên tài khoản và mật khẩu là công việc hết sức khó khăn.

Các thông tin về tên tài khoản và mật khẩu đ−ợc tạo bằng ch−ơng trình htpasswd. Các thông tin này sẽ đ−ợc l−u vào một file text với truờng mật khẩu đã đ−ợc mã hoá và khi cần xác thực ng−ời dùng Apache sẽ giải mã mật khẩu mà ng−ời dùng cung cấp sau đó mang so sánh với mật khẩu l−u trữ. Cú pháp của câu lệnh htpasswd nh− sau (các thông tin trong dấu ngoặc vuông '[]' là tuỳ chọn) :

htpasswd [options] pwfile username [password]

options bao gồm:

m: Chọn thuật toán mã hoá mật khẩu là MD5.

d: Dùng thuật toán mã hoá của hệ thống để mã hóa mật khẩu. s: Mã hóa mật khẩu theo thuật toán SHA.

b: Nhập mật khẩu trực tiếp vào dòng lệnh.

Thuật toán mã hóa có thể đ−ợc áp dụng cho từng bản ghi khác nhau trong một file, điều này có nghĩa là các tài khoản khác nhau có thể có mật khẩu đ−ợc mã hóa theo các thuật toán khác nhau.

c: Mặc định htpasswd hiểu rằng file chứa tài khoản và mật khẩu (pwfile) đã tồn tại. Vì vậy để tạo một file mới bạn phải sử dụng tuỳ chọn -c. pwfile: Là tên file l−u trữ tên tài khoản và mật khẩu.

username: Tên tài khoản cần tạo.

password: Mật khẩu của tài khoản t−ơng ứng (chỉ sử dụng khi có option là '-b').

Đồ án tốt nghiệp

Ví dụ: Để tạo ra tài khoản là chi với mật khẩu là 123456 vào một file mới là /etc/http/conf/passwd thì câu lệnh đầy đủ là:

#htpasswd -cb /etc/httpd/conf/passwd chi 123456

hoặc:

#htpasswd -c /etc/http/conf/passwd chi

Sau khi tạo đ−ợc file chứa tài khoản và mật khẩu của ng−ời dùng thì ng−ời quản trị sẽ phải sử dụng các thẻ AuthName, AuthType, AuthUserFile và Require để khai báo trong file cấu hình http.conf.

Ví dụ: Muốn đ−a lên một trang sách điện tử có địa chỉ URL là

http://10.0.0.1/book/ và yêu cầu mọi ng−ời vào trang này đều phải có tên tài khoản và mật khẩu đã đ−ợc gán định tr−ớc. File cấu hình

/etc/httpd/conf/http.conf phải thêm vào các dòng sau:

<Directory '/var/www/book/'> AuthName 'Insiders Only' AuthType Basic

AuthUserFile /etc/httpd/conf/passwd Require valid-user

</Directory>

Khi ng−ời dùng yêu cầu tran web đó thì apache sẽ yêu cầu nhập username và password

Đồ án tốt nghiệp

L−u ý: Mặc định dịch vụ Web (httpd) sẽ sử dụng account Apache để khởi động cũng nh− xác định các quyền hạn đọc/ghi cho các file và th− mục trên hệ thống. Vì vậy, tài khoản này phải có quyền đọc file /etc/httpd/conf/passwd để biết đ−ợc mật khẩu ng−ời sử dụng và tài khoản t−ơng ứng. Để làm việc này ta có thể dùng một trong hai lệnh sau:

[root@localhost root]# chmod ugo+r /etc/httpd/conf/passwd

hoặc (adsbygoogle = window.adsbygoogle || []).push({});

[root@localhost root]# chown apache /etc/httpd/conf/passwd

Cũng giống nh− việc khai báo chính sách cho địa chỉ IP, sau khi khai báo lại file cấu hình cho các thẻ AuthName, AuthType, AuthUserFile và Require Apache, httpd yêu cầu phải đ−ợc khởi động lại để xác nhận sự thay đổi này. Vì vậy, sau mỗi lần thay đổi phải dùng lệnh:

Đồ án tốt nghiệp

Với cấu hình nh− trên, chỉ ng−ời sử dụng nào có tài khoản và mật khẩu trong file /etc/httpd/conf/passwd mới có quyền đăng nhập vào trang Web http://DiaChiIPCuaMay/book/.

Thẻ Require có các giá trị sau:

• valid-user: chỉ những ng−ời có tài khoản hợp lệ.

• user userid: chỉ cho phép các tài khoản này đăng nhập nếu cung cấp đúng mật khẩu.

• group groupid: chỉ có tài khoản thuộc các các nhóm xác định mới có quyền đăng nhập.

Ví dụ: Có 4 ng−ời dùng khai báo trong file /etc/ httpd/conf/passwd là

'thuong', 'huong', 'chi', 'bidao'. Trong số 4 ng−ời này bạn chỉ cho phép 3 ng−ời là 'thuong', 'huong', 'chi' đ−ợc đăng nhập vào địa chỉ http://10.0.0.1/secure/.

Alias /secure/ '/var/www/secure/'

# thẻ này để ánh xạ th− mục '/var/www/secure/ lên http://10.0.0.1/secure/ <Directory '/var/www/secure/'>

AuthType Basic

AuthName '3 Member Only'

AuthUserFile /etc/httpd/conf/passwd Require user thuong huong chi

</Directory>

Thẻ AuthUserFile: Chỉ cho phép xác định từng ng−ời dùng. Khi muốn xác định cho một nhóm ng−ời dùng phải dùng thẻ AuthGroupFile, cú pháp của thẻ này nh− sau:

Đồ án tốt nghiệp

Filepath là đ−ờng dẫn tới file text chứa tên nhóm và ng−ời dùng. Mỗi dòng của file này bao gồm tên nhóm, dấu phân cách hai chấm (:) và ng−ời sử dụng trong nhóm đó.

Ví dụ: Có file /etc/httpd/conf/groups chứa tài khoản 4 ng−ời dùng thuộc 2 nhóm Admin và User nh− sau:

[root@localhost root]# cat /etc/httpd/conf/groups

Admin: huong chi User: thuong bidao

Và để giới hạn chỉ xác thực mật khẩu của các tài khoản trong nhóm Admin khi đăng nhập vào http://10.0.0.1/book/ thì file cấu hình

/etc/httpd/conf/httpd.conf đ−ợc sửa lại t−ơng ứng nh− sau:

Alias /book/ '/var/www/book/' <Directory '/var/www/book/'> AuthName 'Admin group Only' AuthType Basic

AuthUserFile /etc/httpd/conf/passwd AuthGroupFile /etc/httpd/conf/groups Require group Admin

</Directory>

Với cách cấu hình này bất kỳ ai dùng trình duyệt để mở trang

http://10.0.0.1/book/ đều nhận đ−ợc yêu cầu nhập tên tài khoản và mật khẩu nh− hình sau:

Đồ án tốt nghiệp (adsbygoogle = window.adsbygoogle || []).push({});

Những tài khoản không thuộc nhóm Admin sẽ không thể đăng nhập đ−ợc vào http://10.0.95.15/book/, nếu cố đăng nhập sau 3 lần sẽ nhận đ−ợc thông báo 'Authentication required!'

Đồ án tốt nghiệp

Đôi khi nhiều ng−ời muốn kết hợp cả giới hạn theo địa chỉ IP và ng−ời dùng, việc này hoàn toàn có thể triển khai đ−ợc với Apache, d−ới đây là một đoạn file cấu hình ví dụ:

<Files phpinfo.php> Order Deny,Allow Deny from All

Allow from 10.0.0.0/255.0.0.0 AuthName 'Insiders Only' AuthType Basic

AuthUserFile /etc/httpd/conf/passwd Require valid-user

Đồ án tốt nghiệp

</Files>

Nh− vậy, để truy cập đ−ợc file phpinfo.php ng−ời sử dụng phải qua đ−ợc 2 vòng kiểm tra, lần thứ nhất Apache sẽ kiểm tra địa chỉ IP của máy ng−ời dùng yêu cầu có nằm trong dải 10.0.0.0/255.0.0.0 hay không, nếu điều kiện này thoả, nó tiếp tục kiểm tra mật khẩu và tài khoản ng−ời dùng cung cấp có t−ơng ứng với thông tin l−u trong file /etc/httpd/conf/passwd hay không, nếu cả hai đều thoả thì ng−ời dùng sẽ đọc đ−ợc nội dung file này.

Đồ án tốt nghiệp

Ch−ơng vI: Bảo mật với Firewall, ip tables

Một phần của tài liệu Tài liệu Đồ án tốt nghiệp: Hướng dẫn cơ bản Linux pptx (Trang 70 - 79)