an toàn và bảo mật trên linux tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về tất cả các lĩnh vự...
1.Lời nói đầu: Linux đã tạo ra một sự bùng nổ trong lĩnh vực tin học và ngày càng trở nên phổ biến hiện nay. Rất nhiều các công ty, tổ chức trên thế giới chấp nhận Linux như là một platform 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. Vấn đề an toàn an ninh cho hệ thống Linux ngày càng trở nên quan trọng và bức thiết hơn. Tài liệu này sẽ có một cái nhìn tổng quát về an toàn hệ thống và những hướng dẫn giúp tăng cường mức độ an toàn cho hệ thống Linux. Kể từ khi Linux được phát triển một cách rộng rãi và nhanh chóng, đặc biệt là trong các giao dịch kinh doanh quan trọng, an ninh là một vấn đề quyết định sự sống còn của Linux. Với hàng trăm công cụ bảo vệ sẵn có, người dùng Linux được trang bị tốt hơn để ngăn chặn và duy trì một hệ thống an toàn. Linux không những hoạt động tốt mà cũn cú những tính năng và sản phẩm liên quan cho phép xây dựng một môi trường tương đối an toàn. 1.1 Những nguy cơ an ninh trên linux Linux và các ứng dụng trờn nó có thể không ít các lỗ hổng an ninh hơn những hệ điều hành khác. Theo quan điểm của một số chuyên gia máy tính, Linux có tính an toàn cao hơn các hệ điều hành của Microsoft, vỡ cỏc sản phẩm của Microsoft không được xem xét kỹ lưỡng và chặt chẽ bằng các sản phẩm mã nguồn mở như Linux. Hơn nữa, Linux dường như là "miễn nhiễm" với virus máy tính (hiện tại đó cú xuất hiện một vài loại virus hoạt động trên môi trường Linux nhưng không ảnh hưởng gì mấy đến người dùng Linux). Nhưng một hệ thống Linux được cấu hình không tốt sẽ tệ hơn nhiều so với một hệ thống Microsoft được cấu hình tốt !!! Khi có được một chính sách an ninh tốt và hệ thống được cấu hình theo đúng chính sách đú thỡ sẽ giúp bạn tạo được một hệ thống an toàn (ở mức mà chính sách của bạn đưa ra). Nhưng sự an toàn không phải là thứ có thể đạt được như một mục tiêu cuối cùng. Đúng hơn đó là tập hợp của những cách cài đặt, vận hành và bảo trì một hệ điều hành, mạng máy tính, Nó phụ thuộc vào các hoạt động hàng ngày của hệ thống, người dùng và người quản trị. Bạn phải bắt đầu từ một nền tảng ban đầu và từ đó cải thiện tính an toàn của hệ thống của bạn nhiều nhất có thể được mà vẫn đảm bảo các hoạt động bình thường của hệ thống. 1.2 Xem xét chính sách an ninh Kết nối vào Inernet là nguy hiểm cho hệ thống mạng của bạn với mức an toàn thấp. Từ những vấn đề trong các dịch vụ TCP/IP truyền thố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 trong quá 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ôn tồn tại những nguy cơ tiềm tàng về vấn đề an toàn trong đó. Mục đích của mộ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 vệ chính nó. Để có được một chính sách an ninh hiệu quả, 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ác thông tin, yêu cầu, Khi một tình huống xảy ra nằm ngoài dự kiến, chẳng hạn một sự xâm nhập trái phép vào hệ thống của bạn, câu hỏi lớn nhất là "sẽ phải làm gì đây ?" Những sai sót trong chính sách an ninh không chỉ liên quan đến những kẻ xâm nhập, mà còn liên quan đến những vấn đề bình thường như thời tiết, thiên tai, cháy, nổ, hư hỏng thiết bị, Do vậy, việc thiết lậ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 trong công ty. Một chính sách an ninh tốt nên bao gồm các vấn đề sau : o Chính sách phục hồi dữ liệu khi có sự cố o Chính sách phục hồi hệ thống trong trường hợp hư hỏng thiết bị o Chính sách, cách thức điều tra những kẻ xâm nhập trái phép o Chính sách, cách thức điều tra khi công ty bị cáo buộc xâm nhập vào các hệ thống khác o Cách thức, quy trình và nơi thông báo sự xâm nhập trái phép từ bên ngoài hay gây ra bởi các nhân viên của mình. o Chính sách an ninh về mặt vật lý của hệ thống Chính sách bảo mật: Một điều quan trọng cần phải chỉ ra là bạn không thể thực hiện việc an toàn và bảo mật hệ thống nếu bạn chưa xác định được là cần phải bảo vệ những gì, và cho ai. Do vậy bạn cần phải có một chính sách bảo mật - đó là danh sách những gì mà bạn cho phép quan tâm đến và cũng như những gì mà bạn không cho phép quan tâm đến và dựa trên cơ sở đó bạn có thể có bất kỳ quyết định nào về việc bảo mật một cách chính xác. Chính sách cũng nên xác định rõ việc đáp lại của bạn các đối với vi phạm về việc bảo mật và an toàn. Bạn cũng nên để ý rằng những gì được đề ra khi xây dựng một chính sách bảo mật sẽ phụ thuộc vào việc bạn đưa ra các định nghĩa về bảo mật. Sau đây là các câu hỏi sẽ cung cấp một số các chỉ dẫn tổng thể liên quan: - Làm thế nào bạn phân biệt được các thông tin là nhạy cảm và bí mật? - Hệ thống cú nờn chứa đựng các thông tin nhạy cảm và bí mật không? - Chính xác là bạn cần phải đề phòng ai? - Những người sử dụng từ xa có thật sự cần thiết truy cập tới hệ thống của bạn không? - Mật khẩu và giải pháp mã hóa đã đủ bảo vệ hệ thống chưa? - Bạn có cần phải truy cập Internet không? - Bạn muốn cho phép hệ thống của bạn có thể được truy cập từ Internet bao nhiêu lần? - Bạn sẽ làm gì khi phát hiện ra một sự vi phạm trong việc bảo mật của bạn? 2 Giới thiệu chung: 2.1 Ai đang phá hoại hệ thống: Có hai từ để chỉ kẻ xâm nhập hacker và cracker. Một hacker là chỉ người thích vào một hệ thống nào đó. Một hacker tốt bụng (benign hacker) là người thích tự xâm nhập vào máy của mình để hiểu rõ những gì đang diễn ra bên trong và nó đang hoạt động như thế nào. Một hacker hiểm độc (malicious hacker) là người thích vào hệ thống của người khác. Benign hacker muốn ngăn chặn tất cả các cuộc phá hoại của các hacker và từ đó ra đời khái niệm cracker. Thật không may, đã không giống như người ta mong muốn, và trong tất cả các trường hợp người ta đều dùng một từ để chỉ đó là kẻ xâm nhập ‘intruder’. Kẻ xâm nhập có thể chia làm 2 loại: Từ bên trong và bên ngoài. Từ bên ngoài: outsiders: Xâm nhập từ bên ngoài mạng, tấn công webserver, chuyển thư spam qua mailserver, … chúng cũng có thể tấn công fire wall để tấn công những máy bên trong mạng. Kẻ xâm nhập từ bên ngoài có thể đến từ internet, đường dial-up, physical break-ins, hoặc từ một đối tác (vender, customer, reseller,…) Từ bên trong ‘insiders’ Kẻ xâm nhập có một tài khoản hợp pháp trong hệ thống mạng và muốn tăng quyền ưu tiên của mình để phục vụ những mục đích khác nhau. 2.2 Những kẻ xâm nhập vào hệ thống của ta như thế nào -Physical Intrusion: Nếu kẻ xâm nhập có được kết nối vật lý đến hệ thống ( họ có thể sử dụng bàn phím hay là một phần nào đó của hệ thống) và họ có thể vào trong hệ thống. - System Intrusion Kiểu tấn công này xảy ra khi kẻ đột nhập đó cú một tài khoản trên hệ thống, nếu hệ thống không có những chỗ vá bảo mật mới nhất. - Remote Intrusion hacker sẽ xâm nhập vào hệ thống thông qua mạng. Kẻ xâm nhập không cần một đặc quyền nào. Có rất nhiều cách tấn công kiểu này. Kẻ xâm nhập sẽ khó khăn hơn rất nhiều khi có một firewall. Chú ý là hệ thống phát hiện xâm nhập mạng có liên quan rất chặt với xâm nhập từ xa. 2.3 Tại sao kẻ xâm nhập có thể vào được hệ thống của chúng ta Phần mềm luôn có lỗi. Những người quản trị hệ thống và các lập trình viên theo dõi và nắm được tất cả các lỗi có thể có. Còn những kẻ xâm nhập chỉ cần tìm một lỗi để có thể xâm nhập vào hệ thống. 2.3.1 Những lỗi phần mềm Tràn bộ đệm Hầu như tất cả các lỗ hổng bảo mật đều do lỗi này. Một ví dụ điển hình là các lập trình viên đều đặt 256 ký tự cho trường username login. Bình thường thỡ cỏc lập trình viên sẽ nghĩ không có ai chọn username quá như vậy cả. Nhưng các hacker sẽ nghĩ, chuyện gì xảy ra nếu tôi nhập vào quá giới hạn đó ? Những ký tự thêm vào sẽ đi đâu ? họ sẽ gửi 300 ký tự bao gồm cả mã thực thi trên server và thế là họ đã vào được. Hacker đó tỡm những lỗi như vậy bằng rất nhiều cách. Đầu tiên phải kể đến là mã nguồn cho rất nhiều dịch vụ đều cú trờn mạng. Hacker sẽ nghiên cứu những mã nguồn và tìm lỗi tràn bộ đệm. Thứ hai là hacker có thể xem chính những chương trình đó mặc dù đọc mã assembly là rất khó. Thứ ba là hacker có thể kiểm tra bằng rất nhiều dữ liệu ngẫu nhiên. Vấn đề này chủ yếu gặp khi những chương trình được viết bằng ngôn ngữ C/C++, rất hiếm trong những chương trình viết bằng Java. Unexpected combinations Chương trình thường được xây dựng dựa trên rất nhiều lớp mã, và hệ điều hành có thể coi là lớp dưới cùng. Kẻ xâm nhập có thể vào các dữ liệu có thể không có ý nghĩa với lớp này nhưng mà lại có ý nghĩa với lớp khác. Ngôn ngữ nổi tiếng về xử lý dữ liệu vào của người dùng là PERL. Chương trình viết bằng PERL thường gửi dữ liệu vào này đến các chương trình xa hơn. Một cách hacker thường gặp là vào dữ liệu giống như : “| mail < /etc/passwd” Mã này sẽ thực thi bởi vì PERL sẽ hỏi hệ điều hành chạy chương trình thêm vào cùng với các dữ liệu đó. Tuy nhiên hệ điều hành đã chạy chương trình mail và password file đã được gửi cho kẻ xâm nhập. Unhandled input Hầu hết các chương trình được viết để vào dữ liệu bằng tay. Và các lập trình viên không tính đến chuyện gì xảy ra nếu nó không đúng là như vậy. Race conditions tất cả các hệ thống ngày nay đều xử lýđa nhiệm và đa luồng. Họ có thể chạy nhiều chương trình một lúc. Sẽ nguy hiểm nếu hai chương trình cùng truy nhập vào cùng một dữ liệu trong cùng một thời điểm. race condition xảy ra khi chương trình A đọc 1 file vào bộ nhớ, và thay đổi nó ở trong bộ nhớ. Tuy nhiên trước khi A ghi lại file thì chương trình B đã thực thi xong quá trình thay đổi file . Bây giờ thỡ chương trình A ghi lại file và tất cả các thay đổi của B sẽ bị mất. Vì vậy cần phải có thứ tự nối tiếp thích hợp, race condition cũng rất hiếm khi xảy ra. Kẻ xâm nhập thường phải thử hàng nghìn lần trước khi có thể vào được hệ thống. 2.3.2 Cấu hình hệ thống : những cấu hình ngầm định: Hầu hết các hệ thống đều được gửi đến cho khách hàng với cấu hình ngầm định, một cấu hình dễ sử dụng. Thật không may, dễ sử dụng đồng nghĩa với dễ xâm nhập. Lazy administrators Có một con số đáng kinh ngạc những máy hoặc hệ thống mà không có mật khẩu cho root hay administrator. Đó là điều đầu tiên mà kẻ xâm nhập sẽ thử khai thác. Hole creation Hầu như tất cả các chương trình đều được cấu hình để chạy ở chế độ không bảo mật. Đôi khi người quản trị vô tình tạo lỗ hổng cho hệ thống của mình. Người quản trị nên tắt tất cả mọi dịch vụ mà không sử dụng tới, cấp các quyền cho các user vừa đủ cho các công việc của họ. Trust relationships Kẻ xâm nhập thường khai thác các liên kết tin tưởng trên mạng. 2.3.3 Password cracking Really weak passwords khi pass quá đơn giản để đoán ra khi mà người đó có quan hệ với bạn. Ví dụ đa số người dùng lấy mật khẩu là tên của mỡnh, tờn vợ, tên người yêu, hay số nhà, số điện thoại, … tất cả đều thể hiện mật khẩu của bạn quá "yếu". Dictionary attacks tấn công dựa vào các từ có trong từ điển. Hacker có thể thử lần lượt các từ có trong từ điển và cỏc hoỏn đổi cho đến khi đúng password. Brute force attacks tương tự kiểu tấn công sử dụng từ điển. Nó sử dụng tất cả các khả năng kết hợp của các ký tự. 3 Giải pháp an ninh: 3.1 Mật khẩu : 3.1.1Bảo mật BIOS - Đặt mật khẩu khởi động: Có một lời khuyên rằng bạn nên vô hiệu hóa việc khởi động (booting) từ ổ đĩa mềm đồng thời đặt các mật khẩu (password) trờn cỏc đặc tính của BIOS. Bạn có thể xem xét tài liệu hướng dẫn về BIOS của bạn hay xem nó khởi động ở lần kế tiếp như thế nào. Việc vô hiệu hóa khả năng khởi động từ các ổ đĩa mềm và có cài đặt một mật khẩu để truy cập tính năng BIOS sẽ cải tiến tính an toàn bảo mật hệ thống của bạn. Điều này sẽ làm cho một số người không mong đợi cố gắng thay đổi tính năng BIOS để cho phép khởi động từ ổ đĩa mềm hay khởi động từ máy server luôn bị nhắc nhở mật khẩu. 3.1.2Chọn một mật khẩu (password) đúng: Điểm bắt đầu cho một chuyến tham quan về Linux General Security là mật khẩu. Nhiều người lưu giữ các thông tin và các tập tin đáng giá của họ trên một máy tính, và chỉ có một việc là ngăn chặn những người khác khi muốn xem các thông tin hay tập tin đú thỡ yêu cầu gõ vào một chuỗi dài tám ký tự hoặc nhiều hơn thường được gọi là một mật khẩu. Không như mọi người đã nghĩ, không thể có một mật khẩu nào không giải được. Với thời gian và công sức, tất cả mật khẩu đều có thể được đoán ra, kể cả việc dựng cỏc mưu mẹo trong cuộc sống hay áp lực. Dùng những mưu mẹo trong cuộc sống để có được các mật khẩu và các phương pháp truy cập khác vẫn là cách phổ biến nhất và dễ nhất để giành được quyền truy cập tới các tài khoản và cỏc mỏy server. Chạy một chương trình bẻ khóa mật khẩu mỗi tuần một lần dựa trên hệ thống của bạn là một ý tưởng hay. Việc này giúp bạn tìm và thay thế các mật khẩu mà nó dễ dàng được đoán ra hay có hiệu lực kém. Cũng thế, một cơ chế kiểm tra mật khẩu là nờn cú để loại bỏ những mật khẩu kém hiệu lực khi lần đầu tiên chọn một mật khẩu hay thay đổi một mật khẩu cũ. Chúng ta không nên chấp nhận một mật khẩu mới với chuỗi ký tự là các từ dễ hiểu, hoặc là tất cả các ký tự đều có định dạng in hay thường giống nhau, hoặc không chứa đựng các số hay các ký tự đặc biệt. Chúng ta nên tuân theo các nguyên tắc sau để tạo mật khẩu một cách hiệu quả: - Có chiều dài ít nhất là sáu ký tự, được ưa chuộng nhất là tám ký tự trong đó có ít nhất một ký tự số hay ký tự đặc biệt. - Chúng phải không tầm thường, một mật khẩu tầm thường là một mật khẩu dễ dàng đoán ra và nó thường dựa trên tên, họ, nghề nghiệp hoặc một số đặc biệt cá nhân khác của người sử dụng. - Chúng nên có hiệu lực trong một giai đoạn, yêu cầu thay đổi mật khẩu mới sau một thời gian đã định. - Chúng nên được hủy bỏ hay tạo lại sau khi có một số lần thử không thành công. Chiều dài mật khẩu: Chiều dài của mật khẩu tối thiểu có thể chấp nhận đựoc mặc định khi bạn cài đặt hệ thống Linux là 6. Điều này nói lên rằng khi một người [...]... loại bỏ các mật khẩu yếu) để bảo vệ bạn Thứ hai, nếu bạn đang chạy NIS hay NIS++, đảm bảo rằng phần mềm hỗ trợ chỉ một môi trường; không phải toàn bộ Các mật khẩu búng cú thuật toán mó hoỏ mạnh, và có bộ lọc mật khẩu tốt hơn, cung cấp tính năng bảo vệ tốt hơn bằng cách tạo ra độ khó hơn cho kẻ tấn công duy trì và crack mật khẩu của người sử dụng 3.1.5 Các mối đe doạ khác và các giải pháp Các mật khẩu... /etc/passwd là file có thể đọc và sự phát triển ồ ạt của các công cụ crack mật khẩu Một vài phương thức cải thiện mật khẩu đã được thực hiện cho phương thức an toàn mật khẩu trong hệ thống *.nix Đầu tiên được giới thiệu là loại mật khẩu bóng (shadow password) Việc chứa các bảng băm mật khẩu trong file đọc được /etc/passwd không an toàn, vì vậy các bảng băm này được đưa vào trong một file riêng rẽ, file... lệnh sau trên máy trạm của bạn: [root@deep] # /usr/sbin/exportfs -a Ghi chú: Bạn nên nhớ rằng, mặc định có một dịch vụ NFS có sẵn trên hệ thống có thể có một rủi ro về bảo mật 3.2.3 Vô hiệu hóa việc truy cập chương trình console Trong một môi trường an toàn nơi mà chúng ta chắc chắn rằng console được bảo mật bởi vì các mật khẩu cho BIOS và LILO đã được thiết lập và tất cả các công tắc nguồn và reset... BSDi) và một số các phiên bản Linux (Debian, SuSE, RedHat, Mandrake) Hiện tại, OpenSSH có thể được sử dụng như phần thêm vào cho mỗi hệ thống *.nix Các giải pháp khác Do sự đa dạng đối với mật khẩu của các hệ thống *.nix cả ngay trong hệ thống và khi truyền thông, một số phương pháp khỏc đó được thực hiện để làm tăng tính an toàn cho mật khẩu Một trong những phương pháp thông dụng nhất là mô tả các mật. .. thay đổi trên tập tin inetd.conf Các dịch vụ kích hoạt trên một host được chọn phụ thuộc vào các chức năng mà bạn muốn host cung cấp Các chức năng có thể hỗ trợ dịch vụ mạng được chọn, các dịch vụ khác được host trên máy tính này, hay việc phát triển và bảo trì của hệ điều hành và các ứng dụng [root@deep /]# killall -HUP inetd Bước 4: Một biện pháp bảo mật nữa mà bạn có thể áp dụng để bảo mật tập tin... người sử dụng gõ mật khẩu và gửi tới máy chủ, nếu mật khẩu trùng với mã mà máy chủ đã tạo trước đó một khoảng thời gian, người sử dụng đó được chấp nhận truy cập hệ thống (Chú ý rằng, mật khẩu này chỉ có giá trị trong một khoảng thời gian nhất định Và trong khoảng thời gian này, người sử dụng sẽ không thể đang nhập lại nếu hệ thống không được thiết lập lại hay khởi tạo lại) S/KEY và OPIE đã thực sự... tại có thể được bảo mật tốt hơn, nhưng mối đe doạ vẫn tồn tại Điều này đặc biệt đúng với trong các môi trường hệ thống *.nix, có rất nhiều mối đe doạ này dựa trên các chương trình TCP/IP và các giao thức mà không xây dựng các thuật toán mó hoỏ hay cơ chế bảo vệ khác Ví dụ: telnet và các lệnh r* (rsh, rlogin, ) gửi các mật khẩu dưới dạng text Việc bảo vệ các mật khẩu được mó hoỏ được chứa trên hệ thống... adm admin, admin adm, admin admin, sysman sysman, sysman sys, sysman system, sysadmin sysadmin, sysadmin sys, sysadmin system, sysadmin admin, sysadmin adm, who who, learn learn, uuhost uuhost, guest guest, host host, nuucp nuucp, rje rje, games games, games player, sysop sysop, root sysop, demo demo, … 3.1.4 Tăng tính an toàn của mật khẩu và mó hoỏ: Mật khẩu trên hệ thống *nix được lưu trong file... root và vì vậy có khả năng bảo mật tốt hơn Hai file này được sử dụng cùng nhau để cung cấp việc chứng thực cho user Các file mật khẩu búng đó trở nên thông dụng và được sử dụng mặc định cho rất nhiều hệ thống *.nix như Sun Solaris Tuy nhiên, chúng không phải là mặc định của toàn bộ các hệ thống Chẳng hạn với Red Hat Linux, việc sử dụng mật khẩu bóng được lựa chọn trong các bước cài đặt hệ thống Các mật. .. các mật khẩu này dưới dạng text qua mạng Các giao thức không bảo mật nên được đặt với các giao thức bảo mật thay thế Sử dụng secure shell ssh, mà các thông tin được mó hoỏ truyền tới đầu cuối, được thiết kế thay đổi telnet và rsh; secure copy (scp) có thể được sử dụng để thay thế ftp và rcp OpenSSH là một sản phẩm miễn phí được phát triển như một phần trong toàn bộ dự án OpenBSD Nó gồm có ssh, scp và . giúp tăng cường mức độ an toàn cho hệ thống Linux. Kể từ khi Linux được phát triển một cách rộng rãi và nhanh chóng, đặc biệt là trong các giao dịch kinh doanh quan trọng, an ninh là một vấn đề. dụng máy chủ Linux như là các Internet gateway. Vấn đề an toàn an ninh cho hệ thống Linux ngày càng trở nên quan trọng và bức thiết hơn. Tài liệu này sẽ có một cái nhìn tổng quát về an toàn hệ. năng và sản phẩm liên quan cho phép xây dựng một môi trường tương đối an toàn. 1.1 Những nguy cơ an ninh trên linux Linux và các ứng dụng trờn nó có thể không ít các lỗ hổng an ninh hơn những hệ