Một số cài đặt dịch vụ và ứng dụng trên hệ điều hành linux
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
BÁO CÁO BÀI TẬP LỚN
CHUYÊN MỤC: MỘT SỐ CÀI ĐẶT DỊCH VỤ VÀ ỨNG DỤNG
TRÊN HỆ ĐIỀU HÀNH LINUX Nhóm 5
Hà Nội, Ngày Tháng Năm 2012
MỤC LỤC
CHƯƠNG I CÀI ĐẶT VÀ CẤU HÌNH DNS SERVER TRÊN UBUNTU SERVER 3
Trang 21.2.Cài đặt 4
1.2.Cấu hình 5
1.3.Kiểm tra DNS 7
CHƯƠNG II CÀI ĐẶT EMAIL SERVER TRÊN UBUNTU SERVER 7
2.1.Cài đặt 8
2.2.Cấu hình mail server 8
CHƯƠNG III CÀI ĐẶT VÀ CẤU HÌNH WEBSERVER 15
3.1.Cài đặt webserver và một số thiết lập 15
3.2.IP-based Virtual Host và Name-based Virtual Host 19
3.2.1.IP-based Virtual Host 19
3.2.2 Name-based Virtual Host 20
3.3 Apache SSL 22
CHƯƠNG IV TÌM HIỂU CÁC LOG FILE 26
4.1 Khái niệm ghi nhật ký 26
4.2 Cơ chế ghi nhật ký trong Linux 27
4.3 Tối ưu quá trình ghi nhật ký 30
CHƯƠNG V SAO LƯU DỮ LIỆU 32
5.1 Giới thiệu 32
5.2 Các loại sao lưu 32
5.3 Giới thiệu Crontab 33
5.3.1 Crontab ứng dụng vào công việc gì? 33
5.3.2 Cài đặt Crontab 33
5.3.3 Kí pháp của Crontab 33
5.3.4 Lập lịch sao lưu dữ liệu với Crontab 33
5.3.5 Phục hồi dữ liệu 38
CHƯƠNG VI IPTABLES 40
6.1.Giới thiệu về Iptables 40
6.2 Cài đặt Iptables 40
6.3.Một số dịch vụ ứng dụng Iptables 40
6.3.1 Cấp phát mạng internet đến các máy con (LAN) 40
TÀI LIỆU THAM KHẢO 47
CHƯƠNG I CÀI ĐẶT VÀ CẤU HÌNH DNS SERVER TRÊN UBUNTU SERVER
Trang 3DNS Server là máy chủ có chức năng phân giải tên miền Trong bài viết này, chúng tôi sẽhướng dẫn chi tiết các bước cài đặt và cấu hình DNS Server trên Linux với hệ điều hành UbuntuServer phiên bản 11.10
1.1.Thiết lập IP tĩnh
1 Cấu hình file interfaces như sau
2 Khởi động lại
network
3 Gỡ the Network-manager utility bằng lệnh sau
#apt-get remove network-manager network-manager-gnome
Trang 4Sau khi cài đặt thành công, thu được thư mục chính là /etc/bind Trong thư mục này, bạn sẽ cấu
Trang 53 Tạo file face.com.db
#nano /etc/bind/zones/face.com.db
4 Cấu hình file face.com.db như sau
5 Tạo file rev.0.168.192.in-addr.arpa và cấu hình như sau
Trang 66 Bây giờ restart lại BIND
#/etc/init.d/bind9 restart
7 Đến đây có thể test DNS Server
Bây giờ chỉnh sửa file "resolv.conf" theo thiết lập sau đây
CHƯƠNG II CÀI ĐẶT EMAIL SERVER TRÊN UBUNTU SERVER
Có rất nhiều phần mềm dùng để chạy Mail server Nhưng trong bài này sẽ dùng Postfix +
Dovecot + pop-before-smtp để cài đặt đơn giản nhất
Trang 72.1.Cài đặt
Để cài đặt các gói cần thiết chạy lệnh sau :
#sudo -i
#apt-get install php5 postfix dovecot-common dovecot-imapd dovecot-pop3d squirrelmail
Trong quá trình cài đặt sẽ hiện thông báo sau:
Chọn OK
Chọn OK>> OK
2.2.Cấu hình mail server
Trang 82 Tạo file db.faceview và db.172
Cấu hình file db.faceview như sau:
Cấu hình file db.172 như sau:
Trang 9#invoke-rc.d bind9 restart
3 Cấu hình lại file /etc/resolv.conf
4 Kiểm tra DNS mail vừa tạo bằng nslookup
Trang 105 Vào dpkg-reconfigure postfix cấu hình lại như sau:
Trang 116 Mở file /etc/devecot/devecot.conf và thêm vào 2 dòng này
Trang 127 Restart postfix và dovecot
8 Vào thư mục /etc/apache2/sites-enabled/ và tạo file mail.conf
Cấu hình file mail.conf
9 Share folder Squirrelmail vào thư mục var/www sau đó restart apache2
Trang 14CHƯƠNG III CÀI ĐẶT VÀ CẤU HÌNH WEBSERVER
3.1.Cài đặt webserver và một số thiết lập
Trước khi cài đặt, cần đảm bảo là máy tính đã được cấu hình để kết nối mạng.Với Linux,
có thể chọn gói mã nguồn httpd-2.2.3.tar.gz Đây là gói miễn phí, hoàn toàn có thể download
được trên mạng:
• Nếu sử dụng gói gz thì dùng lệnh: tar xvzf httpd-***.tar.gz
• Vào thư mục vừa giải mã, sau đó sử dụng các lệnh /configure | make | make install để cài đặt
• Còn nếu cài đặt từ những gói rpm thì gõ lệnh: rpm -ivh httpd-***.rpm
• Bây giờ, có thể chạy Web Server nếu muốn Tuy nhiên, vẫn có khi gặp trường hợpkhông thể khởi động được như: lỗi vì đã có phần mềm nào đó chạy trên port mà WebServer ta sẽ chạy (80) Điều này có thể khắc phục được một cách dễ dàng, bằng cách tắtchương trình chạy trên port đó đi Và bây iờ khởi động lại là có thể chạy được
• Để start – stop – restart webserver: /etc/init.d/httpd start|stop|restart hoặc dùng lệnh:
#chkconfig httpd on
#service httpd start|stop|restart
• Tuy nhiên, để có thể hiểu cũng như vận hành theo đúng ý muốn thì cần phải hiểu và cũng như phải tận tay cấu hình nó
Trang 15Dưới đây là cách cài đặt thông thường, dùng Terminal và gõ lệnh sau:
sudo apt-get install apache2
Sau khi quá trình cài đặt này hoàn tất, khởi động trình duyệt và gõ địa chỉ http://localhost Nếu kết quả hiển thị It Works! có nghĩa là chúng ta đã cài đặt Apache thành công:
Thiết lập và tùy chỉnh Apache:
Sau khi cài đặt Apache,ứng dụng sẽ được thêm vào danh sách init.d của hệ thống, do đó có thể
tự khởi động cùng với hệ điều hành Sử dụng những lệnh sau để khởi động, kích hoạt và ngừnghoạt động của Apache:
sudo /etc/init.d/apache2 start #start apache
sudo /etc/init.d/apache2 stop #stop apache
sudo /etc/init.d/apache2 restart #restart apache
Nếu không muốn Apache tự khởi động cùng hệ thống, gõ lệnh sau:
sudo update-rc.d -f apache2 remove
Còn nếu muốn làm ngược lại quá trình trên thì sử dụng lệnh:
sudo update-rc.d apache2 defaults
Nhưng lưu ý rằng những lệnh trên chỉ áp dụng với các distro dựa trên Debian (bao gồm Ubuntu)
mà thôi
Thay đổi thư mục localhost mặc định:
Trang 16Ở chế độ default, Apache sẽ chỉ hoạt động dựa trên thư mục /var/www Đồng thời cũng có nghĩa rằng bất cứ file nào đặt tại đây cũng sẽ hiển thị và truy cập từ đường dẫn http://localhost Ví dụ:
nếu muốn đường dẫn này sẽ trỏ trực tiếp đến 1 thư mục khác (trong trường hợp này
là /home/user/public_html) thì hãy làm theo các thao tác sau Trước tiên, hãy đảm bảo rằng thư mục /home/damien/public_html có tồn tại, tạo 1 trang HTML đơn giản và đặt tên
là index.html, đặt ở trong thư mục public_html Sau đó, mở Terminal và gõ lệnh:
gksu gedit /etc/apache2/sites-enabled/000-default
Thay đổi DocumentRoot /var/www thành DocumentRoot /var/www/newsite , và <Directory /
var/www/> thành <Directory /var/www/newsite>
Lưu thay đổi của file này, sau đó khởi động lại Apache:
sudo /etc/init.d/apache2 restart
Mở lại đường dẫn http://localhost trên trình duyệt, sẽ nhìn thấy file html bên trong thư
mục newsite:
Trang 17Một số thiết lập khác:
Trong những trường hợp khác, nhiều người sử dụng lại không muốn thay đổi những thuộc tính,thông số mặc định của hệ thống thì họ có thể áp dụng phương pháp tạo nhiều web site và hướngApache đến từng site riêng biệt đó Trước tiên, hãy tạo file cấu hình cho site mới:
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/site
Chỉnh sửa file này:
gksu gedit /etc/apache2/sites-available/site
Thay đổi DocumentRoot /var/www thành DocumentRoot /var/www/newsite và <Directory
/var/www> thành <Directory /var/www/newsite> Sau đó lưu lại thay đổi trên file này Tạm
thời tắt bỏ thiết lập mặc định, thay đổi sang site:
sudo a2dissite default && sudo a2ensite site
Sau đó, khởi động lại Apache:
sudo /etc/init.d/apache2 restart
Và với cách làm này, người sử dụng hoàn toàn có thể tạo nhiều web site với 1 file cấu hìnhtương ứng, và tất nhiên mỗi 1 site đều trỏ tới 1 thư mục lưu trữ riêng biệt Bên cạnh đó, cũng có
thể dễ dàng chuyển đổi giữa các site này bằng lệnh a2dissite và a2ensite.
Kích hoạt file htaccess:
Về bản chất, đây là 1 file vô cùng quan trọng, có khả năng giám sát và quản lý các hành độngcủa server mà không cần phải can thiệp vào bên trong module của Apache Ở chế độ mặc định,mọi chức năng của htaccess đều bị tắt bỏ, thậm chí server còn không biết đến sự tồn tại của filenày Để kích hoạt file này, hãy mở file cấu hình vừa tạo ở bước trên:
gksu gedit /etc/apache2/sites-available/site
Kéo xuống, cho tới khi nhìn thấy <Directory /www/var/newsite hãy thay đổi AllowOverride
None thành AllowOverride All:
Trang 18Lưu thay đổi của file, vậy là chúng ta đã hoàn tất quá trình cài đặt và thiết lập Apache trên nền tảng Ubuntu
3.2.IP-based Virtual Host và Name-based Virtual Host
3.2.1.IP-based Virtual Host
1 Tạo 1 forder www.page1.com trong thư mục /var/www/virtual
2 Tạo 1 trang html trong forder này với nội dung như sau
3 Cấu hình file httpd.conf như sau
Trang 194 Khởi động lại hệ thống và test thử /etc/init.d/apache2 restart
3.2.2 Name-based Virtual Host
1 Sửa lại file host như sau
Thêm vào cuối dòng 192.168.1.100 www.page1.com
2 Test thử
3 Các site sử dụng chung một địa chỉ ip
Tạo 1 forder www.page2.com trong thư mục /var/www/virtual
Trang 20 Thêm vào cuối file hosts
Cấu hình file httpd.conf như sau bằng cách thêm vào cuối dòng như trong vùng khoanh
Khởi động lại hệ thống và test thử /etc/init.d/apache2 restart
Kết quả khi truy nhập 2 địa chỉ:
3.3 Apache SSL
Trang 21SSL là gì?
SSL(Secure Socket Layer) là một giao thức(protocol) cho phép bạn truyền đạt thông tin một cách an toàn qua mạng
1 Khởi động SSL với câu lệnh a2enmod ssl sau đó khởi động lại apache
2 Tạo 1 thư mục myssl
3 Sử dụng tập hợp phím để tạo ra một yêu cầu chứng chỉ
4 Tạo password và nhập các thông tin yêu cầu
Trang 225 Tạo các phím mã hóa máy chủ và tạo password
6 Sử dụng yêu cầu vừa tạo ở bước 5 để tạo ra chứng nhận ký tự riêng
7 Mở file httpd.conf và thêm vào cuối dòng như sau
Trang 238 Test thử
Trước khi cấu hình SSL
Sau khi cấu hình SSL
Trang 25CHƯƠNG IV TÌM HIỂU CÁC LOG FILE
4.1 Khái niệm ghi nhật ký
Trong quá trình hoạt động của hệ thống, cần thiết phải ghi chép, lưu trữ lại các thông tin
về hoạt động của hệ thống Các thông tin này sẽ giúp ích cho việc giải quyết sự cố, phát hiện cácsai sót, các hành động xâm nhập, tác động vào hệ thống Về lý thuyết, bất cứ một thông tin nào
về hoạt động của hệ thống cũng có thể giúp ích cho quá trinh phát hiện và khắc phục các sự cố.Thực tế, việc ghi chép theo dõi các hệ thống hoặc là quá sơ sài, không đủ thông tin giúp ích choquản trị viên, hoặc quá chi tiết, dẫn đến các thông tin không có giá trị
Các thông tin cần ghi chép có thể được phân loại theo nhiều cách, phụ thuộc vào việcthông tin này được sinh ra từ đâu, được lọc thế nào và được ghi vào vị trí nào Nếu theo nguồngốc sản sinh ra thông tin có thể chia ra:
Thông tin về hoạt động của các thiết bị phần cứng
Thông tin về hoạt động của nhân hệ điều hành
Thông tin về hoạt động của các dịch vụ hệ thống
Thông tin về hoạt động của các ứng dụng
Thông tin về các thao tác của NSD
Căn cứ vào mức độ quan trọng của thông tin, có thể phân loại thành
Mức thông tin chi tiết: các thông tin chi tiết liên quan đến hoạt động nội bộ của các tiếntrình, không phản ánh việc hoạt động của hệ thống có bình thường hay không Thườngcác thông tin này phục vụ cho các nhà phát triển chương trình để theo dõi hoạt động củachương trình trong giai đoạn phát triển
Mức thông tin dịch vụ: các thông tin liên quan đến hoạt động bình thường của tiến trình,chủ yếu là các hoạt động có ảnh hưởng đến các tiến trình khác
Thông tin cảnh báo: thông tin hoạt động bất bình thường của các tiến trình Các hoạtđộng bất bình thường này chưa làm ảnh hưởng đến các tiến trình khác
Thông tin báo lỗi: thông tin về lỗi xảy ra trong tiến trình, cho biết một hoặc nhiều cácchức năng quan trọng của tiến trình không thể được đảm bảo, ảnh hưởng đến một số cáctiến trình có liên quan
Thông tin lỗi hệ thống: lỗi nghiêm trọng trong các tiến trình hệ thống, tất cả các tiến trìnhtrong hệ thống đều bị ảnh hưởng
Các phần mềm khi được thiết kế đều có tính năng ghi nhật ký riêng, cho phép lọc và lưu trữcác sự kiện xảy ra trong quá trình thực hiện vào một thư mục riêng Cách thức này thườngđược sử dụng cho các phần mềm tương đối độc lập, không có nhiều các phần mềm khác phụthuộc Trường hợp các phần mềm phụ thuộc lẫn nhau, việc từng phần mềm ghi nhật ký riêng
Trang 26các phần mềm hệ thống, thông tin về các sự kiện xảy ra sẽ được chuyển đến một tiến trìnhphụ trách về việc ghi nhật ký Tiến trình này sẽ thực hiện việc lọc và ghi nhật ký cho phùhợp Với cách tiếp cận này, quản trị viên có thể cấu hình hệ thống để cho các nhật ký của cácphần mềm có liên quan có thể được ghi vào cùng một chỗ, thuận tiện cho việc phát hiện cáckịch bản sự kiện đã xảy ra của các phần mềm phụ thuộc lẫn nhau.
4.2 Cơ chế ghi nhật ký trong Linux
Trong hệ điều hành Linux, nhật ký được ghi chép theo cả 2 cách tiếp cận nói trên Một sốphần mềm độc lập (apache, postfix,…) thực hiện ghi nhật ký trực tiếp và tự quản lý các tệp nhật
ký của mình Một số phần mềm khác quản lý các sự kiện xảy ra trong phần mềm và gửi cácthông báo đến một tiến trình quản lý chung (syslogd) Căn cứ vào cấu hình nhật ký do quản trịviên xác lập, syslogd sẽ tiến hành ghi các thông tin giữa các tiến trình khác với syslogd gồmnhiều dòng, mỗi dòng mô tả một thao tác mà syslogd sẽ thực hiện khi thông báo thỏa mãn cáctiêu chí được mô tả trong trường thứ nhất Cú pháp của trường thứ nhất có dạng xxx.yyy, trong
đó xxx là nguồn của thông báo (facility), yyy là mức độ ưu tiên xử lý của thông báo (priority).Linux phân biệt các loại facility sau:
Auth: các thông báo có liên quan đến bảo mật của hệ thống
Authpriv: các thông báo liên quan đến kiểm soát truy cập
Deamon: các thông báo từ các tiến trình hệ thống và các chương trình chạy thường trú(deamon)
Trang 27 Kern: thông báo từ nhân hệ điều hành.
Mark: thông báo từ syslogd, dùng để đảm bảo thứ tự thời gian
User: thông báo đến từ các ứng dụng
Local7: thông báo do quá trình khởi động sinh ra
*: bất cứ thông báo nào
None: không có thông báo nào
Có 7 mức độ ưu tiên khác nhau của các thông báo:
Debug: các thông báo chỉ dành cho việc gỡ lỗi trong từng chương trình Có thể không sửdụng đối với các hệ thống đang vận hành
Info: các thông tin về các hoạt động bình thường của các tiến trình Phục vụ cho việc pháthiện các bất thường không thường xuyên xảy ra
Notice: Thông tin về các hoạt động bình thường, tuy nhiên cần đặc biệt chú ý
Warning: cảnh báo có khả năng xảy ra lỗi Thông thường đây là các thông báo về các lỗiphần mềm tự xử lý được, tuy nhiên có thể gây ảnh hưởng tới các tiến trình khác
Err: có lỗi xảy ra, không xử lý được
Crit: Có lỗi nghiêm trọng xảy ra, không xử lý được, ảnh hưởng tới nhiều tiến trình khác
Alert: Có lỗi nghiêm trọng xảy ra, không xử lý được, chắc chắn sẽ ảnh hưởng tới đa sốcác tiến trình khác Khuyến nghị các tiến trình nếu có thể kết thúc công việc để đảm bảo
an toàn dữ liệu
Trang 28 Emerg: Có lỗi nghiêm trọng xảy ra, không xử lý được, không đảm bảo hoạt động của hệthống.
Cách mức ưu tiên có thể phối hợp với các toán tử so sánh và logics như =,!,* và none Toán tử =được hiểu là tất cả các thông báo có cùng hoặc hơn mức ưu tiên mô tả sau toán tử ! lọc tất cảnhững thông báo không thỏa mãn biểu thức ưu tiên sau toán tử * và none tương ứng với tất cảcác mức ưu tiên và không mức ưu tiên nào được lựa chọn
Trường thứ 2 của mỗi dòng chỉ ra thao tác mà syslogd sẽ thực hiện với thông báo.Syslogd cho phép khai báo mềm dẻo các thao tác này Các thao tác này có thể là:
Ghi vào một tệp
Chuyển đến một đường ống ( để thực hiện một lệnh chẳng hạn)
Chuyển đến một tệp thiết bị
Chuyển đến một máy tính ở xa
Hiển thị thông báo cho NSD
Ví dụ:
Mail, uucp.notice;uucp.!=alert /var/log/mail
Cần chú ý là các mức ưu tiên chỉ là thỏa thuận giữa các tiến trình với nhau Việc gửi thông báovới mức độ ưu tiên nào hoàn toàn do người làm ra chương trình chủ động Đây có thể coi là một
cơ chế rất mềm dẻo để phối hợp giữa các tiến trình, nhưng đồng thời cũng là một lỗ hổng về bảomật bằng việc xem xet log, quản trị viên có thể có một cái nhìn tổng quan về các sự kiện xảy ratrong hệ thống Tuy nhiên, với những quản trị viên chưa quen với hệ thống Linux, hoặc khi cómột phần mềm nào đó thay đổi về vị trí khi nhật ký, việc tìm được các thông tin cần thiết gặpnhiều khó khăn
Kiểm tra việc cấu hình nhật ký: để kiểm tra cấu hình nhật ký theo dòng, có thể sử dụng chươngtrình logger Chương trình logger là chương trình cho phép gửi các sự kiện đến syslogd Sau đó
có thể kiểm tra xem các thông tin nhật ký có được lưu đúng vào vị trí dự định hay không
logger –p daemon.warn “ day chi la kiem tra”
Để có thể kiểm tra tất cả các mức ưu tiên, có thể viết một kịch bản cho shell
Các tệp log mà quản trị viên thường xuyên phải quan tâm là:
/var/log/message: thông tin chung về hệ thống
/var/log/auth.log: các log về xác thực
/var/log/kern.log: các log về nhân của hệ điều hành