Song với firewall Ipchains còn nhiều thiếu sót và không đủ mạnh để bảo vệ hệ thống như ngăn chặn tấn công từ chối dịch vụ kém, khả năng ghi nhận lỗi không cao… 1.3 PHẠM VI ĐỀ TÀI Phạm v
Trang 1TRƯỜNG ĐẠI HỌC VÕ TRƯỜNG TOẢN KHOA CƠNG NGHỆ THƠNG TIN
KHĨA LUẬN TỐT NGHIỆP XÂY DỰNG FIREWALL CHO HỆ THỐNG MẠNG LAN BẰNG GIẢI PHÁP MÃ NGUỒN MỞ
Giáo viên hướng dẫn:
ThS NGUYỄN HỮU LỘC
Sinh viên thực hiện:
NGƠ THANH TỒN MSSV: 0951190716 Lớp: ĐH CNTT Khĩa: 2
Hậu Giang -
2013
Trang 2Sinh viên thực hiện
Ngô Thanh Toàn
Trang 3LỜI CẢM TẠ
Em xin chân thành gửi lời cảm ơn đến thầy, Thạc sĩ Nguyễn Hữu Lộc đã tận tình hướng dẫn, giúp đỡ em trong suốt quá trình làm đề tài luận văn tốt nghiệp và giúp cho đề tài của em được hoàn thành
Em cũng xin gửi lời cảm ơn đến các thầy cô thuộc khoa công nghệ thông tin, trường Đại học Võ Trường Toản Đã tạo điều kiện cho em trong quá trình hoàn thành luận văn tốt nghiệp của mình
Trong quá trình làm luận văn em còn nhận được sự giúp đỡ và trao đổi của các bạn, em cũng xin chân thành cảm ơn sự giúp đỡ và chia sẻ đó
Em chúc các thầy cô sức khỏe và công tác tốt Chúc các bạn báo cáo luận văn thành công
Sinh viên thực hiện
Ngô Thanh Toàn
Trang 4BẢN NHẬN XÉT LUẬN VĂN TỐT NGHIỆP
Họ và tên người hướng dẫn: Nguyễn Hữu Lộc
Học vị: Thạc sĩ
Chuyên ngành: Công Nghệ Thông Tin
Cơ quan công tác: Khoa Công Nghệ Thông Tin, Đại học Võ Trường Toản
Họ và tên : Ngô Thanh Toàn
Mã số sinh viên : 0951190716
Chuyên ngành : Công Nghệ Thông Tin
Tên đề tài : Xây dựng Firewall cho hệ thống mạng LAN bằng giải
pháp mã nguồn mở
Trang 5
Hậu Giang, ngày…… tháng …… năm…
(Ký và ghi rõ họ tên)
Trang 6NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Hậu Giang, ngày … tháng … năm …
Giáo viên phản biện
(Ký và ghi rõ họ tên)
Trang 7MỤC LỤC
LỜI CAM ĐOAN i
LỜI CẢM TẠ ii
BẢN NHẬN XÉT LUẬN VĂN TỐT NGHIỆP iii
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN v
DANH MỤC HÌNH ẢNH viii
DANH MỤC BIỂU BẢNG ix
TỪ VIẾT TẮT VÀ CÁC THUẬT NGỮ x
TÓM TẮT xi
ABSTRACT xii
CHƯƠNG 1 TỔNG QUAN 1
1.1 ĐẶT VẤN ĐỀ 1
1.2 LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ 1
1.3 PHẠM VI ĐỀ TÀI 2
1.4 PHƯƠNG PHÁP NGHIÊN CỨU VÀ HƯỚNG GIẢI QUYẾT 2
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3
2.1 TỔNG QUAN AN NINH MẠNG 3
2.1.1 Tình hình thực tế 3
2.1.2 Các dạng tấn công 4
2.1.3 Một số kỹ thuật tấn công 7
2.2 TỔNG QUAN HỆ ĐIỀU HÀNH LINUX 9
2.2.1 Linux là gì ? 9
2.2.2 Lợi thế của Linux 9
2.2.3 Ưu điểm và khuyết điểm của Linux 10
2.2.4 Kiến trúc của hệ điều hành Linux 11
2.2.5 Quản trị người dùng và nhóm trên Linux 12
2.2.6 Quản lý tập tin trên Linux 19
2.2.7 Kết nối mạng trong Linux 22
2.3 TỔNG QUAN VỀ FIREWALL 25
2.3.1 Khái niệm 25
2.3.2 Phân loại, chức năng, cấu trúc Firewall 25
Trang 82.3.3 Các thành phần của Firewall 28
2.3.4 Ưu, nhược điểm của Firewall 33
2.3.5 Kiến trúc Firewall 34
2.4 NỘI DUNG NGHIÊN CỨU IPTABLES 40
2.4.1 Iptables là gì 40
2.4.2 Cài đặt trọn gói Iptables 41
2.4.3 Cơ chế xử lý package trong Iptables 41
2.4.4 Target và Jump 45
2.4.5 Tùy chọn –limit, limit-burst 48
2.4.6 Redirect cổng 50
2.4.7 Cách đổi địa chỉ IP động ( dynamic NAT) 50
2.4.8 Cách đóng giả địa chỉ IP (masquerade) 51
2.4.9 Quá trình chuyển gói dữ liệu qua Netfilter 52
2.4.10 Các tham số dòng lệnh thường gặp của Iptables 52
CHƯƠNG 3 NỘI DUNG VÀ KẾT QUẢ THỰC NGHIỆM 59
3.1 PHƯƠNG PHÁP THỰC NGHIỆM 59
3.2 CÔNG CỤ MÔ PHỎNG TẤN CÔNG MẠNG (HPING3) 60
3.2.1 Khái niệm 60
3.2.2 Cài đặt và cấu trúc 60
3.2.3 Thực nghiệm cấu hình Firewall với Iptables và kết quả 61
CHƯƠNG 4 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 73
4.1 KẾT LUẬN 73
4.2 HƯỚNG PHÁT TRIỂN 74
DANH MỤC TÀI LIỆU THAM KHẢO 75
Trang 9DANH MỤC HÌNH ẢNH
Hình 1: Tấn công kiểu DoS 5
Hình 2: Tấn công kiểu DDoS 5
Hình 3: Tấn công kiểu DRDoS 6
Hình 4 : Thiết lập kết nối TCP giữa client và server 7
Hình 5 : Kiến trúc hệ điều hành Linux 11
Hình 6: Sơ đồ Netfilter hook 24
Hình 7 : Mô hình Firewall 25
Hình 8 : Mô hình Firewall cứng 26
Hình 9 : Mô hình Firewall mềm 26
Hình 10 : Các thành phần của Firewall 28
Hình 11 : Bộ lọc Packet 29
Hình 12 : Kết nối cổng vòng của Firewall 32
Hình 13: Sơ đồ kiến trúc Dual-home Host 35
Hình 14: Sơ đồ kiến trúc Sceen Host 37
Hình 15 : Kiến trúc Screen subnet 38
Hình 16 : Bảng NAT Tables 40
Hình 17 : Sơ đồ đường đi của package trong Iptables 44
Hình 18 : Cách đôỉ địa chỉ Ip động 50
Hình 19 : Cách đóng giả địa chỉ IP 51
Hình 20 : Mô hình mạng thực nghiệm 59
Hình 21: Lệnh kiểm thử chặn ngập lụt PING 63
Hình 22: Kết quả chống ngập lụt PING từ client 63
Hình 23: Lệnh kiểm thử chặn ngâp lụt SYN 66
Hình 24: Kết quả kiểm thử chống ngập lụt SYN 66
Hình 25: Kiểm thử SSH 67
Hình 26: Kết quả giới hạn truy nhập SSH cho admin 68
Hình 27: Kiểm thử giới hạn FTP cho webmaster 69
Hình 28: Kết quả kiểm thử giới hạn truy nhập FTP cho webmaster 70
Hình 29: Kiểm thử chặn ngập lục UDP 71
Hình 30: Kết quả chặn ngập lục UDP 72
Trang 10DANH MỤC BIỂU BẢNG
Bảng 1 Các loại queues và chain cùng chức năng của nó 42
Bảng 2 Miêu tả các target mà iptables thường dùng nhất 46
Bảng 3 Các tham số chuyển mạch (switching) quan trọng của Iptables 53
Bảng 4 Các điều kiện TCP và UDP thông dụng 54
Bảng 5 Điều kiện ICMP 55
Bảng 6 Các điều kiện mở rộng thông dụng 55
Bảng 7 Danh sách các lệnh (Queues) 57
Trang 11TỪ VIẾT TẮT VÀ CÁC THUẬT NGỮ
DDoS (Distributed Denied of Service) : Tấn công từ chối dịch vụ phân tán
DMZ (DeMilitarized Zone) : Vùng phi quân sự
DNS (Domain Name Service) : Dịch vụ tên miền
DoS (Denied of Service) : Tấn công từ chối dịch vụ
DRDoS (Distributed Reflection Denied of Service) : DoS phản xạ, phân tán
FTP (File Transfer Protocol) : Giao thức truyền file
GNU (General Public License): Giấy phép phần mềm tự do
ICMP (Internet Control Message Protocol): Giao thức điều khiển thông điệp
Internet
IP (Internet Protocol) : Giao thức Internet
LAN (Local Area Network) : Mạng nội bộ
MAC (Media Access Control) : Địa chỉ thiết bị
PPP (Point to Point Protocol): Giao thức nối các máy tính bằng điện thoại SSH ( Secure Shell ) : Dịch vụ truy cập từ xa
SLIP(Serial Line Internet Protocol): Giao thức Internet đường nối tiếp
STMP ( Simple Mail Transfer Protocol ) : Giao thức truyền thư đơn giản
TCP (Transmission Control Protocol) : Giao thức điều khiển truyền tin
TELNET : dịch vụ đăng nhập hệ thống từ xa
UDP (User Datagram Protocol) : Giao thức điều khiển truyền tin không tin cậy
Trang 12
TÓM TẮT
Bảo mật và an ninh mạng là một vấn đề quan trọng hàng đầu đối với các hệ thống của các công ty, doanh nghiệp, các hệ thống cung cấp dịch vụ như Web Server, Mail Server,…cũng như nhiều dịch vụ khác trên mạng Một trong những cách bảo vệ tối ưu nhất để đảm bảo bảo mật và an ninh mạng cho hệ thống là sử dụng Firewall Firewall là một kỹ thuật được tích hợp vào hệ thống mạng để chống 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 và lọc gói tin ra vào mạng nội bộ
Ngày nay, có rất nhiều loại Firewall được xây dựng trên những hệ điều hành khác nhau nhưng chủ yếu là hệ điều hành Windows và hệ điều hành mã nguồn mở Tuy nhiên mỗi loại có những ưu và nhược điểm khác nhau và phát triển theo những hướng khác nhau, nhưng đa phần các Firewall mạnh thường là những Firewall thương mại, người dùng phải mua và mất chi phí nhiều cho các ứng dụng kèm theo Đề xuất
để giải quyết vấn đề trên là dùng các Firewall miễn phí được xây dựng trên hệ điều hành mã nguồn mở và Iptables là một trong những Firewall miễn phí trên hệ điều hành
mã nguồn mở, được đánh giá rất cao từ cộng đồng người sử dụng Tuy miễn phí nhưng Iptables mang đầy đủ tính năng của một tường lửa thương mại
Từ những kết quả thực nghiệm cho thấy Firewall miễn phí với Iptables thực hiện tốt các mục tiêu của các Firewall thương mại khác về : tốc độ xử lý, quan sát kỹ gói dữ liệu, lọc gói dựa trên địa chỉ MAC và các cờ trong TCP header, ghi chép hệ thống, ngăn chặn các kiểu tấn công từ chối dịch vụ,
Từ khóa : Firewall, Linux server, Iptables
Trang 13ABSTRACT
Network security is a number one problem with network system of company, business and service system such as Web sever, Mail sever, or FTP server… as well as all other service of network One of the most urgent needs to network security for system is a Firewall Firewall is a technology integrated into network system denied illicit access to protect source interal information as well as limit to break into system and fillter pack out-in-inform interal network
Today, have a lot of Firewall build on background of different Operating system but an essential is Windows of Microsoft and Open Source Operating system
of Linux However, each has advantages and disadvantages, develop follow various directional, but almost all strong Firewall is a commercial Firewall, user bought and spend more for the attached application Proposing to solve prolem is use a free Firewall, it built on Open Source Operating system and Iptables is a one of free Firewall on Open Source Operating system, it had rate very high from user community Althought it free but Iptables had all feature of a commercial Firewall
From all examine result to show a free Firewall with Iptales execute well all target of other commercial Firewall about: processing, scan hard data pack, filter pack rely on MAC address and flags in TCP header, log system, stop all attacked by denied service,…
Keywords: Firewall, Linux server, Iptables
Trang 14CHƯƠNG 1 TỔNG QUAN
1.1 ĐẶT VẤN ĐỀTrong những năm gần đây, việc tổ chức và khai thác mạng Internet rất phát triển Mạng Internet cho phép các máy tính trao đổi thông tin một cách nhanh chóng, thuận tiện Mọi đối tượng đều có thể sử dụng các dịch vụ và tiện ích của Internet một cách dễ dàng như trao đổi thông tin, tham khảo các thư viện tri thức…Tại thời điểm hiện nay thì lợi ích của Internet là quá rõ ràng và không thể phủ nhận Nhưng một điều không may đi kèm với nó là nguy cơ mất an toàn thông tin trên Internet đang trở thành một vấn đề hàng đầu cản trở sự phát triển của các nhà cung cấp dịch vụ mà nó còn là nhu cầu chính đáng của mỗi người sử dụng Các thông tin nhạy cảm về quốc phòng, thương mại là vô giá và không thể để lọt vào tay đối thủ cạnh tranh
Hay nói cách khác là khi máy tính kết nối Internet hay trong môi trường mạng cục bộ, khi đó tất cả các giao tiếp của mạng nội bộ với thế giới bên ngoài coi như là bỏ ngỏ, mọi thông tin dữ liệu trên máy tính của mạng nội bộ không có sự bảo vệ Điều này được xem như nhà không có khóa cửa, khi đó mọi đồ đạc trong nhà sẽ như thế nào? Đương nhiên không ai nói trước được gì Nếu khu vực sống là một môi trường lành mạnh, ở đó không có sự nhòm ngó thì đồ đạc vẫn nguyên, còn ngược lại chắc chắn là đồ đạc sẽ bị lấy cắp và điều này trong xã hội hiện nay là đương nhiên khi không có sự phòng vệ thích đáng Dữ liệu trong máy tính cũng như thế, nếu người dùng không bảo vệ chúng, không có khóa bảo vệ, không có những chính sách bảo mật,
cơ hội bị mất hay thất thoát là điều không thể tránh Để hạn chế tình trạng này và để góp phấn tăng khả năng bảo mật thì việc xây dựng hệ thống tường lửa Firewall là điều kiện không thể thiếu, đặc biệt là Firewall được xây dựng trên nền hệ điều hành mã nguồn mở Linux
1.2 LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ
Trên thế giới đã có nhiều công trình nghiên cứu về lĩnh vực bảo mật, bảo vệ an toàn thông tin trên mạng và kết quả chúng đã trở thành các sản phẩm thương mại như: Vista Firewall, ZoneAlarm Firewall, VNP-1/Firewall-1, SmoothWall, … Tuy nhiên mỗi loại có những ưu nhược điểm riêng, phát triển theo những hướng khác nhau Các
Trang 15sản phẩm này được xây dựng trên những nền hệ điều hành khác nhau nhưng chủ yếu là Windows của Microsoft và hệ điều hành mã nguồn mở Linux
Có nhiều đồ án và tiểu luận, luận văn đưa ra các giải pháp khắc phục, bảo vệ, bảo mật an ninh mạng bằng Firewall của mã nguồn mở Ban đầu các bài tiểu luận, đồ án, luận văn đưa ra phương pháp dùng firewall phổ biến nhất là gói NAT của Ipchains chạy trên Linux Song với firewall Ipchains còn nhiều thiếu sót và không đủ mạnh để bảo vệ hệ thống như ngăn chặn tấn công từ chối dịch vụ kém, khả năng ghi nhận lỗi không cao…
1.3 PHẠM VI ĐỀ TÀI
Phạm vi luận văn này chú trọng đến việc xây dựng một firewall trên hệ điều hành
mã nguồn mở, chính xác là Firewall Iptables trên hệ điều hành Linux Server để ngăn chặn các dịch vụ tấn công từ chối dịch vụ mạng và các sự tấn công bên ngoài của một
hệ thống mạng LAN Tăng cường khả năng bảo mật của một hệ thống mạng nội bộ bằng Firewall Iptables này
1.4 PHƯƠNG PHÁP NGHIÊN CỨU VÀ HƯỚNG GIẢI QUYẾT
Để xây dựng Firewall trên nền Linux nhằm ngăn chặn các loại tấn công mạng, chúng tôi lần lượt tìm hiểu về: tổng quan an ninh mạng (các khái niệm chung về an toàn an ninh mạng, tính cấp thiết của đề tài, các dạng tấn công và một số kỹ thuật tấn công phổ biến hiện nay), tổng quan hệ điều hành Linux (tổng quát về hệ điều hành Linux, cấu hình mạng cho hệ điều hành Linux), tổng quan Internet Firewall (khái niệm tổng quát về Firewall, một số loại Firewall thông dụng, các chức năng cơ bản của Firewall, cơ chế và nguyên lý hoạt động, ưu nhược điểm và các mô hình hay kiến trúc triển khai của một Firewall trong hệ thống) và giới thiệu chi tiết về Iptables
Từ những nghiên cứu lý thuyết trên, chúng tôi tiến hành xây dựng một Firewall với Iptables trên hệ điều hành Ubuntu Server và sử dụng các công cụ mô phỏng các cuộc tấn công mạng (Hping3) để kiểm tra tính năng của Firewall Iptables này
Trang 16CHƯƠNG 2
CƠ SỞ LÝ THUYẾT
2.1 TỔNG QUAN AN NINH MẠNG2.1.1 Tình hình thực tế
Mạng Internet ngày càng phát triển nhanh chóng với các dịch vụ như WWW, Email, tìm kiếm thông tin,… Internet đã trở thành một phần không thể thiếu trong cuộc sống hằng ngày, song song với điều đó là những sự nguy hiểm mà mạng Internet đem lại cho người sử dụng
Hiện nay, những kẻ tấn công ngày càng tinh vi hơn trong các hoạt động của chúng Thông tin về các lổ hổng bảo mật, các kiểu tấn công được trình bày công khai trên mạng Ngoài ra, còn có các kẻ tấn công không chuyên nghiệp và những người có chút hiểu biết về lập trình, về mạng khi đọc các thông tin về lổ hổng và các kiểu tấn công trên mạng thì có thể trở thành một hacker Vì vậy, số tấn công mạng ngày một tăng và có nhiều phương thức tấn công mới ra đời, khó kiểm soát và bảo vệ
Đa phần các tổ chức lớn đều triển khai các ứng dụng nền tảng, quan trọng trong mạng cục bộ LAN Khi các mạng cục bộ này kết nối với mạng Internet, các thông tin quan trọng đều có khả năng bị lấy cắp và phá hoại Mặc dù các công ty, tổ chức này có
sử dụng các biện pháp an toàn bảo mật, nhưng chưa triệt để và còn có nhiều lổ hổng bảo mật mà các kẻ tấn công có thể lợi dụng để tấn công
Trước các nguy cơ mất an toàn thông tin cho hệ thống khi kết nối Internet là một vấn đề hết sức cấp bách Để chống lại và bảo vệ hệ thống trước các nguy cơ bị tấn công từ bên ngoài khi kết nối Internet, thế giới đã xuất hiện các phần mềm bảo vệ với các tính năng khác nhau, trong đó có Firewall
Sử dụng Firewall để bảo vệ mạng nội bộ, tránh sự tấn công từ bên ngoài là một giải pháp an toàn, hữu hiệu, đảm bảo được các yếu tố:
An toàn cho sự hoạt động của toàn bộ hệ thống mạng
Bảo mật cao trên nhiều phương tiện
Mềm dẻo và dễ sử dụng
Tấn công trên mạng và chiến lược bảo vệ
Trang 172.1.2 Các dạng tấn công
Có nhiều dạng tấn công mạng vào hệ thống khác nhau, ở đây chúng ta xét ba dạng tấn công cơ bản là:
Xâm nhập (Intrusion)
Từ chối dịch vụ (Denial of Service - Dos)
Ăn trộm thông tin (Information thieft)
2.1.2.1 Tấn công “Xâm nhập”
Hầu như các dạng tấn công vào hệ thống nói chung là dạng tấn công xâm nhập, các hacker và cracker cố gắng đột nhập vào hệ thống hoặc lạm dụng hệ thống Với các phương pháp tấn công như giả dạng người có thẩm quyền, hay tấn công suy đoán và nhiều phương pháp tấn công phức tạp khác để truy cập mà không cần biết tên người dùng và mật khẩu, kẻ tấn công có thể sử dụng được máy tính của chúng ta một cách
hợp pháp
Chúng ta có thể chia dạng tấn công xâm nhập thành hai loại:
Tấn công từ bên ngoài: là những người xâm nhập từ bên ngoài hệ thống
Chúng có thể vượt qua Firewall để tấn công các máy trong mạng nội bộ Dạng tấn công này có thể đến từ Internet, đường dây điện thoại hoặc từ các mạng thành viên khác được liên kết đến mạng nội bộ
Tấn công từ bên trong: là những người được quyền truy nhập đến bên trong
hệ thống, như những người được ủy quyền, hoặc giả mạo người dùng ở mức cao,… Theo thống kê thì dạng tấn công xâm nhập từ bên trong chiếm tới 80%
Có hai cách thực hiện hành vi xâm nhập
Do thám: những kẻ xâm nhập có thể dùng các công cụ dò quét để tìm ra các
lổ hổng bảo mật của mạng nội bộ Các công cụ dò quét có thể là theo kiểu quét ping, quét cổng TCP/UDP, chuyển vùng DNS,…
Lợi dụng: lợi dụng các đặc tính ẩn hoặc lỗi để truy cập vào hệ thống
2.1.2.2 Tấn công từ chối dịch vụ
Đây là kiểu tấn công trực tiếp vào hệ thống, làm hệ thống bị mất tài nguyên và
bị chiếm dụng băng thông, làm giảm khả năng đáp ứng trả lời yêu cầu đến Trong trường hợp này hệ thống có thể bị lỗi khi hệ thống cần dùng đến tài nguyên
Trang 18Đặc điểm chính của kiểu tấn công này là người bị hại không chống lại được vì các công cụ được sử dụng trong cách tấn công này là các công cụ mà hệ thống dùng hằng ngày
Có 3 kiểu tấn công từ chối dịch vụ chính là DoS, DdoS và DRDoS
a DoS
Hình 1: Tấn công kiểu DoS
Kẻ tấn công dùng máy có băng thông lớn hơn máy nạn nhân
b DDoS
Hình 2: Tấn công kiểu DDoS
Kẻ tấn công dùng nhiều máy tấn vào một máy nạn nhân
Trang 19c DRDoS
Máy tấn công sẽ gửi yêu cầu kết nối đến các server có băng thông cao trên mạng, các gói tin yêu cầu kết nối này mang địa chỉ IP giả Các server sẽ gửi lại máy yêu cầu các gói SYN/ACK dẫn tới hiện tượng nhân băng thông
Nhưng kiểu tấn công này không thu thập được thông tin mà chỉ làm tê liệt hệ thống, làm cho hệ thống không hoạt động được nữa
Hình 3: Tấn công kiểu DRDoS
2.1.2.3 Ăn trộm thông tin
Đây là cách tấn công cho phép kẻ tấn công có thể lấy được thông tin và dữ liệu
mà không cần phải trực tiếp truy cập và sử dụng máy tính của nạn nhân Thường kẻ tấn công khai thác các dịch vụ Internet phân phối thông tin
Trang 202.1.3 Một số kỹ thuật tấn công
2.1.3.1 Giả mạo địa chỉ IP (IP Spoofing)
Đa phần giao thức sử dụng trong mạng hiện nay đều là giao thức TCP TCP là một giao thức hướng liên kết, giữa client và server muốn thực hiện trao đổi thông tin
thì phải thực hiện qua các bước sau:
Bước 1: Client gửi gói tin SYN tới server thông báo yêu cầu kết nối Lúc này một kết nối đã được thiết lập giữa client và server
Bước 2: Server sau khi nhận được tín hiệu SYN trên sẽ gửi lại cho client gói tin SYN/ACK xác nhận việc liên kết
Bước 3: Client sau khi nhận được gói tin SYN/ACK trên, nó sẽ gửi tiếp cho server gói tin ACK Kết thúc bước này giữa client và server đã hoàn thành một kết nối
Hình 4 : Thiết lập kết nối TCP giữa client và server
Nếu như một client không có yêu cầu thiết lập một kết nối đến server nhưng nó lại nhận được gói tin SYN/ACK, khi đó nó sẽ gửi trả lại server gói tin RST (reset) Nhờ đó server sẽ biết được client không có yêu cầu và sẽ hủy bỏ kết nối
Dựa vào cơ chế hoạt động thiết lập kết nối trong giao thức TCP mà kẻ tấn công đưa ra kỹ thuật tấn công giả mạo địa chỉ IP:
Giả sử ta có một server A và một client B Kẻ tấn công sẽ dùng một máy C tạo ra gói tin giả mạo địa chỉ của B để gửi tới cho A, nhằm chờ đợi những thông tin mà A phản hồi lại Khi đó A nhận được yêu cầu kết nối này, server A sẽ gửi lại gói tin phản hồi cho B, trong khi đó máy B không có gửi thông tin yêu cầu cho máy A Vì vậy, máy B sẽ gửi lại gói tin RST cho máy A thông báo không có yêu cầu kết nối để máy A hủy kết nối Nhưng mục tiêu của kẻ tấn công là tạo kết nối ảo cho máy A, không muốn
Trang 21máy A hủy kết nối, cho nên kẻ tấn công sẽ làm cho máy B không nhận được gói tin phản hồi từ máy A Như thế kết nối được duy trì và sẽ làm cho máy server tốn tài nguyên cho máy B mà không có kết nối
2.1.3.2 SYN flooding Tấn công tràn ngập gói tin SYN
Kiểu tấn công này cũng sử dụng dựa trên cơ chế bắt tay ba bước trong quá trình thiết lập kết nối giữa hai máy trong TCP Kẻ tấn công sử dụng một địa chỉ giả mạo để gửi gói tin SYN cho nạn nhân Khi đó nạn nhân nhận được gói tin này thì nó sẽ dành một phần bộ nhớ cho kết nối này
Khi nhận được gói tin SYN yêu cầu kết nối thì nó sẽ gửi trả lại gói tin SYN/ACK cho host mà bị kẻ tấn công giả mạo địa chỉ IP Nếu như gói tin trả lời gửi đến đúng host bị giả mạo thì host này sẽ gửi lại gói tin RST, kết nối được hủy bỏ, phần bộ nhớ
mà máy nạn nhân cung cấp cho kết nối sẽ được hủy bỏ Trong trường hợp này xem như tấn công thất bại
Vì vậy, kẻ tấn công sẽ giả mạo địa chỉ của những host mà máy nạn nhân không thể gửi gói tin đến được Khi đó gói tin SYN/ACK mà nạn nhân gửi trả lại sẽ không tới đích, do đó cũng sẽ không có gói tin RST gửi trả lại cho nạn nhân Như vậy, máy nạn nhân phải chờ kết nối cho đến hết thời gian kết nối hết hạn (Timeout) Do đó, máy nạn nhân đã bị chiếm dụng một phần tài nguyên hoạt động
Kẻ tấn công không chỉ gửi một gói tin SYN tới nạn nhân mà sẽ gửi nhiều gói tin SYN đến máy nạn nhân theo một khoảng thời gian nhất định Như thế, toàn bộ tài nguyên trên máy nạn nhân sẽ bị sử dụng cho việc chờ những kết nối không có thực
Ưu điểm của phương pháp tấn công này là chỉ cần một lượng băng thông nhỏ
kẻ tấn công cũng có thể làm tê liệt nạn nhân và các gói tin SYN được gửi bằng địa chỉ giả nên rất khó để phát hiện ra thủ phạm
2.1.3.3 ICMP flooding tấn công tràn ngập gói tin ICMP
Đây là kiểu tấn công chiếm dụng băng thông bằng cách ping gói tin ICMP echo request bằng IP của nạn nhân và địa chỉ đích là dạng broadcast của một mạng nào đó Khi đó các host khác sẽ nhận được gói tin ICMP từ IP của nạn nhận Kết quả là các host khác trong mạng của nạn nhân sẽ gửi trả lại hàng loạt gói tin ICMP echo receive, đây cũng chính là nguyên nhân gây ra hiện tượng bị chiếm dụng băng thông Nạn nhân sẽ không thể giao dịch được với các host khác trên mạng
Trang 222.2 TỔNG QUAN HỆ ĐIỀU HÀNH LINUX
2.2.1 Linux là gì ?
Linux xuất hiện như một sản phẩm nguồn mở miễn phí và đến nay có thể sánh vai với các hệ điều hành khác như Windown, Sun Solaris, Linux ra đời từ một dự án đầu những năm 1990 có mục đích tạo ra một hệ điều hành kiểu UNIX cài đặt trên máy tính cá nhân chạy với bộ vi xử lý Intel, tương hợp với họ máy tính IBM-PC (còn gọi tắt là PC) Từ lâu, UNIX đã nổi tiếng là một hệ điều hành mạnh, tin cậy và linh hoạt, nhưng vì khá đắt nên chủ yếu dùng cho các trạm tính toán hay là máy chủ cao cấp [4] Ngày nay, Linux có thể cài đặt trên nhiều họ máy tính khác nhau không chỉ riêng cho họ PC Qua Internet, Linux được hàng nghìn nhà lập trình khắp thế giới tham gia thiết kế, xây dựng và phát triển, với mục tiêu không lệ thuộc vào bất kỳ thương phẩm nào và để cho mọi người đều có thể sử dụng thoải mái
Về cơ bản, Linux bắt chước UNIX cho nên cũng có nhiều ưu điểm của UNIX Tính đa nhiệm thực sự của Linux cho phép chạy nhiều chương trình cùng một lúc Với Linux, bạn có thể đồng thời thực hiện một số thao tác : chuyển tệp tin, in ấn, sao tệp, nghe nhạc, chơi game v.v…
Linux là một hệ điều hành đa người dùng, nghĩa là cho nhiều người có thể đăng nhập và cùng lúc sử dụng một hệ thống Ưu điểm này có vẻ không phát huy mấy trên
PC ở nhà, song ở công ty hoặc trường học thì nó giúp cho việc dùng chung tài nguyên,
từ đó giảm thiểu chi phí đầu tư vào máy móc [4]
Ngay cả khi ở nhà, bạn cũng có thể đăng nhập vào Linux với nhiều tài khoản (account) khác nhau qua các terminal ảo và tổ chức lại dịch vụ trên mạng riêng cho mình bằng cách sử dụng Linux với nhiều modem
2.2.2 Lợi thế của Linux
Linux cung cấp cho bạn một môi trường học lập trình mà hiện nay chưa có hệ điều hành nào sánh được Với Linux, bạn có đầy đủ cả mã nguồn, trong khi đó các sản phẩm mang tính thương mại thường không bao giờ tiết lộ mã nguồn
Hiện nay UNIX và Linux có khả năng chạy trên bất kỳ nền nào, từ máy xách tay cho đến máy tính lớn Nhờ tính khả chuyển, các máy tính chạy UNIX và Linux trên nhiều nền khác nhau có thể liên lạc với nhau một cách chính xác và hữu hiệu Những
hệ này có thể hoạt động mà không cần phải bổ sung thêm bất kỳ giao diện liên lạc đắt tiền nào, mà thông thường bạn phải mua thêm sau khi mua những hệ điều hành khác
Trang 23Linux đã có hàng ngàn ứng dụng, từ các chương trình bảng tính điện tử, quản trị
cơ sở dữ liệu, xử lý văn bản đến các chương trình phát triển phần mềm cho nhiều ngôn ngữ, chưa kể nhiều phần mềm viễn thông trọn gói Ngoài ra, Linux cũng có hàng loạt trò chơi giải trí trên nền ký tự hoặc đồ hoạ Phần lớn những chương trình tiện ích và ứng dụng có sẵn cho Linux lại không mất tiền mua Các bạn chỉ phải trả chi phí cho việc tải chúng từ Internet xuống hoặc trả cước phí bưu điện
Đến với Linux, giới lập trình sẽ có một loạt các công cụ phát triển chương trình, bao gồm các bộ biên dịch cho nhiều ngôn ngữ lập trình hàng đầu hiện nay, chẳng hạn như C, C++, … Bạn cũng có thể dùng ngôn ngữ Pascal thông qua trình biên dịch FreePascal
Hai khái niệm hiện nay được đề cập rất nhiều là hệ thống mở (Open system) và tính liên tác (Interoperability) đều gắn với khả năng của những hệ điều hành có thể liên lạc với nhau Phần lớn các hệ mở đòi hỏi phải thoả mãn tương thích tiêu chuẩn IEEE POSIX (giao diện hệ điều hành khả chuyển) Linux đáp ứng những tiêu chuẩn ấy
và được lưu hành với mã nguồn mở
2.2.3 Ưu điểm và khuyết điểm của Linux
Như đã nói ở trên, Linux có các ưu điểm sau:
Là hệ điều hành miễn phí và được rất nhiều người phát triển nên có nhiều tính năng và ứng dụng hay, cũng như nhiều người dùng
Là hệ điều hành đa nhiệm và đa người dùng, tận dụng được sức mạnh xử lý của máy 386 và đời cao hơn Chạy được trên nhiều loại máy khác nhau
Có sẵn bộ giao thức TCP/IP giúp cho người dùng dễ dàng kết nối Internet
Khả năng tương thích với các hệ thống mở có nghĩa chúng ta có thể chuyển
nó từ hệ điều hành này sang hệ điều hành khác mà vẫn hoạt động tốt
Hỗ trợ người dùng, hiện nay linux có hàng ngàn ứng dụng, bao gồm các chương trình báo biểu, cơ sở dữ liệu, giải trí, đa phương tiện và rất nhiều ứng dụng khác
Lợi ích cho giới chuyên nghiệp điện toán, đến với Linux giới điện toán sẽ có hàng ngàn công cụ phát triển chương trình, bao gồm các bộ biên dịch cho nhiều ngôn ngữ lập trình hàng đầu hiện nay, chẳng hạn như C, C++…
Bên cạnh đó, nó cũng có những khuyết điểm :
Trang 24 Khuyết điểm về hỗ trợ kỹ thuật tức là Linux không có một công ty nào đứng
ra chịu trách nhiệm phát triển hệ điều hành này Nếu gặp trục trặc thì không
có ai có thể giải quyết miễn phí cho bạn
Khuyết điểm về phần cứng đó chính là Linux không dễ dàng cài đặt và hỗ trợ nhiều thiết bị phần cứng Các phiên bản phần cứng của Linux đều hỗ trợ theo nguyên tắc phần cứng của nhà phát triển Linux
Quá trình sử dụng với người dùng tương đối khó khăn bởi vì Linux hỗ trợ việc giao tiếp bằng đồ họa ít nên chủ yếu phải dùng bằng lệnh nên dẫn đến làm cho người dùng cảm thấy khó khăn khi sử dụng
2.2.4 Kiến trúc của hệ điều hành Linux
Hình 5 : Kiến trúc hệ điều hành Linux
Shell: cung cấp các tập lệnh cho người dùng thao tác với kernel để thực hiện
công việc Shell đọc các lệnh từ người dùng và xử lý Ngoài ra shell còn cung cấp một
số đặc tính khác như : chuyển hướng xuất nhập, ngôn ngữ lệnh để tạo các tập tin tương
tự như trong DOS Có nhiều shell được sử dụng trong Linux Có nhiều loại shell được dùng trong Linux Điểm quan trọng để phân biệt các shell khác nhau là bộ lệnh của mỗi shell Ví dụ,C shell thì sử dụng các lệnh tương tự ngôn ngữ C, Bourne thì dùng ngôn ngữ lệnh khác… Shell sử dụng chính trong Linux là GNU Bourne Again Shell (bash) Shell này là shell phát triển từ Bourne Shell, là shell sử dụng chính trong các hệ thống Unix, với nhiều tính năng mới như : điều khiển các tiến trình, các lệnh history, tên tập tin dài… [4]
Trang 25Các tiện ích: các tiện ích được người dùng sử dụng thường xuyên Nó dùng cho
nhiều thứ như thao tác tập tin, đĩa, nén, sao lưu tập tin… Hầu hết các tiện ích sử dụng trong Linux đều là sản phẩm của GNU Linux có nhiều tiện ích như là biên dịch, gỡ lỗi, soạn văn bản… Linux có nhiều tiện ích như chương trình biên dịch, trình gỡ lỗi, trình soạn thảo văn bản… Tiện ích có thể được sử dụng bởi người dùng hoặc hệ thống Một số tiện ích được xem là chuẩn trong hệ thống Linux như passwd, ls, ps,
vi … [4]
Chương trình ứng dụng: khác với các tiện ích thì các ứng dụng có độ phức tạp
rất lớn được các nhà sản xuất viết ra như word, quản trị cơ sở dữ liệu… [4]
Kernel (hạt nhân): là trung tâm điều khiển của hệ điều hành Linux, chứa các mã
nguồn điều khiển hoạt động của toàn bộ hệ thống Hạt nhân được phát triển không ngừng, thường có hai phiên bản đồng thời là phiên bản mới nhất và phiên bản chạy ổn định nhất Kernel được thiết kế theo dạng modul, do vậy kích thước thật sự của kernel
là rất nhỏ Chúng chỉ tải các bộ phận cần thiết lên bộ nhớ và không lãng phí bộ nhớ Kernel được xem như hạt nhân của Linux, ban đầu phát triển các CPU Intel 80386 Điểm mạnh của CPU này là khả năng quản lý bộ nhớ, trong khi hệ thống có ít bộ nhớ,
hệ điều hành sử dụng không gian đĩa hoán đổi (swap space) để lưu trữ các dữ liệu xử
lý của chương trình Swap space cho phép ghi các trang của bộ nhớ xuất từ các vị trí dành sẵn trong đĩa và xem nó như phần mở rộng của vùng nhớ chính [4]
2.2.5 Quản trị người dùng và nhóm trên Linux
2.2.5.1 Giới thiệu về tài khoản trong Linux
Cũng giống như Windows Linux cũng có các loại tài khoản khác nhau, xét về mặt tổng thể thì có 2 loại chính : tài khoản người dùng và tài khoản quản trị (còn gọi là root) [4]
Root là tài khoản quản trị có ảnh hưởng rất lớn đối với an toàn của hệ thống, tài khoản root có các các quyền như: tạo tài khoản người dùng, cài đặt phần mềm, thêm, xóa, sửa đổi các tài khoản… Khi đăng nhập với tài khoản root thì tại giao diện
terminal thường có kí hiệu: “#” Các thông tin, dữ liệu về tài khoản người dùng khác
thường được lưu trữ trong thư mục home [4]
2.2.5.2 Các thao tác trên tài khoản người dùng
Thêm tài khỏan người dùng
Để thêm một user mới ta thao tác như sau :
Trang 26adduser [tên tài khoản] [-u uid [-o]] [-g group] [-G group ] [-d home] [-s
shell] [-c comment] [-m[-k template]] [-f inactive] [-e expire] [-p passwd] [-n] [-r] name
adduser [tên tài khoản] -D [-g group] [-b base] [-s shell] [-f inactive] [-e
expire]
Ý nghĩa của các tùy chọn trên như sau :
-c: (comment) tên đầy đủ của user (Full name)
Ví dụ: tạo user có tên ntt với tên đầy đủ là ngothanhtoan ta thực hiện dòng lệnh
Lưu ý: thư mục chứa thông tin user phải được tạo trước
-e (expire_date): ngày tài khoản hết hạn (không thể sử dụng tài khoản này login vào hệ thống)
Ví dụ: tài khoản cntt được phép sử dụng đến ngày 30-08-2013, chứa trong thư
mục linuxgroup với tên đầy đủ congnghethongtin
useradd cntt –e 2013-08-30 –d /home/linuxgroup –c congnghethongtin
-f (inactive_days): với tùy chọn này ta có thể chỉ định số ngày password mất
hiệu lực trước khi tài khoản bị khóa Giá trị mặc định của tùy chọn này là -1, với giá trị này password không thể thiết lập ngày mất hiệu lực
Ví dụ: tạo thời gian hiệu lực cho password của tài khoản cntt trong 80 ngày
useradd cntt –f 80
-u (user id): với tùy chọn này ta có thể ráng số thứ tự cho tài khoản
Ví dụ: tạo tài khoản cntt với số thứ tự 100 ta thực hiện dòng lệnh sau :
useradd cntt –u 100
-p (password): tùy chọn này dùng để đặt mật khẩu cho tài khoản
Ví dụ: đặt password cho tài khoản cntt
Trang 27useradd cntt –p 12345
-g (group): dùng để chỉ định user thuộc về nhóm nào trong hệ thống các
nhóm và nhóm đó sẽ đặt trưng về quyền cho user nếu user thuộc về nhiều
nhóm, nhóm này thường được gọi là nhóm chính (Primary group) Nếu user
mới khi tạo không được chỉ định thuộc về nhóm nào thì hệ thống tự tạo ra nhóm mới có tên trùng với tên user
Ví dụ: tạo tài khoản cntt thuộc phân nhóm root
useradd cntt –g root
-G (group): tùy chọn này cũng dùng để chỉ định user thuộc về nhóm nào
trong hệ thống nhóm, tuy nhiên với tùy chọn này ta có thể chỉ định một lúc
nhiều nhóm cho user, mỗi nhóm cách nhau bởi dấu “,” (phẩy)
Ví dụ : đưa tài khoản cntt thuộc nhóm root và linux
useradd cntt –G root,linux
Lưu ý: ta cũng có thể sử dụng tùy chọn này để chỉ định user thuộc về một
nhóm.Tuy nhiên tùy chọn này không thể chỉ định nhóm này làm primary group,
hệ thống sẽ tự tạo ra primary group trùng với tên user
-o : tùy chọn này thường được dùng chung với tùy chọn -u (user id), nếu sử
dụng ta có thể đặt trùng số id cho tài khoản ta muốn tạo trùng với tài khoản bất kỳ nào trước đó
Ví dụ : tạo tài khoản cntt1 trùng id với id của tài khoản cntt là 100
useradd cntt1 –o –u 100
-l : nếu sử dụng tùy chọn này thì tài khoản được tạo khi đăng nhập vào hệ
thống sẽ không được ghi vào file nhật ký đăng nhập hệ thống
-M : thông thường khi một tài khoản mới được tạo hệ thống sẽ tạo một thư
mục có tên giống với tên tài khoản chứa trong thư mục home, nếu ta sử dụng tùy chọn này thì hệ thống sẽ không tạo thư mục này Khi đăng nhập hệ
thống tài khoản sẽ sử dụng tập tin login.defs để tạo thư mục đăng nhập
-r : tùy chọn dùng để tạo ra tài khoản hệ thống với số id nhỏ hơn số id được
định nghĩa trong file login.defs, khi sử dụng tùy chọn này thì tài khoản được
Trang 28tạo sẽ không có thư mục của tài khoản trong thư mục home, nếu muốn tạo
thư mục cho tài khoản hệ thống ta sử dụng thêm tùy chọn -m
-s (shell) : chỉ định nhân để phục vụ cho việc đăng nhập vào hệ thống của
tài khoản (tìm hiểu thêm phần lập trình nhân trong Linux)
Xóa tài khoản người dùng
Để xóa một tài khoản trong giao diện terminal ta sử dụng lệnh userdel với cấu trúc như sau:
userdel Tên tài khoản [option : -r]
Với tùy chọn -r kèm theo thì hệ thống sẽ thực hiện việc xóa tài khoản cùng với việc xóa tất cả các thư mục có liên quan đến tài khoản
Ví dụ: xóa tài khoản cntt và các thư mục của tài khoản cntt
userdel cntt –r
Chỉnh sửa tài khoản người dùng
Khi ta cần chỉnh sửa thông tin về tài khoản ta sử dụng lệnh usermod với cấu trúc sau:
usermod [-u uid [-o]] [-u uid [-o]] [-G group ] [-d home] [-s shell] [-c
comment] [-m [-k template]] [-f inactive] [-e expire] [-p passwd] [-L lock|-U
unlock][tên tài khoản]
Nếu sử dụng các tùy chọn ta cần biết ý nghĩa từng tùy chọn như sau :
-c (comment): sửa lại tên đầy đủ của user (Full name)
Ví dụ: sửa lại tài khoản có tên cntt với tên đầy đủ congnghethongtin thành tên
đầy đủ là congnghe ta thự hiện dòng lệnh sau:
usermod -c congnghe cntt
-d (home): đổi thư mục dành cho việc login, nếu ta không đổi thư mục mới thì hệ thống sẽ lấy thư mục trước đó, xét ví dụ sau:
Ví dụ: đổi tài khoản có tên cntt với thư mục linuxgroup trong thư mục home
thành congnghethongtin, ta thực hiện dòng lệnh sau:
Trang 29 -f (inactive_days): với tùy chọn này ta có thể thay đổi ngày password mất
hiệu lực trước khi tài khoản bị khóa Giá trị mặc định của tùy chọn này là -1,
với giá trị này password không thể thiết lập ngày mất hiệu lực
Ví dụ: tạo thời gian hiệu lực cho passwosd của tài khoản cntt trong 80 ngày
thành 90 ngày
usermod -f 90 cntt
-u (user id): với tùy chọn này ta có thể thay đổi số thứ tự cho tài khoản
Ví dụ: thay đổi tài khoản cntt với số thứ tự 100 thành 500 ta thực hiện dòng lệnh
sau:
usermod -u 500 cntt
-p (password): tùy chọn này dùng để đặt lại mật khẩu cho tài khoản
Ví dụ: chuyển password 12345 thành cntt123 cho tài khoản cntt
usermod -p cntt123 cntt
-g (group): dùng để chỉ định lại user thuộc về nhóm nào trong hệ thống các
nhóm và nhóm đó sẽ đặc trưng về quyền cho user nếu user thuộc về nhiều
nhóm, nhóm này thường được gọi là nhóm chính (Primary group) Nếu user
mới khi tạo không được chỉ định thuộc về nhóm nào thì hệ thống tự tạo ra
nhóm mới có tên trùng với tên user
Ví dụ: đổi primary group của tài khoản cntt thuộc về phân nhóm root thành
linuxgroup Ta sử dụng dòng lệnh sau:
Trang 30usermod -g linuxgroup cntt
-G (group): tùy chọn này cũng dùng để thay đổi hàng loạt nhóm mà tài khoản thuộc về, cũng giống như khi tạo mới các nhóm cách nhau bởi dấu “,” (phẩy)
Ví dụ: sử dụng dòng lệnh để đưa tài khoản cntt thuộc về phân nhóm root và
linux
usermod -G root,linux cntt
Lưu ý: cũng giống như khi tạo mới một tài khoản ta cũng có thể sử dụng tùy
chọn này để chỉ định user thuộc về một nhóm.Tuy nhiên tùy chọn này không thể chỉ định nhóm này làm primary group, hệ thống sẽ tự tạo ra primary group trùng với tên user
-o: tùy chọn này thường được dùng chung với tùy chọn -u (user id), nếu sử
dụng ta có thể đặt trùng số id cho tài khoản ta muốn tạo trùng với tài khoản
bất kỳ nào trước đó
Ví dụ: chỉnh lại tài khoản cntt1 có số id trùng với số id của tài khoản cntt (id
500)
usermod -o -u 500 cntt1
-l (login_name): dùng tùy chọn này để thay đổi tên đăng nhập vào hệ thống,
cấu trúc lệnh như sau:
usermod -l Tên đăng nhập mới Tên đăng nhập cũ
Ví dụ: đổi tên đăng nhập của tài khoản cntt thành cntt2
usermod -l cntt2 cntt
-L: với tùy chọn này ta dùng để khóa tính năng mật mã của một tài khoản,
nếu tài khoản đã được đặt password thì khi sử dụng tùy chọn này để chỉnh
sửa tài khoản, mật mã sẽ bị khóa
Ví dụ: khóa password cntt123 của tài khoản cntt
usermod -L cntt
Trang 31 -U: ngược lại với tùy chọn trên tùy chọn này có chức năng mở khóa cho password của một tài khoản
Ví dụ: mở khóa password cho tài khoản cntt
usermod -U cntt
-s (shell): thay đổi nhân đăng nhập vào hệ thống
2.2.5.3 Các thao tác trên tài khoản nhóm
Thêm mới một nhóm tài khoản
Để tạo một nhóm người dùng mới ta sử dụng lệnh groupadd với cấu trúc như sau:
groupadd [option: -g -f -o -r ] [tên nhóm]
Nếu sử dụng các tùy chọn ta cần biết ý nghĩa từng tùy chọn như sau :
-g (gid): đánh số thứ tự cho nhóm với giá trị hợp lệ thường lớn hơn 500, còn khoảng giá trị từ 0 đến 499 thường dùng cho các nhóm nhằm mục đích nghiên cứu các tài khoản hệ thống
Ví dụ: thực hiện việc tạo mới nhóm có tên linux với số thứ tự 501
-r: việc sử dụng tùy chọn này nhằm mục đích cho biết việc tạo ra nhóm này
để chứa các tài khoản hệ thống Thông thường số thứ tự của nhóm thường nhỏ hơn 499 hệ thống sẽ tự động cập nhật
-f: khi sử dụng tùy chọn này thì dù có tạo ra một nhóm mới có tên trùng với nhóm đã có thì hệ thống cũng không cảnh báo hay báo lỗi, nói cách khác đây là tùy chọn tạo nhóm với trạng thái thành công
Xóa một nhóm
Trang 32 Việc xóa một nhóm trong hệ thống tương đối đơn giản với lệnh groupdel có cấu trúc như sau:
groupdel < Tên nhóm cần xóa>
Ví dụ: xóa nhóm có tên linux Ta thực hiện dòng lệnh sau:
groupdel linux
Sửa thông tin của nhóm
Để chỉnh sửa nhóm ta sử dụng lệnh groupmod với cấu trúc như sau:
groupmod -g -o -n
Ý nghĩa các tùy chọn cũng giống như các tùy chọn khi tạo mới một nhóm
-g: với tùy chọn này cho phép đặt lại số thứ tự của nhóm, dãy số hợp lệ cũng
giống như khi tạo mới
Ví dụ: đặt lại số thứ tự cho nhóm linux (id ban đầu: 650) với id mới bằng 600
groupmod -g 600 linux
-o: cho phép đặt trùng số thứ tự của các nhóm
Ví dụ: đặt lại số thứ tự của nhóm có tên linuxgroup trùng với số thứ tự của
nhóm có tên linux (600)
2.2.6 Quản lý tập tin trên Linux
2.2.6.1 Cấu trúc và trật tự của hệ thống tập tin
Các cấp thư mục cao nhất trong hệ thống tập tin của Linux: [4]
/: đây là thư mục gốc (root) trong Linux.Tất cả các tập tin và thư mục khác đều nằm trong thư mục gốc này
/bin: thư mục này chứa các chương trình có thể thực thi được trong hệ điều hành Linux, chẳng hạn như cat, cp, ls, more, tar
Trang 33 /boot: chứa nhân (kernel) của Linux và các tập tin khác mà trình quản lý GRUB hay LILO cần để khởi động
/dev: chứa các tập tin đặc biệt liên quan đến các thiết bị gắn trên hệ thống,
ví dụ như fd0 (đĩa A)
/etc: chứa hầu hết các tập tin cấu hình và các đoạn mã kịch bản (script) lúc khởi động
/home: chứa thư mục chủ của các tài khoản trên Linux, ví dụ với tài khoản cntt, ta có thư mục /home/cntt
/lib: chứa driver của các thiết bị nạp lúc khởi động Linux và các tập tin thư viện dùng cho các chương trình trong /bin và /sbin
/lost+found: chứa tất cả các phần bị mất Mỗi phân vùng trên đĩa cứng đều
có thư mục lost+found này
/mnt: thư mục tạm chứa các mount-point của hệ thống tập tin như ổ ROM, hay ổ đĩa mềm
CD- /opt: cung cấp vùng lưu trữ tạm cho các gói chương trình ứng dụng lớn
/proc: đây là thư mục đặc biệt, chứa thông tin về các tiến trình đang chạy trên hệ thống Linux
/root: thư mục chủ của tài khoản root
/sbin: chứa các tập tin có thể thực thi được dùng cho công việc quản trị hệ thống và chỉ được thực thi bởi root, ví dụ halt, shutdown
/selinux: chứa các thông tin được dùng cho Security Enhanced Linux (SELinux) và các tiện ích liên quan đến bảo mật hệ thống
/sys: chứa các thông về các thiết bị được nhận biết bởi nhân Linux kernel
/tmp: thư mục tạm
/usr: chứa nhiều thư mục của các chương trình quan trọng, ví dụ như:
/usr/X11R6: chứa các tập tin của chương trình X Window System
/usr/bin: chứa các tập tin có thể thực thi của nhiều dòng lệnh trên Linux, bao gồm cả các tiện ích thông thường có sẵn trên Linux, nhưng không liên quan đến phần lõi của hệ điều hành Linux
/usr/game: chứa các trò chơi (games) trên Linux
Trang 34 /usr/include: chứa các tập tin header (*.h) của C và C++, các tập tin header của X Window trong thư mục /usr/include/X11, các tập tin header của Linux kernel trong thư mục /usr/include/linux
/usr/lib: chứa các tập tin thư viện của ngôn ngữ C, C++ và các thư viện khác như thư viện đồ họa, thư viện cơ sở dữ liệu.v.v…
/usr/local: chứa các tập tin cục bộ, ví dụ như thư mục /usr/local/bin chứa các tập tin thực thi được phát triển trên hệ thống của bạn
/usr/sbin: chứa nhiều dòng lệnh quản trị hệ thống, chẳng hạn như
về thư điện tử, mạng máy tính
/usr/share: chứa các dữ liệu đã được chia sẻ, ví dụ như /usr/share/doc chứa các tập tin tài liệu của nhiều ứng dụng trên Linux
/usr/share/man: chứa các tài liệu giúp đỡ mà có thể đọc qua lệnh
man
/usr/src: chứa mã nguồn của Linux kernel (lõi của hệ điều hành)
/var: chứa các tập tin hệ thống như:
/var/cache: vùng lưu trữ dữ liệu cache của của ứng dụng
/var/lib: chứa các thông tin liên quan đến tình trạng của các ứng dụng
/var/lock: chứa các tập tin đã bị khóa để đảm bảo một tài nguyên chỉ có thể sử dụng bởi 1 ứng dụng
/var/log: chứa các tập tin log của hệ thống
/var/mail: chứa các tập tin trong hộp thư của người dùng
/var/opt: chứa các biến dữ liệu của các gói chương trình lưu trong thư mục /opt
/var/run: chứa thông tin mô tả hệ thống lúc khởi động
Trang 35 /var/spool: chứa các dữ liệu đang chờ xử lý
/var/tmp: chứa các tập tin tạm được lưu lại khi hệ thống khởi động lại
/var/yp: chứa tập tin cơ sở dữ liệu của dịch vụ Network Information Services(NIS)
2.2.7 Kết nối mạng trong Linux
2.2.7.1 Thiết bị, trình điều khiển và giao diện mạng
Thiết bị phần cứng là một tập hợp các thiết bị điện tử, các chip điều khiển,…
được cắm vào máy tính thông qua một khe cắm mở rộng
Để truy cập vào thiết bị phần cứng thì hạt nhân phải được cài đặt một số hàm đặc biệt gọi là trình điều khiển (ví dụ như các thiết bị thuộc họ Ethernet thì có trình điều khiển Becker) Việc truyền thông giữa trình điều khiển và thiết bị thông qua một vùng nhớ vào ra (I/O) Vùng nhớ này thường được ánh xạ địa chỉ lên các thanh ghi vào ra Các lệnh cũng như dữ liệu trao đổi giữa chúng đều được truyền qua các thanh ghi trên Hạt nhân truy cập vào các trình điều khiển thiết bị thông qua các giao diện Các giao diện cung cấp các hàm vào ra giống nhau tất cả các dạng thiết bị phần cứng (ví dụ như nhận hay truyền một gói tin) Các giao diện được định danh bởi các tên Các tên này được định nghĩa bên trong hạt nhân Giao diện Ethernet có tên là eth0, eth1, … Chỉ có giao diện SLIP là được gán tên động mỗi khi kết nối SLIP được thiết lập thì một giao diện tương ứng sẽ được gán cho cổng nối tiếp
Một số giao diện Linux:
lo: giao diện loopback, nó được sử dụng cho mục đích thử nghiệm Trong
hạt nhân này luôn luôn có một trình điều khiển cho giao diện này
ethn: là giao diện cho card mạng Ethernet thứ n + 1 Đây là tên chung cho
tất cả các card Ethernet
dln: giao diện cho bộ điều hợp D_Link DE-600, một dạng khác của thiết bị
Ethernet, nó được điều khiển thông qua các cổng song song thay vì các khe cắm ISA hay PCI của máy tính
sln: giao diện SLIP, được liên kết với một cổng nối tiếp, Linux hỗ trợ 4 giao
diện SLIP
Trang 36 pppn: giao diện PPP, giống như giao diện SLIP, một giao diện PPP được
liên kết với một cổng nối tiếp khi cổng này chuyển sang chế độ PPP
plpn: giao diện PLIP Giao diện này thực hiện truyền các gói tin IP qua cổng
song song Hạt nhân Linux hỗ trợ 3 giao diện PLIP
2.2.7.2 Thiết lập cấu hình mạng TCP/IP
Các vấn đề thiết lập cấu hình cho mạng máy tính Linux sử dụng giao thức TCP/IP bao gồm: gán địa chỉ IP, cấu hình cho kết nối qua đường nối tiếp
Hệ thống các tệp thiết lập cấu hình: hệ thống tệp proc, host, network, các tệp cấu hình cho giao thức SLIP, PPP, PLIP
Để thực hiện cấu hình mạng cho một mạng máy tính Linux ta phải thực hiện các công việc sau:
Cấu hình giao diện cho IP: bao gồm giao diện loopback, giao diện Ethernet, chọn đường qua gateway, thiết lập cấu hình cho gateway, giao diện PLIP, giao diện Dummy Công việc này được thực hiện thông qua các câu lệnh ifconfig và route
Lệnh ifconfig : lệnh này thường xuyên được sử dụng khi thiết lập cấu hình mạng Cú pháp như sau:
ifconfig interface [[-net | -host ] address [parameters]]
Interface là giao diện, address là đia chỉ IP nó có thể viết dưới dạng ký pháp thập phân hay tên chỉ ra trong tệp tin hosts và networks Khi không có tham
số thì nó sẽ đưa lại các thông tin về toàn bộ các giao diện mạng
2.2.7.3 Truyền các packet
Chúng ta xem xét việc xử lý một packet IP phải truyền qua một box Linux Packet ở tầng 3 được xử lý với hàm ip_rcv Tại đây có các hook Netfilter thứ nhất Netfiter là một bộ lọc packet, bộ gây chệch packet, framework NAP của họ Linux Netfilter là một framework được tổng quát hóa của các hook trong ngăn xếp mạng Một module mức kernel bất kỳ có thể cài vào ít nhất một trong số các hook này
và sẽ nhận từng packet qua các hook này Các hook của netfilter hiện đang hoạt động trong IP v4, IP v6, DECnet Có năm loại hook trong nhân Linux như hình sau:
Trang 37Hình 6: Sơ đồ Netfilter hook
Các hook này có thể quyết định loại bỏ hay tiếp tục truyền packet đến định tuyến không Định tuyến là việc tra cấu trúc của bảng FIB (Forwarding Information Table)
để xác định một điểm nhập định tuyến tương ứng với địa chỉ IP đích của packet Bước tiếp theo là ghép với các định tuyến
Bước này là xác định tuyến sẽ truyền packet Do việc tra trong cấu trúc bảng FIB
có chi phí khá lớn nên ta sẽ dùng một cache định tuyến lưu các tuyến đang được dùng
Trang 382.3.2 Phân loại, chức năng, cấu trúc Firewall
2.3.2.1 Phân loại
Firewall được chia làm 2 loại: Firewall cứng và Firewall mềm
Firewall cứng: là những Firewall được tích hợp trên Router
Trang 39Hình 8 : Mô hình Firewall cứng
Đặc điểm của Firewall cứng là:
Firewall cứng hoạt động ở tầng thấp hơn so với Firewall mềm (tầng Network và tầng Transport)
Firewall cứng không thể kiểm tra được nội dung gói tin
Firewall cứng không được linh hoạt như Firewall mềm (không thể thêm chức năng và quy tắc như Firewall mềm)
Ví dụ về Firewall cứng : Cisco ASA 5500
Firewall mềm là những Firewall được cài đặt trên server
Hình 9 : Mô hình Firewall mềm
Đặc điểm của Firewall mềm:
Tính linh hoạt cao: Có thể thêm, bớt các chức năng và các quy tắc
Firewall mềm hoạt động ở tầng Application (tầng ứng dụng)
Firewall 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: Zone Alarm, Norton Firewall, Iptables…
2.3.2.2 Chức năng
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à: [12]
Cho phép hoặc cấm những dịch vụ truy nhập ra ngoài (từ Intranet ra Internet)
Trang 40 Cho phép hoặc cấm những dịch vụ truy nhập vào trong (từ Internet vào Intranet)
Theo dõi luồn 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
Có thể nói một Firewall thực sự cần phải có ít nhất một trong các chức năng sau:
o Khả năng lọc gói (Packet Filtering): Firewall sẽ kiểm tra phần header của các gói tin và đưa ra quyết định là cho phép qua hay loại bỏ gói tin này theo tập luật đã được cấu hình
o Application Proxy: Với khả năng này thì Firewall sẽ kiểm tra kỹ lưỡng header của gói tin hơn như khả năng hiểu giao thức cụ thể mà ứng dụng sử dụng
o Chuyển đổi địa chỉ mạng (Network Address Translation – NAT): Để các máy bên ngoài chỉ thấy một hoặc hai địa chỉ mạng của Firewall còn các máy thuộc mạng trong có thể lấy các giá trị trong một khoảng bất kỳ thì các gói tin đi vào và đi ra cần được chuyên đổi địa chỉ nguồn và địa chỉ đích
o Theo dõi và ghi chép (Monitoring and Logging): Với khả năng này cung cấp cho người quản trị biết điều gì đang xảy ra tại Firewall, từ
đó đưa ra những phương án bảo vệ tốt hơn
Ngoài ra thì một Firewall còn có thể có một số chức năng mở rộng khác như:
o Data Caching: Bởi vì có những yêu cầu về các Website là hoàn toàn giống nhau của các người dùng khác nhau nên việc Caching dữ liệu
sẽ giúp quá trình trả lời nhanh và hiệu quả hơn
o Lọc nội dung (Content Filter): Các luật của Firewall có khả năng ngăn chặn các yêu cầu trang Web mà nó chứa các từ khoá, URLs hay các dữ liệu khác như video streams, image …