TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
BÁO CÁO BÀI TẬP LỚN
HỌC PHẦN: LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
GVHD
Sinh viên thực hiện
MSSV
: ThS. Bành Thị Quỳnh Mai
: Nguyễn Trung Anh
: 20150120
Hà Nội, T3/2017
2|
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
MỤC LỤC:
BÁO CÁO BÀI TẬP LỚN
GVHD: THS. BÀNH THỊ QUỲNH MAI
3|
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
LỜI MỞ ĐẦU
Trong thời đại bùng nổ công nghệ thông tin như hiện nay,
con người ngày càng được hưởng nhiều tiện ích từ sự hỗ trợ của
các phần mềm và đặc biệt là những phần mềm mã nguồn mở.
Linux là một trong số những phần mềm mã nguồn mở được sử
dụng và ứng dụng rộng rãi nhất được phát triển từ phần mềm
UNIX.
Linux ngoài việc trao cho người sử dụng quyền sử dụng miễn
phí, còn có quyền sao chép, nghiên cứu, sửa đổi. Vì vậy, phần
mềm mã nguồn mở Linux ngày càng phát triển do có sự phát
triển của cả cộng đồng. Nước ta đang trong quá trình hội nhập
cùng với thế giới, công nghệ thông tin của nước ta đang trong giai
đoạn học hỏi, phát triển và cộng đồng sử dụng mã nguồn mở của
nước ta đang có những bước tiến hoà cùng thế giới. Với mong
muốn có những hiểu biết chính xác về những vấn đề cơ bản cốt
lõi của phần mềm mã nguồn mở, bài báo cáo của em sẽ đề cập
tới những nội dung:
Phần 1: Triển khai dịch vụ DNS.
Phần 2: Triển khai dịch vụ Web server.
Phần 3: Triển khai dịc vụ Mail.
Phần 4: Triển khai dịch vụ Iptables.
Em chân thành cảm ơn sự giúp đỡ của giảng viên Bành Thị
Quỳnh Mai đã cung cấp những kiến thức và tài liệu môn học để
em hoàn thành báo cáo của mình. Trong quá trình tìm hiểu thực
hiện và hoàn thành báo cáo, do kiến thức còn chưa chuyên sâu
và phạm vi nghiên cứu còn hạn hẹp nên không tránh khỏi những
sai sót, rất mong nhận được sự đóng góp ý kiến từ thầy cô để bài
báo cáo của em được hoàn thiện hơn.
BÁO CÁO BÀI TẬP LỚN
GVHD: THS. BÀNH THỊ QUỲNH MAI
4|
BÁO CÁO BÀI TẬP LỚN
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
GVHD: THS. BÀNH THỊ QUỲNH MAI
5|
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
NỘI DUNG BÁO CÁO:
Phần 1: Triển khai dịch vụ DNS trên Ubuntu
1.
1.1.
Tổng quan về DNS.
Khái niệm:
Domain Name System (DNS) một hệ thống cho phép thiết lập tương
ứng giữa địa chỉ IP và tên miền trên Internet.
Hệ thống tên miền (DNS) về căn bản là một hệ thống giúp cho việc
chuyển đổi các tên miền mà con người dễ ghi nhớ (dạng ký tự, ví dụ
www.example.com) sang địa chỉ IP vật lý (dạng số, ví dụ 123.11.5.19) tương
ứng của tên miền đó. DNS giúp liên kết với các trang thiết bị mạng cho các
1.2.
mục đích định vị và địa chỉ hóa các thiết bị trên Internet.
Chức năng:
Mỗi website có một tên và một địa chỉ IP. Khi mở một trình duyệt Web
và nhập tên website, trình duyệt sẽ đến thẳng website mà không cần phải thông
qua việc nhập địa chỉ IP của trang web. Quá trình "dịch" tên miền thành địa chỉ
IP để cho trình duyệt hiểu và truy cập được vào website là công việc của một
DNS server. Các DNS giúp người sử dụng chỉ cần nhớ "tên", không cần phải
nhớ địa chỉ IP (địa chỉ IP là những con số rất khó nhớ).
1.3.
Kiến trúc DNS:
Không gian tên miền (Domain name space): là một kiến trúc dạng cây, chứ
nhiều nốt (node); mỗi nốt sẽ có một nhãn và có không hoặc nhiều resource
record (RR) giữ thông tin liên quan đến tên miền (nốt root không có nhãn).
Tên miền (Domain name): được tạo thành từ các nhãn và phân cách nhau bởi
dấu chấm (.), ví dụ nhom50120.com. Tên miền còn được chia theo các cấp độ
như top level, cấp 1, cấp 2,… hệ thống tên miền được tính theo hướng từ phải
qua trái, ví dụ www.nhom50120.com có nhom50120 là tên miền con của miền
com, và www là tên miền con của miền nhom50120.com.
BÁO CÁO BÀI TẬP LỚN
GVHD: THS. BÀNH THỊ QUỲNH MAI
6|
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
Máy chủ tên miền (name servers) chứa thông tin lưu trữ của không gian tên
miền. Hệ thống tên miền được vận hành bởi hệ thống dữ liệu phân tán, dạng
client-server. Các nốt của hệ dữ liệu này là các máy chủ tên miền. Mỗi một tên
miền sẽ có ít nhất một máy chủ DNS chứa thông tin của tên miền đó. Các
thông tin của Máy chủ tên miền sẽ được lưu trữ trong các zone. Có hai dạng
NS là primary và secondary.
2.
Triển khai dịch vụ DNS trên Linux.
2.1.
Cập nhật và cài đặt gói dịch vụ bind9:
$ sudo apt-get update
$ sudo apt-get install bind9
2.2.
Cấu hình file /etc/network/interfaces
$ sudo gedit /etc/network/interfaces
-
Khởi động lại BIND, khởi động máy tính để áp dụng cấu hình mạng:
$ sudo systemctl restart bind9
2.3.
Cấu hình file /etc/bind/named.conf.options
$ sudo nano /etc/bind/named.conf.options
BÁO CÁO BÀI TẬP LỚN
GVHD: THS. BÀNH THỊ QUỲNH MAI
7|
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
2.4.
Cấu hình DNS phân giải thuận
- Cấu hình file named.conf.local:
và nghịch:
$ nano /etc/bind/named.conf.local
BÁO CÁO BÀI TẬP LỚN
GVHD: THS. BÀNH THỊ QUỲNH MAI
8|
-
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
Cấu hình file db.nhom50120.com.
$ cp /etc/bind/db.local /etc/bind/db.nhom50120.com
$ nano /etc/bind/db.nhom50120.com
-
Cấu hình file db.192:
$ cp /etc/bind/db.127 /etc/bind/db.192
$ gedit /etc/bind/db.192
2.5.
Khởi động lại dịch vụ bind9 và khởi động lại máy tính
$ systemctl restart bind9
BÁO CÁO BÀI TẬP LỚN
GVHD: THS. BÀNH THỊ QUỲNH MAI
9|
2.6.
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
Kiểm tra DNS server đã hoạt động chưa
$ dig nhom50120.com
$ nslookup 192.168.1.123
$ nslookup nhom50120.com
BÁO CÁO BÀI TẬP LỚN
GVHD: THS. BÀNH THỊ QUỲNH MAI
10 |
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
Phần 2: Triển khai Web server.
1.
1.1.
Tổng quan về Web server
Khái niệm:
Máy chủ web (web server) là một hệ thống máy tính xử lý các yêu cầu
thông qua http - một giao thức mạng cơ bản được sử dụng để phân phối thông
tin trên world wide web.
Web server là một máy chủ có dung lượng lớn, tốc độ cao, được dung để
lưu trữ thông tin như một ngân hàng dữ liệu, chứa các website đã được thiết kế
và các thông tin khác.
1.2.
Chức năng:
Chức năng chính của một web server là để lưu trữ, xử lý và cung cấp các
trang web cho khách hàng . Giao tiếp giữa máy khách và máy chủ diễn ra bằng
cách sử dụng Giao thức truyền siêu văn bản (HTTP – Hypertext Transfer
Protocol) . Các trang được phân phối thường là tài liệu HTML , có thể bao
gồm hình ảnh , các trang tính và các tập lệnh ngoài nội dung văn bản.
2. Triển khai Web server trên Linux bằng Apache2:
2.1.
Cài đặt Apache2:
$ sudo apt-get install apache2
Triển khai Name-base Web Server
Tạo Virtual Host File
2.2.
-
$ sudo nano /etc/apache2/sites-available/nhom50120.com.conf
BÁO CÁO BÀI TẬP LỚN
GVHD: THS. BÀNH THỊ QUỲNH MAI
11 |
-
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
Tạo file html cho trang chính
$ sudo nano /var/www/nhom50120.com/html/index.html
-
“enable” file Virtual Host vừa tạo, khởi động lại apache2
$ sudo a2ensite nhom50120.com.conf
$ sudo systemctl restart apache2
-
Kiểm tra bằng Web Browser (Firefox)
BÁO CÁO BÀI TẬP LỚN
GVHD: THS. BÀNH THỊ QUỲNH MAI
12 |
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
Triển khai IP-based Web Server
Chỉnh sửa file Virtual Host tạo ở phần 2.1: thay * bằng địa chỉ IP của server:
2.3.
-
$ sudo nano /etc/apache2/sites-available/nhom50120.com.conf
-
Test IP-based Web Server
BÁO CÁO BÀI TẬP LỚN
GVHD: THS. BÀNH THỊ QUỲNH MAI
13 |
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
Triển khai HTTPS Web Server
Kích hoạt SSL Module và khởi động lại apache2:
2.4.
-
$ sudo a2enmod ssl
$ sudo systemctl restart apache2
-
Tạo một Selt-Signal SSL Certificate:
$ sudo mkdir /etc/apache2/ssl
$ sudo openssl req –x509 –nodes –days 365 –newkey rsa:2048 –keyout
/etc/apache2/ssl/apache.key –out /etc/apache2/ssl/apache.crt
-
Cấu hình cho apache sử dụng SSL:
$ sudo nano /etc/apache2/sites-available/default-ssl.conf
-
Kích hoạt SSL Virtual host
$ sudo a2ensite default-ssl.conf
$ sudo systemctl restart apache2
-
Test HTTPS Web Server
BÁO CÁO BÀI TẬP LỚN
GVHD: THS. BÀNH THỊ QUỲNH MAI
14 |
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
Thêm khả năng truy cập vào tên miền www.nhom50120.com:
Chỉnh sửa file /etc/bind/db.nhom50120.com
2.5.
-
$ sudo nano /etc/bind/db.nhom50120.com
-
Vào trình duyệt và kiểm tra:
BÁO CÁO BÀI TẬP LỚN
GVHD: THS. BÀNH THỊ QUỲNH MAI
15 |
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
Cài đặt User Directory trên Web Server
Bật userdir Module:
2.6.
-
$ sudo a2enmod userdir
-
Cấu hình file /etc/apache2/mods-enable/userdir.conf
-
Tạo file public_html trong thư mục home của người dùng, tạo file muốn
-
chia sẻ.
Test trong trình duyệt:
BÁO CÁO BÀI TẬP LỚN
GVHD: THS. BÀNH THỊ QUỲNH MAI
16 |
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
Phần 3: Triển khai dịch vụ Mail
1.
-
Tổng quan về hệ thống E-mail:
Thành phần chính của hệ thống E-mail:
Mail User Agent (MUA): là chương trình mà người dùng sử dụng để đọc và
gửi e-mail. Nó đọc e-mail được gửi vào mail box của người dùng và gửi email tới MTA để gửi đến nơi nhận. Các MUA thường được sử dụng trên
-
Linux là elm, pine, mutt.
Mail Tranfer Agent (MTA): hoạt động cơ bản giống như một “mail router”,
nó nhận e-mail từ các MUA hay từ một MTA khác, dựa vào thông tin trong
phần header của e-mail nó sẽ đưa ra xử lý phù hợp với e-mail đó, sau đó email sẽ được gửi đến một MDA phù hợp để gửi e-mail đó. Các MTA thường
2.
được sử dụng trên linux: sendmail, postfix, qmail.
Mail Delivery Agent (MDA): nhận e-mail từ MTA và thực hiện việc gửi email đến đích thực sự.
Triển khai dịch vụ e-mail:
2.1.
Cài đặt sendmail:
$ sudo apt-get update
$ sudo apt-get install sendmail
$ sudo sendmailconfig
$ sudo systemctl restart sendmail
Sau câu lệnh thứ 3, tuỳ chọn y với mọi yêu cầu xác nhận hiện ra.
Ví dụ test gửi mail tới người dùng “”
Tạo người dùng với tên “trung”:
2.2.
-
$ sudo adduser trung
-
Test mail với thư gửi tới
$
echo
“TEST
MAIL
SERVICE”
|
/usr/lib/sendmail
–v
BÁO CÁO BÀI TẬP LỚN
GVHD: THS. BÀNH THỊ QUỲNH MAI
17 |
-
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
Kiểm tra hòm thư của người dùng “trung”
$ sudo cat /var/mail/trung
Triển khai dịch vụ mail gửi ra 1 địa chỉ gmail bất kì:
Bước 1: sao lưu cấu hình sendmail, để khôi phục lại cấu hình trước đó trong
2.3.
-
trường hợp có lỗi xảy ra:
$ cd / etc / mail
$ cp sendmail.cf sendmail.cf.orig
$ cp sendmail.mc sendmail.mc.orig
BÁO CÁO BÀI TẬP LỚN
GVHD: THS. BÀNH THỊ QUỲNH MAI
18 |
-
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
Bước 2: Xác thực SMTP
+ Tạo một tệp để lưu trữ thông tin xác thực Gmail để truy cập vào smtp
server, tạo thư mục /etc/mail/auth:
$ mkdir -m 700 -p /etc/mail/auth
+ Tạo file auth-info để lưu trữ thông tin đăng nhập Gmail:
$ touch /etc/mail/auth/auth-info
+ Chỉnh sửa file /etc/mail/auth/auth-info. Thêm dòng sau vào:
AuthInfo:smtp.gmail.com “U:root” “I:” “antxxx”
+ Lưu file và tạo database-map, kết thúc sẽ tạo ra file auth-info.db
$ cd / etc / mail / auth
$ makemap hash auth-info < auth-info
+ Để bảo mật, đặt quyền read-write cho người quản trị root:
$ chmod 0600 /etc/mail/auth/*
-
Bước 3: Định cấu hình sendmail.mc: sao chép các dòng bên dưới và dán vào
trước dòng MAILER đầu tiên:
define(`SMART_HOST',`smtp.gmail.com')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
define(`ESMTP_MAILER_ARGS', `TCP $h 587')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5
CRAM-MD5 LOGIN PLAIN')dnl
FEATURE(`authinfo',`hash /etc/mail/auth/auth-info')dnl
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN
PLAIN')
+ Lưu file và tạo ra file sendmail.cf:
$ cd /etc/mail
$ m4 sendmail.mc > sendmail.cf
-
Bước 4: Khởi động lại dịc vụ sendmail:
$ sudo systemctl restart sendmail
-
Bước 5: Test mail:
$ echo “TEST G-MAIL” | /usr/lib/sendmail –v
BÁO CÁO BÀI TẬP LỚN
GVHD: THS. BÀNH THỊ QUỲNH MAI
19 |
BÁO CÁO BÀI TẬP LỚN
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
GVHD: THS. BÀNH THỊ QUỲNH MAI
20 |
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
Phần 4: Triển khai dịch vụ Firewall iptables:
1.
Tìm hiểu về Iptables:
1.1.
Khái niệm:
Iptables là Firewall được cấu hình và hoạt động trên nền Console rất
nhỏ và tiện dụng, Iptables do Netfilter Organiztion viết ra để tăng tính năng
bảo mật trên hệ thống Linux.
1.2.
Tính năng của Iptables:
-
Tích hợp tốt với kernel của Linux.
-
Có khả năng phân tích package hiệu quả.
-
Lọc package dựa vào MAC và một số cờ hiệu trong TCP Header.
-
Cung cấp chi tiết các tùy chọn để ghi nhận sự kiện hệ thống.
-
Cung cấp kỹ thuật NAT.
-
Có khả năng ngăn chặn một số cơ chế tấn công theo kiểu DoS.
1.3.
Xử lý gói trong iptables
Tất cả mọi gói dữ liệu đều được kiểm tra bởi iptables bằng cách dùng
các bảng tuần tự xây dựng sẵn. Có 3 loại bảng này gồm:
-
-
-
Mangle: chịu trách nhiệm thay đổi các bits chất lượng dịch vụ trong TCP
header như TOS (type of service), TTL (time to live), và MARK.
Filter: chịu trách nhiệm lọc gói dữ liệu. Nó gồm có 3 quy tắc nhỏ (chain)
để giúp bạn thiết lập các nguyên tắc lọc gói:
+ Forward chain : lọc gói khi đi đến đến các server khác.
+ Input chain : lọc gói khi đi vào trong server.
+ Output chain: lọc gói khi ra khỏi server.
NAT: gồm có 2 loại:
+ Pre-routing chain: thay đổi địa chỉ đến của gói dữ liệu khi cần thiết.
+ Post-routing chain: thay đổi địa chỉ nguồn của gói dữ liệu khi cần thiết.
BÁO CÁO BÀI TẬP LỚN
GVHD: THS. BÀNH THỊ QUỲNH MAI
21 |
2.
2.1.
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
Triển khai dịch vụ Iptables trên Linux:
Kiểm tra iptables đã được thiết lập chưa:
$ sudo iptables –L –v
Qua trên, ta thấy chưa có lệnh nào được áp dụng, iptables chia làm 3
nhóm với 3 kiểu quy tắc:
- Input: áp dụng cho các kết nối đi vào.
- Forward: áp dụng cho các kết nối đã được trỏ đến một vị trí khác.
- Output: áp dụng cho các kết nối đi ra từ một máy chủ.
Thiết lập các lệnh:
Xoá cấu hình tường lửa cài sẵn:
2.2.
$ sudo iptables -F
Mặc định drop tất cả các gói tin bên ngoài vào mạng:
$ sudo iptables –P INPUT DROP
Không cho phép ping ra bên ngoài:
$ sudo iptables –A OUTPUT –p icmp –icmp-type echo-request –j DROP
Không cho phép bên ngoài ping tới:
$ sudo iptables –A INPUT –p icmp –icmp-type echo-request –j REJECT
Không cho phép truy cập web:
$ sudo iptables –A INPUT –p tcp –dport 80 –j DROP
Cho phép truy cập vào hanu.vn:
$ sudo iptables –I INPUT –p tcp –d 113.171.23.52 - - dport 80 –j ACCEPT
Chặn giao thức FTP:
$ sudo iptables –A INPUT –p tcp –dport 21 –j DROP
Mở port 25 cho phép gửi SMTP Mail ra bên ngoài:
$ sudo iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
Chặn 1 IP:
$ sudo iptables –I INPUT –s 192.168.100.100 –j DROP
Chặn 1 mạng:
$ sudo iptables –A OUTPUT –d 192.168.2.0/24 –j DROP
Lưu các rules đã thiết lập ra 1 file:
$ sudo iptables-save > iptables-rules.txt
BÁO CÁO BÀI TẬP LỚN
GVHD: THS. BÀNH THỊ QUỲNH MAI
22 |
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
Sau này có thể nạp các rules đã thiết lập sẵn từ file đã lưu:
$ sudo iptables-restore < iptables-rules.txt
Test thử rules
BÁO CÁO BÀI TẬP LỚN
GVHD: THS. BÀNH THỊ QUỲNH MAI
23 |
LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ
DANH MỤC TÀI LIỆU THAM KHẢO:
1. Bài giảng Linux và phần mềm mã nguồn mở, Ths Bành Thị Quỳnh Mai.
2. Giáo trình Linux và phần mềm mã nguồn mở, Hà Quốc Trung.
3. Bài giảng Linux và phần mêm mã nguồn mở, aseancu.org
4. />
04-lts/
/>
6.
7.
8.
and-configure-dns
/> /> />
ubuntu-16-04/
9. />10.
/>
BÁO CÁO BÀI TẬP LỚN
GVHD: THS. BÀNH THỊ QUỲNH MAI