3.2.1.1 Giới thiệu dịch vụ Web Apache:
Apache - Chương trình máy chủ HTTP là một chương trình dành cho máy chủ đối thoại qua giao thức HTTP. Apache chạy trên các hệđiều hành tương tựnhư Unix, Microsoft Windows, Novell Netware và các hệđiều hành khác. Apache đóng một vai trò quan trọng trong quà trình phát triển của mạng web thế giới.
Khi được phát hành lần đầu, Apache là chương trình máy chủ mã nguồn mở duy nhất có khả năng cạnh tranh với chương trình máy chủ tương tự của Netscape Communications Corporation mà ngày nay được biết đến qua tên thương mại Sun Java System Web Server. Từ đó trở đi, Apache đã không ngừng tiến triển và trở thành một phần mềm có sức cạnh tranh mạnh so với các chưong trình máy chủ khác về mặt hiệu suất và tính nãng phong phú. Từ tháng 4 nãm 1996, Apache trở thành một chương trình máy chủ HTTP thông dụng nhất. Hơn nữa, Apache thường được dùng để so sánh với các phần mềm khác có chức năng tương tự. Tính đến tháng 1 năm 2007 thì Apache chiếm đến 60% thịtrường các chưong trình phân phối trang web.
Chương 3: Web –
Apache được phát triển và duy trì bở một cộng đồng mã nguồn mởdưới sự bảo trợ của Apache Software Foundation. Apache được phát hành với giấy phép Apache License và là một phần mềm tự do và miễn phí.
3.2.1.2 2. Chuẩn bị
- Đặt IP
- Đặt hostname: serverX.ptecX.net - Tắt firewall, SELinux
- Cấu hình máy là một Primary Name Server cho domain ptecX.net sao cho www.ptecX.net có IP chính là Dns Server. 3.2.1.3 Cấu hình - Đặt IP (192.168.x.106) #vi /etc/sysconfig/network-scripts/ifcfg-eth0 - Đặt hostname (serverX.ptecX.net) #vi /etc/sysconfig/network #vi /etc/hosts - File cấu hình #cp /usr/share/doc/bind-*/sample/etc/name.conf /var/named/chroot/etc #vi /var/named/chroot/etc/named.conf Nội dung: zone "ptecX.net" { type master; file "ptecX.db"; }; zone "9.168.192.in-addr-arpa" { type master; file "192.168.9.db"; }; - Tạo file database nghịch vi /var/named/chroot/var/named/192.168.9.db Nội dung: $TTL 86400
Chương 3: Web –
@ IN SOA serverX.ptecX.net. root.ptecX.net. ( 2009062001 3H 15M 1W 1D ) IN NS serverX.ptecX.net 106 IN PTR serverX.ptecX.net. 106 IN PTR www.ptecX.net. - Tạo file database thuận
vi /var/named/chroot/var/named/ptecX.db Nội dung:
$TTL 86400
@ IN SOA serverX.ptecX.net. root.ptecX.net. ( 2009062001 3H 15M 1W 1D ) IN NS serverX.ptecX.net serverX IN A 192.168.x.106 www IN A 192.168.x.106 3.2.1.4 Cấu hình một số tuỳ chọn
- Kiểm tra gói httpd (cài đặt nếu chưa có) #rpm -qa httpd
- start dịch vụ httpd #service httpd start
- Kiểm tra Server có mở port 80/tcp chưa? #netstat -ltn
Chương 3: Web – www.ptecX.net
File cấu hình httpd: /etc/httpd/conf/httpd.conf
3.2.1.4.1 Cấu hình Server listen port 8000 thay vì port 80
- Sửa dòng 134 của file cấu hình: Listen 8000 - restart dịch vụ #service httpd restart - Kiểm tra Mở trình duyệt nhập:www.ptecX.net:8000
3.2.1.4.2. Cấu hình email của user quản trị Web Server là admin@ptecX.net
- Cấu hình dòng 251 file cấu hình: ServerAdmin admin@ptecX.net - restart dịch vụ
#service httpd restart
3.2.1.4.3. Đặt tên cho Website chính là www.ptecX.net
- Cấu hình dòng 265, file cấu hình: ServerName www.ptecX.net:8000 - restart dịch vụ #service httpd restart - Tạo file với nội dung bất kỳ #vi /var/www/html/index.html - Mở trình duyệt kiểm tra.
3.2.1.4.4Cấu hình thư mục chứa Website là /data/web
- Tạo thư mục #mkdir /data #mkdir /data/web - Tạo file với nội dung bất kỳ #vi /data/web/index.html - Cấu hình dòng 281 trong file cấu hình DocumentRoot "/data/web" - restart dịch vụ
Chương 3: Web – #service httpd restart
3.2.1.4.5Cấu hình Apache sao cho khi truy cập Website , file home.html sẽđược load đầu tiên. - Cấu hình dòng 391 file cấu hình DirectoryIndex home.html - restart dịch vụ #service httpd restart 3.2.1.4.6Xem log của httpd - Error log: #tail -f /var/log/httpd/error_log - Access log: #tail -f /var/log/httpd/access_log 3.2.2 Cấu hình nhiều alias
Yêu cầu: Cấu hình Server sao cho khi truy cập www.ptecX.net/soft/ sẽ truy xuất vào thư mục /chiase/soft
- Thêm vào cuối file cấu hình dòng sau: Alias /soft/ "/chiase/soft/"
- Tạo file /chiase/soft/index.html - restart dịch vụ
#service httpd restart
- Kiểm tra: truy cập www.ptecX.net/soft/
3.2.3 Cấu hình máy chủ hosting
Thực hiện cấu hình chứng thực cho thư mục /chiase/soft trên máy chủ Apache để các máy client truy cập bằng link www.ptecX.net/soft và phải có tài khoảng httpd riêng mới có thể truy cập được.
Yêu cầu: Cấu hình Web Server sao cho chỉ có user hv1, hv2 được phép truy xuất vào www.ptecX.net/soft
- Thêm vào cuối file cấu hình đoạn sau: AuthType Basic
AuthName "Chung thuc nguoi dung" AuthUserFile /etc/httpd/conf/htpasswd Require user hv1 hv2
Chương 3: Web – - Tạo user và passwd chứng thực cho web #htpasswd -c /etc/httpd/conf/htpasswd hv1 #htpasswd /etc/httpd/conf/htpasswd hv2
- Lưu ý: Dòng lệnh đầu tiên chỉđược phép chạy một lần duy nhất! - restart dịch vu
#service httpd restart
- Kiểm tra: truy cập vào www.ptecX.net/soft/ với các user vừa tạo.
3.2.4 Cấu hình chứng thực web
3.2.4.1 Cấu hình Hosting - Cấu hình Web Server Hosting 2 Website
www.ptecX.net www.linux.com
- Cấu hình Dns Server chịu trách nhiệm phân giải 2 record sau www.ptecX.net
www.linux.com
- Tạo 2 file database thuận là ptecX.db và rolesX.db vi /var/named/chroot/var/named/ptecX.db
Nội dung: $TTL 86400
@ IN SOA serverX.ptecX.net. root.ptecX.net. ( 2009062001 3H 15M 1W 1D ) IN NS serverX.ptecX.net serverX IN A 192.168.x.106 www IN A 192.168.x.106 vi /var/named/chroot/var/named/rolesX.db Nội dung:
Chương 3: Web – $TTL 86400
@ IN SOA serverX.rolesX.com. root.rolesX.com. ( 2009062001 3H 15M 1W 1D ) IN NS serverX.rolesX.com serverX IN A 192.168.x.106 www IN A 192.168.x.106 - Chỉnh sửa file cấu hình #vi /var/named/chroot/etc/named.conf Nội dung: zone "ptecX.net" { type master; file "ptecX.db"; }; zone "x.168.192.in-addr-arpa" { type master; file "192.168.x.db"; }; zone "rolesX.com" { type master; file "rolesX.db"; }; - Chỉnh sửa dòng 972 file cấu hình NameVirtualHost 192.168.x.106:80 - thêm vào cuối file cấu hình đoạn sau: ServerAdmin webmaster@ptecX.net DocumentRoot /data/web
Chương 3: Web – ServerName www.ptecX.net
ErrorLog logs/www.ptecX.net-error_log
CustomLog logs/www.ptecX.net-access_log common ServerAdmin webmaster@rolesX.com
DocumentRoot /data/web1 ServerName www.rolesX.com
ErrorLog logs/www.rolesX.com-error_log
CustomLog logs/www.rolesX.com-access_log common
- Tạo thư mục web gốc /data/web1 và tạo file /data/web1/index.html - restart dịch vụ httpd
#service httpd restart - kiểm tra website
3.2.4.2 Cấu hình Web Server sao cho các user trên hệ thống có thể truy cập
vào trang web cá nhân của user
- Cấu hình file httpd.conf + Sửa dòng 355 #UserDir disable + Dòng 362 UserDir public_html - Mở rào từ dòng 370 đến 381 - Tạo user hv1 và hv2 - Tạo thư mục: #mkdir /home/hv1/public_html #mkdir /home/hv2/public_html - Tạo file (Nội dung bất kỳ) #vi /home/hv1/public_html/index.html #vi /home/hv2/public_html/index.html - Cấp quyền cho home dir của từng user #chmod 755 -R /home/hv1
Chương 3: Web – - restart httpd
#service httpd restart - Kiểm tra:
truy cập vào web http://www.ptecX.net/~hv1 và http://www.ptecX.net/~hv2
3.3 Dịch vụ FTP Server
3.3.1 Cài đặt và cấu hình dịch vụ ftp
3.3.1.1 Cài đặt vsftp
Cài đặt qua mạng
yum install vsftpd
Cài đặt từ source rpm trên đĩa DVD cài Centos
rpm -ivh vsftpd- →
Quá trình cài đặt hoàn tất, ta có thể khởi động dịch vụ vsftpd ngay sau khi cài đặt.
3.3.1.2 Cấu hình FTP Server
B1: Khởi động màn hình Terminal, gõ lệnh sau để kiểm tra dịch vụ FTP đã khởi động chưa:
/etc/init.d/vsftpd status
Kết quả sẽ hiển thị sau dòng lệnh.
B2: Cũng trong màn hình Terminal, dùng lệnh sau để chạy FTP server. Khi FTP server đã khởi động.
#/etc/init.d/vsftpd start
Người dùng có thể đăng nhập vào, thực hiện upload, download, sửa file trong thư mục /home/username
Muốn tắt dịch vụ ftp, dùng lệnh:
#/etc/init.d/vsftpd stop
Khởi động lại dịch vụ, dùng lệnh:
#/etc/init.d/vsftpd restart
Để ftp server tựđộng start mỗi khi khởi động máy :
# chkconfig vsftpd on
Chương 3: Web –
Để các user có thể truy cập dịch vụ ftp và thực hiện việc chia sẻ những file trong hệ thống thì user này phải do người quản trị tạo ra.
Có thể dùng nhiều chương trình ftp client, chạy ở nhiều môi trường khác nhau đểđăng nhập vào ftp server.
3.3.1.3 Khảo sát file cấu hình FTP server
Soạn file cấu hình /etc/vsftpd/vsftpd.conf # Example config file /etc/vsftpd/vsftpd.conf # cho phép anonymous FTP hay không? anonymous_enable=NO
# cho phép local users login? local_enable=YES
# enable any form of FTP write command. write_enable=YES
# Default umask for local users local_umask=022
# Log tất cả những hoạt động up/download. xferlog_enable=YES
# Pasive FTP mode (PORT): sử dụng cổng 20 (ftp-data). connect_from_port_20=YES
# Files upload bởi anonymous user sẽ thuộc về user khác
# chỉ cần thiết trong trường hợp cho phép anonymous user upload!!! #chown_uploads=YES
Chương 3: Web – # vị trí log file
xferlog_file=/var/log/vsftpd.log
# định dạng log file theo "standard ftpd xferlog format" xferlog_std_format=YES
# timing out an idle session. idle_session_timeout=600
# timing out a data connection. data_connection_timeout=120
# chạy ftp server bằng user có quyền hạn bình thường (không phải root) nopriv_user=vsftp
# By default the server will pretend to allow ASCII mode but in fact ignore # the request.
# Beware that turning on ascii_download_enable enables malicious remote parties
# to consume your I/O resources, by issuing the command "SIZE /big/file" in # ASCII mode.
#ascii_upload_enable=YES #ascii_download_enable=YES # login banner
ftpd_banner=Viết tùy ý một câu, ví dụ chào mừng, giới thiệu... # khi sử dụng e-mail addresses làm passwd cho anonymous login #deny_email_enable=YES
Chương 3: Web –
#banned_email_file=/etc/vsftpd/vsftpd.banned_emails
# chroot()
chroot_local_user=YES chroot_list_enable=YES # những user không chroot
chroot_list_file=/etc/vsftpd/chroot_list
# cho phép "-R" option khi dùng lệnh ls # thích hợp cho những client như ncftp #ls_recurse_enable=YES pam_service_name=vsftpd userlist_enable=YES # hoạt động ở standalone mode # so sánh với cách dùng inetd, xinetd listen=YES
# có thể giới hạn access bằng tcp_wrappers (như /etc/hosts.deny) tcp_wrappers=YES
Xong khởi động vsftpd /etc/init.d/vsftpd start
Để khởi động dịch vụ FTP server ta dùng command :
[root@hotec tmp]# /etc/init.d/vsftpd start [root@hotec tmp]# /etc/init.d/vsftpd stop /etc/init.d/vsftpd restart
Để ftp server tựđộng start mỗi khi khởi động máy :
Chương 3: Web –
3.3.1.4 Cấu hình FTP Client trong linux
B1: Khởi động màn hình terminal, dùng lệnh ftp <ip_ftp_server> Ví dụ: #ftp 192.168.10.100
B2: Sau khi lệnh này thực hiện thì thông tin tên người dùng và password yêu cầu gõ vào để thực hiện kết nối (ví dụ: anonymous)
Sau khi đăng nhập, máy chủ sẽ có thông báo đãđăng nhập thành công. B3: đánh lệnh pwd để kiểm tra thư mục hiện hành
Chú ý:
Khi dùng ftp, các file down sẽ nằm trong thư mục /, các file upload sẽ nằm trong thư mục mà máy chủ cung cấp.
B4: dùng lệnh ls để xem nội dung thư mục
B5: dùng lệnh put hay mput để upload file lên máy chủ.
Chú ý: file cần upload phải đang nằm trong thư mục /, từđó mới upload lên máy chủ.
B6: gõ lệnh get hay mget để download filoe từ máy chủ về
Chú ý: file cần download về phải nằm trong thư mục của máy chủ và cho phép lấy về.
3.3.2 Cấu hình user truy xuất nhiều thư mục
Ta cấu hình cho phép truy cập nặc danh được phép tải files , tạo foldfer , upload files .
# Allow anonymous FTP? cho phép truy cập nặc danh
anonymous_enable=YES
# The directory which vsftpd will try to change into after an anonymous login. (Default = /var/ftp)
#Xác định thư mục mặc định cho user anonymous
anon_root=/data/directory
# Uncomment this to allow local users to log in cho phép user trong local được phép truy cập ftp
local_enable=YES
# Uncomment this to enable any form of FTP write command. # (Needed even if you want local users to be able to upload files)
Chương 3: Web –
# Uncomment to allow the anonymous FTP user to upload files. This only has an effect if global write enable is activated. Also, you will obviously need to create a directory writable by the FTP user.
cho phép user anonymous được phép upload lên thư mục mặc định
anon_upload_enable=YES
cho phép anonymous tạo thư mục
# Uncomment this if you want the anonymous FTP user to be able to create new directories.
anon_mkdir_write_enable=YES
# Activate logging of uploads/downloads.
xferlog_enable=YES
# You may override where the log file goes if you like. # The default is shown below.
xferlog_file=/var/log/vsftpd.log
Tạo FTP banner : Sửa dòng
ftpd_banner= Xin chao mung da den voi FTP server cua toi
Bây giờ ta làm một ví dụ thực tế. Ta tạo ra một user là upload user này được toàn quyền trên thư mục var/www/html quyền đọc , ghi , sửa , xóa tạo thư mục vv…
Bước 1 : tạo một nhóm là ftp-users
[root@hotec tmp]#groupadd ftp-users
Bước 2: thiết lập chmod 755 cho thư mục html và gắn user upload nhóm ftp- users
[root@hotec tmp]#useradd –g ftp-users –d /var/www/html upload
[root@hotec tmp]#chmod 755 /var/www/html [root@hotec tmp]#chown upload:ftp-users /var/www/html
thiết lập [root@hotec tmp]#passwd upload
password cho user upload
Sau khi làm tới đây mặc định khi login ftp bằng account upload sẽ trỏđến thư mục html. Tại đây account upload sẽ được toàn quyền upload, delete, edit
Chương 3: Web –
Bước 3: ta hạn chế quyền không cho một số user được phép login vào ftp trừ user root và user hanh. Mặc định user root không được phép login vào ftp server. Để cho phép ta làm như sau
[root@hotec tmp]#vi /etc/vsftpd/ftpusers
Xóa bỏ account root tại đó. Thêm vào đó những account ta không muốn cho login vào FTP
Thứ 2 edit files /etc/vsftpd/user_list
[root@hotec tmp]#vi /etc/vsftpd/user_list
Làm như bước thứ nhất xóa root khỏi danh sách list và thêm vào đó những account không được phép login. Vậy là chúng ta đã cấu hình xong một tutorial đơn gian về FTP.
NOTE : Nếu bạn không thể tạo được thư mục trong ftp thì làm theo cách sau: vào [b]vi /etc/sysconfig/selinux
SELINUX=DISABLE
3.3.3 Kiểm tra hoạt động ftp server và upload nội dung
Cấu hình như trên là hoàn tất rồi, giờ mình test xem với cấu hình như thế FTP Server sẽ hoạt động thế nào
Mình sẽ deny vuser1 bằng cách thêm nó vào user_list_deny như đã cấu hình ở trên. Còn vuser2 vẫn cho truy cập upload/delete/rename bình thường.
Kết quả khi dùng FileZilla đăng nhập vào FTP Server trên VPS → vuser1 đã bị chặn truy cập.
Hình 3.22-Đăng nhập bằng vuser1
Chương 3: Web –
Hình 3.23-User vuHình 3.24ser1 upload file web lên web root home directory
Tất cảđã hoạt động ok, bạn thử tạo thêm nhiều user ảo khác và check rename, delete, create folder xem sao.
3.3.4 Bảo mật ftp
Cấu hình thêm một chút cho an toàn, để cấu hình bảo mật cho FTP Server bạn thêm cho mình hai dòng bên dưới, đây là cách chroot FPT rất cần thiết với máy chủ có nhiều user. Mục đích là đảm bảo mỗi user được tạo ra sẽ bị giới hạn truy cập trong Home Directory của nó, không thể view hoặc access vào bất kỳ thư mục nào khác.
chroot_local_user=YES # kích hoạt tính năng chroot cho local
user.
allow_writeable_chroot=YES # Phải có dòng này chroot mới hoạt
động chuẩn được nhé.
Tiếp theo là userlist_enable, cái này quan trọng không kém. Nếu được gán giá trị YES thì tất cả các user được liệt kê trong file /etc/vsftpd/user_list sẽ không thể access vào FTP Server được. Tất cả các user trong user_list đều là những tài khoản quan trọng dùng để vận hành máy chủ, tốt nhất không dùng cho FTP thì hơn. Nếu giá trị là NO thì ngược lại, toàn bộ những user trong user_list sẽ truy cập được FTP Server.
Mình chọn YES. userlist_enable=YES
Khi chroot user đồng nghĩa với việc user không truy cập được vào đâu ngoài thư mục của mình. Nhưng trong quá trình sử dụng nhiều khi bạn lại muốn tạo ra một ngoại lệ (exception) để một user nào đó có thểđi vào tất cả các thư mục ngó nghiêng linh tinh một tí thì làm thế nào ?
Để làm được điều đó, bạn thêm vào hai dòng bên dưới.
Chương 3: Web –
chroot_list_file=/etc/vsftpd/chroot_list # Dòng này tạo ra một