XÂY DỰNG HỆ THỐNG MẠNG UBUNTU
Trang 1TRÍCH YẾU
Đề tài đồ án chuyện ngành của chúng tôi là : xây dựng hệ thống mạng ubuntu bao gồm LDAP servre, Web Server , Mail Server , DNS , DHCP , File Server , Firewall Qua việc nghiên cứu các tài liệu về Ubuntu và thực hành các bài lab , chúng tôi đã xây dựng được một hệ thống mạng cơ bản với LDAP Server làm cơ sở dữ liệu cho các dịch vụ khác như SAMBA , MAIL ,WEB v.v trong môi trường quản lý tập trung trên hệ điều hành Ubuntu
Trang 2TRÍCH YẾU 1
LỜI CẢM ƠN 5
PHÂN CÔNG TRONG NHÓM 6
GIỚI THIỆU 7
PHẦN LÝ THUYẾTPHẦN 1: LDAP 8
I Giới Thiệu : 9
II Tổng quát về LDAP : 10
III CẤU TRÚC LDAP : 11
1 Cấu Trúc Cây Thư Mục Trong Hệ Điều Hành dòng Unix 11
2 Directory Servive 11
3 LDAP Directory 12
4 Distinguished Name 12
5 LDAP Schema 12
6 Object class 13
7 LDIF 13
8 LDAP là một giao thức hướng thông điệp 13
PHẦN 2: SAMBA SERVER 16
I Giới thiệu Samba: 16
II Giới Thiệu NFS (Network File System) : 17
III Cấu hình và khởi động dịch vụ Samba 17
IV SAMBA và LDAP : 21
PHẦN 3: MAIL SERVER 22
I Một số thuật ngữ : 22
1 MTA ( Mail Transfer Agent ) : 22
2 MDA ( Mail Delivery Agent ) : 22
3 MUA ( Mail User Agent ) : 22
4 SMTP ( Simple Mail Transfer Protocol ) : 22
5 POP3 ( Post Office Protocol 3 ) : 23
6 IMAP (Internet Message Access Protocol) : 23
II Quá trình gửi và nhận 1 email như thế nào : 23
III Postfix : 24
1 Giới Thiệu : 24
2 Cấu trúc của Postfix : 24
a Thành Phần của Postfix : 24
b Messages vào hệ thống Postfix như thế nào: 25
c The Postfix Queue : 27
d Mail Delivery : 27
e Tracing a Message Through Postfix : 29
3 Postfix với LDAP : 31
IV DOVECOT : 31
1 Giới Thiệu : 31
2 Cơ bản về cấu hình dovecot : 31
3 Dovecot và LDAP : 33
a Password lookups: 34
b Authentication binds : 35
PHẦN 4 : FIREWALL 36
I FireWall là gì : 36
II Phân Loại Firewall : 36
1 Firewall cứng : Là những firewall được tích hợp trên Router 36
2 Firewall mềm: Là những Firewall được cài đặt trên Server 36
III Tại sao cần Firewall ? 37
IV IPTABLE FRIWALL: 37
1 Giới thiệu : 37
Trang 33 Trình tự xử lý gói tin của iptables : 38
PHẦN 5 : DNS SERVER 41
I Giới Thiệu: 41
II The Reverse Zone File : 41
III Master (Primary) Name Servers : 41
IV Slave (Secondary) Name Servers : 42
V Stealth (a.k.a DMZ or Split) Name Server : 43
PHẦN 6: WEB SEVER (APACHE) 45
I Giới Thiệu : 45
1 Mô Hình Hoạt Động: 46
2 Địa Chỉ URL : 46
II Giới Thiệu Về APACHE : 46
1 Tổng Quan : 46
III APACHE VÀ LDAP : 47
1 The Authentication Phase : 48
2 The Authorization Phase : 48
3 The Require Directives : 49
a Require ldap-user : 49
b Require ldap-group : 50
c Require ldap-dn: 51
d Require ldap-attribute : 51
e Require ldap-filter : 52
PHẦN 7 : DHCP 53
I Vai Trò Của DHCP Trong Một Hệ Thống Mạng : 53
1 DHCP là gì : 53
2 DHCP làm việc như thế nào: 53
II Bổ Sung Và Cấp Phép Cho Dịch Vụ DHCP Hoạt Động : 53
1 Tại sao sử dụng dịch vụ DHCP: 53
2 Địa chỉ IP động đặc biệt là gì ? 53
3 Cách thức cấp phát địa chỉ IP động : 53
III Cấu Hình Phạm Vi Cấp Phát Của Dịch Vụ DHCP: 54
1 Phạm vi cấp phát DHCP là gì : 54
2 Tại sao phải sử dụng phạm vi cấp phát DHCP? 54
IV Cấu hình địa chỉ DHCP giành sẵn (Reservations) và các tùy chọn của DHCP: 54
1 Địa chỉ DHCP dành sẵn là gì? 54
2 Một dải địa chỉ IP dành sẵn bao gồm có các thông tin sau : 54
3 Tùy chọn DHCP là gì? 54
4 Tại sao phải sử dụng tùy chọn DHCP? 54
5 Một số tùy chọn chung của DHCP: 54
V CẤU HÌNH DHCP DHCP Relay Agent: 55
1 DHCP relay agent là gì? 55
2 Tại sao phải sử dụng DHCP relay agent: 55
VI Phương thức hoạt động của dịch vụ DHCP: 55
I Chuẩn bị : 59
II Cài đặt và cấu hỉnh LDAP và SAMBA server 59
III Cấu hình client Winodws Xp và Windows 7 vào hệ thống SAMBA: 74
1 Tạo user trên SAM PDC : 74
2 Join windows Xp SP2 : 75
3 Join Windows 7 : 77
PHẦN 2 : MAIL SERVER VÀ DNS SERVER 79
I Cài đặt và cấu hình DNS: 79
1 Cài đặt : 79
2 Cấu hình DNS server : 79
II Cài đặt và cấu hình Mail server với Postfix và Dovecot : 81
Trang 41 Cài đặt : 81
2 Cấu hình : 83
PHẦn 4: FTP VÀ FIREWALL 89
I FTP : 89
1 Giới thiệu : 89
2 Cài đặt : 89
3 Cấu hình Proftpd với LDAP : 90
II FIREWALL: 91
1 Giới thiệu : 91
2 Cấu hình NAT : 91
3 NAT inbound cho web server : 93
PHẦN 5: WEB SERVER 94
1 Cài Đặt : 94
PHẦN 6 : CẤU HÌNH DHCP 98
Trang 5LỜI CẢM ƠN
Nhóm chúng em xin chân thành cảm ơn thầy Lưu Thanh Trà và anh Lê Hữu Tài , giảng viên phụ trách hướng dẫn đồ án hướng ngành của chúng em Thầy Trà và anh Tài đã giúp chúng em về lý thuyết cũng như thực thành để chúng em hoàn thành được đồ án này
Trang 6PHÂN CÔNG TRONG NHÓM
Thực hành Cấu hình LDAP Server , SAMBA server
Mailserver , file server
Hiệu
Thực hành Cấu hình DHCP , Firewall Hậu
Thực hành cấu hỉnh DNS, WEB server Công
Trang 7GIỚI THIỆU
Ubuntu là một hệ điều hành mã nguồn mở xây dựng xung quanh nhân Linux , được cộng đồng cùng phát triển Hệ điều hành Ubuntu có đầy đủ chức năng của một hệ điều hành hiện đại, hoạt động tốt trên máy tính để bàn, máy tính xách tay và hệ thống máy chủ Tuy
ra đời chưa lâu, nhưng hệ điều hành này đang có những bước tiến nhảy vọt, sức lan toả rất lớn, hiện đang được sử dụng rất rộng rãi trên thế giới và đang dần dần phổ biến ở Việt Nam
Lịch sử của Ubuntu bắt đầu từ tháng Tư năm 2004, khi Mark Shuttleworth tập hợp một nhóm các nhà phát triển phần mềm mã nguồn mở để tạo ra một hệ điều hành mới Với quyết tâm hiện thực hoá những ý tưởng, các lập trình viên này đặt tên nhóm là Warthogs
và cùng nhau làm việc trong sáu tháng để cho ra đời phiên bản thể hiện khái niệm của hệ điều hành mới Họ lấy tên nhóm đặt cho phiên bản Ubuntu đầu tiên này, Warty Warthog
Dựa trên nền tảng chắc chắn của bản phân phối Debian, cùng với những nguyên tắc về thời gian phát hành, chương trình GNOME để quản lý giao diện Desktop, và một cam kết mạnh mẽ về sự tự do, chỉ trong vòng ba năm, Ubuntu đã phát triển một cộng đồng lên đến mười hai ngìn thành viên và số lượng người dùng ước tính đến hơn tám triệu (tháng Bảy năm 2007)
Những năm gần đây Ubuntu được biết đến như một hệ điều hành thân thiên trong môi trường Desktop nhưng các phiên bản server của Ubuntu cũng phát triển mạnh, qua đây chúng tôi xin được triển khai một hệ thống mạng cơ bản dựa trên các nên tảng Ubuntu, tạo ra một trường Domain tương tác giữa người dùng windows là Linux được quản lý tập trung , chia sẽ nguồn tài nguyên đồng thời xây dựng hệ thông email trong mạng
Trang 8PHẦN LÝ THUYẾT
Trang 9PHẦN 1: LDAP
I Giới Thiệu :
LDAP viết tắt Lightweight Directory Access Protocol (tiếng Việt có thể gọi là: giao thức truy cập nhanh các dịch vụ thư mục) là một chuẩn mở rộng cho phương thức truy cập thư mục, hay là một ngôn ngữ để LDAP server và client sử dụng để giao tiếp với nhau
Các tính chất của LDAP:
Đây là một giao thức hướng thông điệp
Là một giao thức tìm, truy nhập các thông tin dạng thư mục trên server
Nó là một giao thức Client/Server dùng để truy cập dịch vụ thư mục, dựa trên dịch vụ thư mục X500
LDAP chạy trên TCP/IP hoặc những dịch vụ hướng kết nối khác
Là một mô hình thông tin cho phép xác định cấu trúc và đặc điểm của thông tin trong thư mục
Là một không gian tên cho phép xác định cách các thông tin được tham chiếu và tổ chức
Một mô hình các thao tác cho phép xác định các tham chiếu và phân bố
dữ liệu
Là một giao thức mở rộng, được định nghĩa nhiều phương thức mở rộng cho việc truy cập và update thông tin trong thư mục
Là một mô hình thông tin mở rộng
Vì LDAP tổ chức dữ liệu theo thư mục phân cấp nên có tính mô tả cao, được tối ưu cho việc tìm kiếm
LDAP được so sánh với lightweight vì sử dụng gói tin overhead thấp, được xác định chính xác trên lớp TCP (vì X.500 là một giao thức ứng dụng và chứa nhiều thứ hơn như network header được bao quanh các gói tin ở mỗi layer trước khi nó
Trang 10chuyển đi trong mạng) Mặt khác LDAP được coi là lightweight vì đã lược bỏ rất nhiều phương thức ít được dùng của X.500
Ở đây chúng ta cần tránh hiểu nhầm từ "thư mục" như trên Windows là folder hay directory, đó là thư mục theo nghĩa hẹp để quản lý hệ thống tệp tin Từ thư mục trong LDAP mang ý nghĩa rộng hơn, nó bao hàm các cấu trúc dữ liệu dạng liệt kê theo thư mục (hay mục lục) - một "từ khoá" của dân thư viện nhằm ám chỉ cách thức sắp xếp dữ liệu để tiện truy xuất nhất
OpenLDAP là 1 mô hình quản lý tập trung không thể thiếu đối với admin về open source, nó tương đương với AD bên Windows Server 2003 vì đều dựa trên chuẩn X.500 và X.509 về quản lý mạng trên mô hình logical phân cấp
II Tổng quát về LDAP :
Một cách tổng quát mà nói, LDAP thường phân chia theo O (Organisation -
tổ chức) và các OU (Organisation Unit - phân bộ) Trong các OU có thể có những
OU con và trong các OU có các CN (Common Name), những nhóm giá trị này thường được gọi là DN (Distinguished Name - tên gọi phân biệt) Mỗi giá trị chứa
Trang 11attr, mỗi attr được nhận diện như một LDAP Object
Những điểm ở trên hình thành một cái gọi là LDAP schema và có tiêu chuẩn thống nhất giữa các ứng dụng phát triển LDAP Đây là lý do LDAP được ưa chuộng cho công tác lưu trữ và tích hợp với các cơ phận authentication / authorisation vì chúng có thể được dùng giữa các LDAP system (bất kể công ty sản xuất) miễn sao các cty sản xuất tuân thủ đúng tiêu chuẩn chung
LDAP đóng vai trò rất quan trọng trong việc ứng dụng SSO (single sign on) Điều này có nghĩa là một người đăng nhập vào một hệ thống, người ấy có thể truy cập đến các servers / services / tài nguyên cho phép mà không cần phải xác thực lại Thử hình dung việc logon mail.yahoo.com, sau đó có thể nhảy đến yahoo
360, yahoo mailing list mà không cần phải xác thực tài khoản nữa Thử hình dung yahoo sẽ có những dịch vụ khác và mỗi yahoo account chỉ cần chứa ở 1 nơi
và các dịch vụ để dùng chung một LDAP chứa account để xác thực người dùng Thử hình dung yahoo có 1000 servers và 1000 /etc/passwd file để bảo trì ) Ngoài ra, LDAP được tạo ra đặc biệt cho hành động "đọc" Bởi thế, xác thực người dùng bằng phương tiện "lookup" LDAP nhanh, hiệu suất, ít tốn tài nguyên, đơn giản hơn là query 1 user account trên CSDL
III CẤU TRÚC LDAP :
1 Cấu Trúc Cây Thư Mục Trong Hệ Điều Hành dòng Unix
Một thư mục là danh sách các thông tin về các đối tượng, được sắp xếp một cách chi tiết về mỗi đối tượng Trong máy tính, thư mục là một cơ sở dữ liệu đặc biêt để lưu trữ thông tin về các đối tượng Thư mục thường được đọc nhiều hơn là update và ghi
Hệ thống tập tin của Unix được tổ chức theo một hệ thống phân bậc tương tự cấu trúc của một cây thư mục, bao gồm 1 thân thẳng đứng và các cành lớn chiã ra Bậc cao nhất của hệ thống tập tin là thư mục gốc, được ký hiệu bằng vạch chéo “/” (root directory) Đối với các hệ điều hành Unix và Linux tất các thiết bị kết nối vào máy tính đều được nhận ra như các tập tin, kể cả những linh kiện như ổ điã cứng, các phân vùng điã cứng và các ổ USB, chẳng hạn
2 Directory Servive
Đây là một loại service cụ thể nằm trong client hoặc server.Tuy nhiên một
số người thường nhầm lẫn Directory service giống như một database Tuy giữa hai cái có một số chức năng giống nhau như hỗ trợ tìm kiếm dữ liệu và chứa các file cấu hình hệ thống nhưng Directory service được hitết kế để lấy dữ liệu nhiều hơn
là ghi còn Database cung cấp khả năng đọc và ghi dữ liệu liên tục
Trang 123 LDAP Directory
Thành phần cơ bản của LDAP directory là ENTRY, đây là nơi chứa toàn bộ thông tin của một đối tượng Mỗi entry có một tên đặc trưng gọi là DN (Distinguished Name)
Mỗi entry là tập hợp của các thuộc tính, từng thuộc tình này mô tả một nét đặc trưng tiêu biểu của một đối tượng Mỗi thuộc tính có kiểu một hay nhiều giá trị, kiểu của thuộc tính mô tả loại thông tin được chứa, giá trị là dữ liệu thực sự
Hình ảnh thể hiệm sự liên quan giữa Entry và Attribute
4 Distinguished Name
Distinguished Name (DN) là tên của một entry trong LDAP DN chỉ ra cách bạn có thể tham chiếu đến các entry trên thư mục, hai entru khsc nhau trên thư mục có hai DNs khác nhau Tên của một entry LDAP được hình thành bằng cách nối tất cả các tên của từng entry cấp trên (cha) cho đến khi trở lên root, giống như đường dẫn cảu hệ thống tập tin
Ví dụ: uid=John, ou=people, dc=abc, dc=com
5 LDAP Schema
Thiết lập các mô tả những loại data nào được lưu trữ giúp quản lý một cách nhất quán về chất lượng của data và giảm sự trùng lắp data
LDAP Schema chứ những thông tin sau:
Những thuộc tính yêu cầu
Những thuộc tính được phép
So sánh các thuộc tính đó như thế nào
Giới hạn những thuộc tính gì có thể lưu trữ
Những thuộc tính gì thì bị cấm lưu trữ hay sao lưu
Trang 13 Dễ dàng lấy được nhóm thông tin
Entry bắt buộc phải có objectclass và có thể có nhiều objectclass Các
objectclass theo chuẩn LDAP là: Groups in the directory, Locations,
Organizations in the directory, People in the directory
7 LDIF
Được viết tắt từ LDAP Interchange Format Được sử dụng để thêm dữ liệu mới vào trong directory hoặc thay đổi dữ liệu đã cũ Đây là một chuẩn định dạng file text lưu trữ những thông tin cấu hình LDAP và nội dung thư mục
Thông thường một file LDIF sẽ theo dạng sau:
Mỗi tập entry khác nhau được phần cách bởi một dòng trắng
Tên thuộc tính được sắp theo giá trị
Một tập các chỉ dẫn cú pháp để làm sao xử lý được thông tin
Dữ liệu trong file LDIF tuân theo luật trong schema của LDP Directory Vì vậy mọi thành phần được thêm vào hoặc thay đổi trong directory sẽ được kiểm tra lại trong schema để đảm bảo sự chính xác
8 LDAP là một giao thức hướng thông điệp
Client sẽ tạo một thông điệp (LDAP Message) chứa yêu cầu và gửi nó đến cho server Khi nhận được thông điệp server sẽ xử lý yêu cầu của client sau đó gửi trả cho client cũng bằng một thông điệp LDAP
Ví dụ: khi Client muốn tìm kiếm trên thư mục, client sẽ tạo LDAP tìm kiếm và gửi thông điệp cho server Khi nhận được thông điệp server sẽ tiến hành tìm kiếm trong cơ sở dữ liệu và gửi kết quả bằng một thông điệp LDAP
Trang 14Hình ảnh mô phỏng thao tác tìm kiếm theo hướng thông điệp của LDAP
Client được phép phát ra nhiều thông điệp yêu cầu đồng thời cùng một lúc Trong LDAP, message ID dùng để phân biệt các yêu cầu của client và kết quả trả
về của server Việc cho phép nhiều thông điệp cùng xử lý đồng thời này làm cho LDAP linh động hơn các giao thức khác
Ví dụ: giao thức HTTP với mỗi yêu cầu từ client phải được trả lời trước khi một yêu cầu khác gửi đi, một HTTP client program như web browser muốn tải cùng một lúc nhiều file thì web browser phải thực hiện mở từng kết nối cho từng file
Trong khi LDAP quản lý tất cả thao tác trên một kết nối
Trang 15Hình ảnh các thông điệp được xử lý đồng thời của LDAP
Trang 16PHẦN 2: SAMBA SERVER
I Giới thiệu Samba:
Các hệ thống Linux sử dụng giao thức TCP/IP trong kết nối mạng, trong khi đó hệ điều hành của Microsoft sử dụng một giao thức kết nối mạng khác – giao thức Server Message Block (SMB), giao thức này sử dụng NetBIOS để cho phép các máy tính chạy Windows chia sẻ các tài nguyên với nhau trong mạng cục
bộ Để kết nối tới các mạng lớn, bao gồm cả những hệ thống Unix, Microsoft phát triển Common Internet File System (CIFS), CIFS vẫn sử dụng SMB và NetBIOS cho mạng Windows Có một phiên bản của SMB được gọi là Samba, Samba cho phép các hệ thống Unix và Linux kết nối tới mạng Windows Các hệ thống Unix/Linux có thể sử dụng các tài nguyên trên hệ thống Windows, đồng thời nó cũng chia sẻ tài nguyên trên hệ thống cho máy tính Windows
Gói phần mềm Samba có chứa hai daemon dịch vụ và nhiều chương trình tiện ích một daemon là smbd cung cấp các dịch vụ tập tin và in ấn cho các hệ thống khác có hỗ trợ SMB Một daemon là nmbd cung cấp chức năng phân giải tên NetBIOS và hỗ trợ dịch vụ duyệt thư mục
Samba cung cấp bốn dịch vụ chính: dịch vụ chia sẻ tập tin và máy in, xác thực và cấp phép, phân giải tên và thông báo dịch vụ Daemon SMB, smbd, cung cấp các dịch vụ chia sẻ tập tin và máy in, cũng như xác thực và cấp phép cho những dịch vụ này Điều này có nghĩa là người dùng trên mạng có thể dùng chung các tập tin và máy in Người dùng có thể điều khiển truy nhập tới những dịch vụ này bằng cách yêu cầu người dùng phải nhập mật mã truy nhập, Điều khiển truy nhập có thể được thực hiện ở hai chế độ : chế độ dùng chung (share mode) và chế
độ người dùng (user mode) Chế động dùng chung sử dụng một mật mã truy nhập tài nguyên chung cho nhiều người dùng Chế độ người dùng cung cấp cho mỗi tài khoản người dùng mật mã truy nhập tài nguyên khác nhau Vì lý do phải quản lý mật mã truy nhập, Samba có sử dụng tập tin /etc/samba/smbpassword để lưu trữ các mật mã truy nhập người dùng
Để cấu hình và truy nhập một hệ thống Samba và Linux, người dùng cần thực hiện các thủ tục chính sau:
Cấu hình dịch vụ và khởi động dịch vụ Samba
Khai báo tài khoản sử dụng Samba
Truy nhập dịch vụ Samba
Các tập tin cấu hình dịch vụ:
/etc/samba/smb.conf Tập tin cấu hình của Samba /etc/samba/smbpasssword Chứa mật mã truy nhập của người dùng /etc/samba/smbusers Chứa tên hiệu cho các tài khoản của Samba
Trang 17Các tiện ích của dịch vụ Samba
smbadduser Tạo tài khoản Samba
smbpasswd Thay đổi thông tin tài khoản Samba
smbclient Truy nhập dịch vụ SMB smbstatus Theo dõi tình trạng kết nối hiện hành
II Giới Thiệu NFS (Network File System) :
Network File System - NFS do công ty Sun Microsystems tạo ra với mục đích dùng để chia sẻ các tập tin và thư mục giữa những hệ điều hành UNIX Với NFS, khi một tập tin hoặc thư mục được dùng chung, nó gần như trở thành một phần hệ thống của người dùng thay vì có mặt trên máy ở xa Ví dụ nếu người dùng có một máy Linux chứa đầy hệ thống tập tin gồm các trò chơi thì NFS sẽ cho phép người dùng thiết lập hệ thống tập tin game này để nó xuất hiện trên máy của người dùng như là một phần cấu trúc thư mục chuẩn Mỗi khi truy cập khu vực chứa game, người dùng sẽ đi qua mạng để đến máy khác nhưng nhờ có NFS nên chẳng có gì khó khăn (ngoại trừ những chậm trễ về thời gian)
NFS có thể sử dụng cho nhiều kiểu mạng khác nhau nhưng thực tế nó được thiết kế để làm việc với TCP/IP và hiện nay NFS vẫn được sử dụng phổ biến trên các mạng TCP/IP Do nhiều người ưa chuộng nên NFS đã hình thành trên các hệ điều hành khác để có thể dùng chung thư mục trên các mạng đa chủng loại
Bên trong hệ điều hành Linux và UNIX, NFS sẽ hoạt động ở chế độ ngang hàng Điều này có nghĩa máy tính của người dùng có vai trò như một máy khách của dịch vụ NFS trên một máy khác và là máy phục vụ cho những máy khác trên mạng hoặc đồng thời đóng cả hai vai trò
Nhiều người thích dùng dịch vụ NFS phục vụ cho công việc kinh doanh ưng họ ngại lập cấu hình NFS cho hệ thống Linux ở nhà vì cho rằng tiến trình lập cấu hình sẽ rối rắm, phức tạp và phải nắm vững nhiều kiến thức về các hệ điều hành Chính vì lý do này nên nhiều người không màng quan tâm đến NFS Điều này thật đáng tiếc vì NFS là một trong những dịch vụ hiệu quả nhất do TCP/IP cung cấp
nh-Ghi chú:
Một vài sản phẩm mới hơn như Visionfs có thể làm cho việc cài đặt và sử dụng các trình điều khiển trên mạng trở nên dễ dàng hơn Mặc dầu, đây là những sản phẩm mang tính thương mại nhưng chúng có thể khả dụng đối với Linux
III Cấu hình và khởi động dịch vụ Samba
Daemon của dịch vụ Samba sử dụng tập tin cấu hình /etc/samba/smb.conf Tập tin này được chia thành hai phần chính: một phần dành cho những lựa chọn toàn cục của dịch vụ và phần còn lại dành cho khai báo tài nguyên được đưa lên mạng dùng chung Các lựa chọn toàn cục được khai báo ở phần đầu tập tin cấu hình Trong mỗi phần có chứa một hay nhiều nhóm Mỗi nhóm (ngoại trừ nhóm
Trang 18[global]) chứa các khai báo về một tài nguyênn được hia sẻ Một nhóm được bắt đầu bởi tên nhóm (share_name, được đặt trong cặp dấu ngoặc vuông []), tiếp theo sau là các khai báo tham số của nhóm, mỗi khai báo tham số nằm trên một dòng
và có dạng như sau: name=value(chú ý là tên của nhóm và tham số không phân biệt chữ thường và chữ hoa), những dòng nào được bắt đầu bởi ký tự ‘;’ hoặc ‘#’
Các tham số trong nhóm này được áp dụng một cách toàn cục cho toàn dịch
vụ, đồng thời, một số tham số trong nhóm này cũng là các tham số mặc định của các nhóm không khai báo tường minh Nhóm này phải được đặt tại phần đầu trong tập tin cấu hình /etc/samba/smb.conf
Một số tham số cơ bản trong nhóm [global] cần được cấu hình bao gồm:
Giá trị mặc định là yes Với tham số này, Samba sẽ thực hiện mã hoá mật
mã để tương thích được với cách mã hóa của windows Trong trường hợp không
mã hóa mật mã, người dùng chỉ có thể sử dụng dịch vụ Samba giữa các máy Linux với nhau hoặc người dùng phải cấu hình lại máy tính Windows nếu muốn sử dụng dịch vụ Samba trên Linux
smb passwd file Nếu encrypt passwords=yes, tham số này sẽ xác định tập chứa mật mã đã được mã hóa Mặc định là /etc/samba/smbpasswd
Trang 19Khai báo này xác định cách thức các máy tính “trả lới” dịch vụ Samba Mặc định tham số này có giá trị là user, giá trị cần sử dụng khi kết nối tới các máy tính windows
Thí dụ về các khai báo trong phần [global] như sau:
log file = /var/log/samba/%m.log
#che do bao mat
security = user
#ma hoa mat ma de tuong thich voi Windows
encrypt passwords = yes smb passwd file = /etc/samba/smbpasswd
#nguoi dung Unix co the su dung nhieu ten truy nhap SMB
username map = /etc/samba/smbusers
Nhóm [homes]
Nhóm [homes] xác định các điều khiển mặc định cho truy nhập thư mục chủ của người dùng thông qua giao thức SMB bởi người dùng từ xa Khi có yêu cầu kết nối, Samba sẽ thực hiện kiểm tra các nhóm hiện có, nếu nhóm nào đáp ứng được yêu cầu, nhóm đó sẽ được sử dụng Nếu không đáp ứng được yêu cầu, tên nhóm được yêu cầu sẽ đựơc coi như tên tài khoản người dùng và tìm kiếm trong tập tin chứa mật mã của Samba Nếu tên tài khoản này tồn tại ( và đúng mật mã) một tài nguyên sẽ được tạo ựa trên nhóm [homes]
Thí dụ về các khai báo trong nhóm [homes] như sau:
Tương tự như nhóm [homes] nhưng dành riêng cho máy in
Khi có yêu cầu kết nối Samba sẽ thực hiện kiểm tra các nhóm hiện có, nếu nhóm nào đáp ứng được yêu cầu, nhóm đó sẽ được sử dụng Nếu không đáp ứng được
Trang 20yêu cầu, nhưng nhóm [homes] tồn tại nó sẽ được xử lý như mô tả ở trên Mặt khác, tên nhóm được yêu cầu cũng được xử lý như một tên của máy in và Samba thực hiện tìm kiếm tập tin printcap tương ứng để xác định xem tên nhóm được yêu cầu có hợp lệ không Nếu hợp lê, một tài nguyên dùng chung sẽ được dựa trên nhóm [ printers]
Thí dụ về các khai báo trong nhóm [printers] như sau:
[printers]
comment = All Printers path = /var/spool/samba browserable = no
public = yes printable = yes
Ngoài ba nhóm đặc biệt đựơc nêu trên, để thực hiện tạo các nguyên dùng chung khác, người dùng cần thực hiện tạo thêm các nhóm khai báo thông tin về tài nguyên này Các nhóm dành cho các tài nguyên dùng chung, như là các thư mục trên hệ thống, thường được đặt sau nhóm [homes] và [printers] và có thể đặt tên bất kỳ
Các tham số thường được khai báo trong các nhóm khai báp tài nguyên dùng chung trong tập tin cấu hình /etc/samba/smb.conf bao gồm :
Có giá trị là yes hoặc no Nếu là browseable = yes, thì thư mục được dùng chung
sẽ được nhìn thấy ở trên mạng Giá trị mặc định là yes
valid users
Danh sách những người dùng được quyền truy nhập tài nguyên dùng chung Tên người dùng được cách nhau bởi khoảng trắng hoặc ký tự ‘,’ Tên nhóm được đứng trước bởi ký tự ‘@’
invalid users
Danh sách những người dùng không được quyền truy nhập tài nguyên dùng chung Tên người dùng được cách nhau bởi khoảng trắng hoặc ký tự ‘,’ Tên nhóm được đứng trước bởi ký tự ‘@’
writeable
Có giá trị là yes hoặc no Nếu là writeable = yes người dùng được phép ghi vào
Trang 21write list Xác định danh sách người dùng/nhóm có quyền ghi tới thư mục dùng chung Trong trường hợp chỉ ra tên nhóm, trước tên nhóm phải là một ký tự ‘@’
[mydoc]
path=/home/shired public=no
valid users = allan piter @staff writable = yes
Thí dụ : “path = /home/%u” sẽ được phiên dịch là “path=/ymp/foo” nếu tài khoản foo thực hiện truy nhệp
Khởi động dịch vụ Samba Sau mỗi lần thay đổi nội dung tập tin /etc/samba/smb.conf, người dùng cần khởi động lại dịch vụ Samba để cập nhật lại cấu hình mới Để khởi động lại dịch vụ Samba, người dùng thi hành lệnh sau:
# /etc/rc.d/init.d/smb restart | start | stop
IV SAMBA và LDAP :
SAMBA có thể sử dụng lưu trữ thông tin đăng nhập của user , printer , objectsfiles ở 1 trong 3 dạng ,và được định nghĩa bằng khóa “passdb backend”:
A flat text file :
A trivial database (tdb) file
An LDAP directory service
Trang 22PHẦN 3: MAIL SERVER
I Một số thuật ngữ :
Trước tiên , chúng ta tìm hiểu 1 số thuật ngữ như sau :
1 MTA ( Mail Transfer Agent ) :
MTA ( Mail Transfer Agent) là thành phần chuyển nhận mail
Khi các email được gởi đến từ MUA, MTA có nhiệm vụ nhận diện người gởi và người nhận từ thông tin đóng gói trong phần header của thư và điền các thông tin cần thiết vào header
Sau đó MTA chuyển thư cho MDA để chuyển đến hộp thư ngay tại MTA, hoặc chuyển cho Remote MTA
Một phần hay cả bức thư có thể phải viết lại tại các MTA trên đường đi
SMTP là ngôn ngữ của MTAs
Một số phần mềm là MTA : Postfix, Exim, Mdaemon, Exchange Server, Sendmail, Qmail
2 MDA ( Mail Delivery Agent ) :
MDA (Mail Delivery Agent) là một chương trình được MTA sử dụng để đẩy thư vào hộp thư của người dùng Hộp thư của người dùng có thể dùng định dạng Mailbox hay Maildir
MDA có khả năng lọc thư, định hướng thư,…
MTA được tích hợp với một MDA hoặc một vài MDA
Một số MDA là : Maildrop, Promail, Dovecot…
3 MUA ( Mail User Agent ) :
MUA là chương trình quản lý thư đầu cuối cho phép người dùng có thể đọcviết là lấy thư về từ MTA
MUA có thể lấy thư từ Mail server về để xử lý thông qua các giao thức IMAP , POP3…
Chuyển thư cho một MUA khác thông qua MTA
Cung cấp giao diện cho người dùng tương tác với thư
Các phần mềm MUA thông dụng: Microsoft Outlook, Netscape, Pine,…
4 SMTP ( Simple Mail Transfer Protocol ) :
SMTP là thủ tục được phát triển ở mức ứng dụng trong mô hình 7 lớp OSI
SMTP sử dụng cổng 25 của TCP
SMTP không hỗ trợ các thư không phải dạng văn bản
SMTP hổ trợ thêm 2 thủ tục khác hổ trợ cho việc lấy thư là POP3 và IMAP4
SMTP đòi hỏi là MUA và MTA đều phải dùng giao thức SMTP
Trang 235 POP3 ( Post Office Protocol 3 ) :
POP (Post Office Protocol) là một trong 2 giao thức phổ biến để lấy thư từ máy chủ (server mail) về MUA
POP được phát triển năm 1984 và được nâng cấp lên thành POP3 vào năm
1988 (được sử dụng phổ biến hiện nay)
POP3 kết nối trên nền TCP/IP để đến máy chủ thư điện tử (sử dụng cổng mặc định 110) Người dùng điền username và password Sau khi xác thực đầu client sẽ sử dụng các lệnh của POP3 để lấy hoặc xoá thư
POP3 làm việc với chế độ offline, nghĩa là thư được lấy về MUA sẽ bị xoá trên server
6 IMAP (Internet Message Access Protocol) :
IMAP là một giao thức để nhận thư từ server
IMAP được phát triển vào năm 1986 bởi đại học Stanford và nâng cấp lên IMAP2 vào năm 1987
IMAP4 là bản phổ biến hiện nay, nó được chuẩn hoá vào năm 1994
IMAP sử dụng cổng 143 của TCP
IMAP hổ trợ hoạt động ở chế độ online, offline hoặc disconnect
IMAP cho phép người dùng thao tác như : tập hợp các thư từ máy chủ, tìm kiếm và lấy thư hay chuyển thư từ thư mục này sang thư mục khác hoặc xoá thư trên máy chủ
IMAP cho phép lấy thư về MUA mà không xóa trên máy chủ
II Quá trình gửi và nhận 1 email như thế nào :
Trang 24Hình 1- quá trình gửi 1 email
Trong hình 1 khi 1 E-mail Client peter@a.de soạn 1 email bằng các chương trình MUA gửi đến user E-mail Client tim@b.de do thì MDA của domain
sẽ vận chuyển tới MTA domain a.de và kiểm tra cái policy và nếu phù hợp thì MTA domain a.de sẽ nhận lá mail này
Bước tiếp theo, MTA của domain a.de sẽ truy vấn DNS để tìm ra bản ghi MX Record của domain b.de Bản ghi trỏ về IP nào nơi đó là MTA của domain b.de Sau khi nhận được kết quả trả về từ DNS thì MTA của domain a.de sẽ telnet vào MTA của domain b.de bằng port SMTP(25) để send mail
Quá trình HELO\EHLO, check policies (PTR, SPF, Blacklist ) diến ra Khi đã passed qua, MTA của domain b.de sẽ nhận lá mail đó và chuyển cho MDA của domain b.de MDA của domain b.de tiếp nhận và chuyển cho End-Users của domain b.de End-Users tim@b.de của domain b.de sẽ dùng MUA để nhận và đọc mail
Ưu điểm của Postfix : Nhanh chóng, dễ dàng để quản lý, an toàn và được
Nhìn chung thì ta có thể nói cấu trúc của Postfix như sau : nhận messages (receives messages), đưa vào hàng đợi (queue them); và cuối cùng là chuyển chúng đi (delivery them) ở mỗi một bước như vậy sẽ được 1 tập hợp các chương
Trang 25trình của postfix làm việc riêng biệt, ta xem hình 2 đế nhìn rõ 3 nhiệm vụ của postfix.
Hình 2 – Tổng quan cấu trúc của postfix
b Messages vào hệ thống Postfix như thế nào:
Messages vào hệ thống Postfix với 4 cách như sau :
1 Messages được chấp nhận khi đến từ localy ( được gửi từ user trên cùng 1 máy tính )
1 Message có thể được chấp nhận khi vận chuyển thông qua network
1 Message có thể được Postfix chấp nhận khi thông qua 1 phương thức như resubmitted để forwarding đến 1 địa chỉ khác
Postfix tạo ra messages khi nó phải gửi thông báo không chuyển được messages hay hoãn messages
Local Email Submission :
Các thành phần Postfix làm việc với nhau bằng cách ghi và đọc thông tin từ hàng đợi ( queue ) của Postfix Queue manager có trách nhiệm quản lý thông tin , quản lý messages trong hàng đợi ( queue ) và thông báo cho đúng thành phần của postfix khi thành phần đó có việc phải làm
Hình 3 ở bên dưới minh hoa đường đi của “local email message” vào hệ thống của Postfix như thế nào Local message được gửi vào maildrop directoty của Postfix queue bằng lệnh postdrop The pickup daemon đọc message ở trong hàng đợi và đưa qua cleanup daemon 1 vài message khi gửi đi hoàn toàn thiếu những thông tin cần thiết cho 1 message hợp lệ , vì vậy với sự kết hợp giữa cleanup daemon và trivial-rewrite sẽ thêm vào các message header , chuyển đổi địa chỉ thành dạng user@domain.tld hay dựa trên canonical , virtual lookup table
The cleanup daemon thực thi trên tất cả inbound mail và sẽ thông báo cho queue manager sau khi đưa message đã được chỉnh sữa vào incoming queue
Tiếp sau đó queue manager sẽ gọi MDA thích hợp để chuyển message đi
Trang 26Hình 3- Local Email Submission
Email From Network :
Hình 4 bên dưới minh họa cho chúng ta thấy đường đi của một network email message đi vào hệ thống Postfix Message nhận từ network được chấp nhận bằng Postfix smtpd daemon Smtpd daemon thực hiện việc kiểm tra và có thể cấu hình để cho phép client relay email trên server hoặc từ chối smtpd daemon đưa message vào cleanup deamon, nơi mà thực hiện việc kiểm tra và điền thông tin cho message và sau đó đưa vào incoming queue Queue manager sẽ gọi MDA phù hợp để vận chuyển messaga
Trang 27 Postfix Email Notifications :
Khi user manager bị hoãn hay không thể chuyển đi được, Postfix sử dụng defer hay bounce daemon để tạo ra 1 error message Error message không
bị đưa vào cleanup daemon mà được kiểm tra bình thường trước khi đưa và incoming queue
Email Forwarding :
Đôi khi sau khi xử lý 1 email Postfix nhận ra rằng địa chỉ người nhận thực
sự trỏ tới 1 địa chỉ khác trên 1 hệ thống khác Postfix có thể đơn giản chuyển message đến smtp client để chuyển đi 1 cách trực tiếp , nhưng để đảm bảo tất cả các người nhận được xử lý và ghi nhận chính xác, postfix resubmitted message như là 1 new message và được xử lý như locally submitted message
c The Postfix Queue :
Postfix queue manager làm phần lớn công việc trong việc xử lý email Các message được chấp nhận vào các queue sau khi được clenup deamon kiểm tra, khi queue manager có 1 message mới sẻ dùng trivial-rewrite để xác định các thông tin định tuyến như : transport method, the next host to delivery, và recipient’s address
The queue manager gồm 4 hàng đợi khác nhau : incoming , active, deferred, và corrupt Sau khi thực hiện bước cleanup , thì incoming queue
là điểm dừng đầu tiên của message Nếu tài nguyên của hệ thống vẫn cung cấp đủ thì message sẽ được di chuyển vào active queue và gọi 1 trong các delivery agents để chuyển message đi Message không chuyển đi được thì message sẽ bị đưa vào deferred queue
The queue manager cũng có trách nhiệm làm việc với bounce và defer daemon tạo ra các báo cáo trạng thái vận chuyển cho các vấn đề của message để gửi ngược lại người gửi, hay system administrator , hay cả hai Thêm vào đó message queue directories và Postfix spool directories chứa bounce và defer directories Những directory này chứa thông tin trạng thái tại sao một message bị hoãn hay không gửi đi được the bounce và defer daemon sử dụng các thông tin chứa những directory trên để tạo ra các thông báo
d Mail Delivery :
Postfix sử dụng các định nghĩa của các lớp địa chỉ ( address class ) khi xác đích đến nào ( destinations ) được chấp nhận gửi đi và bằng cách nào để vận chuyển Các lớp địa chỉ chính gồm có : local, virtual alias, virtual mailbox, và relay Những đích đến nào không phải những lớp trên sẽ
Hình 4- Email from network
Trang 28được vận chuyển qua network bởi smtp client Dựa vào các lớp địa chỉ trên, the queue manager gọi các delivery agent phù hợp để xử lý message
Local Delivery :
The Local Delivery Agent điều khiển mail cho các users có shell account trên hệ thống mà Postfix đang chạy Domain names cho local delivery được liệt kê trong biến “mydestination” Những messages được gửi tối bất kỳ mydestination domain đều được chuyển đến các shell account cá nhân cho user Nói 1 cách đơn giản là Local Delivery Agent chuyển email message đến các nơi lưu trử cục bộ ( local message store )
Khi một message được chuyển tiếp ( forward ) đến 1 nơi khác, nó sẽ được gửi lại cho Postfix để được chuyển đến địa chỉ mới Nếu xảy ra lỗi thì delivery agent sẽ báo cho queue manager đánh dấu message này sẽ cố gắng gửi đi lại trong thời gian tới và chứa nó ớ defer queue
Virtual Alias Messages :
Virtual alias Message là những email được chuyển tiếp đến 1 địa chỉ khác
Vd : user name tom cho địa chỉ emai là tom@hoasen.net , đồng thời cũng
có 1 alias email khác là tom.weslly@hoasen.com , vậy khi 1 email gửi tới
tom.weslly@hoasen.com sẽ kiểm tra và nhận thấy rằng địa chỉ email thực
của người nhận là tom@hoasen.net postfix sẻ resubmitted email để gửi đến tom@hoasen.net
Domain name của virtual alias được định nghĩa trong biến
“virtual_alias_domian “ và những user và địa chỉ email thực sự của chúng được định nghịa trong bàng tìm kiếm ( lookup table ) được định nghĩa trong
“virtual_alias_maps”
Virtual Mailbox Messages :
Virtual Delivery Agent điểu khiển việc gửi và nhận mail của địa chỉ virtual mailbox Những Mailboxs này không có liên kết nào với bất kỳ user nào trên hệ thống ( shell account ) Domain name và user của virtual mailboxs được định nghĩa trong 2 biến “virtual_mailbox_domain” và
“virtual_mailbox_maps”
Rrelay Messages :
Smtp Delivery Agents điều khiển mail của các relay domains Địa chỉ Email trong relay domain là những địa chỉ được lưu trữ trên hệ thống khác, nhưng Postfix chấp nhận các messages đó và chuyển tiếp chúng đến đúng
Trang 29hệ thống lưu trữ email đó Domain names của relay domain được khai báo trong biến “relay_domain”
Chú ý: ngoài những delivery agent nêu trên Postfix còn hổ trở các delivery
agent khác, định nghĩa một delivery agents được thực hiện trong file master.cf
e Tracing a Message Through Postfix :
ở mục II chúng ta đã 1 cách tổng quát 1 email được gửi và nhận như thế nào ở phần này chúng ta sẻ tìm hiểu 1 cách hoàn chỉnh 1 email sẽ di chuyển như thế nào trong hệ thống Postfix Trong ví dụ bên dưới : Helene ( helene@oreilly.com ) có tài khoản trên hệ thống đang chạy Postfix gửi email tới Frank ( frank@postfix.org ) và frank có 1 alias là doel@onlamp.com
Hình 5- Tracing A Message 1
Vì Helene có account tren hệ thống nên email được gửi bằng lệnh postdrop
và đưa vào maildrop directory, email sẻ được các daemon pickup, cleanup, trivial-rewrite để điền cách thông tin cần thiết cho email và được đưa vào incoming queue trong queue manager Tiếp tục email được chuyển đến active queue, bởi vì đích đến của email này nằm bên ngoài hệ thống nên
Trang 30queue manager gọi smtp delivery agent để điều khiển việc gửi email này Stmp agent truy vấn DNS để biết được địa chỉ của mail server của domain postfix.org và gửi email đi
Hình 6 – Tracing A Message 2
Hình 6 cho ta thấy daemon smtp của domain postfix.org nhận email từ daemon smtp của domain oreilly.com email lần lượt được các daemon cleanup , trivial-rewrite kiểm tra trước khi đặt email vào incoming queue, tiếp đến email được chuyển sang active queue và queue manager nhận thấy phải gọi local delivery agent để chuyển email đi Local delivery agent kiểm tra và nhận ra frank là 1 alias ( bí danh ) và local delivery agent resubmitted email qua clenup daemon và gửi đi với đĩa chỉ mới
Trang 31Hình 7 – Tracing A Message 3
Ở hình 7 , các bước nhận email được thực hiên giống như hình 6 cho đến bước gọi local delivery agent để chuyển email đến người nhận thì local delivery agent kiểm tra và nhận thấy email hợp lệ và lưu vào Message store cho người nhận
3 Postfix với LDAP :
Postfix có thể sử dụng LDAP Directory như là nguồn dữ liệu cho mọi lookup của postfix như : alias, virtual, canonical Điều này giúp bãn giữ thông tin của các tài khoản email an toàn và được bảo vệ tốt hơn Vì không có thông tin nào lưu trên local nên có thể có nhiều mail server cùng sử dụng chung 1 thư viện thông tin mà không gặp vấn đề về sự trì hoãn khi update dữ liệu cho nhiều server
Để Postfix hoạt động được với LDAP directory thì postfix phải cài đặt gói postfix-ldap bằng lệnh sau : apt-get install postfix-ldap
Ngoài ra bạn cũng cần phải khai báo trong file main.cf để postfix biết lookup thông tin băng giao thức nào :
Vd : alias_maps = ldap:/etc/postfix/ldap-aliases.cf Trong file ldap-aliases.cf cần khai báo những thông tin như sau :
server_host = ldap.example.com \\ chỉ ra địa chỉ của LDAP server search_base = dc=example, dc=com
query_filter = mail=%s \\ attribute cần thiết để tìm kiếm result_attribute = maildrop \\ attribute được trả về
IV DOVECOT :
1 Giới Thiệu :
Dovecot là một Mail Delivery Agent, được viết rất bão mật , nó hổ trợ
cả hai định dạng mailbox đó là mbox và maildir
Dovecot cũng là một phần mềm mã nguổn mở để xây POP và IMAP server cho hệ thống Linux/Unix
Dovecot là một lựa chọn hoàn hỏa cho 1 hệ thống email nhỏ cũng như 1
hệ thống email lớn bởi vì nó hoạt động nhanh , dễ dàng cài đặt và sử dụng rất ít bộ nhớ và tài nguyên của hệ thống
Dovecot còn rất nhiều tính năng mạnh mẽ khác như : có thể hoạt động được với NFS và clustered filesystems, hổ trợ nhiều authentication databases và mechanisms, có thể làm nhiệm vụ chứng thực smtp , và có thể tích hợp nhiều plugins như quota và ACL
2 Cơ bản về cấu hình dovecot :
Để cấu hình Dovecot bạn tinh chỉnh file sau /etc/dovecot/dovecot.conf
Trang 32Đầu tiên bạn chọn các protocol mà dovecot sẽ hổ trợ bằng biến sau :
protocols = pop3 pop3s imap imaps
kế đến bạn chọn định dạng mailbox mà dovecot sử dụng : mail_location = maildir:~/Maildir # (for maildir)
or mail_location = mbox:~/mail:INBOX=/var/spool/mail/%u # (for mbox)
chú ý : là bạn cũng phải cấu hình MTA sử dụng mailbox giống như bạn chọn ở trên
Đây là những cấu hình cơ bản mà bạn nên tìm hiểu, đồng thời bạn cũng nên hiểu Authentication Databases của Dovecot
Authentication Databases :
Dovecot hổ trợ các dạng authentication databases sau :
Passwd: System users (NSS, /etc/passwd, or similiar)
Passwd-file: /etc/passwd-like file in specified location
LDAP: Lightweight Directory Access Protocol
SQL: SQL database (PostgreSQL, MySQL, SQLite)
VPopMail: External software used to handle virtual domains Những Databases nên trên được sử dụng để chứa thông tin user và password của các tài khoản email mà dovecot gọi là password databases và user databases
Password Databases :
Dovecot chứng thực user dựa vào các Password Databases và bạn có thể sử dụng nhiều password databases cùng một lúc Nếu Dovecot kiểm tra với Databases thứ nhất mà không phù hợp nó sẽ tiếp tục kiểm tra tiếp Databases thứ 2 Điều này rất thuận lợi nếu như bạn muốn hổ trợ cho cả local user và virtual user
Success/failure databases : Những loại thuộc databases này đơn giản kiểm tra password bạn cung cấp có đúng hay không , Dovecot không lấy password từ database mà chỉ lấy lại thông tin “success” hay “failure”
Những Databases thuộc loại này gồm có:
- PAM: Pluggable Authentication Modules
Trang 33- CheckPassword: External checkpassword program
Lookup databases :
Có hai loại databases thuộc Lookup databases như sau :
Databases chỉ hổ trợ looking up password , không hổ trợ các thông tin mở rộng của user :
- Passwd: System users (NSS, /etc/passwd, or similiar)
- Shadow: Shadow passwords for system users (NSS, /etc/shadow or similiar)
- VPopMail: External software used to handle virtual domains
Database hổ trợ tìm kiếm tất cả các thông tin :
- Passwd-file: /etc/passwd-like file in specified location
- LDAP: Lightweight Directory Access Protocol
- SQL: SQL database (PostgreSQL, MySQL, SQLite)
User Databases :
sau khai user chứng thực thành công, Dovecot tìm kiếm thông tin của user, việc tìm kiếm đó được thực hiện bởi các delivery để tìm ra các thông tin cần thiết để vận chuyển mail cho user
Các thông tin được tìm kiếm là :
uid: User's UID (UNIX user ID)
gid: User's GID (UNIX group ID)
home: Home directory
mail: Mail location (khi được tìm kiếm thì kết uả trả về sẽ thay thế giá trị của mail_location)
những user databases được dovecot hỗ trợ gồm có :
Passwd: System users (NSS, /etc/passwd, or similiar)
Passwd-file: /etc/passwd-like file in specified location
NSS: Name Service Switch (v1.1+)
LDAP: Lightweight Directory Access Protocol
SQL: SQL database (PostgreSQL, MySQL, SQLite)
Static: Userdb information generated from a given template
VPopMail: External software used to handle virtual domains
Prefetch: This assumes that the passdb already returned also all the required user database information
3 Dovecot và LDAP :
Như đã trình bày phía trên ta thấy Dovecot có khả năng sử dụng LDAP
là Authentication Databases
Trang 34Chúng ta có 2 cách để chưng thực LDAP :
Password lookups
Authentication binds
a Password lookups:
Ưu điểm của Password lookups so với Authentication binds :
- Nhanh hơn , vì Dovecot có thể gửi nhiều yêu cầu đồng bộ LDAP cùng một lúc tới server Với Authentication binds thì phải chờ hoàn thành xong 1 request rồi mới gửi tiếp
- Hổ trợ non-plaintext authentication mechanisms
- Khi sử dụng Delivery và static userdb, delivery có thế kiểm tra sự tồn tại của user Còn với Authentication thỉ không thể thực hiện được việc này
LDAP server permissions :
thông thường thì LDAP server không cấp quyền cho bất cứ user này có quyền truy xuất password của user, cho nên bạn cần tạo 1 administrator account có quyền truy xuất userPassword field Bằng cách thêm dùng sau trong file /etc/ldap/slapd.conf:
# there should already be something like this in the file:
Vd : pass_attrs = uid=user, userPassword=password Sau đây là 1 ví dụ được cấu hình trong file dovecot-ldap.conf :
auth_bind = no pass_attrs = uid=user, userPassword=password
Trang 36PHẦN 4 : FIREWALL
I FireWall là gì :
- Thuật ngữ FireWall có nguồn gốc từ một kỹ thuật thiết kế trong xây dựng để ngăn chặn, hạn chế hoả hoạn Trong Công nghệ mạng thông tin, FireWall là một kỹ thuật được tích hợp vào hệ thống mạng để chống lại sự truy cập trái phép nhằm bảo vệ các nguồn thông tin nội bộ cũng như hạn chế sự xâm nhập vào hệ thông của một số thông tin khác không mong muốn
- Internet FireWall là một tập hợp thiết bị (bao gồm phần cứng và phần mềm) được đặt giữa mạng của một tổ chức, một công ty, hay một quốc gia (Intranet) và Internet
- Trong một số trường hợp, Firewall có thể được thiết lập ở trong cùng một mạng nội bộ và cô lập các miền an toàn Ví dụ như mô hình dưới đây thể hiện một mạng Firewall để ngăn cách phòng máy, người sử dụng và Internet
II Phân Loại Firewall :
Firewall được chia làm 2 loại, gồm Firewall cứng và Firewall mềm:
1 Firewall cứng : Là những firewall được tích hợp trên Router
Đặc điểm của Firewall cứng:
- Không được linh hoạt như Firewall mềm: (Không thể thêm chức năng, thêm quy tắc như firewall mềm)
- Firewall cứng hoạt động ở tầng thấp hơn Firewall mềm (Tầng Network và tầng Transport)
- Firewall cứng không thể kiểm tra được nột dung của gói tin
Ví dụ Firewall cứng: NAT (Network Address Translate)
2 Firewall mềm: Là những Firewall được cài đặt trên Server
Đặc điểm của Firewall mềm:
- Tính linh hoạt cao: Có thể thêm, bớt các quy tắc, các chức năng
Trang 37- Firewal mềm có thể kiểm tra được nội dung của gói tin (thông qua các từ khóa) + Ví dụ về Firewall mềm: ISA , iptables…
III Tại sao cần Firewall ?
Nếu máy tính của bạn không được bảo vệ, khi bạn kết nối Internet, tất cả các giao thông ra vào mạng đều được cho phép, vì thế hacker, trojan, virus có thể truy cập và lấy cắp thông tin cá nhân cuả bạn trên máy tính Chúng có thể cài đặt các đoạn mã để tấn công file dữ liệu trên máy tính Chúng có thể sử dụng máy tính cuả bạn để tấn công một máy tính của gia đình hoặc doanh nghiệp khác kết nối Internet Một firewall có thể giúp bạn thoát khỏi gói tin hiểm độc trước khi nó đến hệ thống của bạn
Chức năng chính của Firewall:
Chức năng chính của Firewall là kiểm soát luồng thông tin từ giữa Intranet và Internet Thiết lập cơ chế điều khiển dòng thông tin giữa mạng bên trong (Intranet) và mạng Internet Cụ thể là:
- Cho phép hoặc cấm những dịch vụ truy nhập ra ngoài (từ Intranet ra Internet)
- Cho phép hoặc cấm những dịch vụ phép truy nhập vào trong (từ Internet vào Intranet)
- Theo dõi luồng dữ liệu mạng giữa Internet và Intranet
- Kiểm soát địa chỉ truy nhập, cấm địa chỉ truy nhập
- Kiểm soát người sử dụng và việc truy nhập của người sử dụng
- Kiểm soát nội dung thông tin thông tin lưu chuyển trên mạng
IV IPTABLE FRIWALL:
1 Giới thiệu :
Trong môi trường Linux phần mềm firewall phổ biến và cơ bản nhất là iptables, thông qua nó bạn có thể dễ dàng hiểu được nguyên lý hoạt động của một hệ thống firewall nói chung
2 Cấu Trúc Iptable :
Iptables cơ bản gồm ba bảng FILTER, MANGLE, NAT và các chain trong mỗi bảng, với chúng người quản trị có thể tạo ra các rules cho phép các gói tin vào ra hệ
Trang 38thống (được bảo vệ bằng iptables) tuỳ theo ý muốn của mình Chức năng cụ thể của chúng như sau
Mangle: dùng để chỉnh sửa QOS(qulity of service) bit trong phần TCP Header của gói tin
Filter: đúng như tên gọi nó dùng để lọc các gói tin gồm các build-in chain
- Forward chain: lọc những gói tin đi qua hệ thống (đi vào một hệ thống khác)
- Input chain: lọc những gói tin đi vào hệ thống
- Output chain: những gói tin đi ra từ hệ thống
Nat: sửa địa chỉ gói tin gồm các build-in chain
- Pre-routing: sửa địa chỉ đích của gói tin trước khi nó được routing bởi bảng routing của hệ thống (destination NAT hay DNAT)
- Post-routing: ngược lại với Pre-routing, nó sửa địa chỉ nguồn của gói tin sau khi gói tin đã được routing bởi hệ thống (SNAT)
Mỗi rule mà bạn tạo ra phải tương ứng với một chain, table nào đấy Nếu bạn không xác định tables nào thì iptables coi mặc định là cho bảng FILTER
3 Trình tự xử lý gói tin của iptables :
Có thể tóm tắt trình tự xử lý gói tin của iptables bằng hình vẽ sau các gói tin từ ngoài đi vào sẽ được kiểm tra bởi các Pre-routing chain đầu tiên xem xem
nó có cần DNAT không sau đó gói tin được routing Nếu gói tin cần đi tới một hệ thống khác ( protected network ) nó sẽ được lọc bởi các FORWARD chain của bảng FILTER
và nếu cần nó có thể được SNAT bởi các Post-routing chain trước khi đến được hệ thống đích
Tương tự khi hệ thống đích cần trả lời, gói tin sẽ đi theo thứ tự như vậy nhưng theo chiều ngược lại Lưu ý trong hình vẽ những FORWARD và Post-routing chain của bảng mangle chỉ tác động vào đặc điểm QOS ( Quality of Service ) của gói tin Nếu gói tin được gửi tới hệ thống ( hệ thống chứa iptables ) nó sẽ được xử lý bởi các INPUT chain và nếu không bị lọc bỏ nó sẽ được xử lý bởi một dịch vụ ( System Service ) nào đó chạy trên hệ thống Khi hệ thống gửi trả lời, gói tin mà nó gửi đi được xử lý bởi các OUTPUT chain và có thể được xử ký bởi các Post-routing chain của bảng FILTER
và bảng MANGLE nếu nó cần SNAT hay QoS
Targets và Jumps
những iptables rules kiểm tra những gói ip và cố gắng xác định nó sẽ được xử lý theo
kiểu nào (target), khi đã được xác định gói ip sẽ được xử lý theo kiểu đó
Sau đây là một số build-in targets thường được sử dụng.
-ACCEPT: iptables chấp nhận gói tin, đưa nó qua hệ thống mà không tiếp tục kiểm tra nó nữa
- DROP: iptables loại bỏ gói tin, không tiếp tục xử lý nó nữa
- LOG: thông tin của gói tin sẽ được ghi lại bởi syslog hệ thống, iptables tiếp tục xử lý
Trang 39gói tin bằng những rules tiếp theo
- REJECT: chức năng của nó cũng giống như DROP tuy nhiên nó sẽ gửi một error
message tới host đã gửi gói tin
- DNAT: dùng để sửa lại địa chỉ đích của gói tin
- SNAT: dùng để sửa lại địa chỉ nguồn của gói tin
- MASQUERADE: cũng là một kiểu dùng để sửa địa chỉ nguồn của gói tin
để xây dựng các rules bạn còn phải sử dụng các tuỳ chọn để tạo điều kiện so sánh.Sau
đây là một số tuỳ chọn thường dùng
Trang 40-t : chỉ ra tên của bảng mà rule của bạn sẽ dược ghi vào (mặc định là FILTER ) -j : nhẩy đến một kiểu xử lý (target) tương ứng như đã định nghĩa ở trên nếu điều kiện so sánh thoả mãn
- A : ghi nối tiếp rule vào đuôi một chain
- p : so sánh protocol gói tin
- s : so sánh địa chỉ nguồn của gói tin
- d : so sánh địa chỉ đích của gói tin
- i : so sánh tên card mạng mà gói tin đi vào hệ thống qua đó
- o : so sánh tên card mạng mà gói tin từ hệ thống đi ra qua đó
-p tcp –sport : xác định port nguồn của gói tin TCP
-p tcp –dport : xác định port đích của gói tin TCP -p udp –sport : xác định port nguồn của gói tin UDP -p udp –dport : xác định port đích của gói tin UDP –syn : xác định gói tin có phải là một yêu cầu tạo một kết nối TCP mới không
–icmp-type : xác định loại gói icmp (echo-reply hay echo-request)
-m multiport –sport < port, port >: xác định một loạt các giá trị port nguồn -m multiport –dport < port, port >: xác định một loạt các giá trị port đích
-m multiport –port < port, port >: xác định một loạt các giá trị port ( không phân biệt nguồn hay đích )
-m –state < state >: xác định trạng thái kết nối mà gói tin thể hiện
ESTABLISHED: gói tin thuộc một kết nối đã được thiết lập
NEW: gói tin thể hiện một yêu cầu kết nối
RELATED : gói tin thể hiện một yêu cầu kết nối thứ hai (có liên quan đến kết nối thứ nhất, thường xuất hiện ở những giao thức FPT hay ICMP) INVALID : thể hiện một gói tin không hợp lệ