An toàn & bảo mật thông tin trên LINUX Hệ thống bảo mật & phát hiện xâm nhập mạng (Nids)
Trang 11.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 :
Trang 2o 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
Trang 32.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 để
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
Trang 4bộ 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
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ự
Trang 53 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ờigian đã đị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 sử dụng mới thì được phép truycập trên máy server, chiều dài mật khẩu của người sử dụng đó sẽ có tối thiểu là 6 ký tự và
nó bao gồm các ký tự, ký số, ký tự đặc biệt v.v Như thế vẫn chưa đủ mà nó phải là 8
Để ngăn chặn những người có tư tưởng không chú trọng đến bảo mật và bắt buộc họ phảidùng chiêu dài password tối thiểu 8 ký tự, người quản trị hệ thống cũng có thể hiệu chỉnh tập tin quan trọng "/etc/login.defs" và thay đổi dòng sau trở thành:
Trang 63.1.3 Default password
Các nhà sản xuất hay các sản phẩm đều luôn có những mật khẩu ngầm định lúc đầu, nếu người quản trị chưa thay đổi chúng thì sẽ là kẽ hở để các hacker có thể thử đầu tiên Chúng thường là:root root, root system, sys sys, sys system, daemon daemon, uucp uucp, tty tty, test test, unix unix, unix test, bin bin, adm adm, 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 /etc/passwd, một file chứa các tênngười sử dụng, UIDs, GIDs, và các mật khẩu được mã hoá cho người sử dụng trên hệ thống Ngoài ra, file này còn lưu các thông tin khác, như tên đầy đủ của người sử dụng, đường dẫn thư mục, hay hệ thống shell Bất kỳ ai truy cập hệ thống cũng có thể hiển thị nội dung của file /etc/passwd Điều này tạo ra khả năng phá hoại với các user và những
kẻ tấn công có thể tạo ra các lỗ hổng bảo mật để nhận được một bản sao của file mật khẩunày Các hệ thống *.nix thường sử dụng thuật toán mã hoá (như thuật toán DES) để tạo racác bảng băm mật khẩu DES sử dụng thuật toán mã hoá 56 bit Với thuật toán này, DES
đã được sử dụng như thuật toán mã hoá phổ biến trước đây Tuy nhiên, theo thời gian, khiphần cứng phát triển và giá thành thiết bị rẻ đi, thuật toán này đã trở nên dễ dàng giải mã
và tạo lại mã Vì vậy, với các hệ thống tốc độ nhanh sẽ việc crack các mật khẩu không phải quá khó.Ví dụ: l0phtCrack có thể sử dụng để crack các mật khẩu của Windows, chương trình crack của Alec Mufet có thể sử dụng để crack mật khẩu hệ thống *.nix Việc phá mã đã được phát triển theo thời gian, được viết từ năm 1991 và hiện tại nó đã được phát triển đến phiên bản 5.0a Việc phá mã có thể được cấu hình để tương thích với bất kỳ môi trường nào; các file cấu hình có thể được sửa đổi hỗ trợ cho các định dạng filemật khẩu khác nhau, loại thuật toán mã hoá khác nhau, Việc phá mã sử dụng danh sách
từ điển như nền tảng cho việc phá mã; các file từ điển này cũng có thể được cấu hình lại một cách dễ dàng Nói chung, để liệt kê danh sách cấu trúc thư mục cho việc thử chương trình, bạn cũng có thể cấu hình tập từ điển hay các luật tạo mã như một phần trong việc phá mã Các luật này có thể bao gồm các phương thức như gắn trước hay sau các ký tự vào các từ chuẩn, gấp đôi hay đảo ngược các từ, thay đổi các ký tự từ thường sang hoa ,hay thay thế một từ này bằng một từ khác Vậy làm cách nào để bảo vệ các mật khẩu trên
hệ thống *.nix trong khi file /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
Trang 7/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 /etc/shadow File này chỉ có thể đọc bởi quyền root và vì vậy có khả năng bảo mậttố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 khẩu bóng nên được sử dụng ở bất cứ đâu trong hệ thống Thứ hai, một số phiên bản của *.nix hiện tại cung cấp thuật toán mã hoá tốt hơn, (có thể sử dụng tuỳ chọn trong mã hoá), sử dụng thuật toán bảng băm MD5 thay thế cho DES Passwd là lệnh mặc định sử dụng cho việc thay đổi mật khẩu trên các hệ thống
*.nix Lệnh này cũng hỗ trợ việc kiểm tra tính an toàn tối thiếu đối với các mật khẩu của người sử dụng nhưng không hỗ trợ tính năng đòi hỏi người sử dụng thay đổi mật khẩu của họ sau một khoảng thời gian Ví dụ lệnh passwd trong Sun Solaris hỗ trợ tính năng trên, và cũng tạo ra các kiểm tra sau:
Độ dài tối thiểu, mà nhà quản trị có thể chỉ định (mặc định là 6 ký tự) Chú ý rằngbất chấp độ dài mật khẩu, chỉ có 8 ký tự đầu được xem cho mục đích chứng thực
Phải chứa ít nhất 2 ký tự (hoa hoặc thường) và một số hay biểu tượng
Không thể là tên, đảo ngược tên truy cập hệ thống, hay bất cứ việc dịch chuyển ký
tự từ tên truy cập hệ thống
Các mật khẩu mới phải có ít nhất 3 ký tự khác so với mật khẩu cũ
npasswd, được viết bởi Clyde Hoover, thực hiện các kiểm tra sau:
Kiểm tra từ vựng (độ dài tối thiểu); không cho phép các ký tự lặp lại hay các mẫumật khẩu thông thường như các con số thường gặp; đòi hỏi mật khẩu là sự phatrộn giữa con số, ký tự, biểu tượng
Kiểm tra file passwd (không cho phép lấy thông tin từ file passwd)
trong các file từ điển cấu hình)
dụng gần đây)
Kiểm tra địa phương (tuỳ chọn - site cấu hình - các kiểm tra chỉ định; mặc định làkhông cho phép nhiều tên hostname trong file rhosts)
Anlpasswd của viện nghiên cứu quốc gia Argonne về chuyên ngành thuật toán và khoa
học máy tính, là một chương trình viết bằng ngôn ngữ Perl Sự cải thiện chính của nó là
hỗ trợ cho môi trường NIS và kiểm tra các mật khẩu user chống lại danh sách từ điển vớikhoảng 13 tỷ từ khi được tạo bởi chương trình crack
Passwd+, được viết bởi Matt Bishop, là một chương trình rất phức tạp, mà giúp bạn cấu
hình một số kiểm tra (dựa trên mô hình mẫu, xâu, số hay ký tự) Mỗi mật khẩu phải thoảmãn toàn bộ các kiểm tra này.Nếu lựa chọn thay thế passwd với các giá trị này (nhìnchung là một ý tưởng tốt) cần cần xem xét một số điểm Đầu tiên, kiểm tra liệu các giá trịpasswd của bạn có hỗ trợ sử dụng mật khẩu bóng; ngoài các file mật khẩu bóng, bạn phảidựa vào độ mạnh của thuật toán mã hoá và độ lớn của mật khẩu (ví dụ như loại bỏ cácmậ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
Trang 8phầ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ậttoá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ằngcá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 tại hệ thống hiện 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ềumố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ựngcá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 sẽ không còn ý nghĩa nhiều khi bạn truyền các mật khẩu này dưới dạng text quamạ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ự ánOpenBSD Nó gồm có ssh, scp và các công cụ ssh Các giá trị BSD (OpenBSD,FreeBSD, 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àncho 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 khẩu sửdụng một lần và sau đó được hủy bỏ Các hệ thống này có 2 thuận lợi sau:
sử dụng việc mã hoá trong khuôn dạng của một giao thức dạngchallenge/response, vì vậy các mật khẩu không bao giờ được truyền trên mạng
công, nó cũng không thể sử dụng lại
Các hệ thống mật khẩu sử dụng 1 lần (OTP - Once-Time Password) có thể được thựchiện bởi phần cứng - như là các thẻ smart card - hay trong phần mềm Trong khi các giảipháp thương mại tồn tại, chúng ta hãy xét đến một số các chương trình dạng miễn phí S/KEY, một trong những hệ thống dựa theo mô hình OTP, được viết bởi Bellcore (hiện tạiviết bởi Telcordia) và được phát triển như một phần mềm mã nguồn mở.Bellcore gần đây đã bắt đầu phát triển phiên bản thương mại, nhưng phiên bản miễn phívẫn được cung cấp Khi S/KEY trở thành sản phẩm thương mại, phần mã nguồn mở củachương trình này vẫn được quan tâm và phát triển thành sản phẩm OPIE Cả S/KEY vàOPIE sử dụng một hệ thống challenge/response Trong mỗi trường hợp, mật khẩucủa người sử dụng được chứa, trong dạng mẫu được mã hoá, trên hệ thống máy chủ Mỗi
hệ thống sử dụng bộ mã tạo mật khẩu chung dựa theo thông tin người sử dụng cung cấplúc ban đầu và liên kết với một số tuần tự Mật khẩu đầu tiên của người sử dụng được tạobằng cách đặt thông tin của người sử dụng đó qua một thuật toán bảng băm (như thuật
Trang 9toán MD4 cho S/KEY, MD5 cho OPIE) với số N mật khẩu được tạo N là số lần trongdãy bảng băm để người sử dụng có thể truy cập Mật khẩu kế tiếp được tạo bằng cáchgiảm N đi 1 và đặt thông tin đó trong bảng băm số N-1, và tiếp tục như vậy Với mụcđich chứng thực, khi một người sử dụng đăng nhập vào hệ thống, anh ta sẽ gửi tên truynhập của anh ta tới máy chủ Máy chủ sẽ trả lời theo phương thức challenge, bao gồm tạo
số tuần tự của người sử dụng Sau khi 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ị trongmộ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ôngthể đ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ự được thiết kế để bảo vệ các kẻ tấn công như replay attack, vì thông tin mậtkhẩu chỉ có giá trị cho mỗi phiên làm việc, nó không thể bị lây bởi một công cụ mạo danhhay sử dụng lại tại thời điểm khác Tuy nhiên, một thông tin mã hoá yếu cũng có thể làm
hệ thống như S/KEY hay OPIE có thể có lỗ hổng như một mật khẩu yếu Vì vậy, banđầu, chúng ta cần quay lại nơi mà chúng ta xuất phát: đó chính là sử dụng các mật khẩu
có độ dài đủ lớn
3.1.6 Các công cụ:
An toàn của mật khẩu trên các hệ thống *.nix bao gồm 3 khía cạnh chính: Đầu tiên, bạnphải tạo các mật khẩu và các bảng băm với độ khó cho các kẻ tấn công khó có thể phá mãđược Bạn có thể thực hiện điều này sử dụng các file mật khẩu, như hạn chế quyền truycập hơn là thay đổi file chuẩn /etc/passwd file Thứ hai, bạn phải mã hoá mật khẩu khitruyền tin Thay thế các giao thức sử dụng việc chứng thực dạng text với các dạng chứngthực được mã hoá Thứ ba, đảm bảo rằng thuật toán mã hoá, bản thân nó là an toàn.Không có phương thức mã hoá nào là hoàn hảo; Để sử dụng thuật toán mã hoá mạnhnhưng nơi có thể (MD5 hay MD4 hay thủ tục mã hoá crypt) Thậm chí khi bạn sử dụngthuật toán mã hoá, các mật khẩu mạnh vẫn là phương thức tốt nhất bảo vệ việc phá mãhay đoán mật khẩu Cuối cùng, việc kiểm tra các mật khẩu của bạn (ví dụ: với quyền truycập) là một trong những cách tốt nhất để nâng cao độ an toàn cho hệ thống của bạn Cáccông cụ như Crack rất hữu ích không chỉ cho những kẻ tấn công mà còn cho cả nhữngngười quản trị an toàn hệ thống Toàn bộ các công cụ được liệt kê trong bảng sau:
Công cụ
kiểm tra
Phiên bản hiện
Crack 5.0a Trung tâm nghiên cứu giáo dục thuộc
trường đại học Purdue (CERIAS)
*nix; Solaris, Linux, FreeBSD, NetBSD, OSF, and Ultrix anlpasswd 2.3 Có rất nhiều Website cung cấp, gồm cả server FTP của CERIAS *nix
Trang 10website khác Địa chỉ download:
ftp://ftp.dartmouth.edu/pub/security/
S/KEY 1.1 (phẩn mềm
miễn phí)
Bellcore FTP site FTP của site Bellcore, theo địa chỉ:
3.2 Cấu hình hệ thống
3.2.1 Tài khoản root:
Tài khoản root là được gán quyền nhiều nhất trên một hệ thống Unix Taì khoản "root" không
có một hạn chế bảo mật nào Điều này có nghĩa là hệ thống cho rằng bạn biết những gì bạn đang làm,
và sẽ thực hiện chính xác những gì bạn yêu cầu - không có câu hỏi nào được đặt ra về những điều đó Chính vì vậy, nó rất rễ dàng với một câu lệnh nhập sai có thể sẽ xóa sạch tất cả các tập tin hệ thống
Vì vậy khi sử dụng tài khoản này bạn phải tuyệt đối cẩn thận tránh những lỗi lầm đáng tiếc Để phục
vụ cho các lý do bảo mật không cần phải log-in vào máy server của bạn như là "root" Hơn nữa, nếu bạn không có làm việc trên máy server của bạn, thì đừng nên vào và ra khỏi hệ thống như là "root"- điều này là rất dở.
Đặt thời gian time-out login cho tài khoản root:
Mặc dù được lưu ý là không nên vào hệ thống với account là "root" và logout khi không làm việc trên máy server, tuy nhiên vẫn có những người quản trị hệ thống vẫn còn lưu lại màn hình login như "root" hay quên ra khỏi hệ thống (logout) sau khi kết thúc công việc của họ hoặc rời khỏi các máy trạm không cùng với tài khoản nào Để giải quyết vấn đề này ta tạo một bash shell tự động logout sau khi không được dùng trong một khoảng thời gian Để thực hiện điều đó, bạn phải đặc biến đặc biệt của Linux được đặt tên là "TMOUT" tới thời gian tính bằng giây không có thao tác nào được nhập vào trước khi logout.
Chỉnh sửa tập tin profile của bạn "vi /etc/profile" và thêm dòng sau vào một nơi nào đó bên dưới dòng
chứa "HISTFILESIZE=" trong tập tin này:
TMOUT=7200
Giá trị mà chúng ta nhập vào cho biến "TMOUT=" là được tính bằng giây và biểu thị 2 giờ
(60*60=3600*2=7200 giây) Điều quan trọng là hãy ghi chú rằng nếu bạn quyết định đặt dòng trên vào trong tập tin "/etc/profile", khi đó việc tự động logout sau 2 giờ nếu không có các hành động nào
sẽ được áp dụng cho tất cả mọi người sử dụng trên hệ thống Nếu bạn thích điều khiển việc tự động logout chỉ cho một user cụ thể nào đó bạn có thể đặt biến này trong tập tin riêng ".bashrc" của họ.
Sau khi tham số này đã được đặt lại trên hệ thống, bạn phải logout và login lại lần nữa (như root) cho việc thay đổi có tác dụng.
3.2.2 Tập tin "/etc/exports"
Trang 11Nếu bạn đang xuất ra các hệ thống tập tin dùng dịch vụ NFS, thì bảo đảm cấu hình tập tin
"/etc/exports" với hạn chế truy cập tối đa Điều này có nghĩa là không dùng các ký tự đại diện (wild-cards), không cho phép root truy xuất ghi, và chỉ mount dưới dạng chỉ đọc khi
có thể.Soạn thảo tập tin exports (vi /etc/exports) và thêm vào:
Lấy một ví dụ:
/dir/to/export host1.mydomain.com(ro,root_squash)
/dir/to/export host2.mydomain.com(ro,root_squash)
Trong đó "dir/to/export" là thư mục mà bạn muốn xuất ra (export),
host#.mydomain.com là máy được phép login và thư mục, tùy chọn <ro> nghĩa là
mount chỉ đọc và tùy chọn <root_squash> là không cho phép root truy xuất ghi trong
thư mục này.Để việc thay đổi này có tác dụng bạn sẽ cần chạy lệnh sau trên máy trạm củabạ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 của hệ thống đã bị vô hiệu hóa, nó có thể có lợi để vô hiệu hóa hoàn toàn tất cả các console-equipvalent truy xuất tới các chương trình như tắt hẳn hệ thống (shutdown), khởi động lại hệ thống (reboot), và treo hệ thống (halt) cho những người sử dụng hợp lệ trên máy server của bạn.
Để làm việc này , chạy dòng lệnh sau:
[root@deep /]# rm -f /etc/security/console.apps/<servicename>
Trong đó (servicename> là tên của chương trình mà bạn muốn vô hiệu hóa truy cập console-equivalent Tuy nhiên, trừ khi bạn dùng xdm, hãy cẩn thận không xóa tập tin xserver hoặc là không ai ngoài root có thể khởi động hệ thống xserver (Nếu bạn luôn dùng xdm để khởi động xserver, root là người sử dụng duy nhất cần để khởi động X, trong trường hợp này, bạn thật sự muốn xóa tập tin xserver
[root@deep /]# rm -f /etc/security/console.apps/xserver (nếu xóa bỏ,chỉ root là người có thể khởi động X).
Việc này sẽ vô hiệu hóa console-equivalent truy cập tới các chương trình halt, poweroff, reboot và shutdown Một lần nữa, chương trình xserver chỉ áp dụng khi mà bạn đã cài đặt giao diện Xwindow trên hệ thống của bạn.
Ghi chú: Nếu cài đặt theo các bước của chương trình, thì giao diện Xwindow không được cài đặt trên
máy server và tất cả các tâpj tin được mô tả sẽ không xuất hiện trong thư mục " / etc / security" do vậy đừng chú ý các bước trên.
Trang 12Vô hiệu hóa tất cả truy cập console
Thư viện Linux-PAM được cài đặt mặc định trên hệ thống của bạn cho phép các người quản trị hệ thống chọn cách để các ứng dụng xác nhận những người sử dụng như thế nào, vi dụ như truy cập console truy cập tập tin và chương trình Để vô hiệu hóa tất cả các truy cập này cho những người sử
dụng, bạn phải đánh dấu # vào đầu tất cả các dòng có tham chiếu tới pam_console.so trong thư mục "/
etc/pam.d" (nghĩa là bạn chuyển các dòng đó thành ghi chú (comment line) Đoạn script sau sẽ thực
hiện mánh lới một cách tự động Đăng nhập như "root", tạo tập tin script disabling.sh (gõ
disabling.sh) và thêm các dòng sau vào bên trong:
Làm script này có thể thực thi với lệnh sau và thi hành nó:
[root@deep /]# chmod 700 disabling.sh
[root@deep /]# /disabling.sh
Việc này sẽ đánh dấu là dòng ghi chú (comment line) lên tất cả các dòng tham chiếu đến
"pam_console.so" trong tất cả các tập tin nằm trong thư mục /etc/pamd Sau khi script được thi hành,
có thể xóa nó khỏi hệ thống.
3.2.4 Tập tin "/etc/inetd.conf"
Inetd cũng được gọi là "super server", sẽ nạp một chương trình mạng dựa trên mộtyêu cầu từ một hệ thống mạng Tập tin "inetd.conf" báo cho inetd biết cổng (port) nào dùng để lắng nghe và server nào khởi động cho mỗi port Việc đầu tiên cần xem xét là khi mà bạn đặt hệ thống Linux của bạn lên bất kỳ mạng nào thì các dịch vụ (service) nào
mà bạn cần đưa ra Các dịch vụ mà bạn không cần đưa ra nên vô hiệu hóa và gỡ bỏ, như vậy bạn sẽ có rất ít điều lo ngại về nó, và những kẻ tấn công sẽ có ít cơ hội để tìm kiếm lỗhổng trên hệ thống của bạn Nhìn vào tập tin "/etc /inetd.conf" để xem những dịch vụ nào
mà nó được cung cấp bởi chương trình inetd của bạn Vô hiệu hóa những gì mà bạn
không cần bằng cách thêm một dấu # ở ngay đầu dòng, và sau đó gửi đến tiến trình inetd
của bạn một lệnh SIGHUP để cập nhập nó tới tập tin "inetd.conf" hiện hành
Bước 1.
Thay đổi các quyền hạn trên tập tin này là 600
[root@deep /]# chmod 600 /etc/inetd.conf
Bước 2.
Bảo đảm rằng người sở hữu là root
[root@deep /]# stat /etc/inetd.conf
File: "/etc/inetd.conf"
Size: 2869 Filetype: Regular File
Mode: (0600/-rw -) Uid: ( 0/ root) Gid: ( 0/root)
Device: 8,6 Inode: 18219 Links: 1
Access: Web Sep 22 16:24:16 1999(00000.00:10:44)
Modify: Mon Sep 20 10:22:44 1999(00002.06:12:16)
Change: Mon Sep 20 10:22:44 1999(00002.06:12:16)
Bước 3.`
Chỉnh sửa tập tin inetd.conf (vi /etc/inetd.conf) và vô hiệu hóa các dịch vụ như sau:ftp, telnet, shell, login, exec, talk, imap, pop-2, finger, auth, v.v trừ khi bạn có kế hoạch dùng nó Nếu nó bị tắt thì nó sẽ bớt rủi ro
Trang 13#ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
#telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
#shell stream tcp nowait root /usr/sbin/tcpd in.rshd
#login stream tcp nowait root /usr/sbin/tcp in.rlogind
#exec stream tcp nowait root /usr/sbin/tcpd in.rexecd
#comsat dgram udp wait root /usr/sbin/tcpd in.comsat
#talk dgram udp wait root /usr/sbin/tcpd in.talkd
#ntalk dgram udp wait root /usr/sbin/tcpd in.ntalkd
#dtalk stream tcp wait nobody /usr/sbin/tcpd in.dtalkd
#finger stream tcp nowait root /usr/sbin/tcpd in.fingerd
#cfinger stream tcp nowait root /usr/sbin/tcpd in.cfingerd
#systat stream tcp nowait guest /usr/sbin/tcpd /bin/ps -auwwx
#netstat stream tcp nowait guest /usr/sbin/tcpd /bin/netstat -f inet
#auth stream tcp nowait nobody /usr/sbin/in.identd in.identd -| -e -o
# End of inetd.conf
Ghi chú: Đừng quên gửi tới tiến trình inetd một tín hiệu SIGHUP (killall -HUP inetd) sau khi thực
hiện các 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 "inetd.conf" là đặt nó không thay đổi, dùng lệnh chattr Để đặt tập tin không thay đổi gì, thi hành lệnh sau:
[root@deep /]# chattr +i /etc/inetd.conf
Việc này sẽ ngăn chặn bất kỳ sự thay đổi (xảy ra bất ngờ hay trong các trường hợp khác) với tập tin
"inetd.conf" Một tập tin với thuộc tính không thay đổi "i" sẽ làm cho tập tin không thể hiệu chỉnh, xóa hay đổi tên, không có mối liên kết nào có thể được tạo cho tập tin này và không dữ liệu nào có thể được ghi đến nó Chỉ có một người có thể đặt hay xóa thuộc tính này là super-user root.
Nếu bạn muốn hiệu chỉnh tập tin inetd.conf bạn sẽ cần phải gỡ bỏ cờ hiệu không được thay đổi :
- Để gỡ cờ hiệu không được thay đổi, đơn giản thi hành lệnh sau:
[root@deep /]# chattr -i /etc/inetd.conf
3.2.5 TCP_WARPPERS
Mặc nhiên Red Hat Linux cho phép tất cả các yêu cầu dịch vụ Dùng TCP_WARPPERS thực hiện bảo mật các máy server của bạn để chống sự xâm phạm từ bên ngoài thì đơn giản và dễ dàng hơn rất nhiều những gì bạn suy nghĩ Từ chối tất cả các host bằng cách đặt "ALL:ALL@ALL, PARANOID" trong tập tin "/etc/hosts.deny" và đồng thời liệt kê tường minh danh sách các host đáng tin cậy đã được phép truy cập tới máy của bạn vào trong tập tin "/etc/hosts.allow" Đây là cách cấu hình an toàn tốt nhất TCP_WRAPPERS được điểu khiển từ hai tập tin và việc tìm kiếm dừng lại ở lần thấy đầu tiên
/etc/hosts.allow
/etc/hosts.deny
Trang 14- Quyền truy cập được gán khi một cặp (daemon, client) xứng hợp với một mục trong tập tin /etc/hosts.allow.
- Bằng không, quyền truy cập bị từ chối khi một cặp (daemon, client) xứng hợp với một mục trong tập tin /etc/hosts.deny
- Còn lại, quyền truy cập sẽ được gán
Bước 1:
Soạn thảo tập tin hosts.deny (vi /etc/hosts.deny) và thêm vào các dòng sau:
Access is denied by default.
# Deny access to everyone.
ALL: ALL@ALL , PARANOID # Matches any host whose name does not
# match its address, see bellow
Điều này có ý nghĩa cho tất cả các dịch vụ, tất cả các vị trí, do vậy bất kỳ dịch vụ nào đều
bị ngăn chặn lại, trừ khi chúng được phép truy cập một cách tường minh bởi các mục trong tập tin allow
Ghi chú: Về tham số "PARANOID"; Nếu có ý định muốn chạy các dịch vụ telnet hoặc ftp
trên máy server, đừng quên thêm vào tên máy client và địa chỉ IP trong tập tin " / etc / hosts" trên server hay có thể chờ đợi trong nhiều phút cho việc tìm kiếm DNS tới thời gian time out, trước khi có được một dấu nhắc login.
Bước 2:
Soạn thảo tập tin hosts.allow (vi /etc/hosts.allow) và giả sử thêm vào dòng sau:
# Host được ủy quyền rõ ràng thì được liệt kê trong tập tin allow.
Ghi chú: Các thông điệp lỗi trông giống như thế này: warning: / etc / hosts.allow, line
6: can't verify hostname: gethostbyname(win.openna.com) failed Nếu nhận kiểu thông điệp lỗi này, hãy kiểm tra trong tập tin cấu hình DNS để biết sự tồn tại của hostname.
Đừng để hiển thị các tập tin thông tin hệ thống Nếu không muốn hiển thị các tập tin thông tin hệ thống khi mọi người log-in từ xa, ta có thể thay đổi tùy chọn telnet trong tập tin "/etc/inetd.conf" trông giống như thế:
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h
Thêm vào cờ hiệu "-h" ở cuối dòng lệnh sẽ cho daemon không hiển thị bất kỳ thông tin
hệ thống nào và chỉ hiện dấu nhắc login cho người sử dụng Mẹo vặt này chỉ cần thiết nếudùng một telnet daemon trên máy server (khuyên dùng SSH)
3.2.6 Tập tin "/etc/host.conf"
Linux sử dụng một thư viện phân giải để lấy một địa chỉ IP tương ứng với một host name Tập tin
"/etc/host.conf" chỉ rõ các tên được phân giải như thế nào Các mục trong tập tin "etc/host.conf" để bảo các thư viện phân giải các dịch vụ nào cần dùng, và sắp theo thứ tự nào để phân giải các tên.
Soạn thảo tập tin host.conf (vi /etc/host.conf) và thêm vào các dòng sau:
Trang 15# Lookup names via DNS first then fall back to /etc/hosts.
Tùy chọn order chỉ rõ thứ tự của các dịch vụ Ví dụ mẫu này chỉ rõ ràng như việc phân giải đầu tiên
nên tham khảo các name server để phân giải một tên (name) và sau đó kiểm tra tập tin "/etc/hosts" Để đạt hiệu quả cao và bảo mật tốt hơn thì nên đặt thư viện phân giải theo thứ tự đầu tiên là kiểm tra name server (bind) sau đó tập tin hosts (hosts) cho việc thực thi và bảo mật được tốt hơn trên tất cả các máy server Dĩ nhiên phải có phần mềm DNS/BIND được cài đặt sẵn hay việc cấu hình sẽ không làm
việc Tùy chọn multi xác định một host trong tập tin "/etc/hosts" có thể có nhiều địa chỉ IP (multiple
interface ethN) Các host mà có nhiều hơn một địa chỉ IP được biết đến là multiomed, bởi vì sự hiện diện của nhiều địa chỉ IP bao hàm rằng host có nhiều giao tiếp mạng Lấy một ví dụ, một Gateway
Server sẽ luôn có nhiều địa chỉ IP và phải có tùy chọn này được đặt là ON Tùy chọn nospoof chỉ rõ
hãy cẩn thận không được phép ngụy trang trên máy này IP-Spoofing là môt thành tích bảo mật chói lọi, nó làm việc bởi các mẹo văt máy tính trong một mối quan hệ đáng tin cậy mà bạn là một người nào đó mà thật sự không phải vậy Trong loại hình tấn công này, một máy được cài đặt như một server hợp pháp và khi đó sinh ra các kết nối và các loại hoạt động mạng khác tới các hệ thống đầu cuối hợp pháp, các server khác hay các hệ thông lưu trữ dữ liệu lớn Tùy chọn này phải được đạt ON cho tất cả các loại server.
để ngăn chặn việc xóa hay thêm vào các dịch vụ mà không được ủy quyền.
- Để định cho tập tin "/etc/services" không thay đổi, dùng lệnh:
[root@deep /]# chattr +i /etc/services
3.2.8 Tập tin "/etc/securetty"
Tập tin "/etc/securetty" cho phép bạn chỉ rõ các thiết bị TTY nào mà người sử dụng "root" được phép
login vào Tập tin "/etc/securetty" được đọc bởi chương trình login (thường là "/bin/login") Định dạng của nó là một danh sách các tên thiết bị tty được phép và đối với tất cả các thứ khác thì được chú giải hoặc không xuất hiện trong tập tin này, đăng nhập với root thì không được phép.
Vô hiệu hóa bất kỳ tty mà bạn không cần đến bằng cách đặt dấu chú giải (#) cho chúng (dấu # ở đầu dòng).
Chỉnh sửa tập tin securetty (vi /etc/securetty) và đặt dấu chú giải lên các dòng sau:
tty1
#tty2
#tty3
#tty4
Trang 163.2.9 Các tài khoản đặc biệt:
Có một điều quan trọng là cần vô hiệu hóa tất cả các tài khoản mặc định của
nhà sản xuất mà không dùng trong hệ thống (một số tài khoản tồn tại mặc nhiên ngay cả
khi không cài đặt các dịch vụ liên quan trên máy server) Việc này nên được kiểm tra sau mỗi lần nâng cấp hay cài đặt phần mềm mới Linux cung cấp các tài khoản này cho các hoạt động hệ thống khác nhau,có thể không cần nếu các dịch vụ không được cài đặt trên
hệ thống server Nếu không cần các tài khoản nào, thì xóa chúng ta có càng nhiều tài khoản thì việc truy cập hệ thống sẽ dễ dàng hơn Để xóa người sử dụng trên hệ thống, dùng lệnh:
[root@deep /]# userdel username
- Để xóa nhóm người sử dụng trên hệ thống của bạn, dùng lệnh:
[root@deep /] # groupdel groupname
[root@deep /]# userdel sync
[root@deep /]# userdel shutdown
[root@deep /]# userdel halt
[root@deep /]# userdel news
[root@deep /]# userdel uucp
[root@deep /]# userdel operator
[root@deep /]# userdel games (Xóa user này khi không dùng X Window).
[root@deep /]# userdel gopher
[root@deep /]# userdel ftp (Xóa user này khi không dùng ftp anonymous server).
Ghi chú: Mặc định, lệnh "userdel" sẽ không xóa một thư mục home của người sử dụng
Nếu muốn thư mục home của các tài khoản cũng được xóa, thì phải thêm tùy chọn "-r" vào lệnh userdel.
Bước 2:
Gõ các lệnh sau trên máy terminal để xóa nhóm các người sử dụng được liệt kê bên dưới:
[root@deep /]# groupdel adm
[root@deep /]# groupdel Ip
[root@deep /]# groupdel news
[root@deep /]# groupdel uucp
[root@deep /]# groupdel games (Xóa group này khi khong dùng X Window).
[root@deep /]# groupdel dip
[root@deep /]# groupdel ppusers
[root@deep /]# groupdel popusers (xóa group này khi không dùng pop server cho email).
[root@deep /]# groupdel slipusers
Bước 3:
Thêm các người sử dụng cần thiết vào hệ thống:
[root@deep /]# useradd admin
Trang 17[root@deep /]# passwd admin
Bước 4:
Bit không thay đổi có thể được dùng để ngăn chặn việc xóa ngẫu nhiên hay ghi chồng lênmột tập tin cân được bảo vệ Nó cũng ngăn chặn một ai đó tạo một biểu tượng liên kết tớitập tin này, mà nó là nguồn tấn công xoay quanh việc xóa "/etc/passwd", "/etc/group" hay
"/etc/gshadow"
- Để đặt bit không thay đổi trên các mật khẩu và các nhóm tập tin , dùng lệnh sau:
[root@deep /[# chattr +i /etc/passwd
[root@deep /[# chattr +i /etc/shadow
[root@deep /[# chattr +i /etc/group
[root@deep /[# chattr +i /etc/gshadow
Ghi chú: Trong tương lai, nếu có ý định thêm hay xóa các người sử dụng, tập tin
passwd, các nhóm người sử dụng, hay các tập tin group, thì phải gõ bỏ bit không làm thay đổi trên tất cả các tập tin đó, nếu không sẽ không thể thay đổi được gì Nếu như ta cũng có dự định cài đặt một chương trình RPM sẽ tự động thêm một người sử dụng mới vào các tập tin passwd hay group đã đặt bit không thay đổi, ta sẽ nhận được một thông điệp lỗi suốt quá trình cài đặt, khi không gỡ bỏ bit không làm thay đổi từ các tập tin đó.
3.2.10 Ngăn chặn bất kỳ người sử dụng nào chuyển thành root bằng lệnh "su".
Lệnh su cho phép trở thành những người sử dụng tồn tại trên hệ thống, Ví dụ có thể trở thành
"root" tạm thời và thi hành các lệnh như một super-user "root" Nếu không muốn bất kỳ ai chuyển thành root hay hạn chế "su" với một số người sử dụng nào đó, ta thêm vào hai dòng như sau vào đầu tập tin cấu hình "su" trong thư mục "/etc/pam.d" Nên giới hạn những người được phép chạy lệnh "su"
để thành tài khoản root.
Bước 1:
Soạn thảo tập tin su (vi /etc/pam.d/su) và thêm vào hai dòng sau vào phía trên đầu tập tin:
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=wheel
Sau khi thêm vào các dòng trên, tập tin "/etc/pam.d/su" sẽ trông giống như thế này:
#%OAM-1.0
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=wheel
auth required /lib/security/pam_pwdb.so shadow nullok
account required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_pwdb.so shadow use_authtok nullok
session required /lib/security/pam_pwdb.so
session optional /lib/security/pam_xauth.so
Có nghĩa là chỉ có những người sử dụng là thành viên của nhóm "wheel" có thể dùng
lệnh su chuyển thành root; nó cũng bao gồm logging.Chú ý rằng nhóm "wheel" là một tàikhoản đặc biệt trên hệ thống mà cũng có thể được dùng cho mục đích này Không thể dùng bất kỳ tên nhóm để thực hiện mánh khóe này Mánh khóe này được kết hợp với việcchỉ rõ các thiết bị TTY nào mà root được phép login vào sẽ cải tiến rất nhiều việc bảo mật trên hệ thống
Trang 183.2.11 Securing Your Files
Bảo mật từ cấp độ quyền truy cập file Khi không muốn sự tò mò từ những người khác, ta có thể tạo file mặt nạ để có quyền bảo mật file tối đa Tất nhiên việc bảo mật này chỉ có ý nghĩa khi có nhiều hơn một người sử dụng trong hệ thống Khi có rất nhiều người sử dụng thì chỉ để quyền đọc ghi và không để bất kỳ quyền nào cho các user khác
3.2.12 Bảo vệ thư mục trên web server
Nhiều web servers, trong đó có Apache thường dùng file htaccess để bảo vệ các thư mục trên web server Nếu một thư mục nào đó trên web server có lưu file htaccess, khi duyệt qua thư mục này, web server sẽ popup một hộp thoại yêu cầu nhập username vàmật khẩu Chỉ khi nào nhập vào một username và mật khẩu đúng, ta mới có thể xem đượctrong thư mục đó có những gì Danh sách các username và mật khẩu của htaccess thườngđược lưu trong file htpasswd Tại sao phải dùng dấu chấm ở trước trong tên file
'.htaccess' Các file có tên bắt đầu là một dấu chấm '.' sẽ được các web servers xem như làcác file cấu hình Các file này sẽ bị ẩn đi(hidden) khi bạn xem qua thư mục đã được bảo
vệ bằng file htaccess
Bước 1: chuẩn bị username và mật khẩu cho htaccess
[đt@localhost /]# htpasswd -c /users vicki
New password: tyt
Re-type new password: tyt
Adding password for user vicki
-c để tạo file mới
Sau khi chạy dòng lệnh trên, trong thư mục hiện tại sẽ xuất hiện file users với nội dung như sau:
DES được dùng rất phổ biến trên Unix/Linux(*nix), đặc biệt là trong các files /etc/passwd hoặc /etc/shadow DES rất khó bị crack
code sau để encrypt:
Trang 19@salt = ('a' 'z', 'A' 'Z', '0' '9', '.', '/');
require user vicki
# nếu bạn đang dùng Apache Server, hãy thêm các dòng sau vào
# để ngăn chặn users download các files htaccess & htpasswd
AuthName "Khu vực cấm" // tiêu đề của hộp thoại sẽ được popup
AuthUserFile /var/www.users // đường dẫn đầy đủ đến file lưu username & mật khẩurequire user vicki // danh sách các username được phép
Bước 3: tạo 1 thư mục trên web server, chẳng hạn như 'security', upload file htaccess vàothư mục này, chmod 644 cho file htaccess và users Thử upload vài files khác vào 'security'
Bước 4: mở trình duyệt web và vào thư mục 'security', http://localhost/security/ sẽ nhận được một hộp thông báo yêu cầu nhập username & password Thử dùng username=vicki
& password=tyt, sẽ thấy được các files trong 'security' directory
Hack htaccess & htpasswd
1/ Một số người sơ ý không chmod đúng cho files htaccess và htpasswd Vì vậy hacker
có thể dễ dàng download chúng về máy tính của mình Sau đó hacker tìm một công cụ crack DES bằng tự điển như John the Ripper hoặc CrackJack để crack file htpasswd2/ Sử dụng các công cụ hack tự động
hacker có thể sử dụng WWWHack (http://www.wwwhack.com/) hoặc Brutus
(http://www.hoobie.net/brutus) để hack các websites được bảo vệ bằng files htaccess
và htpasswd Đây là các công cụ tấn công bằng tự điển gọn nhẹ nhưng đa năng, có hổ trợproxy, rất dễ sử dụng Tuy nhiên, nếu password quá khó hoặc tốc độ đường truyền của websites không tốt, phải hàng giờ để WWWHack hoặc Brutus hoàn thành nhiệm vụ WWWHack và Brutus làm việc như thế nào? DES(Data Encryption Standard) dường nhưrất khó bị crack, chỉ có một cách duy nhất và cũng là dễ nhất là dùng tự điển WWWHack
và Brutuslàm việc gần giống như nhau Chúng sẽ chọn một password bất kì trong tự điển,sau đó gởi đến website Nếu nhận được HTML status code 401 - Authorization Required,
Trang 20"Access Denied", "Enter your password again" cú nghĩa là password khụng đỳng, chỳng
sẽ thử lại với một password khỏc cú trong tự điển Nếu nhận được HTML status code 200
OK, cú nghĩa là password đỳng, hay núi cỏch khỏc là đó bị crack
3.2.13 XWindows Security
Motivation / introduction.
Tính bảo mật của XWindows rất kém Trên một mạng máy tính Unix, bất cứ aicũng có thể kết nối và mở một màn hình X, đọc các cú gõ phím, chụp trạng thái mànhình, chạy các ứng dụng không đợc bảo vệ Dù rằng đấy là những sự việc đợc cảnhbáo nhiều trong thế giới bảo mật Unix
How open X displays are found.
Làm thế nào để mở một cửa sổ XWindows từ xa? Nếu Server không bị DisabledXWindows thì ta chỉ việc gõ lệnh:
phát hiện ra các Server nào đang chạy X bằng vô số các Tool trên Internet (NSS).
The localhost problem
Chạy màn hình X với sự điều khiển truy nhập đợc cho phép bởi lệnh "xhost -" sẽbảo vệ từ XOpenDisplay thông qua Port 6000, đó cũng chính là cách mà các Hacker
có thể qua mặt các hệ thống bảo vệ Nếu bạn có thể đăng nhập vào mục tiêu cần tấncông, thì bạn có thể kết nối tới X của local-host Cách này thật đơn giản, chỉ bằng vàidòng lệnh bạn có thể dump xuống đợc trạng thái màn hình X của Host cần tấn công:
$ rlogin target
$ xwd -root -display localhost:0.0 > ~/snarfed.xwd
$ exit
$ xwud -in ~/snarfed.xwd
Dĩ nhiên, trong trờng hợp này bạn phải có một Acc hợp lệ trên hệ thống cần Attack,phải đăng nhập đợc vào hệ thống và quan trọng là hệ thống đó phải chạy X Ngoàiviệc Dump màn hình, bạn còn có thể run đợc các ứng dụng ko đợc bảo vệ trên XServer và chụp các cú gõ phím trên X Server
Snooping techniques - dumping windows
Cách đơn giản nhất để chụp, dump vào các màn hình X từ các X Server là cách
sử dụng công cụ xwd
Xwd: Là một công cụ phục vụ việc dump xuống các màn hình X Nó cho phép Xusers
chụp lại các trạng thái của màn hình X rồi lu dới định dạng đặc biệt Cửa sổ cần chụp
sẽ đợc lựa chọn bởi một cú nhấn Mouse Nó còn có thể chụp ngay cả các cú gõ bàn
phím Một công cụ khác là xwud Ngoài các tính năng nh xwd nó còn có khả năng
đọc các file dump đợc lu giữ bởi các định dạng của các Tool khác Bây giờ chúng tacùng xem xét dump màn hình X bằng cách sử dụng kết hợp: xwd và xwud
Để dump toàn bộ màn hình X từ một host ta dùng lệnh:
$ xwd -root localhost:0.0 > file
Trang 21Để xem những kết quả vừa thu đợc ở trên chúng ta cần phải đọc nó bằng lệnh:
$ xwud -in file
Những cửa sổ Xterm thì hơi khác Bạn không thể chỉ rõ tên cũng nh sau đó dump nóxuống Tuy nhiên để dump Xternm bạn gõ lệnh:
$ xwd -name xterm
Toàn bộ cửa sổ X và Xternm sẽ đợc dump xuống và đọc bởi xwud
Snooping techniques - reading keyboard
Nếu có thể kết nối đến một màn hình Ta cũng có thể log vào hệ thống cũng nh
có thể chộp đợc những cú nhấn phím trên X Server Một chơng trình lu hành trênmạng, gọi xkey Chơng trình đó có tên ttysnoop.c
Nh đã nói, các Hacker còn có thể đọc các cú nhấn phím của các cửa sổ đặc biệt.Chẳng hạn nh cửa sổ ID đặc biệt của Root có thể đợc tóm bởi cách gọi hàmXquerryTree() Thờng thì Windows Manager thờng đợc dùng để điều khiểnWindows-ID, cũng nh những cú nhấn phím trong những khoảng thời gian xác định.Việc sử dụng Windows Manager kết hợp với chức năng Xlib, những cú nhấn phím cóthể đợc tóm và KeySyms có thể đợc biến chuyển vào những đặc tính bởi cách tiếp tụcgọi đến Xlookstrin Thậm chí hacker có thể gửi Keysims đến cho một cửa sổ Hackerkhông chỉ rình mò trên các hoạt động của nạn nhân, còn có thể gửi những sự kiện bànphím tới các quá trình, tơng tự nh là dùng bàn phím trên chính máy đó vậy! Hacker
có thể đọc và ghi các sự kiện gõ phím của một cửa sổ Xtern từ xa
Trojan X clients - xlock and X based logins
Bạn có nghĩ đến một chơng trình thích hợp hơn để thiếp lập một chú ngựa thànhTrojan chop mật khẩu tốt hơn xlock? Với vài dòng thêm vào xlock.c , password mỗingời dùng sử dụng phiên bản Trojan biến thể của xlock có thể đợc lu giữ trong mộtfile và đợc sử dụng sau này bởi các Hacker Nếu một User có một th mục HomeDirectory có thể viết (./home) trong biến môi trờng đờng dẫn của mình, thì rất dễ bịtấn công kiểu này Để lấy đợc Password của họ hacker chỉ việc đặt phiên bản Xlockbiến thể (Trojan) vào Home Directory của họ và chờ hứng Password thôi Thờng thìtrong trờng hợp này User không biết đợc rằng mật khẩu của mình đã bị tóm Các biếnthể mang tính Trojan của Xlock cũng nh các chơng trình khác nh login Có rất nhiềutrên các Site Hacking Unix
3.2.14 TĂNG CƯỜNG AN NINH CHO KERNEL
Mặc dự thừa hưởng những đặc tớnh của hệ thống UNIX và khỏ an ninh hơn một
số hệ điều hành khỏc, hệ thống GNU/Linux hiện nay vẫn tồn tại những nhược điểm sau:
o Quyền của user ‘root’ cú thể bị lạm dụng User ‘root’ cú thể dễ dàng thay đổi bất kỳ điều gỡ trờn hệ thống
o Nhiều file hệ thống cú thể dễ dàng bị sửa đổi Nhiều file hệ thống quan trọng như /bin/login cú thể bị sửa đổi bởi hacker để cho phộp đăng nhập khụng cần mật khẩu Nhưng những file loại này lại hiếm khi nào thay đổi trừ phi khi nõng cấp hệ thống
là một thiết kế tốt để tăng cường tớnh uyển chuyển, linh hoạt cho kernel Nhưng sau khi một module được nạp vào kernel, nú sẽ trở thành một phầncủa kernel và cú thể hoạt động như kernel nguyờn thủy Vỡ vậy, cỏc chưng trỡnh mục đớch xấu cú thể được viết dạng module và nạp vào kernel, rồi sau đú hoạt động như một virus
thành mục tiờu bị tấn cụng của hacker sau khi thõm nhập hệ thống
Trang 22Để cải thiện tính an ninh cho các server Linux, chúng ta cần có một kernel an toàn hơn Điều này có thể thực hiện được bằng cách sửa đổi kernel nguyên thuỷ bằng các ‘patch’ tăng cường tính an ninh cho hệ thống Các patch này có các tính năng chính yếu sau:
o Bảo vệ – bảo vệ các file hệ thống quan trọng khỏi sự thay đổi ngay cả với user root Bảo vệ các process quan trọng khỏi bị ngừng bởi lệnh ‘kill’ Chặn các tác vụ truy cập IO mức thấp (RAW IO) của các chương trình không được phép
o Phát hiện – Phát hiện và cảnh báo với người quản trị khi server bị scan Cũng như khi có các tác vụ trên hệ thống vi phạm các luật (rules) định trước
o Đối phó – Khi phát hiện sự vi phạm trên hệ thống, các ghi nhận chi tiết sẽ được thực hiện cũng như có thể ngừng lập tức phiên làm việc gây ra
Một vài công cụ sửa đổi kernel được sử dụng rộng rãi là LIDS (Linux Intrusion DetectionSystem), Medusa,
3.2.15 AN TOÀN CHO CÁC GIAO DỊCH TRÊN MẠNG
Có rất nhiều dịch vụ mạng truyền thống giao tiếp thông qua giao thức văn bản không mã hoá, như TELNET, FTP, RLOGIN, HTTP, POP3 Trong các giao dịch giữa người dùng với máy chủ, tất cả các thông tin dạng gói được truyền qua mạng dưới hình thức văn bản không được mã hoá Các gói tin này có thể dễ dàng bị chặn và sao chép ở một điểm nào đó trên đường đi Việc giải mã các gói tin này rất dễ dàng, cho phép lấy được các thông tin như tên người dùng, mật khẩu và các thông tin quan trọng khác Việc
sử dụng các giao dịch mạng được mã hoá khiến cho việc giải mã thông tin trở nên khó hơn và giúp bạn giữ an toàn các thông tin quan trọng Các kỹ thuật thông dụng hiện nay
là IPSec, SSL, TLS, SASL và PKI Quản trị từ xa là một tính năng hấp dẫn của các hệ thống UNIX Người quản trị mạng có thể dễ dàng truy nhập vào hệ thống từ bất kỳ nơi nào trên mạng thông qua các giao thức thông dụng như telnet, rlogin Một số công cụ quản trị từ xa được sử dụng rộng rãi như linuxconf, webmin cũng dùng giao thức không
mã hoá Việc thay thế tất cả các dịch vụ mạng dùng giao thức không mã hoá bằng giao thức có mã hoá là rất khó Tuy nhiên, bạn nên cung cấp việc truy cập các dịch vụ truyền thống như HTTP/POP3 thông qua SSL, cũng như thay thế các dịch vụ telnet, rlogin bằng SSH
3.2.16 Open SSH
Giới thiệu.
Open SSH là một chương trình mã nguồn mở (Open Source) được sử dụng để Encrypt (mã hoá) các giao dịch giữa các Host với nhau bằng cách sử dụng Secure Shell (SSH) Nó là một sự thay thế an toàn cho những chương trình được sử dụng để kết nối như: Telnet, rlogin, rsh Bởi nó luôn luôn Encrypt tất cả các giao dịch, ẩn đi, che dấu User và Password được sử dụng cho những phiên đăng nhập từ xa Sau khi phiên đăng nhập được thực hiện, nó sẽ tiếp tục Encrypt tất cả những dữ liệu giao dịch giữa 2 Host
Dự án OpenSSH được phát triển dựa trên nền tảng của dự án Open BSD (một OS thuộc
Trang 23họ Unix) Nó được thiết kế để sử dụng những thuật toán mã hoá mạnh để nâng cao tính
an toàn và ngăn chặn sự phá hoại của các Hacker Mặc dù nó được xây dựng và phát triểnbởi nền tảng OpenBSD Nhưng nó cũng có khả năng tương thích vag có thể hoạt động trên hầu hết các OS thuộc dòng họ Unix: Linux, HP-UX, AIX, Irix, SCO, MacOS X, Cygwin, Digital Unix/Tru64/OSF, SNI/Reliant Unix, NeXT, Solaris
OpenSSH không phải là một chương trình Nó là một bộ các chương trình kết nối an toàn:
- OpenSSH Client (ssh): Chương trình được sử dụng cho các đăng nhập từ xa Với sự an toàn và Encrypt trong mỗi phiên đăng nhập ở mức độ cao Nó là sự thay thế an toàn cho: rlogin và telnet đã tỏ ra lỗi thời và kém an toàn
- Secure Copy Program (scp): Được sử dụng cho việc Copy file từ xa, Copy các file từ các Host khác nhau trên Internet Nó hỗ trợ User và Password
- Secure File Transfer Program (sftp): Được sử dụng để phục các yêu cầu FTP một cách
Để lấy OpenSSH lên Homepage: http://www.openssh.org
Down một Version phù hợp với hệ thống của mình Dùng Linux sẽ Down gói *.rpm Sau
đó phát lệnh:
root@domain.com#: rpm -Uvh *.rpmNếu bạn sử dụng các hệ thống khác thì việc cài đặt nó cũng tương tự Bạn Down gói phù hợp với hệ thống của mình Nó có thể là *.tar, *.tar.gz, *.gz etc Bung nén nó vào một thư mục
root@domain.com #: /configure
root@domain.com #: make
root@domain.com #: make install
Các tính nổi bật của Open SSH
Open SSH cung cấp khá nhiều tính năng để giúp cho việc truyền thông giữa 2 Host trở lên an toàn Dưới đây là một số tính nổi bật:
Khả năng mã hoá mạnh bởi việc sử dụng chuẩn mã hoá 3 DES và Blowfish: Cả 2
chuẩn mã hoá trên đều đuợc cung cấp miễn phí và sử dụng rộng rãi ở nhiều nước trên thế giới 3DES cung cấp khả năng mã hoá chứng thực thời gian Blowfish cung cấp khả năng
mã hoá nhanh hơn Cũng như những chuẩn mã hoá khác cả 2 chuẩn nêu trên đều cung cấp khả năng mã hoá các dữ trước khi nó được đưa vào đường truyền một cách an toàn
Khả năng chứng thực mạnh bởi việc sử dụng các cơ chế Public Key, OPTs (One Time
Password), Keberos: Có tác dụng bảo vệ chống lại tính dễ tổn thương trong quá trình chứng thực bởi việc khai thác và sử dụng các kỹ thuật như: IP Spoof, DNS Spoof, Fake Router…Có 4 phương pháp chứng thực được Open SSH sử dụng :
- Chỉ chứng thực Public Key
- Sự chứng thực Host bởi việc sử dụng Public Key kết hợp với rhost
- Sự chứng thực dựa trên OPTs kết hợp với s/key
Trang 24- Sự chứng thực dựa trên cơ chế Keberos
Mã hoá giao thức X11 cho việc sử dụng X Windows: Mã hoá dữ liệu trong quá trình
sử dụng X Windows giữa 2 Host Được sử dụng để chống lại những cuộc tấn công từ xa nhằm vào xterm như Snooping, Hjacking…
Mã hoá cho quá trình chuyển đổi cổng (Port Forwarding): Cho phép quá trình chuyển
đổi các Port TCP/IP tới một hệ thống khác thông qua một kênh được mã hoá Nó được sửdụng cho những giao thức Internet chuẩn không cung cấp khả năng mã hoá dữ liệu trên đường truyền như: SMTP, POP, FTP, Telnet…
Đại diện chuyển tiếp cho những đăng nhập vào các mạng đơn: Một Key chứng thực
của người dùng có thể và thường được lưu giữ trên PC của họ, nó có thể trở thành một trạm đại diện chứng thực Khi người sử dụng hệ thống truy cập từ một hệ thống mạng khác Kết nối của họ sẽ được chuyển tới cho trạm đại diện chứng thực này Nó có tác dụng cho phép người sử dụng truy cập đến hệ thống của bạn một cách an toàn từ bất kỳ
hệ thống nào
Nén dữ liệu: Cung cấp khả năng nén dữ liệu một cách an toàn Nó rất có ý nghĩa trên
những hệ thống mạng không được nhanh
Chứng thực chung cho Keberos và Andrew File System bằng cách sử dụng Ticket:
Những người sử dụng Keberos và AFS sẽ được cung cấp một Password chung để sử dụng và truy cập 2 dịch vụ trên trong một thời gian nhất định
Nguyên lý hoạt động của Open SSH
Trước hết chúng ta cùng tìm hiểu về cơ chế chứng thực cho các lệnh *r (rlogin, rsh, rcp) Khi sử dụng rlogin, điều kiện đầu tiên là người dùng đó phải có một Acc trên hệthống mà họ muốn đăng nhập từ xa đó Chẳng hạn trên hệ thống có Acc phongnv Nếu Log vào trên hệ thống cục bộ khi kết nối tới một Host từ xa sẽ không có bất cứ yêu cầu hỏi Password nào khi truy nhập vào hệ thống từ xa Đơn giản bởi Acc phongnv đã được xác nhận bởi file rhost đươc đặt trong thư mục /home/phonnv trên hệ thống từ xa
File rhost chứa đựng Hostname và Username yêu cầu cho các Acc cần để sử dụng đăng nhập tới hệ thống Chẳng hạn Hostname của ta là vnzone.net và Username là phongnv
Để truy cập đến hệ thống không cần Passowd thì các thông tin về mình trong file rhost
có dạng như sau:
Hostname Username
Đối với Hostname phải là Hostname đầy đủ của hệ thống Đối với User phải là các User hợp lệ đang tồn tại trên hệ thống mà bạn muốn định nghĩa Một ví dụ cụ thể: nếumuốn sử dụng rlogin thì Admin phải tạo một file rhost trong /home/phongnv với nội dung:
domain.com phongnv
Bây giờ khi ta muốn đăng nhập vào hệ thống chỉ việc phát lệnh:
phongnv@domain.com$: rlogin -l phongnv vnzone.net
Hạn chế của giao thức này là các dữ liệu thông tin đi đến Host không hề được mã hoá
Nó rất có thể bị đánh hơi được bởi các Sniffer Đặc biệt là rất dễ bị tổn thương bởi các cuộc tấn công: IP Spoof, DNS Spoof, Router Spoof…Vì những tính dễ tổn thương trên các Security khuyến cáo bạn nên vô hiệu hoá các r Service (rlogin, rsh…) Thông thường thì trên các hệ thống Linux cấu hình tổng thể hoạt động chung cho các Service được cấu
Trang 25hình trong file /etc/xinet.d , để vô hiệu hoá các r Service:
- Bạn dùng vi, emacs…hay bất cứ trình soạn thảo văn bản nào mà bạn muốn để mở /etc/init.d/xinet.d
- Tìm đoạn “service login“ xoá chúng đi Ghi lại mọi sự thay đổi và thoát trình soạn thảo
- Khởi động lại xinetd.d Deadmon : /etc/init.d/xinet.d restart
- Nếu có thể bạn hãy vô hiệu hoá luôn Telnet Service bằng cách trên Sau đó thay thế chúng bằng Open SSH
Chúng ta đã tìm hiểu qua nguyên lý hoạt động của r Service Bây giờ chúng ta sẽ tìm hiểu về nguyên lý hoạt động của Open SSH Điều đầu tiên khẳng định là : Open SSH cung cấp một cơ chế chứng thực khá an toàn bởi việc sử dụng những Public Key Các Public Key lại tiếp tục sử dụng các Public Key hay Private Key cho sự chứng thực an toàn Các Private Key chỉ được sử dụng bởi người dùng, còn Public Key có thể được sử dụng bởi mọi người Muốn Open SSH tạo ra các DSA Private/Public Key bạn dùng lệnh:shh-keygen -d
Các DSA Private Key thường được lưu trữ ở /root/.ssh/id_dsa file Còn các DSA Public Key thường được lưu trữ ở /root/.ssh/id_dsa.pub … Các Public Key cần phải được đổi tên và Copy đến thư mục thích hợp trên hệ thống ở xa muốn sử dụng Open SSH Dưới đây liệt kê vị trí cũng những Public Key mà Open SSH sử dụng trong quá trình chứng thực:
SSH Version 2 Keys Local System Default Location Remote Host Location
Private Key $HOME/.ssh/id_dsa
Public Key $HOME/.ssh/id_dsa.pub $HOME/.ssh/authorized_keys2
SSH Version 1 Key Local System Default Location Remote Host Location
Private Key $HOME/.ssh/identity
Public Key $HOME/.ssh/identity.pub $HOME/.ssh/authorized_keys
- $HOME/.ssh/known_hosts: Danh sách các Public Key cho tất cả các Host có User đăng nhập Thường thì các danh sách các Host Public Key được liệt kê ở /etc/ssh_known_hosts
- /etc/ssh_known_hosts: Chứa danh sách các RSA Generated Public Key cho tất cả các Host mà hệ thống được biết Bất cứ Host nào muốn đăng nhập đến hệ thống đều phải có Public Key được liệt kê trong file này Admin trên hệ thống của bạn cần phải liệt kê các Public Key của những người sử dụng trong hệ thống mạng đó
- /etc/ssh_known_hosts2: Cũng như ssh_know_host nó chứa danh sách các DSA
Generated Public Key cho tất cả các Host mà hệ thống biết
- $HOME/.ssh/config: File cấu hình cho mỗi người sử dụng Trong một số hệ thống lớn, mỗi người sử dụng sẽ có một file cấu hình đặc biệt Nó sẽ được sử dụng bởi SSH Client
- /etc/ssh/ssh_config: File cấu hình cho toàn bộ hệ thống Nó cũng có thể được sử dụng cho những người sử dụng không có File cấu hình hay tạm thời chưa có file cấu hình Nó
tự động được khởi tạo khi cài đặt Open SSH lần đầu và được gọi để sử dụng mỗi khi Open SSH Daemon chạy
- $HOME/.ssh/rc: Liệt kê những lệnh đã được thực thi trong suốt quá trình người dùng đăng nhập, những lệnh này được thực thi trước khi Shell của người dùng được mở
- /etc/sshrc: Tương tự như /.ssh/rc nó được dùng trên những hệ thống lớn
VI Sử dụng Open SSH để đảm bảo an toàn dữ liệu trên một hệ thống mạng không
Trang 26an toàn Trước khi sử dụng Open SSH bạn phải chắc chắn rằng hệ thống cục bộ và hệ thống ở xa có cài đặt Open SSH Lệnh ssh-keygen được sử dụng để tạo và quản lý sự chứng thực các SSH Key Để sử dụng Open SSH trước hết bạn phải tạo các DSA hay RSA Private Key, Public Key…
- Đầu tiên bạn hãy tạo một User trên hệ thống
root@domain.com#: useradd phongnv
- Thiết lập Password cho User này
root@domain.com#: passwd phongnv
Changing password for user phongnv
New UNIX password: *****
Retype new UNIX password: *****
passwd: all authentication tokens updated successfully
- Đăng nhập vào Acc phongnv vừa tạo:
- Bây giờ tiếp tục tạo các Private Key và Public Key
Lưu ý: Từ Open SSH v 2.0 trở đi khi bạn yêu cầu tạo Key mới Mặc định nó sẽ
tạo cho bạn các Key RSA Nếu muốn tạo Key DSA bạn phải sử dụng tuỳ chọn -d
phongnv@domain.com$: ssh-keygen -d
Generating DSA parameter and key.
Enter file in which to save the key (/home/phongnv/.ssh/id_dsa):
Nhấn Enter nếu bạn muốn lưu Key vào thư mục mặc định của nó:
Created directory '/home/phongnv/.ssh'.
Enter passphrase (empty for no passphrase):
Bạn nhập vào passphrase (đây là Password sẽ được mã hoá bằng thuật toán 3 DES để kiểm soát Private Key) Lưu ý: pasphrase không thể phục hồi, nếu quên sẽ phải tạo và phân phối lại các Key Điều này rất phiển phức Nhấn Enter khi mọi việc đã hoàn thành.Your identification has been saved in /home/phongnv/.ssh/id_dsa.
Your public key has been saved in /home/phongnv/.ssh/id_dsa.pub.
The key fingerprint is:
ca:3b:f9:80:5a:91:e5:c1:1e:5b:30:02:2f:d5:53:13
phongnv@domain.com
Xem qua nội dung Private Key :
-BEGIN DSA PRIVATE
4pAzP9Z5NHN5v8/UHBmkytwx4f5uofYovM8hHQzUZGs/3yEsUPBrxCQgW/MMC5jdXyZyF0ryleid62feGNbbvgL EIZMZvNSCmJpYgD60CFskBemg/02htaIVwdlg85lW
JoZuLBBKpkRb4UXNb0IRG2NvtZKQ8h98
-END DSA PRIVATE
Trang 27KEY -Đây là nội dung của Public Key :
ssh-dss
AAAAB3NzaC1kc3MAAACBAL4qF1YLu6l/zhhmgBJfFOgAqc635u/DRes/bXiSrCbuV1Rey5nZb2AA8rdCZzwMy MdreCD34HRCVSblirirhSZ3r9qld1fipT6NPsOr+AMct13oPirlWAF01euJoPYEm62+subVKWHQoNAwb7gIjNlMqN jaRuwNyBCLPwb7EcUjAAAAFQD9L07yMFCTQ5bmP7ztr1LME/
UjMQAAAIEAlyiJs4CazMnGB6mguefOZHI1BJPmPdOZeee9cvFRSQ1nDoLK6ScxPpclQu0uwh8CEFuIjl/
oMBf1rIHwONC7kxIIY6U82B3cZcBOL7SXt2wnPg8mg4I7quG2Mq23lWsPeAH3ElfijOr15rgb4PQPV1bYoNlQPm b3zb6n4uoe3WQAAACBAKiamld09bmHk3GCqn40u1WKtMLzpwowCtv24VZ/
v4yQV4fY3CvrbgsAEnBD3mSEpOea7tSNDTxY83D6ayJ40ZS2zN3bhBZos+Jp53tq8Eni1pSELS5wlw5NkkoY+F4l mda+sK5gTOOExI2tWyA0z5V7hkOQuxcLbvc9GR+ywibz phongnv@domain.com
Tất cả thông tin quan trọng đã được mã hoá bằng thuật toán DSA
Lưu ý: phongnv Public Key có thể được phân phát tuỳ thích Bất cứ ai, hệ thống nào muốn truyền thông một cách an toàn với phongnv đều có thể nhận Public Key Bạn có thể đổi tên của Public Key thoải mái Cho mục đích an toàn các Security nên thường xuyên đổi tên Public Key trước khi phân phát cho từng người
Sử dụng Private Key và Public Key
Sử dụng Public Key, trước hết bạn phải phân phát nó Hay nói một cách dễ hiểu làbạn phải kích hoạt các Public Key này vào các vị trí thích hợp trên Remote Server Như
đã nói ở trên Public Key có thể được phân phát tuỳ thích và miễn phí Bởi vậy bạn có thể Send nó đến bất cứ hệ thống nào mà bạn muốn truyền thông bằng Open SSH Ví dụ như VeriSign một hãng chuyên cung cấp Digital ID để mã hoá và bảo mật các E-mail cho khách hàng Digital ID thực chất là các Public Key được nhúng các thông tin ID cơ bản ởtrong đó VeriSign sẽ tự động gửi Public Key của người sử dụng lên Site của nó Bất kỳ người sử dụng nào muốn truy cập Public Key của một người sử dụng khác Họ có thể tải suống Digital ID của người dung từ Site của VeriSign:
https://digitalid.verisign.com/services/client/index.html Đối với Private Key Ta sẽ
Upload nó lên Web Server Các Host từ xa sẽ Down Public Key xuống và tự động kích hoạt chúng Bạn tiếp tục thực hiện các bước sau (sau khi đã cài đặt Apache Web Server):
- Tạo thư mục Public Key ở thư mục gốc của Apache:
root@domain.com#: mkdir /var/html/pubkeys
- Copy phongnv’s Public Key vào thư mục vừa tạo và đổi tên chúng:
root@domain.com#: cp /home/binhnx2000/.ssh/id_dsa.pub /var/html/pubkeys/phongnv.pub
- Trên hệ thống Host ở xa: Bạn cần tham chiếu các thông số như trên Host của bạn Bạn đăng nhập với tư cách root và tạo tiếp một Acc phongnv:
root@domain2.com#: useradd phongnv
passwd vietphong
Changing password for user phongnv
New UNIX password: *****
Retype new UNIX password: *****
passwd: all authentication tokens updated successfully
- Tiếp đến tạo một thư mục con “.ssh” trong thư mục chủ của acc phongnv:
root@domain2.com#: mkdir /home/phongnv/.ssh
Trang 28Bạn lên địa chỉ đã Upload phongnv’s Public Key và Download nó về:
Lưu nó vào /home/phongnv/.ssh = = > Đây chính là Public Key của domain.com Nó chứa các thông tin về ID được mã hoá bằng thuật toán DSA Mọi việc đã ổn, bây giờ ta thử ssh từ hệ thống 2 qua hệ thống 1 bằng Public Key xem sao:
phongnv@domain2.com#: ssh domain.com
Nếu mọi việc ổn định ta có thể ssh vào hệ thống 1 từ xa qua Open SSH một cách an toàn.Tất cả các giao dịch giữa hệ thống 1 và 2 đều được nén và mã hoá nhằm đảm bảo an toàn trên đường truyền Tuy nhiên! cuộc sống không phải lúc nào cũng tốt đẹp như chúng ta tưởng Ta sẽ gặp phải thông báo:
The authenticity of host domain.com' can't be established.
DSA key fingerprint is
ca:3b:f9:80:5a:91:e5:c1:1e:5b:30:02:2f:d5:53:13.
Are you sure you want to continue connecting (yes/no) ?
Thông báo trên nói rằng chưa thể thiết lập một kết nối an toàn từ hệ thống 2 đến hệ thống
1 bằng Open SSH Tiếp tục nhấn Yes nối như muốn tiếp tục kết nối Sẽ có một thông báonói rằng Public Key của hệ thống từ xa đã được thêm vào một vị trí hợp lý trên hệ thống cục bộ Công việc cập nhật Public Key đã thành công, lần sau sẽ không phải gặp thông báo khó chịu này nữa Ta thử ssh đến hệ thống từ xa lại một lần nữa xem sao (Sẽ không
có bất cứ yêu cầu đòi hỏi Password nào cả, vì nó đã sử dụng và chứng thực Public Key)/home/phongnv/.ssh/know_host
Warning: Permanently added ‘domain.com,24.130.8.170'
(DSA) to the list of known hosts.
[phongnv@domain.com phongnv]$
Nếu các thông tin về Public Key không chính xác Hay nói một cách khác là quá trình chứng thực Public Key bị thất bại Open SSH sẽ yêu cầu bạn cung cấp Password của người sử dụng phongnv:
phongnv@domain.com's password:
Password ở đây chính là Password của Acc phongnv được tạo trên hệ thống từ xa Khi nhập User và Password tương tự như Telnet nhưng điểm khác là nó đã được mã Encrypt bởi Open SSH Nếu gặp phải yêu cầu truy vấn Password, hãy xem lại quá trình cấp phát
3.3 Theo dõi và phân tích logfile
Trên các hệ thống nói chung và các hệ thống Unix/Linux nói riêng Các file log giữ một vai trò rất quan trọng Nó như là một hộp đen của hệ thống, nó sẽ ghi lại mọi thứ
Trang 29xảy ra trên hệ thống của bạn, một cách cực kỳ chi tiết Chẳng hạn như Bash Log Khi hoạt động nó sẽ ghi lại toàn những thao tác, những Command đã được sử dụng trong suôtquá trình làm việc với Shell Bash Một số phiên bản của Unix thường lưu giữ file log ở: /usr/adm Một số phiên bản mới hơn của Unix (trong đó có BSD, Linux, Solaris ) thì các file log được lưu giữ ở: /var/log Thường thì ở bên trong những thư mục này bạn sẽ tìm được các thông tin về log Điều đó có nghĩa là bạn có khả năng nắm trong tay toàn bộ những gì đã xảy ra trên hệ thống của mình.Dưới đây là tên một số log thông dụng và chức năng của nó:
acct hoặc pacct
Ghi lại những Command được sử dụng bởi mọi user trên hệ thống
Ghi lại quá trình hoạt động FTP
Trên đây là một số file log cơ bản và quan trọng của hệ thống Ngoài ra nó còn có rất nhiều file log như: ftplog, maillog, httpdlog Thường thì vị trí và chức năng của các file log thường được cấu hình và lưu giữ ở: /etc/syslog.conf bạn có thể biết thêm chi tiết ởđây
Trang 30định vị của các file log cũng khác nhau Một vấn đề đáng chú ý khi sử dụng chế độ kiểm toán C2 Audition là nó có thể tiêu tốn khá nhiều không gian đĩa cứng của bạn trong một thời gian ngắn.
Last login: Tue Jul 12 07:49:59 on tty01
Khi sử dụng lệnh "finger" nếu như nó không bị cấm thì ta cũng có những thông tin tương tự:
% finger tim
Login name: tim In real life: Tim Hack
Directory: /Users/tim Shell: /bin/csh
Last login Tue Jul 12 07:49:59 on tty01
login: tim
password: books2sell
Last successful login for tim : Tue Jul 12 07:49:59 on tty01
Last unsuccessful login for tim : Tue Jul 06 09:22:10 on tty01
Để đảm bảo an toàn, phát hiện và ngăn chặn sớm các cuộc tấn công đột nhập, người dùngtrong hệ thống nên luyện thói quen kiểm tra thời gian đăng nhập sau mỗi lần đăng nhập Nếu thời gian không tương ứng chính xác với thời gian lần cuối cùng mà chúng ta sử dụng hệ thống Điều này có nghĩa là đã có ai đó sử dụng account của bạn Nếu như điều
đó xảy ra thì bạn phải ngay lập tức đổi Password và thông báo cho các Admin biết điều này Thật không may, theo thiết kế của lastlog thì nội dung của file của những phiên đăngnhập lần trước sẽ được ghi đè lên ở tại mỗi phiên đăng nhập Theo kết quả, nếu người dùng sơ xuất trong chốc lát, hay thông báo Login được làm sạch khỏi màn hình, người dùng sẽ không còn chú ý được đến khoảng thời gian đáng ngờ
Một cách khắc phục cho sự bất thường này là định kỳ sao chép các file log đó Theo C2 Audition thì để an toàn cứ 6 giờ bạn lại thực hiện thao tác sao chép này
Trang 31thể sử dụng đoạn Script Perl dưới đây để thực hiện công việc đó.
#!/usr/local/bin/perl
$fname = (shift || "/var/adm/lastlog");
$halfyear = 60*60*24*365.2425/2; # pedantry abounds
for (uid = 0; read(LASTL, $record, 28); $uid++) {
( $time, $line, $host) = unpack('l A8 A16', $record);
next unless $time;
$host = "($host)" if $host;
($sec, $min, $hour, $mday, $mon, $year) = localtime($time);
$year += 1900 + ($year < 70 ? 100 : 0);
print $names{$uid}, $line, "$mday/$mon";
print (time - $time > $halfyear) ? "/$year" : " "$hour:$min";
nó sẽ tính toán số giây trong nửa năm, để xác định được khuôn dạng của đầu ra thông tin (để in màn hình những thông tin đăng nhập 6 tháng trước đây Kế đến nó sẽ xây dựng một mảng UIDS tới những tên đăng nhập Sau sự khởi tạo trên, đoạn Script sẽ đọc một phần bản ghi trong file lastlog, các bản ghi binaries sẽ được mở ra và giải mã và sau đó
nó được in ra màn hình Lastlog chỉ ghi lại thời gian đăng nhập chứ nó không ghi lại lại chi tiết quá trình chi tiết sử dụng acc File log wtmp sẽ thực hiện việc này
utmp và wtmp
Unix theo dõi các hoạt động của người dùng bởi file log có tên là /etc/utmp Đây là file nhị phân cho đứa đựng một bản ghi cho mỗi hàng tty File log thứ 2 là /var/amd/wtmp có nhiệm vụ ghi lại tất cả các quá trình đăng nhập lần thoát ra ngoài Trong một sô phiên bảnUnix của Berkeley thì trong utmp và wtmp thường chứa đựng:
- Tên của của các thiết bị đầu cuối được sử dụng để đăng nhập
- Tên đăng nhập
- Hostname mà kết nối bắt đầu từ, nếu đăng nhập được thực hiện qua 1 mạng
- Thời gian mà người dùng đăng nhập
Trong một số hệ thống V Unix, file wtmp được đặt ở /etc/wtmp và được dùng chomục đích kiểm toán Trên hệ thống AT&T V.3.2 thì nó chứa đựng các thông tin:
- Tên truy nhập
- Số hiệu dòng cuối
- Tên thiết bị
- Quá trình ID của login shell
- Code biểu thị kiểu mục
- Thoát khỏi tình trạng của tiến trình
- Thời gian mà mỗi mục được thực hiện
Phần mở rộng wtmpx được sử dụng bởi Solaris, IRIX và các hệ thống SRV4 Unixchứa đựng những thông tin sau:
Trang 32- Tên truy nhập (có thể lên đến tối đa 32 ký tự thay vì 8 ký tự).
- inittab id
- Tên của thiết bị đầu cuối (có thể lên đến tối đa 32 ký tự thay vì 12 ký tự)
- Process ID của tiến trình đăng nhập
- Thoát khỏi tình trạng của tiến trình
- Thời gian mà mỗi mục được thực hiện
- Session ID
- Remote host name (cho những sự đăng nhập bắt nguồn qua một mạng)
Lệnh "ps" đưa cho bạn một vài thông tin về tài khoản chính xác hơn của người dùng hiện thời sử dụng hệ thống của bạn hơn là những lệnh: who, whodo, users và finger
Vì trong một vài trường hợp nhưng người dùng có thể cho phép những quá trình chạy màkhông có tên sử dụng của họ xuất hiện bên trong /etc/utmp và /var/adm/wtmp
Tuy nhiên who, finger, users lại có một vài lợi thế hơn ps:
- Chúng cho khuôn dạng thông tin đầu ra dễ đọc hơn ps
- Đôi khi chúng đưa ra thông tin hữu hiệu hơn so với ps như tên của những remote host từxa
- Đặc biệt là chúng chạy nhanh hơn ps một cách đáng kể
Quyền hạn (Permission) trên file /etc/utmp đôi khi có thể được ghi bởi bất kỳ người dùng nào trên hệ thống Điều này thật nguy hiểm, bởi các file log sẽ bị sửa đổi lungtung với mục đích không tốt Bạn cần thiết lập lại quyền hạn (Permission) một cách an toàn hơn
nó sẽ trình bày toàn bộ nội dung của file Bạn có thể ngừng tiến trình này bằng cách nhấnCTRL + C
localhost@#: last
dpryor ttyp3 std.com Sat Mar 11 12:21 - 12:24 (00:02)
simsong ttyp2 204.17.195.43 Sat Mar 11 11:56 - 11:57 (00:00)
simsong ttyp1 204.17.195.43 Sat Mar 11 11:37 still logged in
dpryor console Wed Mar 8 10:47 - 17:41 (2+06:53)
devon console Wed Mar 8 10:43 - 10:47 (00:03)
simsong ttyp3 pleasant.cambrid Mon Mar 6 16:27 - 16:28 (00:01)
dpryor ftp mac4 Fri Mar 3 16:31 - 16:33 (00:02)
dpryor console Fri Mar 3 12:01 - 10:43 (4+22:41)
simsong ftp pleasant.cambrid Fri Mar 3 08:40 - 08:56 (00:15)
simsong ttyp2 pleasant.cambrid Thu Mar 2 20:08 - 21:08 (00:59)
Trên một vài hệ thống SVR4 bạn có thể sử dụng lệnh "who -a" để xem nội dung của file wtmp Trong màn hình này bạn có thể theo dõi các phiên đăng nhập từ ngày 7/3:
simsong, dpryor, devon, dpyror (again), and simsong (again), 2 người dùng là dpryor và devon đăng nhập tới Console Ngoài ra log còn cho ta biết dpryor và devon cũng đã sử dụng FTP, tên của những trạm đầu cuối cũng được xuất hiện ở đây Ngoài ra last còn có thể cho ta thông tin chi tiết về một người dùng hoặc một thiết bị đầu cuối ra màn hình Nếu bạn cung cấp một người dùng thì nó sẽ hiển thị chi tiết thông tin đăng nhập và thoát
Trang 33ra của người đó Hoặc tương tự bạn cung cấp cho nó tên một thiết bị đầu cuỗi thì nó sẽ hiển thị thông tin đăng nhập và thoát ra riêng cho thiết bị đầu cuối đó.
root@localhost#: last dpryor
dpryor ttyp3 std.com Sat Mar 11 12:21 - 12:24 (00:02)
dpryor console Wed Mar 8 10:47 - 17:41 (2+06:53)
dpryor ftp mac4 Fri Mar 3 16:31 - 16:33 (00:02)
dpryor console Fri Mar 3 12:01 - 10:43 (4+22:41)
dpryor ftp mac4 Mon Feb 27 10:43 - 10:45 (00:01)
dpryor ttyp6 std.com Sun Feb 26 01:12 - 01:13 (00:01)
dpryor ftp mac4 Thu Feb 23 14:42 - 14:43 (00:01)
dpryor ftp mac4 Thu Feb 23 14:20 - 14:25 (00:04)
dpryor ttyp3 mac4 Wed Feb 22 13:04 - 13:06 (00:02)
dpryor console Tue Feb 21 09:57 - 12:01 (10+02:04)
Tinh chỉnh wtmp File log wtmp sẽ tiếp tục tăng kích thước rất nhanh trên ổ cứng chính vìvậy rất khó theo dõi nội dung của nó Do đó có rất nhiều Shell Unix được viết ra để tinh chỉnh wtmp (theo tuần hoặc theo tháng) Hầu hết chúng được thực thi một cách tự động bởi Cron Chẳng hạn như đoạn Script sau:
#!/bin/sh
# zero the log file
cat /dev/null >/var/adm/wtmp
Bạn muốn sao chép wtmp, để có thể tham chiếu với những lần đăng nhập bên trong tháng trước đây Để thực hiện việc này bạn cần Add thêm những dòng lệnh dưới đây vào Shell Script ở trên:
# make a copy of the log file and zero the old one
rm /var/adm/wtmp.old
ln /var/adm/wtmp /var/adm/wtmp.old
cp /dev/null /var/adm/wtmp.nul
mv /var/adm/wtmp.nul /var/adm/wtmp
Tương tự! để thực hiện việc này với last sẽ có dòng lệnh sau:
root@localhost#: last -f /var/adm/wtmp.old
Tuy nhiên có thể last không ch phép bạn chỉ rõ một file wtmp khác để tìm kiếm thông qua Nếu muốn kiểm tra lần sao chép file log trước đây và bạn đang sử dụng một trong các hệ thống này thì ta sẽ phải thiết lập file wtmp sau (đã sao chép và cập nhật) vào trong nguyên bản của nó Bạn có thể sử dụng Shell Script sau để thực hiện việc đó:
Bất kỳ người dùng nào đăng nhập hay thoát ra đều sẽ được ghi vào file log
wtmp.old khi lệnh được thực hiện
Loginlog file
Trên một vài hệ thống V Unix (Solaris) Các quá lần đăng nhập thất bại sẽ được ghi vào file log /var/adm/loginlog Tuy nhiên trên một số hệ thống lại không có Ta có thể tạo nó bằng các lệnh sau:
root@localhost#: touch /var/adm/loginlog
root@localhost#: chmod 600 /var/adm/loginlog
root@localhost#: chown root /var/adm/loginlog
Sau khi được khởi toạ nó sẽ ghi lại những lần đăng nhập không thành công Thường đây là những lần đănh nhập với mục đích xấu (có thể kẻ tấn công đang cố gắng
bẻ khoá để đăng nhập vào hệ thống) Các hệ thống V Unix sẽ tự động ngăn chặn một
Trang 34đăng nhập trong một khoảng thời gian nếu như sau 5 lần mà vẫn không thành công (để đềphòng trường hợp tấn công bằng Brute Force) Tất nhiên Unix sẽ ghi lại chi tiết 5 lần đăng nhập không thành công này.
root@localhost#: cat /var/adm/loginlog
Sự diễn giải về OpenSSL:
Dự án OpenSSL là một kết quả của sự cộng tác nhằm phát triển một kỹ thuật bảo mật dạng thương mại, đầy đủ các đặc trưng và là bộ công cụ mã nguồn mở thực thi các giao thức như Secure Sockets Layer (SSL v2/v3) và Transport Layer Security (TSL v1) với những thuật toán mã hóa phức tạp Dự án được quản lý bởi hiệp hội những người tìnhnguyện trên thế giới, sử dụng Internet để trao đổi thông tin, lập kế hoạch và phát triển công cụ OpenSSL và các tài liệu liên quan khác
Sự thuận lợi của việc mã hóa:
Những lợi ích chính thu được khi sử dụng công nghệ mã hóa như sau:
Sự tin cẩn dữ liệu.
Khi một thư tín (message) được mã hóa, văn bản thuần túy đưa vào được biến đổi bởi một thuật toán thành dạng văn bản được mã hóa, dạng văn bản này che dấu ý nghĩa của message và có thể được gởi thông qua mạng Internet hoặc Intranet Quá trình này đòihỏi một khóa riêng (secret key), khóa này dùng để mã hóa dữ liệu và sau đó giải mã dữ liệu Không có secret key, việc mã hóa dữ liệu là vô nghĩa
Tính toàn vẹn dữ liệu.
Một sự kiểm tra tổng thể mật khẩu được gọi là mã kiểm tra tính xác thực thông điệp (Message Authentication Code) mà trong kỹ thuật mã hóa được gọi là MAC, có thể được tính toán tùy ý trên văn bản người sử dụng cung cấp để bảo vệ tính toàn vẹn của dữ liệu Kết quả (văn bản và MAC) sau đó được gởi tới người nhận, người nhận kiểm tra nộidung của MAC kèm theo message bằng cách tính toán lại MAC cho message nhận được,
Trang 35sử dụng khóa riêng (secret key) thích hợp và kiểm tra giá trị MAC có bằng chính xác MAC nhận được hay không.
Sự xác thực (Authentication).
Việc xác minh cá nhân là một cách mã hóa khác, ở đây người dử dụng/người gởi biết mộtsecret key, cái mà có thể được dùng để chứng thực nhận dạng của anh ấy/cô ấy
Chữ ký điện tử (Electronic Signature).
Một chữ ký điện tử đảm bảo người gởi và người nhận rằng message là đáng tin cậy và chỉ
có người chủ sở hữu của khóa có thể sinh ra chữ ký điện tử cho người đó
Việc sáng chế (Patents).
Một vài vấn đề hợp lý sẵn có cho công nghệ SSL Nếu bạn có ý định sử dụng OpenSSL cho mục đích thương mại bạn cần có một sự cho phép từ tổ chức sáng chế RSA về việc
sử dụng các thư viện RSA
Đây là đoạn một đoạn trích trong tập tin README của OpenSSL.
Các công ty khác nhau nắm giữ các bằng sáng chế khác nhau cho những thuật toán khác nhau trong những vị trí khác nhau trong những vị trí khác nhau trên thế giới Bạn phải chịu trách nhiệm đảm bảo rằng việc sử dụng bất kỳ thuật toán nào của bạn là hợp lệ bằng cách kiểm tra nếu có bất kỳ bằng sáng chế nào trong quốc gia của bạn hay không Tập tin này chứa đựng một vài bằng sáng chế mà chúng tôi biết hoặc theo lời giới thiệu sẵn có Đây không phải là danh sách cuối cùng.RSA Data Security nắm giữ bằng sáng chế phần mềm trên những thuật toán RSA và RC5 Nếu những thuật toán của họ được dùng bên trong USA và Japan thì phải liên hệ với RSA Data Security cho các điều kiện được phép sử dụng Trang Web của RSA Data Security có thể truy cập theo địa chỉ http://www.rsa.com/ RC4 là nhãn hiệu đăng ký của RSA Data Security như vậy việc sử dụng thuật toán này phải được phép của RSA Data Security.Thuật toán IDEA có bằng sáng chế bởi Ascom ở Áo, Pháp, Đức, Ý, Nhật, Hà Lan, Tây Ban Nha, Thụy Điển, Thụy
Sĩ, Anh và Mỹ Họ sẽ được liên hệ nếu thuật toán được sử dụng Tham khảo trang web theo địa chỉ http://www.ascom.ch
Hướng dẫn cài đặt.
Các dòng lệnh thì tương ứng với Unix Đường dẫn nguồn sẽ là "/var/tmp" (cũng
có thể chọn những đường dẫn khác) Việc cài đặt được thử nghiệm trên Red Hat Linux 6.1 và 6.2 Tất cả các bước trong việc cài đặt sẽ xảy ra với người sử dụng có quyền cao nhất trong hệ thống (root) Phiên bản OpenSSL là 0.9.5a Dạng lưu trữ Tarballs Trước hết bạn hãy tạo ra danh sách các tập tin trên hệ thống trước và khi cài đặt OpenSSL, sau
đó so sánh chúng dùng lệnh "diff" để tìm ra các tập tin nào là được đặt ở đâu Đơn giản chạy lệnh "find /* > OpenSSL1" trước và "find /* > OpenSSL2" sau khi bạn cài đặt phần mềm, và sử dụng lệnh "diff OpenSSL1 OpenSSL2> OpenSSL-Installed" để lấy một danhsách các thay đổi nào đó
Các gói cần thiết (Packages)
OpenSSL Homepage Site: http://www.ssh.org
Bạn phải đảm bảo là tải về gói: openssl-0.9.5a.tar.gz
Sự biên dịch.
Giải nén tập tin dạng tarball (tar.gz)
[root@deep /]# cp openssl-version.tar.gz /var/tmp
[root@deep /]# cd /var/tmp
Trang 36[root@deep tmp]# tar xzpf openssl-version.tar.gz
Biên dịch và tối ưu
Chuyển vào thư mục OpenSSL mới và gõ những lệnh sau:
Hiệu chỉnh tập tin Makefile.ssl (vi +52 Makefile.ssl) và thay đổi những dòng sau:
CFLAG= -DTHREADS -D_REENTRANT -DSSL_FORBID_ENULL -DL_ENDIAN -DTERMIO -O9 ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions-Wall - DSHA1_ASM -DMD5_ASM -DRMD160_ASM
-funroll-loops-Hiệu chỉnh tập tun Makefile.ssl (vi +79 Makefile.ssl) thêm những giá trị sau cho bộ vi xử
lý Pentium Pro
PROCESSOR = 686
Chú ý: Cả ba sự thay đổi chúng ta đã làm ở trên sẽ đặt cờ tối ưu cho sự biên dịch của phần mềm OpenSSL trên server Với sự thay đôiư thứ 3 ở trên (PROCESSOR=), nếu bạn đang chạy OpenSSL trên máy Pentium thì hãy đặt giá trị 586, nếu Pentium Pro / II / III đặt giá trị 686 còn nếu bạn đang chạy trên máy 486 thì giá trị sẽ là 486.