Với sự bùng nổ trong lĩnh vực tin học hiện nay, việc đảm bảo an toàn trở nên quan trọng và cần thiết hơn. Với bối cảnh nền kinh tế thế giới đang có xu hướng toàn cầu hóa hiện nay, và trước thực trạng về vấn đề vi phạm bản quyền ở Việt Nam, thì việc sử dụng hệ điều hành Linux là một giải pháp tốt nhất. Trong tương lai, hi vọng hệ điều hành này sẽ là hệ điều hành chủ đạo ở trong nước và phục vụ cho mọi người.
Trang 1NGHIÊN CỨU NHỮNG NGUY CƠ MẤT AN TOÀN VÀ GIẢI PHÁP TĂNG CƯƠNG AN TOÀN CHO HỆ
ĐIỀU HÀNH LINUX
Ngành: Công nghệ thông tin
Hà Nội, 2015
Trang 2DANH MỤC HÌNH VẼ VI DANH MỤC CÁC BẢNG VIII LỜI NÓI ĐẦU XI
CHƯƠNG I GIỚI THIỆU HỆ ĐIỀU HÀNH LINUX 1
1.1 Giới thiệu về hệ điều hành Linux 1
1.1.1 Giới thiệu về UNIX và Linux 1
1.1.2 Phiên bản cho server và client 4
1.2 Kiến trúc hệ điều hành Linux 8
1.3 So sánh hệ điều hành Linux và windows 9
1.3.1 Ưu điểm 9
1.3.2 Nhược điểm 12
CHƯƠNG II NGHIÊN CỨU NHỮNG NGUY CƠ MẤT AN TOÀN VÀ GIẢI PHÁP TĂNG CƯỜNG AN NINH CHO HỆ ĐIỀU HÀNH LINUX 15
2.1 Những nguy cơ mất an toàn trên hệ điều hành Linux 15
2.1.1 Những nguy cơ mất an toàn trong cài đặt, cấu hình hệ thống 15
2.1.2 Những lỗ hổng mới 17
2.2 Giải pháp tăng cường an ninh cho hệ điều hành Linux 24
2.2.1 Thiết lập chính sách bảo mật cho hệ điều hành Linux 24
2.2.2 Các giải pháp khác 39
CHƯƠNG III CÀI ĐẶT THỰC HIỆN TẤN CÔNG SHELLSHOCK 41
3.1 Mô hình cài đặt và thực hiện tấn công 41
3.2 Khai thác lỗ hổng trên máy chủ Web Apache 43
3.3 Khai thác lỗ hổng ShellShock trên dịch vụ SSH 50
3.3.1 Tạo tài khoản người dùng trên máy chủ 51
3.3.2 Tạo các khóa xác thực dành cho máy trạm 51
3.3.3 Thêm khóa xác thực vào tập tin cấu hình sshd trên máy chủ 53
3.3.4 Đăng nhập sử dụng khóa xác thực 54
3.3.5 Thực hiện tấn công 55
KẾT LUẬN 58
TÀI LIỆU THAM KHẢO 59
Trang 4Danh mục từ
MIT Massachusetts Institute of
Technology
Viện Công nghệ Massachusetts
PC Personal Computer Máy tính cá nhân
HĐH Hệ điều hành
CPU Central Processing Unit Bộ xử lý trung tâm
ADM Arrow Diagramming Method Phương pháp mô tả bằng sơ
đồ mũi tênSUN Stanford University Network Công ty sản xuất phần mềm
Tập hợp các phần mềm miễn phí tương thích với UNIX
MIPS Microprocessor without
Interlocked Pipeline Stages
BSD Berkeley Software
Distribution
Hệ điều hành được phát triển từ UNIX
FORTRAN Formula Translator Ngôn ngữ lập trình
RPM Red Hat Package Manager Chương trình cài đặt
POSIX Portable Operating System
Interface for Unix Giao diện hệ điều hành
UNIX Unics- Uniplexed Information
and Computing System Hệ điều hành máy tínhNTFS New Technology File System Hệ thông tập tin
Trang 5EXT Extended file system Hệ thống tập tin
GUI Graphical User Interface Giao diện đồ họa người
dùngARM Advanced RISC Machine Cấu trúc vi xử lý
GIMP GNU Image Manipulation
Program
Chương trình máy tính xử
lý hình ảnhGRUB GRand Unified Bootloader Trình khởi động máy tínhLILO Linux Loader Trình khởi động máy tínhRHEL Red Hat Enterprise Linux Bản phân phối của Linux
DHCP Dynamic Host Configuration
Protocol
Giao thức cấu hình máy chủđộng
HIDS Host-based instrusion
Detection System
Hệ thống phát hiện xâm nhập
BIOS Basic Input/Output System Hệ thống xuất nhập cơ bản
SFTP Secure Shell File Transfer
Protocol
Giao thức truyền tập tin
TLS Transport Layer Security Bảo mật tầng truyền tảiVPN Virtual Private Network Mạng riêng ảo
MAC Media Access Control Địa chỉ vật lý
TCP Transmission Control
Protocol
Giao thức tầng vận tải
DNAT Destination Network Address
Transaltion Chuyển đổi địa chỉ đích
SNAT Stateful Network Address
Trang 7Hình 1.1 Kiến trúc của Linux 8
Hình 2.1 Lỗi GHOST.c 18
Hình 2.2 GHOST-test.sh dựa trên hệ thống RHEL/CentOS 19
Hình 2.3 Lỗ hổng ShellShocl trên OS X của Apple 20
Hình 2.4 Kiểm tra lỗ hổng ShellShock bằng công cụ trực tuyến trên shellshocker.net 22
Hình 2.5 Cơ chế phát sinh lỗ hổng ShellShock 23
Hình 2.6 Mô hình IP tables trên Linux 35
Hình 2.7 Mô hình hoạt động của Iptables 36
Hình 3.1 Mô hình Client- Server 41
Hình 3.2 Cài đặt địa chỉ IP trên máy trạm 42
Hình 3.3 Cài đặt địa chỉ IP trên máy chủ Unbutu 42
Hình 3.4 Kiểm tra kết nối giữa 2 máy 43
Hình 3.5 Cập nhật gói phần mềm trên máy chủ Unbutu 43
Hình 3.6 Cài đặt apache2 trên máy chủ 44
Hình 3.7 Kiểm tra hoạt động của máy chủ Web 44
Hình 3.8 Tạo nội dung tập lệnh Bash CGI 45
Hình 3.9 Kiểm tra nội dung tệp lệnh CGI 45
Hình 3.10 Sử dụng curl chèn đoạn mã lệnh vào truy vấn HTTP 46
Hình 3.11 Tập tin Hacked.txt được tạo trên máy chủ 47
Hình 3.12 Kiểm tra kết quả tấn công 47
Hình 3.13 Sử dụng Netcat để kiểm tra kết nối 48
Hình 3.14 Truy vấn HTTP từ máy tấn công đến máy chủ 48
Hình 3.15 Kết quả yêu cầu kết nối ngược 49
Hình 3.16 Khai thác lỗ hổng ShellShock thành công 50
Hình 3.17 Tạo tài khoản người dùng “shellshock” 51
Hình 3.18 Kiểm tra việc khởi tạo người dùng “shellshock” 51
Hình 3.19 Tạo thu mục lưu trữ tài khoản người dùng 51
Hình 3.20 Thiết lập quyền sở hữu thư mục cho người dùng 51
Hình 3.21 Tạo cặp khóa RSA 52
Trang 8Hình 3.24 Xác nhận khóa công khai trên máy chủ 53
Hình 3.25 Tạo thư mục chứa khóa xác thực 53
Hình 3.26 Lưu trữ khóa công khai trên tập tin xác thực 54
Hình 3.27 Chỉnh sửa tập tin cấu hình dịch vụ SSH 54
Hình 3.28 Đăng nhập vào máy chuủ thông qua dịch vụ SSH 54
Hình 3.29 Yêu cầu xác thực mật khẩu 55
Hình 3.30 Chèn lệnh Bash Shell vào khóa công khai 55
Hình 3.31 Lưu khóa công khai vào tập tin xác thực trên máy chủ 56
Hình 3.32 Truy vấn dịch vụ SSH tới máy chủ 56
Hình 3.33 Truy cập vào máy chủ thông qua dịch vụ SSH 57
Trang 9Bảng 1.1 Một số phiên bản của Unix 2 Bảng 1.2 Bảng so sánh tổng quan giữa HĐH Linux và Windows 12
Trang 10Trong quá trình học tập và nghiên cứu đề tài, em xin được gửi lời cảm
ơn trân trọng và sâu sắc nhất tới giáo viên hướng dẫn đã tận tình chỉ bảo,hướng dẫn và truyền đạt kiến thức cho em trong quá trình thực hiện đề tàinày Đồng thời các thầy cô đượctrong khoa và các bạn đã giúp đỡ, tạo điềukiện cho em hoàn thành đồ án Mặc dù em đã cố gắng hết sức và được thamkhảo từ các tài liệu chuyên ngành nhưng chắc chắn đề tài không thể tránhđược những thiếu sót, vì vậy rất mong nhận được những ý kiến đóng góp củacác thầy cô và bạn đọc để đề tài được hoàn thiện hơn
Em xin chân thành cảm ơn!
Hà nội, ngày 01 tháng 06 năm 2015
Sinh viên thực hiện
Trang 11học, mang theo nhiều đặc tính an toàn bao hàm các cơ chế bảo mật, cùng vớitính chất của một mã nguồn mở đã được đánh giá là một trong những hệ điềuhành bảo mật tốt nhất Rất nhiều công ty, tổ chức trên thế giới chấp nhậnLinux như là một nền tảng cho sản phẩm của họ, cũng như nhiều công ty,ISPs sử dụng máy chủ Linux như là các Internet gateway Hơn nữa, Linuxserver là một trong những thách thức lớn đối với tình trạng xâm nhập bất hợppháp Do đó, vấn đề tăng cường an toàn cho hệ thống Linux trở nên quantrọng và bức thiết hơn Đồ án nghiên cứu các vấn đề cấp thiết trong việc bảo
vệ an toàn dữ liệu, giúp cải thiện đáng kể tư duy và sự hiểu biết về hệ điềuhành Linux đối với một sinh viên an toàn thông tin, đồng thời có một cái nhìntổng quát về an toàn hệ thống và tầm quan trọng của các cơ chế khi thực hiệncác vấn đề bảo mật
Nội dung của đồ án gồm 3 chương:
Chương I: Giới thiệu hệ điều hành Linux
Chương này sẽ đánh giá tổng quát về hệ điều hành, lịch sử phát triển, ưunhược điểm, đồng thời có sự so sánh cơ bản giữa hệ điều hành Linux với hệđiều hành Windows đang phổ biến
Chương II: Nghiên cứu những nguy cơ mất an toàn và giải pháp tăng cường an ninh cho hệ điều hành Linux
Nghiên cứu những lỗ hổng mới, các điểm yếu trong bảo mật, kẽ hởtrong giao thức Tìm hiểu các công cụ, giải pháp an ninh hỗ trợ cho hệ điềuhành Linux
Chương III: Cài đặt thực hiện tấn công ShellShock
Triển khai một kịch bản tấn công Linux CentOS thông qua lỗ hổngShellShock
Trang 12CHƯƠNG I GIỚI THIỆU HỆ ĐIỀU HÀNH LINUX
1 Giới thiệu về hệ điều hành Linux
1.1.1 Giới thiệu về UNIX và Linux
Năm 1964, Bell Labs, MIT & Gerenal Electric phát triển một hệ điều hành gọi là MULTISC (Mutilplexed Information and Computing System) Sau
đó năm 1969, Ken Thompson viết một hệ điều hành trên hệ thống máy tính PDP-7, và hệ điều hành này được gọi là UNIX (Uniplexed Information and Computing System).
Năm 1973, Riche và Thompson viết lại nhân của hệ điều hành UNIXtrên ngôn ngữ C, dễ dàng cài đặt tới các loại máy tính khác nhau, tính chất
này được gọi là tính khả chuyển (portable) của UNIX.
Năm 1977, hai bản phân phối của UNIX được công bố là: System V củaAT&T, Novell và Berkeley Software Distribution (BDS) của Đại họcBerkeley
Giai đoạn 1985-1987, UNIX phiên bản 2 và 3 tương ứng được công bố.Trong giai đoạn này, có khoảng 100.000 bản UNIX được phổ biến trên thếgiới, được cài đặt từ máy vi tính đến các hệ thống lớn
Đầu năm 1990, UNIX phiên bản 4 được đưa ra như là một chuẩn củaUNIX Đây là sự kết hợp của các phiên bản sau:
- AT&T UNIX phiên bản 3
- Berkeley Software Distribution (BDS)
- XENIX của MicroSoft
Trang 13AIX International Business
Machines AT&T System V
A/UX Apple Computer AT&T System V
SoftWare Distribution)
Irix Silicon Graphics AT&T System V
Foundation
OSF/1
Digital Equipment Corporation
BDS
SCO UNIX Santa Cruz Operation AT&T System V
Solaris Sun Microsystems AT&T System V
Ultrix Digital Equipment
Bảng 1.1 Một số phiên bản của Unix
Một số đặc trưng của hệ điều hành UNIX:
- Là hệ điều hành đa người dùng, đa chương trình Trong đó mỗi ngườidùng có thể thực hiện các chương trình một cách độc lập
- Hệ điều hành được viết trên ngôn ngữ lập trình C, dễ dàng đọc hiểu vàthay đổi để cài đặt trên các loại máy tính mới (tính khả chuyển)
- Có giao diện người dùng đơn giản, đầy đủ chức năng cơ bản và cung cấpcác dịch vụ cho người dùng
Trang 14- Đảm bảo nguyên tắc xây dựng các chương trình phức tạp từ nhữngchương trình đơn giản.
- Sử dụng duy nhất một hệ thống file cho phép dễ dàng lưu trữ và sửa đổi
- Hỗ trợ kết nối cơ bản với các thiết bị ngoại vi
- Có cơ chế ẩn cấu trúc máy đối với người dùng, đảm bảo tính độc lập củachương trình đối với dữ liệu và phần cứng, tạo điều kiện thuận lợi cho ngườilập trình khi viết các chương trình chạy UNIX với các điều kiện phần cứnghoàn toàn khác biệt
Năm 1991, Linus Torvalds, sinh viên trường Đại học Tổng hợp Helsinki Phần Lan bắt đầu xem xét Minix là một phiên bản của Unix với mục đích tạo
ra một hệ điều hành Unix chạy trên PC với bộ xử lý Intel 80386
Ngày 25/08/1991, Linus cho ra đời Version 0.01 và thông báo trên
comp.os.minix về dự định của mình về Linux.
Tháng 1/1992, Linus cho ra đời phiên bản version 0.02 với shell và trìnhbiên dịch C Linux không cần Minix nữa để biên dịch lại hệ điều hành củamình Linus đặt tên hệ điều hành của mình là Linux
Năm 1994 phiên bản chính thức 1.0 được phát hành Hỗ trợ giao thứcmạng TCP/IP chuẩn UNIX Trình điều khiển thiết bị đã được bổ sung để chạy
IP trên một mạng Ethernet hoặc qua modem Hệ thống file trong Linux 1.0 đãđược tối ưu hơn so với hệ thống file của Minux, ngoài ra hỗ trợ điều khiểnSCSI truy nhập đĩa tốc độ cao
Tháng 6-1996, phiên bản Linux 2.0 được công bố Có hai đặc trưng nổibật của phiên bản Linux 2.0 là hỗ trợ kiến trúc phức hợp, bao gồm cả cổngAlpha 64-bit, và hỗ trợ kiến trúc đa bộ xử lý
Tới năm 2000, phiên bản Linux 2.4 được phát hành Một trong đặc điểmđược quan tâm của nhân này là hỗ trợ mã ký tự Unicode 32 bít, thuận lợi choviệc xây dựng các giải pháp toàn diện và triệt để đối với vấn đề ngôn ngữ tựnhiên trên phạm vi toàn thế giới
Linux là một hệ điều hành dạng UNIX (Unix-like Operating System)
chạy trên máy PC với bộ điều khiển trung tâm CPU Intel 80386 trở lên, hay
Trang 15các bộ xử lý trung tâm tương thích ADM, Cyrix Linux ngày nay có thể chạytrên các máy Macintosh hoặc SUN Space.
Quá trình phát triển của Linux được tăng tốc bởi sự giúp đỡ của chương
trình GNU (GNU’s Not Unix), đó là chương trình phát triển các Unix có khả
năng chạy trên nhiều nền tảng Phiên bản mới nhất của Linux kernel là 2.6.25,
có khả năng điều khiển các máy đa bộ vi xử lý (hiện tại hỗ trợ máy tính có tối
đa 16 CPUs) Linux kernel 2.6.25 cũng đồng thời nâng cấp hệ thống file Ext4(phiên bản cũ là Ext3), giúp hỗ trợ dung lượng block lớn hơn- từ 4K lên 64K
và rất nhiều các tính năng khác
Một số đặc điểm chính của Linux:
- Là hệ điều hành miễn phí đa nhiệm đa người dùng, tương thích với nhiều
hệ điều hành như DOS, Microsoft Windows…
- Là một hệ điều hành với mã nguồn mở, được phát triển qua cộng đồngnguồn mở (bao gồm cả Free Software Foundation) nên Linux phát triển rấtnhanh và là một trong số ít các hệ điều hành được quan tâm nhiều nhất trênthế giới hiện nay
- Hardware: Chạy trên nhiều platform, Alpha, AMD, MIPS, PowerPC,Sparc,…
- Giao diện đồ họa: hỗ trợ GNOME, KDE,… Hỗ trợ nhiều giao thứcmạng, bắt nguồn và phát triển từ dòng BSD Thêm vào đó, Linux còn hỗ trợtính toán thời gian thực
- Ngôn ngữ lập trình: C, C++, FORTRAN, Java, Perl, Python, PHP…
- Dễ dàng quản lý từ xa: dễ dàng truy cập từ xa bằng dòng lệnh hoặc GUI
- Tính ổn định cao: Linux có thể chạy nhiều năm không cần reboot
1.1.1 Phiên bản cho server và client
Hiện nay Linux có rất nhiều bản phân phối khác nhau, một phần bởi vìtính chất nguồn mở của nó Sau đây là một số bản phân phối chủ yếu và đượcdùng phổ biến hiện nay
Red Hat Linux: là một trong những phiên bản thương mại đầu tiên của
GNU/Linux và được xem là chuẩn nhất trong số các phiên bản khác Phiênbản 1.0 đầu tiên được công bố vào năm 1995 nhưng chỉ vài tháng sau, phiên
Trang 16bản 2.0 bổ sung công nghệ RPM (Red Hat Package Manager – Trình quản lý gói tin của Red Hat) tiếp tục được công bố Sự ra đời của RPM giúp việc cài
đặt, cập nhật, xóa, bổ sung các gói phần mềm trở nên dễ dàng hơn trước rấtnhiều
Vào tháng 9/2003, hãng Red Hat đã quyết định tập trung vào việc pháttriển các phiên bản phiên bản dành cho doanh nghiệp Đồng thời, Red Hatcũng ủy quyền phiên bản cộng đồng cho Fedora Core – đây là dự án nguồn
mở độc lập với Red Hat Hiện tại, một số sản phẩm hàng đầu của Red Hat làFedora, Red Hat Network và một số dịch vụ cập nhật phần mềm Internet.Các ngôn ngữ lập trình được sử dụng trong Red Hat: ngôn ngữ lập trình
C chiếm vị trí quan trọng với hơn 60% số lượng các dòng mã lệnh (hơn 30triệu dòng mã lệnh), kế tiếp là C++ với khoảng 10 triệu dòng mã lệnh và theosau là Shell (khoảng 3 triệu dòng mã lệnh)
Bên cạnh đó, Red Hat cũng có phiên bản hướng doanh nghiệp là bản
Red Hat Enterprise Linux (RHEL) Một điểm lưu ý, Red Hat cũng đưa ra các
dịch vụ tư vấn công nghệ thông tin và chương trình cấp chứng chỉ tương tựnhư Microsoft
Ubuntu
Phiên bản mới nhất: Ubuntu 14.04
Ubuntu là một phiên bản phân phối của Linux, vào thời điểm hiện tại nó
đã chạm mốc 20 triệu người sử dụng trong tám năm kể từ khi được biết đến là
hề điều hành mã nguồn mở Linux Ubuntu là hệ điều hành Linux hoàn hảo đểngười dùng mới sử dụng hệ điều hành Linux bắt đầu tập làm quen Hệ điềuhành này cũng là một trong những đối thủ hàng đầu như là một sự thay thếWindows Hệ điều hành Ubuntu có nhiều Theme rất tốt cho máy tính để bàn
và có giao diện trực quan dễ dàng sử dụng
Fedora
Phiên bản mới nhất: Fedora 18
Fedora là một trong những hệ điều hành Linux có lượng người dùng lớn
và có nhiều diễn đàn hỗ trợ Tính năng linh hoạt làm cho hệ điều hành này trởthành một trong những sự lựa chọn tốt nhất Fedora thích hợp cho các doanhnghiệp
Linux Mint
Trang 17Là một bản phân phối khác của Linux, Linux Mint được công bố năm
2006 Dựa trên bản phân phối Ubuntu, thêm vào các chủ đề riêng, các bộ ứngdụng độc đáo và đặc biệt mạnh về đồ họa Hệ điều hành này sử dụng môitrường desktop: mintDesktop, mintInstall để thuận tiện trong cài đặt ứng dụngmintMenu giúp điều hướng dễ dàng
Phiên bản mới nhất: Linux Mint 14 (Nadia) Trong đó rất nhiều phần
mềm hữu ích được cài đặt sẵn, bao gồm phần mềm hỗ trợ các trình điều khiểnthiết bị Linux Mint khá thân thiện với người dùng, hiệu quả sử dụng cao.Mint đã được tùy chỉnh màn hình desktop và các menu, và nó có giao diệnweb
OpenSUSE
Phiên bản mới nhất: openSUSE 12.3
OpenSUSE là cộng đồng mã nguồn mở được tài trợ bởi Novell NhómopenSUSE có hai mục tiêu: làm cho openSUSE dễ dàng sử dụng cho bất cứngười sử dụng nào và đơn giản hóa việc phát triển cũng như đóng gói mãnguồn của openSUSE để làm cho nó thân thiện với lập trình viên Bản phânphối Linux này có số lượng các phần mềm và các công cụ phong phú đểngười dùng có thể dễ dàng sử dụng như: SpiderOak lưu trữ đám mây, MozillaFirefox để duyệt web và mã nguồn mở email client Thunderbird
PCLinuxOS
Phiên bản mới nhất: PClinux OS KDE
Hệ điều hành PCLinuxOS là bản phân phối của Linux rất dễ sử dụng, có
hỗ trợ card đồ họa và âm thanh khác nhau Sự khác biệt giữa bản phân phốinày là nó sử dụng giao diện KDE thay vì GNOME khá bình thường Với sự
hỗ trợ tốt cho đồ họa và điều khiển âm thanh, trình duyệt bổ sung và các địnhdạng phương tiện truyền thông, PCLinuxOS có thể là một lựa chọn tốt chongười mới bắt đầu
Debian
Được công bố từ năm 1993, bản phân phối này được đánh giá là bản
Linux tốt được thử nghiệm Dù là nền tảng của bản phân phối Ubuntu, nhưng Debian thích hợp hơn với người dùng có kinh nghiệm Debian sử dụng các
thành phần mã nguồn mở và đi kèm với hơn 20.000 gói phần mềm ứng dụngđược cài đặt sẵn và miễn phí Người dùng có thể thực hiện các công việc như
Trang 18chỉnh sửa tài liệu, chơi trò chơi, viết mã chương trình và nhiều hơn nữa vớicác công cụ được cung cấp hoàn toàn miễn phí.
CentOS
Phiên bản mới nhất: 7.0
CentOS là một hệ thống được phát triển dựa trên các gói phần mềm của
bản RedHat(RedHat Enterprise Linux System- RHEL) nhằm đưa các mã
nguồn RedHat gốc biên dịch phát triển tập trung vào phần mềm mã nguồn
mở CentOS được sử dụng rộng rãi trong Web Hosting
Mageia
Phiên bản mới nhất: Mageia 2
Hệ điều hành Linux này đã phát triển mạnh mẽ kể từ năm 2012 Mageia
là một phần của Mandriva, khá là phổ biến Mageia có hầu hết các tính năng
của Linux với khả năng cơ bản, nhưng chưa mạnh Hệ điều hành này có thểchạy được trên bất kỳ máy tính nào và thường được cấu hình cho các máy
chủ Những người phát triển hệ điều hành Mageia luôn mong muốn cung cấp
miễn phí cho nhu cầu của tất cả người sử dụng
Arch Linux
Phiên bản mới nhất: Arch Linux 01/02/2013
Arch Linux được phát triển độc lập, bản phân phối Linux này có i686 vàx86_64 được tối ưu hóa nhắm đến người dùng Linux Quản lý đóng gói sảnphẩm, cung cấp thông tin cập nhật kịp thời để cài đặt phần mềm Arch Linux
có thể được cài đặt trên máy tính thông qua máy chủ FTP Tùy chỉnh cài đặt
có thể được thực hiện thông qua trình cài đặt mặc định Hơn nữa, Arch xây
dựng hệ thống (ABS- Arch Build System) cung cấp một cách dễ dàng xây
dựng các gói mới, tinh chỉnh hoặc sửa đổi cấu hình gói mặc định, và chia sẻhoặc nhúng các gói với những người dùng khác thông qua kho lưu trữ Archcủa người dùng Linux
Ngoài ra, một số bản phân phối Linux đang được phát triển như: Evolve
OS, Elementary OS và Ozon OS.
1.2 Kiến trúc hệ điều hành Linux
Linux dựa trên kiến trúc UNIX, là POSIX- Portable Operating System Interface for Unix tuân thủ và hỗ trợ hầu hết các tiêu chuẩn đặt ra cho UNIX.
Trang 19Do đó, các kiến trúc cơ bản và nhiều tính năng của UNIX và Linux đều giốngnhau Trong thực tế, Linux thường được coi là một phiên bản khác của UNIX.Các hệ thống tập tin được hỗ trợ bởi Linux cũng tương tự như các tập tinUNIX hệ thống Cả hai đều có cấu trúc tương tự như sau:
Hình1.1 Kiến trúc của Linux
Cấu trúc Linux gồm 3 phần: Hardware (phần cứng), kernel (nhân), shell
và các tiện ích (utilities), chương trình (programs) và công cụ (tools) Trong
đó:
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, là bộ biên dịch lệnh và hoạt động như một kết nối trung gian
giữa Kernel với người dùng Shell nhận dòng lệnh do người dùng đưa vào, và
từ dòng lệnh nói trên, phân tích lệnh và gọi các chương trình tương ứng vớilệnh để thực hiện Một lệnh bao gồm tên lệnh và tham số: từ đầu tiên là tên
lệnh, các từ tiếp theo (nếu có) là các tham số Tiếp theo, shell sử dụng kernel
để khởi tạo một quá trình mới và sau đó, shell chờ đợi quá trình con này tiếnhành, hoàn thiện và kết thúc Khi shell sẵn sàng tiếp nhận dòng lệnh củangười dùng, một dấu nhắc shell (còn gọi là dấu nhắc nhập lệnh) xuất hiện trênmàn hình
Utilities(tiện ích): Các tiện ích được người dùng sử dụng thường xuyên.
Được dùng cho nhiều thứ như thao tác tập tin, đĩa, nén, sao lưu tập tin… Hầu
Trang 20hế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 thảo văn bản…
Programs: khác với 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…
Kernel: 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 Kernel được phát triển liên
tục, 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 ổn
định nhất Kernel được thiết kế theo dạng các modulo chương trình có vai trò
điều khiển các thành phần của máy tính, phân phối các tài nguyên cho người
dùng (các quá trình người dùng) Kernel chính là cầu nối giữa chương trìnhứng dụng với phần cứng Người dùng sử dụng bàn phím nhập nội dung yêu
cầu của mình và yêu cầu đó được kernel gửi tới shell: Shell phân tích lệnh vàgọi các chương trình tương ứng với lệnh để thực hiện
1.3 So sánh hệ điều hành Linux và windows
1.3.1 Ưu điểm
Linux và Windows là hai hệ điều hành với những lợi thế riêng và có
sự khác biệt về tính năng Bảng dưới đây so sánh những ưu điểm cơ bản giữa hai hệ điều hành:
ƯU ĐIỂMChi phí Linux được phân phối và tải về
miễn phí
$ 119 - $ 199,99, 69 $ cho sinh viên
99 $ để nâng cấp lên pro.Phát triển và
Phát triển và phân phối độcquyền bởi Microsoft
Sử dụng Linux có thể được cài đặt trên
nhiều phần cứng máy tính, từ
Trên máy tính để bàn, máytính xách tay, máy chủ và
Trang 21điện thoại di động, máy tínhbảng và video game, trên cácmáy tính lớn và các siêu máytính.
Cấu hình Là file text, vì vậy dễ dàng
chỉnh sửa Có thể xóa bỏ hoàntoàn những cấu hình cũ khikhông cần
Tất cả cấu hình được lưutrong registry Khi muốnchỉnh sửa rất phức tạp,thường phải sử dụng phầnmềm thứ ba
Linux print server
Linux Apache Web
Linux database
Linux – Based DNS
Active directory server
Firewall
Các client chạy Windows
Print server
Một ISS(Internet Information Service)
WINS server(Windows Internet Naming Service)
DNS server(Domain Name System)
Chế độ giao
diện văn bản
BASH (Bourne Again Shell) là
vỏ mặc định của Linux Hỗ trợbiên dịch lệnh
Windows sử dụng một tiệních dòng lệnh và mỗi phiênbản của Windows có duynhất một biên dịch lệnh vớiDOS, gần đây có sự bổ
Trang 22sung của PowerShell có thểtùy chọn sử dụng nhiềulệnh như Unix.
Ngôn ngữ
có sẵn
Hiệu suất Linux cung cấp hiệu suất cao
trên các máy trạm và trên mạng
Có thể xử lý nhiều người sửdụng tại một thời điểm
Được thiết kế cho duy nhấtmột người sử dụng
Mã độc Rất ít mã độc có thể tấn công Có nhiều mã độc tồn tại
trong môi trường Windows.GUI và
Kernel
GUI tách biệt với Kernel Người
sử dụng có thể sử dụng GUI haykhông, hoặc sử dụng những GUIkhác nhau => cho phép tùy biến,phù hợp với server, tiết kiệmđược bộ nhớ và ít bị lỗi
GUI và Kernel là không thểtách rời => tiện lợi chongười dùng
Trang 23x86-64: phiên bản XP - 8ARM: phiên bản RTTính ổn định Không cần phải khởi động lại
theo định kỳ để duy trì hiệusuất Có thể xử lý số lượng lớnngười sự dụng và không làmtreo hoặc làm chậm do các vấn
Nếu có một cuộc tấn công sẽ cócác giải pháp tức thời được thựchiện bởi các nhà phát triển trêntoàn thế giới giải quyết
Dễ bị nhiễm mã độc và cáccuộc tấn công khác
Bảng 1.2 Bảng so sánh tổng quan giữa HĐH Linux và Windows
1.3.2 Nhược điểm
Mặc dù Linux đang có tốc độ phát triển nhanh và đặc tính kỹ thuật tốtnhưng Linux vẫn chưa có thể đến với người sử dụng cuối do vẫn còn tồn tạinhững nhược điểm sau:
Đòi hỏi người dùng phải thành thạo
Trước kia việc sử dụng và cấu hình Linux được xem là một công việcchỉ dành cho những kỹ thuật viên công nghệ thông tin Hầu như mọi côngviệc đều thực hiện trên các dòng lệnh và phải cấu hình nhờ sửa trực tiếp cácfile Mặc dù trong những phiên bản gần đây, các hệ điều hành Linux cónhững cải tiến đáng kể, nhưng so với Windows, tính thân thiện của Linux vẫncòn là một vấn đề lớn Đây là một trong những nguyên nhân chủ yếu khiếnLinux mặc dù có rất nhiều đặc tính kỹ thuật tốt nhưng vẫn chưa đến được vớingười dùng cuối
Tính tiêu chuẩn hóa
Linux được phát hành miễn phí nên bất cứ ai cũng có thể tự đóng gói,phân phối theo những cách riêng Hiện tại có khá nhiều bản Linux phát triển
Trang 24từ một kernel ban đầu cùng tồn tại như: Redhat, SuSE, Knoppix… Ngườidùng phải tự so sánh xem phiên bản nào là phù hợp với nhu cầu sử dụng.Điều này có thể gây khó khăn cho người dùng, nhất là những người có kiếnthức về tin học hạn chế.
Số lượng các ứng dụng chất lượng cao trên Linux còn hạn chế
Mặc dù Windows có các sản phẩm nào thì Linux cũng gần như có phầnmềm tương tự, (VD: OpenOffice trên Linux tương tự như MSOffice, hayGIMP tương tự như Photoshop…) Tuy nhiên chất lượng những sản phẩmnày chưa thể so sánh được với các sản phẩm viết cho windows
Phần cứng
Một số nhà sản xuất phần cứng không có driver hỗ trợ Linux Tuy nhiênvẫn có thể tìm thấy các driver này trên internet do cộng đồng mã nguồn mởviết
Trên cơ sở nhìn nhận một cách khách quan các ưu, nhược điểm của hệđiều hành Linux cũng như xu hướng phát triển tin học hiện tại có thể thấy đốivới người dùng thông thường, việc chuyển từ Windows sang Linux trong mộtthời gian ngắn là chưa thể Tuy nhiên, đối với những người làm tin học, kỹ sưcông nghệ thông tin, quản trị viên, sinh viên,…việc tìm hiểu và nghiên cứuLinux và phần mềm mã nguồn mở là một điều kiện rất tốt để nâng cao hiểubiết Linux vẫn được đánh giá là một hệ điều hành rất có giá trị : chi phí thấp,linh hoạt và ổn định
Trang 25CHƯƠNG II NGHIÊN CỨU NHỮNG NGUY CƠ MẤT AN TOÀN VÀ GIẢI PHÁP TĂNG CƯỜNG AN NINH CHO HỆ ĐIỀU
có xuất hiện một vài loại mã độc hoạt động trên môi trường Linux nhưngkhông ảnh hưởng nhiều đến người dùng Linux) Nhưng một hệ thống Linuxđược cấu hình không tốt sẽ không bằng một hệ thống Microsoft được cấuhình tốt Chương này tìm hiểu những nguy cơ mất an toàn trên hệ điều hànhLinux, đồng thời giới thiệu những vấn đề cơ bản của an ninh, bảo mật, cácbiện pháp phòng ngừa để bảo mật dữ liệu trên hệ điều hành Linux
2. Những nguy cơ mất an toàn trên hệ điều hành Linux
1.2.1 Những nguy cơ mất an toàn trong cài đặt, cấu hình hệ thống
Tài khoản Guest (tài khoản khách)
Các hệ điều hành Ubuntu, Linux Mint, Elementary, … đều hỗ trợ tài
khoản khách (Guest), đồng nghĩa với việc bất cứ người dùng nào cũng có thể
đăng nhập vào hệ thống mà không cần mật khẩu Vì vậy, để đảm bảo an ninhcần phải vô hiệu hóa tài khoản này
sau đó truyền thông với máy chủ đang chạy dịch vụ mạng và thực hiện gỡ rối
Nhưng telnet không được mã hóa, vì vậy telnet có lỗ hổng trước các kiểu tấn công “packet-sniffing” và “man-in-the-middle” Do đó không nên sử dụng
Trang 26Telnet để truyền tải username và password ngoại trừ các trường hợp tài khoản
sử dụng một lần
Mật khẩu
Khi lựa chọn mật khẩu, điều quan trọng là chọn những mật khẩu không
dễ đoán Cần có một tiêu chuẩn cho mật khẩu, không nên sử dụng những từphổ biến để làm mật khẩu vì tin tặc sẽ dễ dàng đoán biết được Có nhữngchương trình có sẵn để kiểm tra độ an ninh của mật khẩu bằng cách thử nhiều
từ có sẵn trong từ điển Nếu mật khẩu là một từ tìm thấy trong từ điển, bảomật trở nên vô dụng
Tài khoản root
Tài khoản root được gán quyền nhiều nhất trên một hệ thống Unix vàkhông có một hạn chế bảo mật nào Người dùng tài khoản root có quyền thựchiện tất cả các công việc hành chính Điều này có nghĩa là người quản trị cầnphải chú ý khi gán tài khoản root cho người dùng, chỉ với một câu lệnh nhậpsai có thể xóa sạch tất cả các tập tin hệ thống
Grub-bootloader
Có 2 booloader phổ biến trên Linux là GRUB và LILO (tiền thân củaGRUB) Cả 2 chương trình này đều có chung mục đích: cho phép người dùnglựa chọn một trong các hệ điều hành có trên máy tính để khởi động, sau đóGRUB sẽ nạp kernel của hệ điều hành đó vào bộ nhớ và chuyển quyền điềukhiển máy tính cho kernel này
Tuy nhiên khi khởi động Linux có thể gặp phải lỗi với GRUB ngăn cảntiến trình khởi động của hệ thống Có thể nhận thấy sự cố bằng những dấuhiệu xuất hiện:
- GRUB đã bị xóa hoàn toàn và người dùng sẽ không thấy gì ngoại trừmột con trỏ nhấp nháy khi máy chủ khởi động
- GRUB sẽ tạo ra một thông báo lỗi GRUB cụ thể
- GRUB cho biết nó không thể tìm thấy một file cần thiết
Phân quyền file
Linux xác định ba quyền trên các tập tin là read (đọc), write (viết), execute (thực thi) đối với ba đối tượng là người sở hữu (the owner), nhóm sở hữu (the group owner), người dùng khác (other user) Tuy nhiên, Linux là
một hệ điều hành đa người dùng vì vậy quá trình quy định quyền hạn trên các
Trang 27tập tin đòi hỏi phải chặt chẽ và linh hoạt Do đó bất kỳ ai cũng có thể chỉnh
sửa các world-writable file dẫn tới rủi ro về bảo mật Vì vậy cần cấp phát
quyền hạn cho các thư mục dạng trên cho phù hợp
Mã độc
Tất cả các hệ thống máy tính có thể bị nhiễm các phần mềm độc hại,virus, bao gồm cả Linux Tuy nhiên, rất ít mã độc có thể tấn công Linux, vìvậy người sử dụng thường không cài đặt phần mềm chống lại mã độc Nhưngngay cả một hệ thống vá lỗi đầy đủ không có lỗ hổng được biết vẫn có thể bịtấn công Hơn nữa, hầu như tất cả các phần mềm chạy trên Linux là mã nguồn
mở, làm cho phần mềm độc hại dễ dàng xâm nhập Dưới đây là một số ví dụ:
- Một tài khoản người dùng có thể có một mật khẩu yếu và chịu một cuộc
1.2.2 Những lỗ hổng mới
Thư viện mã Glibc
Glibc là một thư viện chuẩn của ngôn ngữ lập trình C được sử dụngtrong các hệ điều hành tựa Unix
Ngày 27/1/2015 các chuyên gia bảo mật của Qualys đã phát hiện ra một
lỗ hổng nguy hiểm mới được công bố với tên “GHOST” GHOST là một lỗhổng bảo mật của thư viện glibc, xuất phát từ lỗi tràn bộ đệm trong hàm
nss_hostname_digits_dots() Hàm này được sử dụng bởi hàm
_gethostbyname Lỗ hổng này cho phép kẻ tấn công kiểm soát, điều khiển từ
xa hoàn toàn hệ thống bằng cách khai thác lỗ hổng tràn bộ đệm trong chứcnăng GetHOST của glibc Lỗ hổng GHOST có thể tồn tại trên các máy chủ
Trang 28chạy hệ điều hành Linux mà có sử dụng thư viện glibc từ các phiên bản 2.18trở về trước
Có 2 phương pháp để kiểm tra và tìm ra xem máy tính có tồn tại lỗ hổngGHOST hay không:
- Phương pháp 1: Dùng chương trình C để kiểm tra:
Sử dụng lệnh wget để tải về GHOST.C trên một hệ thống Linux:
Wget
https://webshare.uchicago.edu/orgs/ITServices/itsec/Downloads/G HOST.c
hoặc
wget -O GHOST.c
https://gist.githubusercontent.com/koelling/ef9b2b9d0be6d6dbab6 3/raw/de1730049198c64eaf8f8ab015a3c8b23b63fd34/gistfile1.c
Trang 29- Phương pháp 2: Kiểm tra Bash
Sử dụng tài khoản với RHN(Red Hat Network), người dùng có thể tải về
một tệp lệnh để kiểm tra xem hệ thống đang sử dụng có tồn tại lỗ hổng
GHOST hay không:
wget -O GHOST- test.sh
http://www.cyberciti.biz/files/scripts/GHOST-test.sh.txt
bash GHOST-test.sh
Kết quả trả về:
Hình 2.3 GHOST-test.sh dựa trên hệ thống RHEL/CentOS
GHOST là một lỗ hổng nghiệm trọng và đã tồn tại trong glibc một thờigian khá dài Tuy nhiên với các phiên bản mới ra thì người dùng có thể yêntâm về lỗ hổng bảo mật này Về mức độ nguy hại, sẽ không đảm bảo an toàn
nếu sử dụng hàm gethostbyname trong các ứng dụng Nhiều bản phân phối
của Linux đang được nhiều máy chủ sử dụng tồn tại lỗ hổng này như:
- RHEL (Red Hat Enterprise Linux) version 5.x, 6.x and 7.x
- CentOS Linux version 5.x, 6.x & 7.x
- Ubuntu Linux version 10.04, 12.04 LTS
- Debian Linux version 7.x
- Linux Mint version 13.0
- Fedora Linux version 19 or older
- SUSE Linux Enterprise 11 and older (also OpenSuse Linux 11 or older versions)
- Arch Linux glibc version <= 2.18-1
Để khắc phục lỗi GHOST, người dùng chỉ cần update glibc lên bản mớinhất và khởi động lại các dịch vụ bị ảnh hưởng:
Trang 30- Bước 1: Kiểm tra phiên bản glibc đang sử dụng (Ubuntu, Debian,RHEL/CentOS) với câu lệnh:
yum update glibc
Có thể sử dụng update cho toàn bộ hệ thống (cách làm này có thể sẽ
khiến hệ thống khởi động lại server dẫn đến gián đoạn dịch vụ của server):+ Cho Ubuntu/Debian:
apt-get update && sudo apt-get upgrade
+ Cho Centos/RHEL:
yum update
Lỗ hổng Shellshock
Shellshock (hay còn được gọi là Bash bug) là một lỗ hổng bảo mật trong
Bash, được công bố vào ngày 25 tháng 9 năm 2014 Nhiều dịch vụ mạng, nhưcác máy chủ web, sử dụng Bash để thực thi lệnh khi cần thiết, cho phép kẻ tấncông khai thác lỗ hổng bảo mật Shellshock ở những phiên bản Bash lỗi đểđiều khiển từ xa máy chủ của các trang web hay các hệ thống mạng máy tính,
từ đó thực hiện các cuộc tấn công
Hình 2.4 Lỗ hổng ShellShocl trên OS X của AppleShellshock không đe dọa máy tính dùng Windows hay thiết bị WindowsPhone chạy các hệ điều hành do Microsoft phát triển không dùng nhân Linux
Trang 31Chỉ những hệ thống máy chủ, thiết bị mạng như tường lửa (firewall), bộ định
tuyến mạng (router) cùng nhiều ứng dụng như OpenSSH, DHCP trên nềnLinux/Unix nhúng phần mềm Bash bên trong, bao gồm cả hệ điều hành OS Xcho máy Mac, hay iOS cho iPhone/iPad của Apple mới bị mắc lỗi này
Để kiểm tra máy chủ hay máy tính cá nhân có lỗ hổng Shellshock haykhông, người dùng có thể thực hiện một cách dễ dàng qua dòng lệnh dưới đâytrên Terminal:
$env x = '() { :;}; echo vulnerable' bash - c "echo this is a test"
Nếu kết quả trả về là:
vulnerable
this is a test
thì có nghĩa là máy tính đang kiểm tra có lỗ hổng Shellshock
Ngược lại, nếu máy tính đã được cập nhật bản vá và được bảo vệ thì giaodiện Terminal sẽ hiện thông báo:
$env x='() { :;}; echo vulnerable' bash -c "echo this is a test" bash:
warning: x: ignoring function definition attempt bash: error
importing function definition for `x' this is a test
thì có nghĩa là máy tính đang kiểm tra không có lỗ hổng Shellshock
Việc kiểm tra như trên chỉ áp dụng với phiên bản cũ của Shellshock Đã
có rất nhiều phiên bản Shellshock khác nhau lần lượt được công bố như 2014-6271, CVE-2014-7169, CVE-2014-7186, CVE-2014-7187, CVE-2014-
CVE-6277, CVE-2014-6278 Vì vậy người dùng có thể sử dụng công cụ trực tuyếntrên trang shellshocker.net để kiểm tra bằng một câu lệnh:
curl https://shellshocker.net/shellshock_test.sh | bash
Trang 32Hình 2.5 Kiểm tra lỗ hổng ShellShock bằng công cụ trực tuyến trên
shellshocker.net
Cơ chế phát sinh ShellShock
Lỗ hổng Shellshock ảnh hưởng trực tiếp tới Bash (Bourne Again Shell),
một công cụ mà các hệ thống nền tảng Unix sử dụng để thực hiện các dònglệnh và tập lệnh Bash được cài đặt mặc định như giao diện dòng lệnh trong
hệ thống Trong các hệ điều hành nền tảng Unix và các hệ điều hành khác có
hỗ trợ Bash mỗi chương trình khi chạy sẽ có một danh sách các cặpname/value được gọi là các biến môi trường Khi một chương trình khởi chạymột chương trình khác nó sẽ cung cấp một danh sách khởi tạo các biến môitrường cho chương trình mới này.Mặt khác, Bash lưu giữ một danh sách cáchàm chứa một tập các lệnh mà sẽ được thực thi cùng với chương trình.VìBash hoạt động như là một trình thông dịch lệnh và vừa được coi như là mộtlệnh, nên có thể chạy Bash từ chính môi trường của nó.Khi điều này xảy ra,thực thể ban đầu có thể xuất (export) các biến môi trường và các định nghĩahàm thành các thực thể mới Các định nghĩa hàm được xuất ra bằng cách mãhóa chúng cùng với các biến môi trường có giá trị bắt đầu bằng “()” theo sau
là định nghĩa hàm Thực thể mới của Bash khi chạy sẽ tìm các biến môitrường có giá trị theo định dạng này và chuyển chúng thành các hàm Nó thựchiện việc chuyển đổi bằng cách tạo ra một đoạn mã từ giá trị của biến môitrường và thực thi nó, vấn đề ở chỗ các phiên bản Bash lỗi không kiểm tratính hợp lệ của một định nghĩa hàm do đó một lỗ hổng bảo mật Shellshock sẽđược tạo ra theo cách này
Từ đây có thể giải thích cách hoạt động cho đoạn mã sau:
Trang 33$env x = '() { :;}; echo vulnerable' bash - c "echo this is a test"
Đoạn mã trên tạo ra một biến môi trường bắt đầu với chuỗi “() { :; }”,tạo ra một định nghĩa hàm rỗng Tiếp theo sau là lệnh sẽ được thực thi khibiến môi trường này được xuất ra Lệnh Bash được chạy sau đó sẽ thực hiệnviệc xuất ra biến môi trường này và lệnh echo sẽ được thực thi cùng với nó
Hình 2.6 Cơ chế phát sinh lỗ hổng ShellShock
Giải pháp khắc phục
Giải pháp khắc phục sự cố Shellshock không hề phức tạp.Người dùngchỉ cần cập nhật ứng dụng Bash lên phiên bản mới nhất Việc cập nhật nàyđược thực thi bằng lệnh khá đơn giản tùy thuộc từng hệ điều hành:
Trang 34pacman – Syu
- OS X của Apple:
brew update
brew install bash
sudo sh -c 'echo "/usr/local/bin/bash" >> /etc/shells'
chsh -s /usr/local/bin/bash
sudo mv /bin/bash /bin/bash-backup
sudo ln -s /usr/local/bin/bash /bin/bash
Các bản vá lỗi Shellshock đã được cập nhật gần đây Tuy nhiên các bản
vá hiện tại vẫn chưa hoàn toàn khắc phục được tất cả mọi vấn đề liên quanđến Shellshock vì vậy kẻ tấn công vẫn có thể khai thác lỗ hổng này bằngnhiều cách khác nhau
3 Giải pháp tăng cường an ninh cho hệ điều hành Linux
1.3.1 Thiết lập chính sách bảo mật cho hệ điều hành Linux
Kết nối vào Inernet luôn tiềm ẩn những nguy hiểm cho hệ thống mạngvới mức an toàn thấp Từ những vấn đề trong các dịch vụ TCP/IP truyềnthống, tính phức tạp của việc cấu hình máy chủ, các lỗ hổng an ninh bên trongquá trình phát triển phần mềm và nhiều nhân tố khác góp phần làm cho những
hệ thống máy chủ không được chuẩn bị chu đáo có thể bị xâm nhập và luôntồn tại những nguy cơ tiềm tàng về vấn đề an toàn trong đó Mục đích củamột chính sách an toàn hệ thống là quyết định một tổ chức sẽ phải làm nhưthế nào để bảo đảm vấn đề bảo mật Để có được một chính sách an ninh hiệuquả, người xây dựng các chính sách này phải hiểu và có thể kết hợp tất cả cácthông tin, yêu cầu,… Những sai sót trong chính sách an ninh không chỉ liênquan đến những kẻ xâm nhập, mà còn liên quan đến những vấn đề bìnhthường như thời tiết, thiên tai, cháy, nổ, hư hỏng thiết bị, Do vậy, việc thiếtlập một chính sách an ninh tốt cho việc giải quyết những sự cố phải được lên
kế hoạch kỹ lưỡng, được xem xét và chứng nhận bởi người có quyền hạn
Hardening là quá trình nâng cao tính bảo mật cho một hệ thống bằng
cách tạo ra các thay đổi trên hệ thống đó Bước đầu tiên trong việc bảo mậtbất kỳ hệ thống nào, Linux hay Windows, là phải đảm bảo rằng hệ thống đó
Trang 35nằm ở vị trí an toàn như trung tâm dữ liệu (data center), trung tâm điều hành mạng (network openration center) nhằm ngăn chặn hacker truy cập vật lý (physical acsess) tới hệ thống.
Bước kế tiếp là phải đề ra chính sách mật khẩu (password policy) chặt
chẽ Người dùng không nên để lộ tên tài khoản người dùng và mật khẩu cho
kẻ xấu biết được Ngoài ra, các quản trị viên cũng cần đảm bảo rằng các tài
khoản trên hệ thống của mình không có tài khoản nào có mật khẩu rỗng (null password).
Deny all (hay Whitelisting) là một trong những chính sách tốt nhằm bảo
vệ hệ thống trước nguy cơ tấn công mạng Ban đầu tất cả người dùng bênngoài đều bị cấm truy cập vào hệ thống Sau đó, người quản trị sẽ cấp quyềntruy cập xác đáng cho từng người dùng thật sự tin cậy Cách này giúp đảmbảo rằng người dùng không thể truy cập tới các file mà họ không được phép
truy cập Trong Linux, thực hiện lệnh sau để áp dụng chính sách deny all:
#cat’’ALL:ALL”>> /ect/host.deny
Một cách khác nữa để bảo vệ Linux server là loại bỏ các phần mềm vàdịch vụ không cần thiết Đồng thời, đảm bảo rằng hệ thống luôn được cậpnhật mới và đầy đủ các bản vá lỗi
Các quản trị viên cũng nên thường xuyên kiểm tra log hệ thống để phát
hiện sớm nhât các dấu hiện bất thường mà có thể dẫn đến hệ thống bị tấncông và phá hoại
Dưới đây là một số bước để tăng cường an ninh cho Linux server:
Lựa chọn và cài đặt hệ điều hành
- Sử dụng phiên bản Linux (Distro) nổi tiếng
- Phân vùng ổ cứng: đặt các file của hệ điều hành trên một phân vùng táchbiệt với chương trình, dữ liệu các nhân của người dùng
- Sau khi hoàn tất việc cài đựt hệ điều hành, áp dụng tất cả các bản quantrọng cho hệ điều hành
- Kích hoạt và cấu hình Iptables
- Cài đặt một hệ thống phát hiện xâm nhập cho host (HIDS)
- Không cài đặt bất kỳ các ứng dụng hoặc dịch vụ dư thừa nào,