Báo cáo BTL Linux và phần mềm mã nguồn mở Giảng viên: ThS Bành Thị Quỳnh Mai Cấu hình DNS, Mail service, Iptable, Web server
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 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 nay, người ngày hưởng nhiều tiện ích từ hỗ trợ phần mềm đặc biệt phần mềm mã nguồn mở Linux số phần mềm mã nguồn mở sử dụng ứng dụng rộng rãi phát triển từ phần mềm UNIX Linux việc trao cho người sử dụng quyền sử dụng miễn phí, có quyền chép, nghiên cứu, sửa đổi Vì vậy, phần mềm mã nguồn mở Linux ngày phát triển có phát triển cộng đồng Nước ta trình hội nhập với giới, công nghệ thông tin nước ta giai đoạn học hỏi, phát triển cộng đồng sử dụng mã nguồn mở nước ta có bước tiến hồ giới Với mong muốn có hiểu biết xác vấn đề cốt lõi phần mềm mã nguồn mở, báo cáo em đề cập tới 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 giúp đỡ giảng viên Bành Thị Quỳnh Mai cung cấp kiến thức tài liệu môn học để em hồn thành báo cáo Trong q trình tìm hiểu thực hoàn thành báo cáo, kiến thức chưa chuyên sâu phạm vi nghiên cứu hạn hẹp nên khơng tránh khỏi sai sót, mong nhận đóng góp ý kiến từ thầy để báo cáo em hồn thiệ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 Ubuntu 1.1 Tổng quan DNS Khái niệm: Domain Name System (DNS) hệ thống cho phép thiết lập tương ứng địa IP tên miền Internet Hệ thống tên miền (DNS) hệ thống giúp cho việc chuyển đổi tên miền mà người dễ ghi nhớ (dạng ký tự, ví dụ www.example.com) sang địa IP vật lý (dạng số, ví dụ 123.11.5.19) tương ứng tên miền DNS giúp liên kết với trang thiết bị mạng cho 1.2 mục đích định vị địa hóa thiết bị Internet Chức năng: Mỗi website có tên địa IP Khi mở trình duyệt Web nhập tên website, trình duyệt đến thẳng website mà khơng cần phải thông qua việc nhập địa IP trang web Quá trình "dịch" tên miền thành địa IP trình duyệt hiểu truy cập vào website công việc DNS server Các DNS giúp người sử dụng cần nhớ "tên", không cần phải nhớ địa IP (địa IP số khó nhớ) 1.3 Kiến trúc DNS: Khơng gian tên miền (Domain name space): kiến trúc dạng cây, nhiều nốt (node); nốt có nhãn có khơng 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): tạo thành từ nhãn phân cách dấu chấm (.), ví dụ nhom50120.com Tên miền chia theo cấp độ top level, cấp 1, cấp 2,… hệ thống tên miền tính theo hướng từ phải qua trái, ví dụ www.nhom50120.com có nhom50120 tên miền miền com, www tên miền 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ữ không gian tên miền Hệ thống tên miền vận hành hệ thống liệu phân tán, dạng client-server Các nốt hệ liệu máy chủ tên miền Mỗi tên miền có máy chủ DNS chứa thơng tin tên miền Các thơng tin Máy chủ tên miền lưu trữ zone Có hai dạng NS primary secondary Triển khai dịch vụ DNS Linux 2.1 Cập nhật 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: 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 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 Tổng quan Web server Khái niệm: Máy chủ web (web server) hệ thống máy tính xử lý yêu cầu thông qua http - giao thức mạng sử dụng để phân phối thông tin world wide web Web server máy chủ có dung lượng lớn, tốc độ cao, dung để lưu trữ thông tin ngân hàng liệu, chứa website thiết kế thông tin khác 1.2 Chức năng: Chức web server để lưu trữ, xử lý cung cấp trang web cho khách hàng Giao tiếp máy khách máy chủ diễn cách sử dụng Giao thức truyền siêu văn (HTTP – Hypertext Transfer Protocol) Các trang phân phối thường tài liệu HTML , bao gồm hình ảnh , trang tính tập lệnh ngồi nội dung văn Triển khai Web server Linux 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 $ 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 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 * địa IP 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 khởi động lại apache2: 2.4 - $ sudo a2enmod ssl $ sudo systemctl restart apache2 - Tạo 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ả 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 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 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 thư mục home người dùng, tạo file muốn - chia sẻ Test 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 - Tổng quan hệ thống E-mail: Thành phần hệ thống E-mail: Mail User Agent (MUA): chương trình mà người dùng sử dụng để đọc gửi e-mail Nó đọc e-mail gửi vào mail box người dùng gửi email tới MTA để gửi đến nơi nhận Các MUA thường sử dụng - Linux elm, pine, mutt Mail Tranfer Agent (MTA): hoạt động giống “mail router”, nhận e-mail từ MUA hay từ MTA khác, dựa vào thông tin phần header e-mail đưa xử lý phù hợp với e-mail đó, sau email gửi đến MDA phù hợp để gửi e-mail Các MTA thường sử dụng linux: sendmail, postfix, qmail Mail Delivery Agent (MDA): nhận e-mail từ MTA thực việc gửi email đến đích thực 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 yêu cầu xác nhận Ví dụ test gửi mail tới người dùng “trung@nhom50120.com” 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 trung@nhom50120.com $ echo “TEST MAIL SERVICE” | /usr/lib/sendmail –v trung@nhom50120.com 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ư người dùng “trung” $ sudo cat /var/mail/trung Triển khai dịch vụ mail gửi địa gmail bất kì: Bước 1: lưu cấu hình sendmail, để khơi phục lại cấu hình trước 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 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:anhngtrung@gmail.com” “antxxx” + Lưu file tạo database-map, kết thúc tạo 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: chép dòng bên 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 tạo 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 abc@gmail.com 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: Tìm hiểu Iptables: 1.1 Khái niệm: Iptables Firewall cấu hình hoạt động Console nhỏ tiện dụng, Iptables Netfilter Organiztion viết để tăng tính bảo mật hệ thống Linux 1.2 Tính Iptables: - Tích hợp tốt với kernel Linux - Có khả phân tích package hiệu - Lọc package dựa vào MAC số cờ hiệu TCP Header - Cung cấp chi tiết tùy chọn để ghi nhận kiện hệ thống - Cung cấp kỹ thuật NAT - Có khả ngăn chặn số chế cơng theo kiểu DoS 1.3 Xử lý gói iptables Tất gói liệu kiểm tra iptables cách dùng bảng xây dựng sẵn Có loại bảng gồm: - - - Mangle: chịu trách nhiệm thay đổi bits chất lượng dịch vụ TCP header TOS (type of service), TTL (time to live), MARK Filter: chịu trách nhiệm lọc gói liệu Nó gồm có quy tắc nhỏ (chain) để giúp bạn thiết lập nguyên tắc lọc gói: + Forward chain : lọc gói đến đến server khác + Input chain : lọc gói vào server + Output chain: lọc gói khỏi server NAT: gồm có loại: + Pre-routing chain: thay đổi địa đến gói liệu cần thiết + Post-routing chain: thay đổi địa nguồn gói liệu cần thiết BÁO CÁO BÀI TẬP LỚN GVHD: THS BÀNH THỊ QUỲNH MAI 21 | 2.1 LINUX VÀ PHẦN MỀM MÃ NGUỒN MỞ Triển khai dịch vụ Iptables Linux: Kiểm tra iptables thiết lập chưa: $ sudo iptables –L –v Qua trên, ta thấy chưa có lệnh áp dụng, iptables chia làm nhóm với kiểu quy tắc: - Input: áp dụng cho kết nối vào - Forward: áp dụng cho kết nối trỏ đến vị trí khác - Output: áp dụng cho kết nối từ máy chủ Thiết lập 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 gói tin bên vào mạng: $ sudo iptables –P INPUT DROP Khơng cho phép ping bên ngồi: $ sudo iptables –A OUTPUT –p icmp –icmp-type echo-request –j DROP Khơng cho phép bên ngồ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 bên ngoài: $ sudo iptables -A INPUT -p tcp -m tcp dport 25 -j ACCEPT Chặn IP: $ sudo iptables –I INPUT –s 192.168.100.100 –j DROP Chặn mạng: $ sudo iptables –A OUTPUT –d 192.168.2.0/24 –j DROP Lưu rules thiết lập 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ạp 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: Bài giảng Linux phần mềm mã nguồn mở, Ths Bành Thị Quỳnh Mai Giáo trình Linux phần mềm mã nguồn mở, Hà Quốc Trung Bài giảng Linux phần mêm mã nguồn mở, aseancu.org https://www.ostechnix.com/install-and-configure-dns-server-ubuntu-165 04-lts/ https://sites.google.com/site/dhnhanctu/home/system-manager/install- and-configure-dns https://thachpham.com/linux-webserver/iptables-linux-toan-tap.html http://vinadata.vn/virtual-host-apache-ubuntu-16-04-phan-1/ http://nguyenhuuhoang.com/huong-dan-trien-khai-server-lamp-tren- ubuntu-16-04/ https://www.sitecuatui.com/virtual-host-apache-ubuntu/ 10 http://kienthuc.pavietnam.vn/article/Huong-dan-su-dung-cac-lenh-trenIptables-Firewall.html BÁO CÁO BÀI TẬP LỚN GVHD: THS BÀNH THỊ QUỲNH MAI