An toàn và bảo mật trên hệ điều hành Linux

Tài liệu An toàn và bảo mật trên hệ điều hành Linux: Luận văn: An toàn và bảo mật trên hệ điều hành Linux Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 1 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương Giới thiệu Ngày nay, trên mạng Internet kỳ diệu, người ta đang thực hiện hàng tỷ đô la giao dịch mỗi ngày( trên dưới 2 ngàn tỷ USD mỗi năm). Một khối lượng hàng hoá và tiền bạc khổng lồ đang được tỷ tỷ các điện tử tí hon chuyển đi và nó thực sự là miếng mồi béo bở cho những tay ăn trộm hay khủng bố có có “ tri thức”. Sự phát triển nhanh chóng của mạng máy tính là điều tất yếu. Hàng ngày có không biết bao nhiêu người tham gia vào hệ thống thông tin toàn cầu mà chúng ta gọi là Internet. Những công ty lớn, các doanh nghiệp, các trường đại học cùng như các trường phổ thông ngày càng tăng và hơn cả thế có rất rất nhiều người đang nối mạng trực tuyến suốt 24/24 giờ mỗi ngày, bảy ngày trong tuần. Trong bối cảnh một liên mạng toàn cầu với hàng chục triệu người sử dụng ...

pdf36 trang | Chia sẻ: hunglv | Lượt xem: 2542 | Lượt tải: 2download
Bạn đang xem trước 20 trang mẫu tài liệu An toàn và bảo mật trên hệ điều hành Linux, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Luận văn: An toàn và bảo mật trên hệ điều hành Linux Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 1 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương Giới thiệu Ngày nay, trên mạng Internet kỳ diệu, người ta đang thực hiện hàng tỷ đô la giao dịch mỗi ngày( trên dưới 2 ngàn tỷ USD mỗi năm). Một khối lượng hàng hoá và tiền bạc khổng lồ đang được tỷ tỷ các điện tử tí hon chuyển đi và nó thực sự là miếng mồi béo bở cho những tay ăn trộm hay khủng bố có có “ tri thức”. Sự phát triển nhanh chóng của mạng máy tính là điều tất yếu. Hàng ngày có không biết bao nhiêu người tham gia vào hệ thống thông tin toàn cầu mà chúng ta gọi là Internet. Những công ty lớn, các doanh nghiệp, các trường đại học cùng như các trường phổ thông ngày càng tăng và hơn cả thế có rất rất nhiều người đang nối mạng trực tuyến suốt 24/24 giờ mỗi ngày, bảy ngày trong tuần. Trong bối cảnh một liên mạng toàn cầu với hàng chục triệu người sử dụng như Internet thì vấn đề an toàn thông tin trở nên phức tạp và cấp thiết hơn. Do đó một câu hỏi không mấy dễ chịu đặt ra là : liệu mạng máy tính của chúng ta sẽ phải bị tấn công bất cứ lúc nào? Sự bảo vệ của bất kỳ mạng máy tính nào đầu tiên cũng là firewall và phần mền nguồn mở như Linux. Và câu chuyện về an toàn mạng không có hồi kết thúc. Việc giữ an toàn một hệ thống kéo theo chúng ta phải có nhưng kiến thức tốt về hệ điều hành, mạng TCP/IP cơ sở và quản trị dịch vụ. Cùng với sự gợi ý của giá viên hướng dẫn và tầm quan trọng của việc an toàn thông tin liên mạng, ở đây chúng tôi chỉ trình bày một cách tổng quan những vùng nơi Linux có thể và cần phải được giữ an toàn, những thêm vào đó là các lệnh cơ bản, những kinh ngiệm trong nguyên tắc an toàn và bảo vệ hệ thống mạng. Nhóm sinh viên thực hiện: - Nguyễn Huy Chương - Lê Thị Huyền Trang Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 2 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương I. 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. Nguyên tắc bảo vệ hệ thống mạng 1. Hoạch định hệ thống bảo vệ mạng Trong môi trường mạng, phải có sự đảm bảo rằng những dữ liệu có tính bí mật phải được cất giữ riêng, sao cho chỉ có người có thẫm quyền mới được phép truy cập chúng. Bảo mật thông tin là việc làm quan trọng, và việc bảo vệ hoạt động mạng cũng có tầm quan trong không kém. Mạng máy tính cần được bảo vệ an toàn, tránh khỏi những hiểm hoạ do vô tình hay cố ý.Tuy nhiên một nhà quản trị mạng cần phải biết bất cứ cái gì cũng có mức độ, không nên thái quá. Mạng không nhaats thiết phải được bảo vệ quá cẩn mật, đến mức người dùng luôn gặp khó khăn khi truy nhập mạng để thực hiện nhiệm vụ của mình. Không nên để họ thất vọng khi cố gắng truy cập cá tập tin của chính mình.Bốn hiểm hoạ chính đối với sự an ninh của mạng là: o Truy nhập mạng bất hợp pháp o Sự can thiệp bằng phương tiện điện tử o Kẻ trộm o Tai hoạ vô tình hoặc có chủ ý x Mức độ bảo mật :Tuỳ thuộc vào dạng môi trường trong đó mạng đang hoạt động x Chính sách bảo mật : Hệ thống mạng đòi hỏi một tập hợp nguyên tắc, điều luật và chính sách nhằm loại trừ mọi rủi ro. Giúp hướng dẫn vược qua các thay đổi và những tình huống không dự kiến trong quá trình phát triển mạng. Sự đề phòng: đề phòng những truy cập bất hợp pháp Sự chứng thực: trước khi truy nhập mạng, bạn gõ đúng tên đăng nhập và password hợp lệ. x Đào tạo: Người dùng mạng được đào tạo chu đáo sẽ có ít khả năng vô ý phá huỷ một tài nguyên x An toàn cho thiết bị: Tuỳ thuộc ở: quy mô công ty, độ bí mật dữ liệu, các tài nguyên khả dụng. Trong môi trường mạng ngang hàng, có thể không Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 3 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương có chính sách bảo vệ phàn cứng có tổ chức nào. Người dùng chịu trách nhiệm đảm bảo an toàn cho máy tính và dữ liệu của riêng mình. 2. Mô hình bảo mật Hai mô hình bảo mật khác nhau đã phát triển, giúp bảo vệ an toàn dữ liệu và tài nguyên phần cứng: x Bảo vệ tài nguyên dùng chung bằng mật mã: gắn mật mã cho từng tài nguyên dùng chung x Truy cập khi được sự cho phép : là chỉ định một số quyền nhất định trên cơ sở người dùng, kiểm tra truy nhập tài nguyên dùng chung căn cứ vào CSDL user-access trên máy server 3. Nâng cao mức độ bảo mật x Kiểm toán : Theo dõi hoạt động trên mạnh thông qua tài khoản người dùng, ghi lại nhiều dạng biến cố chọn lọc vào sổ nhật ký bảo mật của máy server. Giúp nhận biết các hoạt động bất hợp lệ hoặc không chủ định. Cung cấp các thông tin về cách dùng trong tình huống có phòng ban nào đó thun phí sử dụng một số tài nguyên nhất định, và cần quyết định phí của những tài nguyên này theo cách thức nào đó. x Máy tính không đĩa:Không có ổ đĩa cứng và ổ mềm. Có thể thi hành mọi việ như máy tính thông thường, ngoại trừ việc lưu trữ dữ liệu trên đĩa cứng hay đĩa mềm cục bộ. Không cần đĩa khởi động. Có khả năng giao tiếp với server và đăng nhập nhờ vào một con chip ROM khởi động đặc biệt được cài trên card mạng. Khi bật máy tính không đĩa, chip ROM khởi động phát tín hiệu cho server biết rằng nó muốn khởi động. Server trả lời bằng cácn tải phần mềm khởi động vào RAM của máy tính không đĩa và tự đọng hiển thị màn hình đăng nhập . Khi đó máy tính được kết nối với mạng. x Mã hoá dữ liệu: Người ta mã hoá thông tin sang dạng mật mã bằng một phương pháp nào đó sao cho đảm bảo thông tin đó không thể nhận biết được nếu nơi nhận không biết cách giải mã. Một người sử dụng hay một host có thể sử dụng thông tin mà không sợ ảnh hưởng đến người sử dụng hay một host khác. x Chống virus : - Ngăn không cho virus hoạt động - Sữa chữa hư hại ở một mức độ nào đó - Chặn đứng virus sau khi nó bộc phát Ngăn chặn tình trạng truy cập bất hợp pháp là một trong những giải pháp hiệu nhiệm nhất để tránh virus. Do biện pháp chủ yếu là phòng ngừa, nên nhà quản trị mạng phải bảo đảm sao cho mọi yếu tố cần thiết đều đã sẵn sàng: - Mật mã để giảm khả năng truy cập bất hợp pháp - Chỉ định các đặc quyền thích hợp cho mọi người dùng - Các profile để tổ chức môi trường mạng cho người dùng có thể lập cấu hình và duy trì môi trường đăng nhập, bao gồm các kết nối mạng và những khoản mục chương trình khi người dùng đăng nhập. - Một chính sách quyết định có thể tải phần mềm nào. Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 4 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương Kiến trúc bảo mật của hệ thống mạng 1) Các mức an toàn thông tin trên mạng Không có điều gì gọi là hoàn hảo trong việc an toàn hệ thống mạng như Linux. Nó được thiết kế để là một hệ điều hành nối mạng và sự phát triển mạnh mẽ của nó chỉ để tập trung vào sự an toàn. Hệ điều hành mã nguồn mở là cái gì mà cho phép người quản trị mạng và những người phát triển, những người dùng triền miên theo dõi và kiểm toán những gì dễ bị tấn công. Ở đấy không có gì huyền bì về an toàn thông tin. Thật là tốt nếu như các tài nguyên được bảo mật và được bảo vệ tốt trước bất kỳ sự xâm phạm vô tình hay cố ý. An toàn hay bảo mật không phải là một sản phẩm, nó cũng không phải là một phần mền. Nó là một cách nghĩ. Sự an toàn có thể được khởi động và dừng như một dịch vụ. Bảo mật là cách an toàn. Tài liệu bảo mật là tư liệu mà những thành viên của tổ chức muốn bảo vệ. Trách nhiệm của việc bảo mật là người quản trị mạng. Sự an toàn mạng có vai trò quan trọng tối cao. An toàn phải được đảm bảo từ những nhân tố bên ngoài kernel, tại phần cốt lõi của Linux server. Cơ chế bảo mật cần phải bao gồm cấu hình mạng của Server, chu vi ứng dụng của tổ chức mạng và thậm chí của những client truy nhập mạng từ xa. Có vài cách mà ta cần phải xem xét: o Sự an toàn vật lý o An toàn hệ thống o An toàn mạng o An toàn các ứng dụng o Sự truy nhập từ xa và việc chầp nhận 1. Sự an toàn vật lý Điều này là cơ bản và giám sát được tốt khía cạnh an toàn của hệ điều hành Linux. Sự an toàn vật lý bắt đầu với môi trường xung quanh ví dụ như đối với các nhà cung cầp dịch vụ hãm hại?Có nên khoá các khối dữ liệu lại? Những người nào được chấp nhận được vào trung tâm dữ liệu. Việc bảo vệ thích hợp là phải thực hiện lại khi muốn xây dựng một cài đặt mới hay di chuyển dữ liệu đến một vị trí mới. Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 5 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương 2. An toàn hệ thống Sự an toàn hệ thống bao quanh việc chọn phân phối hệ điều hành Linux, xây dưng kernel,tới sự an toàn tài khoản người dùng, cho phép truy cập thư mục tập tin, mã hoá syslog và file system. Các tác vụ này được hoàn thành trước khi dịch vụ nối vào Internet. Việc chọn một phân phối nào thì tuỳ thuộc vào những nhu cầunhư chính sách được phác thảo trong cơ chế an toàn. Có một tiêu chuẩn để chọn một phân phối nhưng nó không thuộc phạm vi của bài này.Việc xây dựng một kernel sẵn có có hai lợi thế: o Những option an toàn của nhân được xác định bởi người quản trị mạng và người quản trị mạng biết cái gì được xác định vào trong kernel và từ đây có thể đồng thời nhận ra nếu điều đó nếu có. Phần nềm nguồn mở nói chung và hệ điều hành Linux nói riêng, đặc biệt có những cải tiến để dễ dàng cho người sử dụng và có những tiện ích dễ ứng dụng. Chỉ cần update trong Red Hat. o Sự an toàn các tài khoảng người dùng có vai trò to lớn. Có những vùng được vô hiệu hoá, những tài khoảng không hoạt động, vô hiệu hoá việc truy cập đến NFS lên gốc, hạn chế những đăng nhập vào trong môi trường điều kiển hệ thống.Mã hoá file hệ thông sử dụng kỹ thuật mã hoá mà thường là phòng thủ cuối cùng cho mạng. Có hai cách tiếp cận chung: Hệ thống file mã hoá (CFS) và Practical Privacy Disk Driver(PPDD). Hệ thống có thể được theo dõi và trong Linux, hệ thống logging được logged trong tiện ích syslog. Công cụ theo dõi bao gồm swatch và logcheck. Swatch có công cụ thông báo thời gian thực, trong khi logcheck cung cấp một công cụ mà phát sinh những báo cáo định kỳ. Kiểm toán Password cũng có vai trò sống còn trong việc an toàn, bảo mật hệ thống trong khi mối liên kết yếu nhất trong việc an toàn mạng là người sử dụng và việc lựa chọn các mật khẩu password. 3. An toàn mạng Ở đây liên quan đến việ kết nối từ Linux server vào mạng. Cấu hình dịch vụ mạng với sự an toàn ngày càng khó khăn cho những nhà quản trị mạng. The xinetd daemon cần phải được định hình tổ chức bảo mật. Lệnh netstat Là một tiện ích mạnh cho phép người quản trị kiểm tra tình trạng cấu hình mạng. Kiểm tra mạng là điều cần thiếtcủa việc an toàn. Điều này đảm bảo rằng cơ chế an toàn đã được thực hiện có hiêu quả trong việc hoàn thành những yêu cầu bảo mật. Điều đó đạt được bởi quyền thực hiện đến mạng của bạn. Cách tiếp cận việc kiểm định mạng hiệu quả nhất sẽ trong vai trò của người làm phiền. Có những công cụ kiểm định cơ sở và host cơ sở. SATAN(Security Administrator's Tool for Analysing Networks), SAINT( Security Administrator's Integrated Network Tool), SARA (Security Auditor's Research Assistant) là những công cụ tốt để kiểm định cơ bản. SATAN được đầu tiên công nhận năm 1995, nó được công nhận đông đảo bởi mã nguồn mở. SAINT mạnh hơn SANAN, trong khi SARA là một modul ackage, tương tác với Nmap và Samba. Những cải tiến gần đây nhất là công cụ Nessus. Nessus là miễn phí, nguồn mở,đầy đủ nổi bật, công cụ kiểm toàn vẫn được hỗ trợ cải tiến cải tiến tích cực.Nessus đi vào 2 thành phần : - Client(nessus) và server( nesssus). Công cụ Nmap cho người quản trị giàu kinh nghiệm. Mặt khác Nmap có sức mạnh, công cụ quét cho người có kinh nghiệm. Nó được sử dụng tốt trong mạng LAN. TARA(Tiger Auditors Research Assistant)là một ví dụ cho công cụ kiểm toán cơ sở host. Theo dõi mạng dưới một sự tấn công. Công cụ để theo dõi đó là PortSentry và Ethereal. Port Sentry quét trong chế độ ngầm định. Bảo mật mạng như một trò chơi giữa mèo và chuột, của trí tuệ và máy đếm trí tuệ. Trong khi mạng kiểm toán là một phần của mạng bình thường, mạng theo dõi cần phải được ưu tiên cao hơn. Việc Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 6 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương bảo mật bao gồm việc kiểm toán chính xác và cả việc có nên để như thế hay không. PortSentry là một ví dụ của công cụ theo dõi thời gian thực được thiết kế để quét phát hiện ra hệ thống, và có khả cho bạn những hồi đáp. 4. Các ứng dụng an toàn Một vài deamons chuẩn trong việc phân phối Linux hiện thời là những ứng dụng đầy đủ mà nó có cấu trúc file phức tạp. Web, file, mail server sử dụng những giao thức phức tạp. An toàn có thể được thực hiện bởi các đặc tính bảo mật của việc các đại lý cho phép(MTA‟s) như Sendmail, Qmail và Postfix. Web Server có thể cũng được giữ an toàn bởi các modul cho phép: mod_auth, mod_auth_dbm, mod_auth_db,….Việc cho phép Open SS hỗ trợ cho Apache sẽ cũng công tác với web server. Samba có thể làm an toàn bởi việc đọc các thông số đang chạy. Bước đầu tiên sẽ được bảo vệ bởi công cụ quản trị web Samba (SAT) với SLL nên các lệnh quản lý Samba được bảo vệ. 5. Chu vi an toàn Cấp số tự nhiên của cách tiếp cận được sắp từng lớp đến sự an toàn máy tính ra khỏi lớp từ lớp mạng đến lớp ứng dụng, và từ đó đền lớp chu vi. Đây là vùng được quan tâm. Firewals là thành phần chính của miền chu vi an toàn, là phần mền mà chức năng bắt buộc tổ chức bảo mật an toàn bởi bộ lọc, bảo mật, đẩy mạnh, hay yêu cầu nằm trong Linux server để kết nối đến cả mạng chính và Internet. Fireware có thể được thực hiện nhiều cách dựa trên các lớp của mô hình OSI: lớp mạng, lớp giao vận và ứng dụng. Có điểm tích cực và tiêu cực trong việc triển khai fireware tại các lớp của mạng.Firewal mạng được biết như các packet-filtering gateway, nơi mà chúng kiểm tra nhữg gói tin IP vào giao diện fireware và hoạt động phù hợp được giữ lại. hoạt động bao gồm drop, cho phép/ hoặc log. Sự bất lợi là kiểu Firewal này không khôn khéo. Firwal giao vận làm việc bởi khảo sát TCP hoặc UDP. Firewal yêu cầu sự can thiệp người dùng sửa đổi những thủ tục. Firewal ứng dụng làm cho các quyết định truy nhập ở tầng ứng dụng.Nó cho phép người quản trị may firewal cho yêu cầu của mỗi loại ứng dụng. Caci bất tiện trong firewal là người quản trị cần định hình triển khai theo dõi, và bảo trì quá trình firewal cho mỗi ứng dụng mà cần truy nhập điều khiển. Nó luôn là tôt đẻ thực hiện bảo mật bởi việc sử dụng kết hợp một firewal tại tất cả ba tầng để tránh sự tổn thương. Firewal không chỉ cản trở những người làm phiền không hợp pháp vào mạng nhưng phải cho phép người sử dụng truy nhập bên ngoài vào nguồn tài nguyên, trong khi đó chấp nhận phê chuẩn nhất định những kết nối sau cho người dùng. Đây là nhận thức dễ nhưng đó là một thách thức khi thi hành. o Firewal mạng Có vài lợi thế trong việc sử dụng Linux như nền tảng fireware. Sự quản lý đồng bộ, phần cứng, số người dùng, kiểm tra nền tảng, việc thực hiện, giá giữa các lý do tại sao. Sự loc gói là lợi ích hiệu quả và cách bảo vẩptong phậm vi tránh xâm nhập. Người sử dụng không cần xác nhận để sử dụng tin cậy những dịch vụ vùng bên ngoài. Những giải pháp cho việc lọc gói trong Linux bao gồm ipchains và ipfwadm. tiện ích của việc lọc gói tin được sử dụng trong nhân từ phiên bản 1.2.1 về trước. Phiên bản cuối cùng của ipfwadm vào tháng 7/1996, sau đó ipchains thay thế nó. Những địa chỉ Ipchains là những giới hạn thiếu sót của ipfwadr như đếm 32 bit, không có khả năng giải quyết cấu thành địa chỉ IP,..v.v. Ipchains chiến thắng các giới hạn đó bởi việc tận dụng lợi ích của ba kênh riêng biệt hay những quy tắc nối tiếp để lọc. Ba kênh đó là : INPUT, OUTPUT, và FORWARD. Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 7 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương Tiện ích Ipchains theo cú pháp: ipchains command chain rule-specification [options] -j action Tại đây có thể một trong số kênh INPUT, OUTPUT hoặc FORWARD. Như nhân 2.4 về trước, tính hoạt động một lần của Ipchains được thay thế bởi Netfilter và khoảng quy tắc Iptables. Netfilter được hỗ trợ bởi công nghệ Watchguard. Ipctables được phát triển từ tiện ích của Ipchains và nó chỉ chạy trên những phiên bản 2.3 về trước. Một ví dụ về lệnh Iptables: iptables -A INPUT -p tcp –-dport smtp -j ACCEPT. Hiện nay có những thiết kế firewal bắt được hầu hết các cấu trúc mạng phổ biến, báo hiệu đơn giản theo yêu cầu kết nối tới những nơi rất phức tạp kéo theo khu vực được phi quân sự hoá(DMZ). II. Bảo mật Linux Server Những kinh nghiệm bảo mật Hiện nay Linux đang dần trở thành một hệ điều hành khá phổ biến bởi tính kinh tế, khả năng bảo mật và sự uyển chuyển cao. Thế nhưng, mọi hệ thống dù an toàn đến đâu cũng dễ dàng bị xâm nhập nếu người dùng(và nhất là người quản trị- root) không đặt sự bảo mật lên hàng đầu. Sâu đây là một só kinh nghiệm về bảo mật trên hệ điều hành Red Hat Linux mà chúng tôi muốn chia sẽ cùng các bạn: 1. Không cho phép sử dụng tài khoảng root từ console: Sau khi cài đặt, tài khoảng root sẽ không có quyền kết nối telnet vào dịch vụ telnet trên hệ thống, trong khi đó tài khoản bình thường lại có thể kết nối, do nội dung tập tin /etc/security chỉ quy định những console được phép truy cập bởi root và chỉ liệt kê những console truy xuất khi ngồi trực tiếp tại máy chủ. Để tăng cường bảo mật hơn nữa, hãy soạn thảo tập tin /etc/security và bỏ đi những console bạn không muốn root truy cập. 2. Xoá bớt tài khoảng và nhóm đặc biệt:Người quản trị nên xoá bỏ tất cả các tài khoảng và nhóm được tạo sẵn trong hệ thống nhưng không có nhu cầu sử dụng.( ví dụ: lp, syne, shutdown, halt, news, uucp, operator, game, gophẻ…). Thực hiện việc xoá bỏ tài khoảng bằng lệnh usedel và xoá bỏ nhóm với lệnh groupdel 3. Tắt các dịch vụ không sử dụng: Một điều khá nguy hiểm là sau khi cài đặt, hệ thống tự động chạy khá nhiều dịch vụ, trong đó đa số là các dịch vụ không mong muốn, dẫn đến tiêu tốn tài nguyên và sinh ra nhiều nguy cơ về bảo mật. Vì vậy người quản trị nên tắt các dịch vụ không dùng tới(ntsysv) hoặc xoá bỏ các gói dịch vụ không sử dụng bằng lệnh rpm 4. Không cho “SU” (Substitute) lên root: Lệnh su cho phép người dùng chuyển sang tài khoảng khác. Nếu không muốn người dùng “su” thành root thì thêm hai dòng sau vào tập tin /etc/pam.d/su: Auth sufficient/lib/security/pam_root ok so debug Auth required/lib/security/pam_wheel.so group= tên_nhóm_root 5. Che dấu tập tin mật khẩu: Giai đoạn đầu, mật khẩu toàn bộ tài khoảng được lưu trong tập tin /etc/password, tập tin mà mọi người dùng đều có quyền đọc. Đây là kẻ hở lớn trong bảo mật dù mật khẩu được mã hoá nhưng việc giải mã không phải là không thể thực hiện được. Do đó, hiện nay các nhà phát triển Linux đã đặt Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 8 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương riêng mật khẩu mã hoá vào tập tin /ect/shadow chỉ có root mới đọc được, nhưng yêu cầu phải chọn Enable the shadow password khi cài Red Hat. 6. Luôn nâng cấp cho nhân (kernel) Linux:Linux không hẵn được thiết kế với tính năng bảo mật chặt chẽ, khá nhiều lỗ hỏng có thể bị lợi dụng bởi tin tặc. Vì vậy việc sử dụng một hệ điều hành với nhân được nâng cấp là rất quan trọng vì một khi nhân, phần cốt lõi nhất của hệ điều hành được thiết kế tốt thì nguy cơ bị phá hoại sẽ giảm đi rất nhiều. 7. Tự động thoát khỏi Shel: Người quản trị hệ thống và kể cả người sử dụng bình thường rất hay quên thoát ra dấu nhắc shel khi kết thúc công việc. Thât nguy hiểm nếu có một kẻ nào sẽ có toàn quyền truy suất hệ thống mà chăng tốn chút công sức nào cả. Do vậy người quản trị nên cài đặt tính năng tự động thoát khỏi shel khi không có sự truy xuất trong khoảng thời gian định trước bằng cách sử dụng biến môi trường và gán một giá trị quy định Số giây hệ thống duy trì dấu nhắc, bạn nên vào tâp tin /ect/ profile để luôn tác dụng trong mọi phiên làm việc. 8. Không cho phép truy nhập tập tin kịch bản khởi động của Linux: Khi hệ điều hành Linux khởi động, các tập tin kịch bản (script) được đặt tại thư mục /etc/rc.d/init.d sẽ được gọi thực thi. Vì thế, để tránh những sự tò mò không cần thiết từ phía người dùng, với tư cách người quản trị, bạn nên hạn chế quyền truy xuất tới các tập tin này và chỉ cho phép tài khoảng root xử lý bằng lệnh sau: #chmod –R 700/etc/rc.d/init.d* 9. Giới hạn việc tự ý ghi nhận thông tin từ shel: Theo mặc định, tất cả lệnh được thực thi tại dấu nhắc shel của tài khoảng đều được ghi vào tập tin .bash_history( nếu sd bashshel) trong thư mục cá nhân của từng tài khoảng. Điều này gây nên vô số nguy hiểm tiềm ẩn, đặc biệt đối với những ứng dụng đòi hỏi người dùng phải gõ thông tin mật khẩu. Do đó người quản trị nên giới hạn việc tự ý ghi nhận thông tin từ shel dựa vào hai biến môi trường HISTFILESIZE và HISTSIZE: - Biến môi trường HISTFILESIZE quy định số lệnh gõ tại dấu nhắc shel sẽ được lưu lại cho lần truy cập sau. - Biến môi trường HISTSIZE quy định số lệnh sẽ được ghi nhớ trong phiên làm việc hiện hành. Vì vậy, ta sẽ phải giảm giá trị của HISTSIZE và cho giá trị HISTFILESIZE bằng 0 để giảm thiểu tối đa những nguy hiểm. Bạn thực hiện việc này bằng cách thay đổi giá trị hai biến nêu trên trong tập tin /etc/profile như sau: HISTFILESIZE = 0 HISTSIZE = xx Trong đó xx là số lệnh mà shel sẽ ghi nhớ, đồng thời không ghi lại bất kỳ một lệnh nào do người dùng đã gõ khi người dùng thoát khỏi shel. 10. Tắc các tiến trình SUID/SGID : Bình thường, các tiến trình được thực hiện dưới quyền của tài khoản gọi thực thi ứng dụng đó. Đó là dưới windows, nhưng Unix/Linux lại sử dụng một kỹ thuật đặc biệt cho phép một số chương trình được thực hiện dưới quyền của người quản lý chương trình chứ không phải người gọi thực thi chương trình. Và đây chính là lý do tại sao tất cả mọi người dùng trong hệ thống đều có thể đổi mật khẩu của mình trong khi không hề có quyên truy xuất lên tập tin /etc/shadow, đó là vì lệnh passwd đã được gán thuộc tính SUID và được quản lý bởi root, mà root lại là người dùng duy nhất có quyền truy xuất /etc/shadow. Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 9 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương Tuy thế, khả năng tiên tiến này có thể gây nên những nguy cơ khá phức tạp vì nếu một chương trình có khả năng thực thi được quản lý bởi root, do thiết kế tồi hoặc do được cài đặt cố tình bởi những kẻ phá hoại mà lại được đặt thuộc tính SUID thì mọi điều “ khủng khiếp” đều có thể xảy ra. Thực tế cho thấy có khá nhiều kỹ thuật xâm phạm hệ thống mà không có quyền root được thực hiện bằng các kỹ thuật này: kẻ phá hoại bằng cách nào đó tạo một shel được quản lý bởi root, có thuộc tính SUID, kế đến mọi truy xuất phá hoại sẽ được thực hiện qua shel vừa tạo vì mọi lệnh thực hiện trong shel sẽ được thực hiện giống như dưới quyền root. Thuộc tính SGID cũng tương tự như SUID: các chương trình được thực hiện với quyền nhóm quản lý chương trình chứ không phải nhóm của người chạy chương trình. Như vậy người quản trị sẽ phải thường xuyên kiểm tra trong hệ thống có những ứng dụng nào có thuộc tính SUID hoặc SGID mà không được sự quản lý của root không, nếu phát hiện được tập tin có thuộc tính SUID/SGID “ ngoài luồng”, bạn có thể loại bỏ các thuộc tình này bằng lệnh: #chmod a-s III. Linux Firewall An toàn hệ thống luôn luôn là một vấn đề sống còn của mạng máy tính và firewal là một thành phần cốt yếu cho việc đảm bảo an ninh. Một firewal là một tập hợp các qui tắc, ứng dụng và chính sách đảm bảo cho người dùng truy cập các dịch vụ mạng trong khi mạng bên trong vẫn an toàn đối với các kẻ tấn công từ Internet hay từ các mạng khác. Có hai loại kiến trúc firewal cơ bản là : Proxy/Application firewal và filtering gateway firewal. Hầu hết các hệ thống firewal hiện đại là loại lai (hybrid) của cả hai loại trên. Nhiều công ty và nhà cung cấp dịch vụ Internet sử dụng máy chủ Linux như một Internet gateway. Những máy chủ này thường phục vụ như máy chủ mail, web, ftp, hay dialup. Hơn nữa, chúng cũng thường hoạt động như các firewal, thi hành các chính sách kiểm soát giữa Internet và mạng của công ty. Khả năng uyển chuyển khiến cho Linux thu hút như là một thay thế cho những hệ điều hành thương mại. Tính năng firewal chuẩn được cung cấp sẵn trong kernel của Linux được xây dựng từ hai thành phần : ipchains và IP Masquerading. Linux IP Firewaling Chains là một cơ chế lọc gói tin IP. Những tính năng của IP Chains cho phép cấu hình máy chủ Linux như một filtering gateway/firewal dễ dàng. Một thành phần quan trọng khác của nó trong kernel là IP Masquerading, một tính năng chuyển đổi địa chỉ mạng (network address translation- NAT) mà có thể che giấu các địa chỉ IP thực của mạng bên trong. Để sử dụng ipchains, bạn cần thiết lập một tập các luật mà qui định các kết nối được cho phép hay bị cấm. Các nguyên tắc Ipchains Thực hiện các chức năng sau: ± Accept: The packet is okay; allow it to pass to the appropriate chain Cho phép chuyển gói tin qua chain thích hợp ± Deny: The packet is not okay; silently drop it in the bit bucket. Không đồng ý , bị rớt. ± Reject: The packet is not okay; but inform the sender of this fact via an ICMP packet. Không đồng ý, nhưng sự việc của người gởiqua gói ICMP ± Masq: Used for IP masquerading (network address translation). Sử dụng cho IP masquerading ( việc dịch địa chỉ mạng) ± Redirect: Send this packet to someone else for processing. Gởi gói tin này đến một người khác để sử lý ± Return: Terminate the rule list. Hoàn thành danh sách các quy tắc. Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 10 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương Chú ý: Các gói Ipfw(ipfilters/iptable) dưới hệ điều hành BSD cung cấp hoạt động tương tự Ipchains. Ví dụ: # Cho phép các kết nối web tới Web Server của bạn /sbin/ipchains -A your_chains_rules -s 0.0.0.0/0 www -d 192.16.0.100 1024: -j ACCEPT # Cho phép các kết nối từ bên trong tới các Web Server bên ngoài /sbin/ipchains -A your_chains_rules -s 192.168.0.0/24 1024: -d 0.0.0.0/0 www -j ACCEPT # Từ chối truy cập tất cả các dịch vu khác /sbin/ipchains -P your_chains_rules input DENY Ngoài ra, bạn có thể dùng các sản phẩm firewal thương mại như Check Point FireWal- 1, Phoenix Adaptive Firewal, Gateway Guardian, XSentry Firewal, Raptor, ... hay rất nhiều các phiên bản miễn phí, mã nguồn mở cho Linux như T.Rex Firewal, Dante, SINUS, TIS Firewall Toolkit, ... 1.DÙNG CÔNG CỤ DÕ TÌM ĐỂ KHẢO SÁT HỆ THỐNG Thâm nhập vào một hệ thống bất kỳ nào cũng cần có sự chuẩn bị. Hacker phải xác định ra máy đích và tìm xem những port nào đang mở trước khi hệ thống có thể bị xâm phạm. Quá trình này thường được thực hiện bởi các công cụ dò tìm (scanning tool), kỹ thuật chính để tìm ra máy đích và các port đang mở trên đó. Dò tìm là bước đầu tiên hacker sẽ sử dụng trước khi thực hiện tấn công. Bằng cách sử dụng các công cụ dò tìm như Nmap, hacker có thể rà khắp các mạng để tìm ra các máy đích có thể bị tấn công. Một khi xác định được các máy này, kẻ xâm nhập có thể dò tìm các port đang lắng nghe. Nmap cũng sử dụng một số kỹ thuật cho phép xác định khá chính xác loại máy đang kiểm tra. Bằng cách sử dụng những công cụ của chính các hacker thường dùng, người quản trị hệ thống có thể nhìn vào hệ thống của mình từ góc độ của các hacker và giúp tăng cường tính an toàn của hệ thống. Có rất nhiều công cụ dò tìm có thể sử dụng như: Nmap, strobe, sscan, SATAN, ... Nmap Là chữ viết tắt của "Network exploration tool and security scanner" . Đây là chương trình quét hàng đầu với tốc độ cực nhanh và cực mạnh. Nó có thể quét trên mạng diện rộng và đặc biệt tốt đối với mạng đơn lẻ. NMAP giúp bạn xem những dịch vụ nào đang chạy trên server (services/ports:webserver,ftpserver,pop3,...), server đang dùng hệ điều hành gì, loại tường lửa mà server sử dụng, ... và rất nhiều tính năng khác. Nói chung NMAP hỗ trợ hầu hết các kỹ thuật quét như : ICMP (ping aweep), IP protocol, Null scan, TCP SYN (half open), ... NMAP được đánh giá là công cụ hàng đầu của các Hacker cũng như các nhà quản trị mạng trên thế giới. Quét an toàn Nmap là một trong số công cụ quét an toàn được sử dụng rộng rãi nhất sẵn có. Nmap là một cổng quét mà chống lại các nhân tố, các cách khác tàn phá đến mạng của bạn. Nó có thể phát sinh ra nhiều kiểu gói mà thăm dò các ngăn xếp TCP/IP trên những hệ thống của bạn. Nmap có thể phát sinh ra một danh sách của những cổng mở dịch vụ trên hệ thống của bạn,thâm nhập firewals, và cung cấp những tin quấy rầy, không tin cậy đang chạy trên host của bạn. Nmap security có sẵn tại : .Dưới đây là một ví dụ sử dụng Nmap: # nmap -sS -O 192.168.1.200 Starting nmap V. 2.54 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/) Interesting ports on comet (192.168.1.200): Port State Protocol Service 7 open tcp echo 19 open tcp chargen Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 11 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương 21 open tcp ftp ... TCP Sequence Prediction: Class=random positive increments Difficulty=17818 (Worthy challenge) Remote operating system guess: Linux 2.2.13 Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds Tuy nhiên, sử dụng các công cụ này không thể thay thế cho một người quản trị có kiến thức. Bởi vì việc dò tìm thường dự báo một cuộc tấn công, các site nên ưu tiên cho việc theo dõi chúng. Với các công cụ dò tìm, các nhà quản trị hệ thống mạng có thể phát hiện ra những gì mà các hacker có thể thấy khi dò trên hệ thống của mình. 2.PHÁT HIỆN SỰ XÂM NHẬP QUA MẠNG Nếu hệ thống của bạn có kết nối vào internet, bạn có thể trở thành một mục tiêu bị dò tìm các lỗ hổng về bảo mật. Mặc dù hệ thống của bạn có ghi nhận điều này hay không thì vẫn không đủ để xác định và phát hiện việc dò tìm này. Một vấn đề cần quan tâm khác là các cuộc tấn công gây ngừng dịch vụ (Denial of Services - DoS), làm thế nào để ngăn ngừa, phát hiện và đối phó với chúng nếu bạn không muốn hệ thống của bạn ngưng trệ. Hệ thống phát hiện xâm nhập qua mạng (Network Intrusion Detection System - NIDS) theo dõi các thông tin truyền trên mạng và phát hiện nếu có hacker đang cố xâm nhập vào hệ thống (hoặc gây gây ra một vụ tấn công DoS). Một ví dụ điển hình là hệ thống theo dõi số lượng lớn các yêu cầu kết nối TCP đến nhiều port trên một máy nào đó, do vậy có thể phát hiện ra nếu có ai đó đang thử một tác vụ dò tìm TCP port. Một NIDS có thể chạy trên máy cần theo dõi hoặc trên một máy độc lập theo dõi toàn bộ thông tin trên mạng. Các công cụ có thể được kết hợp để tạo một hệ thống phát hiện xâm nhập qua mạng. Chẳng hạn dùng tcpwrapper để điều khiển, ghi nhận các dịch vụ đã được đăng ký. Các chương trình phân tích nhật ký hệ thống, như swatch, có thể dùng để xác định các tác vụ dò tìm trên hệ thống. Và điều quan trọng nhất là các công cụ có thể phân tích các thông tin trên mạng để phát hiện các tấn công DoS hoặc đánh cắp thông tin như tcpdump, ethereal, ngrep, NFR (Network Flight Recorder), PortSentry, Sentinel, Snort, ... Khi hiện thực một hệ thống phát hiện xâm nhập qua mạng bạn cần phải lưu tâm đến hiệu suất của hệ thống cũng như các chính sách bảo đảm sự riêng tư. 3.KIỂM TRA KHẢ NĂNG BỊ XÂM NHẬP Kiểm tra khả năng bị xâm nhập liên quan đến việc xác định và sắp xếp các lỗ hổng an ninh trong hệ thống bằng cách dùng một số công cụ kiểm tra. Nhiều công cụ kiểm tra cũng có khả năng khai thác một số lỗ hổng tìm thấy để làm rõ quá trình thâm nhập trái phép sẽ được thực hiện như thế nào. Ví dụ, một lỗi tràn bộ đệm của chương trình phục vụ dịch vụ FTP có thể dẫn đến việc thâm nhập vào hệ thống với quyền „root‟. Nếu người quản trị mạng có kiến thức về kiểm tra khả năng bị xâm nhập trước khi nó xảy ra, họ có thể tiến hành các tác vụ để nâng cao mức độ an ninh của hệ thống mạng. Có rất nhiều các công cụ mạng mà bạn có thể sử dụng trong việc kiểm tra khả năng bị xâm nhập. Hầu hết các quá trình kiểm tra đều dùng ít nhất một công cụ tự động phân tích các lỗ hổng an ninh. Các công cụ này thăm dò hệ thống để xác định các dịch vụ hiện có. Thông tin lấy từ các dịch vụ này sẽ được so sánh với cơ sở dữ liệu các lỗ hổng an ninh đã được tìm thấy trước đó. Các công cụ thường được sử dụng để thực hiện các kiểm tra loại này là ISS Scanner, Cybercop, Retina, Nessus, cgiscan, CIS, ... Kiểm tra khả năng bị xâm nhập cần được thực hiện bởi những người có trách nhiệm một cách cẩn thận. Sự thiếu kiến thức và sử dụng sai cách có thể sẽ dẫn đến hậu quả nghiêm trọng không thể lường trước được. Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 12 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương 4.ĐỐI PHÓ KHI HỆ THỐNG CỦA BẠN BỊ TẤN CÔNG Gần đây, một loạt các vụ tấn công nhắm vào các site của những công ty lớn như Yahoo!, Buy.com, E-Bay, Amazon và CNN Interactive gây ra những thiệt hại vô cùng nghiêm trọng. Những tấn công này là dạng tấn công gây ngừng dịch vụ "Denial-Of- Service" mà được thiết kế để làm ngưng hoạt động của một mạng máy tính hay một website bằng cách gửi liên tục với số lượng lớn các dữ liệu tới mục tiêu tấn công khiến cho hệ thống bị tấn công bị ngừng hoạt động, điều này tương tự như hàng trăm người cùng gọi không ngừng tới 1 số điện thoại khiến nó liên tục bị bận. Trong khi không thể nào tránh được mọi nguy hiểm từ các cuộc tấn công, chúng tôi khuyên bạn một số bước mà bạn nên theo khi bạn phát hiện ra rằng hệ thống của bạn bị tấn công. Chúng tôi cũng đưa ra một số cách để giúp bạn bảo đảm tính hiệu qủa của hệ thống an ninh và những bước bạn nên làm để giảm rủi ro và có thể đối phó với những cuộc tấn công. Nếu phát hiện ra rằng hệ thống của bạn đang bị tấn công, hãy bình tĩnh. Sau đây là những bước bạn nên làm: x Tập hợp 1 nhóm để đối phó với sự tấn công: o Nhóm này phải bao gồm những nhân viên kinh nghiệm, những người mà có thể giúp hình thành một kế hoạch hành động đối phó với sự tấn công. x Dựa theo chính sách và các quy trình thực hiện về an ninh của công ty, sử dụng các bước thích hợp khi thông báo cho mọi người hay tổ chức về cuộc tấn công. x Tìm sự giúp đỡ từ nhà cung cấp dịch vụ Internet và cơ quan phụ trách về an ninh máy tính: o Liên hệ nhà cung cấp dịch vụ Internet của bạn để thông báo về cuộc tấn công. Có thể nhà cung cấp dịch vụ Internet của bạn sẽ chặn đứng được cuộc tấn công. o Liên hệ cơ quan phụ trách về an ninh máy tính để thông báo về cuộc tấn công x Tạm thời dùng phương thức truyền thông khác (chẳng hạn như qua điện thoại) khi trao đổi thông tin để đảm bo rằng kẻ xâm nhập không thể chặn và lấy được thông tin. x Ghi lại tất cả các hoạt động của bạn (chẳng hạn như gọi điện thoại, thay đổi file, ...) x Theo dõi các hệ thống quan trọng trong qúa trình bị tấn công bằng các phần mềm hay dịch vụ phát hiện sự xâm nhập (intrusion detection software/services). Điều này có thể giúp làm giảm nhẹ sự tấn công cũng như phát hiện những dấu hiệu của sự tấn công thực sự hay chỉ là sự quấy rối nhằm đánh lạc hướng sự chú ý của bạn(chẳng hạn một tấn công DoS với dụng ý làm sao lãng sự chú ý của bạn trong khi thực sự đây là một cuộc tấn công nhằm xâm nhập vào hệ thống của bạn). Sao chép lại tất cả các files mà kẻ xâm nhập để lại hay thay đổi (như những đoạn mã chương trình, log file, ...) x Liên hệ nhà chức trách để báo cáo về vụ tấn công. Những bước bạn nên làm để giảm rủi ro và đối phó với sự tấn công trong tương lai : o Xây dựng và trao quyền cho nhóm đối phó với sự tấn công o Thi hành kiểm tra an ninh và đánh giá mức độ rủi ro của hệ thống o Cài đặt các phần mềm an toàn hệ thống phù hợp để giảm bớt rủi ro o Nâng cao khả năng của mình về an toàn máy tính Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 13 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương Các bước kiểm tra để giúp bạn bảo đảm tính hiệu quả của hệ thống an ninh o Kiểm tra hệ thống an ninh mới cài đặt : chắc chắn tính đúng đắn của chính sách an ninh hiện có và cấu hình chuẩn của hệ thống. o Kiểm tra tự động thường xuyên : để khám phá sự “viếng thăm” của những hacker hay những hành động sai trái của nhân viên trong công ty. o Kiểm tra ngẫu nhiên: để kiểm tra chính sách an ninh và những tiêu chuẩn, hoặc kiểm tra sự hiện hữu của những lỗ hổng đã được phát hiện (chẳng hạn những lỗi được thông báo từ nhà cung cấp phần mềm) o Kiểm tra hằng đêm những file quan trọng: để đánh giá sự toàn vẹn của những file và cơ sở dữ liệu quan trọng o Kiểm tra các tài khoản người dùng: để phát hiện các tài khoản không sử dụng, không tồn tại, ... o Kiểm tra định kỳ để xác định trạng thái hiện tại của hệ thống an ninh của bạn Thiết lập tường lửa Iptables cho Linux Cấu hình Tables Việc cài đặt Iptables là một phần trong việc cài đặt Red Hat ban đầu. Nguyên bản khởi tạo tìm kiếm sự tồn tại của file Iptables, rules/etc/sysconfig/iptables, Và nếu chúng đã tồn tại iptables khởi động với cầu hình đã được chỉ rõ. Một khi server này là gởi mail và nhận mail, cấu hình Iptables nên cho phép những kết nối từ đầu vào sendmail đến bất kỳ nơi đâu. Người quản trị hệ thống sẽ chỉ sử dụng shh từ bên trong các máy, đặc biệt là MIS. Iptables rules sẽ cài đặt để cho phép các kết nối shh từ 2 MIS. Ping ICMP sẽ cho phép bất kỳ đâu. Không có công nào khác cho phép kết nối đến người phục vụ này. Đây là mức bổ sung cho việc phòng thủ của server trong trường hợp Firewal được thoã hiệp. Thêm vào đó là việc bảo vệ cho ssh sẽ được cung cấp bởi cấu hình các gói tcp bên dưới. Những quy tắc để thực hiện cấu hình Iptables như sau: /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT(1) /sbin/iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT(2) /sbin/iptables -A INPUT -p tcp --dport 25 -j ACCEPT(3) /sbin/iptables -A INPUT -p tcp --dport 22 -s 10.100.200.0/24 -j ACCEPT(4) /sbin/iptables -A INPUT -p tcp --dport 22 -s 10.100.201.0/24 -j ACCEPT(5) /sbin/iptables -A INPUT -p udp --sport 53 -s 10.100.50.50 -j ACCEPT(6) /sbin/iptables -A INPUT -p udp -sport 53 -s 10.100.42.42 -j ACCEPT(7) /sbin/iptables -A INPUT -j LOG(8) /sbin/iptables -P INPUT DROP(9) (1) Cho phép những kết nối liên quan và đã thiết lập đến server (2) Cho phép các host khác ping đến server sendmaid (3) Cho phép kết nối SMTP đến server (4), (5) Cho phép kết nối ssh từ 2 MÍ (subnets) (6), (7) Cho phép người phục vụ tên DNS cho box sendmaid để cung cấp giải pháp DNS. Nếu bạn có hơn một domain – DNS, thì thêm một dòng cho mỗi DNS. (8) log bất kỳ kết nối nào cố gắng mà nó không đặc biệt cho phép (9) Cài dặt chính sách mặc định cho bảng INPUT to DROP Tất cả các kết nối đặc biệt không cho phép sẽ bị rớt. Chương trình losentry sẽ được cấu hình để định rằng bất kỳ dòng nào log cũng như sự xâm phạm an toàn. Để giữ được cấu hình qua reboot, ta phải chạy Iptables- Save. Chạy lệnh như sau: /sbin/iptables-save > /etc/sysconfig/iptables Khi hệ thống khởi động lên, file Iptables sẽ được đọc và cấu hình hiệu dụng. Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 14 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương Iptables là một tường lửa ứng dụng lọc gói dữ liệu rất mạnh, miễn phí và có sẵn trên Linux.. Netfilter/Iptables gồm 2 phần là Netfilter ở trong nhân Linux và Iptables nằm ngoài nhân. Iptables chịu trách nhiệm giao tiếp giữa người dùng và Netfilter để đẩy các luật của người dùng vào cho Netfiler xử lí. Netfilter tiến hành lọc các gói dữ liệu ở mức IP. Netfilter làm việc trực tiếp trong nhân, nhanh và không làm giảm tốc độ của hệ thống. Cách đổi địa chỉ IP động (dynamic NAT) Trước khi đi vào phần chính, mình cần giới thiệu với các bạn về công nghệ đổi địa chỉ NAT động và đóng giả IP Masquerade. Hai từ này được dùng rất nhiều trong Iptables nên bạn phải biết. Nếu bạn đã biết NAT động và Masquerade, bạn có thể bỏ qua phần này. NAT động là một trong những kĩ thuật chuyển đổi địa chỉ IP NAT (Network Address Translation). Các địa chỉ IP nội bộ được chuyển sang IP NAT như sau: NAT Router đảm nhận việc chuyển dãy IP nội bộ 169.168.0.x sang dãy IP mới 203.162.2.x. Khi có gói liệu với IP nguồn là 192.168.0.200 đến router, router sẽ đổi IP nguồn thành 203.162.2.200 sau đó mới gởi ra ngoài. Quá trình này gọi là SNAT (Source- NAT, NAT nguồn). Router lưu dữ liệu trong một bảng gọi là bảng NAT động. Ngược lại, khi có một gói từ liệu từ gởi từ ngoài vào với IP đích là 203.162.2.200, router sẽ căn cứ vào bảng NAT động hiện tại để đổi địa chỉ đích 203.162.2.200 thành địa chỉ đích mới là 192.168.0.200. Quá trình này gọi là DNAT (Destination-NAT, NAT đích). Liên lạc giữa 192.168.0.200 và 203.162.2.200 là hoàn toàn trong suốt (transparent) qua NAT router. NAT router tiến hành chuyển tiếp (forward) gói dữ liệu từ 192.168.0.200 đến 203.162.2.200 và ngược lại. Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 15 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương Cách đóng giả địa chỉ IP (masquerade) Đây là một kĩ thuật khác trong NAT. NAT Router chuyển dãy IP nội bộ 192.168.0.x sang một IP duy nhất là 203.162.2.4 bằng cách dùng các số hiệu cổng (port-number) khác nhau. Chẳng hạn khi có gói dữ liệu IP với nguồn 192.168.0.168:1204, đích 211.200.51.15:80 đến router, router sẽ đổi nguồn thành 203.162.2.4:26314 và lưu dữ liệu này vào một bảng gọi là bảng masquerade động. Khi có một gói dữ liệu từ ngoài vào với nguồn là 221.200.51.15:80, đích 203.162.2.4:26314 đến router, router sẽ căn cứ vào bảng masquerade động hiện tại để đổi đích từ 203.162.2.4:26314 thành 192.168.0.164:1204. Liên lạc giữa các máy trong mạng LAN với máy khác bên ngoài hoàn toàn trong suốt qua router Cấu trúc của Iptables Iptables được chia làm 4 bảng (table): bảng filter dùng để lọc gói dữ liệu, bảng nat dùng để thao tác với các gói dữ liệu được NAT nguồn hay NAT đích, bảng mangle dùng để thay đổi các thông số trong gói IP và bảng conntrack dùng để theo dõi các kết nối. Mỗi table gồm nhiều mắc xích (chain). Chain gồm nhiều luật (rule) để thao tác với các gói dữ liệu. Rule có thể là ACCEPT (chấp nhận gói dữ liệu), DROP (thả gói), REJECT (loại bỏ gói) hoặc tham chiếu (reference) đến một chain khác. Quá trình chuyển gói dữ liệu qua Netfilter Gói dữ liệu (packet) chạy trên chạy trên cáp, sau đó đi vào card mạng (chẳng hạn như eth0). Đầu tiên packet sẽ qua chain PREROUTING (trước khi định tuyến). Tại đây, packet có thể bị thay đổi thông số (mangle) hoặc bị đổi địa chỉ IP đích (DNAT). Đối với packet đi vào máy, nó sẽ qua chain INPUT. Tại chain INPUT, packet có thể được chấp nhận hoặc bị hủy bỏ. Tiếp theo packet sẽ được chuyển lên cho các ứng dụng (client/server) xử lí và tiếp theo là được chuyển ra chain OUTPUT. Tại chain OUTPUT, packet có thể bị thay đổi các thông số và bị lọc chấp nhận ra hay bị hủy bỏ. Đối với packet forward qua máy, packet sau khi rời chain PREROUTING sẽ qua chain FORWARD. Tại chain FORWARD, nó cũng bị lọc ACCEPT hoặc DENY. Packet sau khi qua chain FORWARD hoặc chain OUTPUT sẽ đến chain POSTROUTING (sau khi định tuyến). Tại chain POSTROUTING, packet có thể được đổi địa chỉ IP nguồn (SNAT) hoặc MASQUERADE. Packet sau khi ra card mạng sẽ được chuyển lên cáp để đi đến máy tính khác trên mạng. Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 16 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương Các tham số dòng lệnh thường gặp của Iptables 1. Gọi trợ giúp Để gọi trợ giúp về Iptables, bạn gõ lệnh $ man iptables hoặc $ iptables --help. Chẳng hạn nếu bạn cần biết về các tùy chọn của match limit, bạn gõ lệnh $ iptables -m limit --help. 2. Các tùy chọn để chỉ định thông số - chỉ định tên table: -t , ví dụ -t filter, -t nat, .. nếu không chỉ định table, giá trị mặc định là filter - chỉ đinh loại giao thức: -p , ví dụ -p tcp, -p udp hoặc -p ! udp để chỉ định các giao thức không phải là udp - chỉ định card mạng vào: -i , ví dụ: -i eth0, -i lo - chỉ định card mạng ra: -o , ví dụ: -o eth0, -o pp0 - chỉ định địa chỉ IP nguồn: -s , ví dụ: -s 192.168.0.0/24 (mạng 192.168.0 với 24 bít mạng), -s 192.168.0.1-192.168.0.3 (các IP 192.168.0.1, 192.168.0.2, 192.168.0.3). - chỉ định địa chỉ IP đích: -d , tương tự như -s - chỉ định cổng nguồn: --sport , ví dụ: --sport 21 (cổng 21), --sport 22:88 (các cổng 22 .. 88), --sport :80 (các cổng =22) - chỉ định cổng đích: --dport , tương tự như --sport 3. Các tùy chọn để thao tác với chain - tạo chain mới: iptables -N - xóa hết các luật đã tạo trong chain: iptables -X - đặt chính sách cho các chain `built-in` (INPUT, OUTPUT & FORWARD): iptables -P , ví dụ: iptables -P INPUT ACCEPT để chấp nhận các packet vào chain INPUT - liệt kê các luật có trong chain: iptables -L - xóa các luật có trong chain (flush chain): iptables -F - reset bộ đếm packet về 0: iptables -Z 4. Các tùy chọn để thao tác với luật - thêm luật: -A (append) - xóa luật: -D (delete) - thay thế luật: -R (replace) - chèn thêm luật: -I (insert) Mình sẽ cho ví dụ minh họa về các tùy chọn này ở phần sau. Phân biệt giữa ACCEPT, DROP và REJECT packet - ACCEPT: chấp nhận packet - DROP: thả packet (không hồi âm cho client) - REJECT: loại bỏ packet (hồi âm cho client bằng một packet khác) Ví dụ: # iptables -A INPUT -i eth0 --dport 80 -j ACCEPT chấp nhận các packet vào cổng 80 trên card mạng eth0 Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 17 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương # iptables -A INPUT -i eth0 -p tcp --dport 23 -j DROP thả các packet đến cổng 23 dùng giao thức TCP trên card mạng eth0 # iptables -A INPUT -i eth1 -s ! 10.0.0.1-10.0.0.5 --dport 22 -j REJECT --reject-with tcp- reset gởi gói TCP với cờ RST=1 cho các kết nối không đến từ dãy địa chỉ IP 10.0.0.1..5 trên cổng 22, card mạng eth1 # iptables -A INPUT -p udp --dport 139 -j REJECT --reject-with icmp-port-unreachable gởi gói ICMP `port-unreachable` cho các kết nối đến cổng 139, dùng giao thức UDP Phân biệt giữa NEW, ESTABLISHED và RELATED - NEW: mở kết nối mới - ESTABLISHED: đã thiết lập kết nối - RELATED: mở một kết nối mới trong kết nối hiện tại Ví dụ: # iptables -P INPUT DROP đặt chính sách cho chain INPUT là DROP # iptables -A INPUT -p tcp --syn -m state --state NEW -j ACCEPT chỉ chấp nhận các gói TCP mở kết nối đã set cờ SYN=1 # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT không đóng các kết nối đang được thiết lập,đồng thời cũng cho phép mở các kết nối mới trong kết nối được thiết lập # iptables -A INPUT -p tcp -j DROP các gói TCP còn lại đều bị DROP Tùy chọn --limit, --limit-burst --limit-burst: mức đỉnh, tính bằng số packet --limit: tốc độ khi chạm mức đỉnh, tính bằng số packet/s(giây), m(phút), d(giờ) hoặc h(ngày) Mình lấy ví dụ cụ thể để bạn dễ hiểu: # iptables -N test # iptables -A test -m limit --limit-burst 5 --limit 2/m -j RETURN # iptables -A test -j DROP # iptables -A INPUT -i lo -p icmp --icmp-type echo-request -j test Đầu tiên lệnh iptables -N test để tạo một chain mới tên là test (table mặc định là filter). Tùy chọn -A test (append) để thêm luật mới vào chain test. Đối với chain test, mình giới hạn limit-burst ở mức 5 gói, limit là 2 gói/phút, nếu thỏa luật sẽ trở về (RETURN) còn không sẽ bị DROP. Sau đó mình nối thêm chain test vào chain INPUT với tùy chọn card mạng vào là lo, giao thức icmp, loại icmp là echo-request. Luật này sẽ giới hạn các gói PING tới lo là 2 gói/phút sau khi đã đạt tới 5 gói.Bạn thử ping đến localhost xem sao? $ ping -c 10 localhost Chỉ 5 gói đầu trong phút đầu tiên được chấp nhận, thỏa luật RETURN đó. Bây giờ đã đạt đến mức đỉnh là 5 gói, lập tức Iptables sẽ giới hạn PING tới lo là 2 gói trên mỗi phút bất chấp có bao nhiêu gói được PING tới lo đi nữa. Nếu trong phút tới không có gói nào PING tới, Iptables sẽ giảm limit đi 2 gói tức là tốc độ đang là 2 gói/phút sẽ tăng lên 4 gói/phút. Nếu trong phút nữa không có gói đến, limit sẽ giảm đi 2 nữa là trở về lại trạng thái cũ chưa đạt đến mức đỉnh 5 gói. Quá trình cứ tiếp tục như vậy. Bạn chỉ cần nhớ đơn giản là khi đã đạt tới mức đỉnh, tốc độ sẽ bị giới hạn bởi tham số--limit. Nếu trong một đơn vị thời gian tới không có gói đến, tốc độ sẽ tăng lên đúng bằng --limit đến khi trở lại trạng thái chưa đạt mức --limit-burst thì thôi. Để xem các luật trong Iptables bạn gõ lệnh $ iptables -L -nv (-L tất cả các luật trong tất cả các chain, table mặc định là filter, -n liệt kê ở dạng số, v để xem chi tiết) # iptables -L -nv Chain INPUT (policy ACCEPT 10 packets, 840 bytes) pkts bytes target prot opt in out source destination 10 840 test icmp -- lo * 0.0.0.0/0 0.0.0.0/0 icmp type 8 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 18 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 15 packets, 1260 bytes) pkts bytes target prot opt in out source destination Chain test (1 references) pkts bytes target prot opt in out source destination 5 420 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 limit: avg 2/min burst 5 5 420 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 # iptables -Z reset counter # iptables -F flush luật # iptables -X xóa chain đã tạo Redirect cổng Iptables hổ trợ tùy chọn -j REDIRECT cho phép bạn đổi hướng cổng một cách dễ dàng. Ví dụ như SQUID đang listen trên cổng 3128/tcp. Để redirect cổng 80 đến cổng 3128 này bạn làm như sau: # iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128 Lưu ý: tùy chọn -j REDIRECT cho có trong chain PREROUTING SNAT & MASQUERADE Để tạo kết nối `transparent` giữa mạng LAN 192.168.0.1 với Internet bạn lập cấu hình cho tường lửa Iptables như sau: # echo 1 > /proc/sys/net/ipv4/ip_forward cho phép forward các packet qua máy chủ đặt Iptables # iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 210.40.2.71 đổi IP nguồn cho các packet ra card mạng eth0 là 210.40.2.71. Khi nhận được packet vào từ Internet, Iptables sẽ tự động đổi IP đích 210.40.2.71 thành IP đích tương ứng của máy tính trong mạng LAN 192.168.0/24. Hoặc bạn có thể dùng MASQUERADE thay cho SNAT như sau: # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE (MASQUERADE thường được dùng khi kết nối đến Internet là pp0 và dùng địa chỉ IP động) Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 19 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương DNAT Giả sử bạn đặt các máy chủ Proxy, Mail và DNS trong mạng DMZ. Để tạo kết nối trong suốt từ Internet vào các máy chủ này bạn là như sau: # echo 1 > /proc/sys/net/ipv4/ip_forward # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2 # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to-destination 192.168.1.3 # iptables -t nat -A PREROUTING -i eth0 -p udp --dport 53 -j DNAT --to-destination 192.168.1.4 Lập cấu hình Iptables cho máy chủ phục vụ Web Phần này mình sẽ trình bày qua ví dụ cụ thể và chỉ hướng dẫn các bạn lọc packet vào. Các packet f`orward` và 'output' bạn tự làm nha. Giả sử như máy chủ phục vụ Web kết nối mạng trực tiếp vào Internet qua card mạng eth0, địa chỉ IP là 1.2.3.4. Bạn cần lập cấu hình tường lửa cho Iptables đáp ứng các yêu cầu sau: - cổng TCP 80 (chạy apache) mở cho mọi người truy cập web - cổng 21 (chạy proftpd) chỉ mở cho webmaster (dùng để upload file lên public_html) - cổng 22 (chạy openssh) chỉ mở cho admin (cung cấp shel `root` cho admin để nâng cấp & patch lỗi cho server khi cần) - cổng UDP 53 (chạy tinydns) để phục vụ tên miền (đây chỉ là ví dụ) - chỉ chấp nhận ICMP PING tới với code=0x08, các loại packet còn lại đều bị từ chối. Bước 1: thiết lập các tham số cho nhân echo 1 > /proc/sys/net/ipv4/tcp_syncookies echo 10 > /proc/sys/net/ipv4/tcp_fin_timeout echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time echo 0 > /proc/sys/net/ipv4/tcp_window_scaling echo 0 > /proc/sys/net/ipv4/tcp_sack echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts echo 0 > /proc/sys/net/ipv4/conf/eth0/accept_source_route tcp_syncookies=1 bật chức năng chống DoS SYN qua syncookie của Linux tcp_fin_timeout=10 đặt thời gian timeout cho quá trình đóng kết nối TCP là 10 giây tcp_keepalive_time=1800 đặt thời gian giữ kết nối TCP là 1800 giây ... Các tham số khác bạn có thể xem chi tiết trong tài liệu đi kèm của nhân Linux. Bước 2: nạp các môđun cần thiết cho Iptables Để sử dụng Iptables, bạn cần phải nạp trước các môđun cần thiết. Ví dụ nếu bạn muốn dùng chức năng LOG trong Iptables, bạn phải nạp môđun ipt_LOG vào trước bằng lệnh # modprobe ipt_LOG. Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 20 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương MODULES="ip_tables iptable_filter ipt_LOG ipt_limit ipt_REJECT ipt_state for i in $MODULES; do /sbin/modprobe $MODULES done Bước 3: nguyên tắc đặt luật là "drop trước, accept sau" Đây là nguyên tắc mà bạn nên tuân theo. Đầu tiên hãy đóng hết các cổng, sau đó mở dần cách cổng cần thiết. Cách này tránh cho bạn gặp sai sót trong khi đặt luật cho Iptables. iptables -P INPUT DROP thả packet trước iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT giữ các kết nối hiện tại và chấp nhận các kết nối có liên quan iptables -A INPUT -i lo -s 127.0.0.1 -j ACCEPT chấp nhận các gói vào looback từ IP 127.0.0.1 iptables -A INPUT -i lo -s 1.2.3.4 -j ACCEPT và 1.2.3.4 BANNED_IP="10.0.0.0/8 192.168.0.0/16 172.16.0.0/12 224.0.0.0/4 240.0.0.0/5" for i in $BANNED_IP; do iptables -A INPUT -i eth0 -s $i -j DROP thả các gói dữ liệu đến từ các IP nằm trong danh sách cấm BANNER_IP done Bước 4: lọc ICMP vào và chặn ngập lụt PING LOG của Iptables sẽ được ghi vào file /var/log/firewal.log. Bạn phải sửa lại cấu hình cho SYSLOG như sau: # vi /etc/syslog.conf kern.=debug /var/log/firewall.log # /etc/rc.d/init.d/syslogd restart Đối với các gói ICMP đến, chúng ta sẽ đẩy qua chain CHECK_PINGFLOOD để kiểm tra xem hiện tại đang bị ngập lụt PING hay không, sau đó mới cho phép gói vào. Nếu đang bị ngập lụt PING, môđun LOG sẽ tiến hành ghi nhật kí ở mức giới hạn --limit $LOG_LIMIT và --limit-burst $LOG_LIMIT_BURST, các gói PING ngập lụt sẽ bị thả hết. LOG_LEVEL="debug" LOG_LIMIT=3/m LOG_LIMIT_BURST=1 PING_LIMIT=500/s PING_LIMIT_BURST=100 iptables -A CHECK_PINGFLOOD -m limit --limit $PING_LIMIT --limit-burst $PING_LIMIT_BURST -j RETURN iptables -A CHECK_PINGFLOOD -m limit --limit $LOG_LIMIT --limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=PINGFLOOD:warning a=DROP " iptables -A CHECK_PINGFLOOD -j DROP iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -j CHECK_PINGFLOOD iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -j ACCEPT Bước 5: reject quét cổng TCP và UDP Ở đây bạn tạo sẵn chain reject quét cổng, chúng ta sẽ đẩy vào chain INPUT sau. Đối với gói TCP, chúng ta reject bằng gói TCP với cờ SYN=1 còn đối với gói UDP, chúng ta sẽ reject bằng gói ICMP `port-unreachable` Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 21 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương iptables-N REJECT_PORTSCAN iptables-A REJECT_PORTSCAN -p tcp -m limit --limit $LOG_LIMIT --limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=PORTSCAN:tcp a=REJECT " iptables-A REJECT_PORTSCAN -p udp -m limit --limit $LOG_LIMIT --limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=PORTSCAN:udp a=REJECT " iptables-A REJECT_PORTSCAN -p tcp -j REJECT --reject-with tcp-reset iptables-A REJECT_PORTSCAN -p udp -j REJECT --reject-with icmp-port-unreachable Bước 6: phát hiện quét cổng bằng Nmap iptables-N DETECT_NMAP iptables-A DETECT_NMAP -p tcp --tcp-flags ALL FIN,URG,PSH -m limit --limit $LOG_LIMIT --limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=NMAP:XMAS a=DROP " iptables-A DETECT_NMAP -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -m limit --limit $LOG_LIMIT --limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=NMAP:XMAS-PSH a=DROP " iptables-A DETECT_NMAP -p tcp --tcp-flags ALL ALL -m limit --limit $LOG_LIMIT --limit- burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=NMAP:XMAS- ALL a=DROP " iptables-A DETECT_NMAP -p tcp --tcp-flags ALL FIN -m limit --limit $LOG_LIMIT --limit- burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=NMAP:FIN a=DROP " iptables-A DETECT_NMAP -p tcp --tcp-flags SYN,RST SYN,RST -m limit --limit $LOG_LIMIT --limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=NMAP:SYN-RST a=DROP " iptables-A DETECT_NMAP -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit --limit $LOG_LIMIT --limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=NMAP:SYN-FIN a=DROP " iptables-A DETECT_NMAP -p tcp --tcp-flags ALL NONE -m limit --limit $LOG_LIMIT -- limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=NMAP:NULL a=DROP " iptables-A DETECT_NMAP -j DROP iptables-A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j DETECT_NMAP Đối với các gói TCP đến eth0 mở kết nối nhưng không đặt SYN=1 chúng ta sẽ chuyển sang chain DETECT_NMAP. Đây là những gói không hợp lệ và hầu như là quét cổng bằng nmap hoặc kênh ngầm. Chain DETECT_NMAP sẽ phát hiện ra hầu hết các kiểu quét của Nmap và tiến hành ghi nhật kí ở mức --limit $LOG_LIMIT và --limit-burst $LOG_LIMIT_BURST. Ví dụ để kiểm tra quét XMAS, bạn dùng tùy chọn --tcp-flags ALL FIN,URG,PSH nghĩa là 3 cờ FIN, URG và PSH được bật, các cờ khác đều bị tắt. Các gói qua chain DETECT_NMAP sau đó sẽ bị DROP hết. Bước 7: chặn ngập lụt SYN Gói mở TCP với cờ SYN được set 1 là hợp lệ nhưng không ngoại trừ khả năng là các gói SYN dùng để ngập lụt. Vì vậy, ở dây bạn đẩy các gói SYN còn lại qua chain CHECK_SYNFLOOD để kiểm tra ngập lụt SYN như sau: iptables-N CHECK_SYNFLOOD iptables-A CHECK_SYNFLOOD -m limit --limit $SYN_LIMIT --limit-burst $SYN_LIMIT_BURST -j RETURN iptables-A CHECK_SYNFLOOD -m limit --limit $LOG_LIMIT --limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=SYNFLOOD:warning a=DROP " iptables-A CHECK_SYNFLOOD -j DROP iptables-A INPUT -i eth0 -p tcp --syn -j CHECK_SYNFLOOD Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 22 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương Bước 8: giới hạn truy cập SSH cho admin SSH_IP="1.1.1.1" iptables -N SSH_ACCEPT iptables -A SSH_ACCEPT -m state --state NEW -j LOG --log-level $LOG_LEVEL --log- prefix "fp=SSH:admin a=ACCEPT " iptables -A SSH_ACCEPT -j ACCEPT iptables -N SSH_DENIED iptables -A SSH_DENIED -m limit --limit $LOG_LIMIT --limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=SSH:attempt a=REJECT " iptables -A SSH_DENIED -p tcp -j REJECT --reject-with tcp-reset for i in $SSH_IP; do iptables -A INPUT -i eth0 -p tcp -s $i --dport 22 -j SSH_ACCEPT done iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -j SSH_DENIED Bước 9: giới hạn FTP cho web-master FTP_IP="2.2.2.2" iptables -N FTP_ACCEPT iptables -A FTP_ACCEPT -m state --state NEW -j LOG --log-level $LOG_LEVEL --log- prefix "fp=FTP:webmaster a=ACCEPT " iptables -A FTP_ACCEPT -j ACCEPT iptables -N FTP_DENIED iptables -A FTP_DENIED -m limit --limit $LOG_LIMIT --limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=FTP:attempt a=REJECT " iptables -A FTP_DENIED -p tcp -j REJECT --reject-with tcp-reset for i in $FTP_IP; do iptables -A INPUT -i eth0 -p tcp -s $i --dport 21 -j FTP_ACCEPT done iptables -A INPUT -i eth0 -p tcp --dport 21 -m state --state NEW -j FTP_DENIED Bước 10: lọc TCP vào iptables -N TCP_INCOMING iptables -A TCP_INCOMING -p tcp --dport 80 -j ACCEPT iptables -A TCP_INCOMING -p tcp -j REJECT_PORTSCAN iptables -A INPUT -i eth0 -p tcp -j TCP_INCOMING Bước 11: lọc UDP vào và chặn ngập lụt UDP iptables -N CHECK_UDPFLOOD iptables -A CHECK_UDPFLOOD -m limit --limit $UDP_LIMIT --limit-burst $UDP_LIMIT_BURST -j RETURN iptables -A CHECK_UDPFLOOD -m limit --limit $LOG_LIMIT --limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=UDPFLOOD:warning a=DROP " iptables -A CHECK_UDPFLOOD -j DROP iptables -A INPUT -i eth0 -p udp -j CHECK_UDPFLOOD iptables -N UDP_INCOMING iptables -A UDP_INCOMING -p udp --dport 53 -j ACCEPT iptables -A UDP_INCOMING -p udp -j REJECT_PORTSCAN iptables -A INPUT -i eth0 -p udp -j UDP_INCOMING Để hạn chế khả năng bị DoS và tăng cường tốc độ cho máy chủ phục vụ web, bạn có thể dùng cách tải cân bằng (load-balacing) như sau: Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 23 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương Cách 1: chạy nhiều máy chủ phục vụ web trên các địa chỉ IP Internet khác nhau. Ví dụ, ngoài máy chủ phục vụ web hiện tại 1.2.3.4, bạn có thể đầu tư thêm các máy chủ phục vụ web mới 1.2.3.2, 1.2.3.3, 1.2.3.4, 1.2.3.5. Điểm yếu của cách này là tốn nhiều địa chỉ IP Internet. Cách 2: đặt các máy chủ phục vụ web trong một mạng DMZ. Cách này tiết kiệm được nhiều địa chỉ IP nhưng bù lại bạn gateway Iptables 1.2.3.4 - 192.168.0.254 có thể load nặng hơn trước và yêu cầu bạn đầu tư tiền cho đường truyền mạng từ gateway ra Internet. Bạn dùng DNAT trên gateway 1.2.3.4 để chuyển tiếp các gói dữ liệu từ client đến một trong các máy chủ phục vụ web trong mạng DMZ hoặc mạng LAN như sau: # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to- destination 192.168.0.1-192.168.0.4 IV. Xây dựng hệ thống mạng Linux Hướng dẫn cài đặt Linux 1.Tạo đĩa boot và tiến trinh boot Điều đầu tiên cần làm là tạo một đĩa mềm cài đặt cũng được hiểu như đĩa khởi động . Nếu máy tính của bạn có hỗ trợ boot trực tiếp từ CD ROM thì bạn có thể đi tiếp dến bước hai ,còn không bạn có thể boot từ đĩa mềm ,bằng cách tạo ra nó như sau : Bước 1: Trước khi tạo đĩa boot , đĩa CD-ROM Red Hat Linux vào trong ổ CD trên máy tính của bạn đang chạy hệ thống windows . Mở Command Prompt dưới windows . C:\d: D:\ cd \ dosutils D:\ cd \ dosutils> rawrite Enter disk image source file name :..\images \boot .img Enter target diskette drive : a: Please insert a formatted diskette into A drive; nad press Enter D:\dosutils> Chương trình rawrite.exe hỏi tên tập tin của disk image (ảnh đĩa):Gỏ vào boot.img và đưa đĩa mềm vào đĩa A .Sau đó sẽ hỏi đĩa nào sẽ được ghi vào ,gõ vàp a: bạn dã hoàn thành bước này và bạn có một đĩa mềm với tên là “ Red Hat boot disk” Bước 2 : Đưa đĩa boot vào trong đĩa A trên muốn cài đặt Red Hat Linux và khởi động máy ,sau đó làm các bước sau : Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 24 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương x Chọn ngôn ngữ . x Chọn kiểu bàn phím x Chọn kiểu chuột . Các cách cài đặt và phương pháp của chúng Red Hat Linux 6.1 và 6.2 có 4 lớp càu đặt khác nhau là; GNOME Workstation KDE Workstation Server Custom Cả 3 cách cài đặt trên đều cho bạn sự lựa chọn đơn giản của tiến trình cài đặt , ở đó máy tính tự động làm hết mọi thứ và bạn mất đi đáng kể tính linh hoạt trong việc cấu hình mà chúng ta không nên bỏ qua và sẽ đề cập chi tiết trong những bước tiếp theo . Vì lý do trên mà chúng ta nên cài đặt custom .Cách này cho phép bạn chọn những dịch vụ nào sẽ được thêm vào và làm thế ào để phân hoạch hệ thống . Cài đặt đĩa (Disk setup) Chúng ta giả sữ bạn đang cài đặc server Linux mới trên một ổ đĩa mới không có hệ điều nào được cìa đặt trước đó .Một chiến lược phân hoạch tốt là tạo từng partion riêng lẻ cho mỗi hệ thống tập tin chính .Việc này làm tăng khả năng bảo mật và ngăn chận tấn công hoặc khai thác của những chương trình SUID. Bước 1: Để đạt hiệu quả cao , ổn định và an toàn bạn nên tạo các partition như những partition được liệt kê dưới đây trên máy tính của bạn .Chúng tôi cũng giả sử rằng thực tế bạn ổ cứng từ 3.2 GB trở lên để phân hoạch và dĩ nhiên bạn chọn kích thước partition tuỳ theo nhu cầu cần. Những partition bạn phải tạo trên hệ thống của bạn : /boot 5MB Tất cả các kernel images thì được lưu giử ở đây . /usr 512MB Partition này cần phải lớn trước khi tất cả các chương trình ở dạng binary được cài đặt ở đây . /home 1146MB Cân đối số người sử dụng bạn có ý định tạo ra trên máy này.Ví dụ 10MB/người như vậy với 114 người cần 1140MB. /chroot 256MB Nếu bạn không muốn cài đặt trong môi trường không tự do chẳng hạn như DNS tức alf môi trường chỉ có root mới có quyền thực thi . /cache 256MB Đây là partition lưu trữ của proxy server(VD Squid) /var 256MB Chứa đựng những tập tin thay đổi khi hệ thống chạy bình thường (VD các tập tin log) 128MB Đây là Swap partition được coi như bộ nhớ ảo của hệ thống ,bạn nên chia kích thước của partition này lớn hơn hoặc bằng dung lượng Ram hiện có trên máy của bạn /tmp 256MB Partition chứa những tập tin tạm thời / 256MB Root partition của chúng ta . Chúng ta có thể tạo nên hai partition đặc biệt là ”/chroot” và “/cache”, partition /chroot có thể được sử dụng cho DNS server , Apache server và những chương trình khác theo dạng như DNS và Apache .Partition /cache có thể được sử dụng cho Squid proxy server .Nếu bạn không có ý định cài đặt Squid proxy server thì bạn không cần tạo partition /cache. Đặt /tmp và /home trên các partition riêng biệt thì rất hay và có tính chất bắt buột nếu người sử dụng cío shel truy cập tới server (sự bảo vệ chống lại những Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 25 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương chương trình SUID) ,ngăn chặn chương trình này vào những partition riêng lẻ và ngăn cản người sử dụng làm suy yếu hoạt động của bất kỳ hệ thống nào trên server. Đặt /var và /usr trên các partition riêng lẻ cũng là một ý rất hay vì cách ly partition /var sẽ làm partition root của bạn không bị tràn đầy . Trong cấu hình partition chúng ta sẽ dành riêng 256MB đĩa trống cho những chương trình chuyển đổi root (chrooted program) giống Apache,DNS và những chương trình khác .Việc này cần thiết vì những tập tài liệu gốc ,những tập tin nhị phân ,những chương trình liên quan tới Apache sẽ được cìa đặt trong partition này nếu bạn có ý định chạy Web server Apache trong vùng riêng biệt đó . Nếu bạn không có ý định cài đặt và sử dụng Apache trên server của bạn ,có thể giảm bớt kích thước của partition này xuống khoảng 10MB và chỉ sử dụng cho DNS là dịch vụ luôn cần trong môi trường chroot vì lý do bảo mật. Các kích thước tối thiểu của các partition / 35MB /boot 5MB /chroot 10MB /home 100MB /tmp 30MB /usr 232MB /var 25MB /swap 50MB Disk Druid Disk Druid là chương trình sử dụng để phân chia đĩa cho bạn. Chọn Add để thêm một partition mới Edit để hiệu chỉnh một partition ,Delete để xoá một partition và Reset để xác lập partition về trạng thái ban đầu .Khi bạn thêm một partiton mới ,một cửa sổ sẽ xuất hiện trên màn hình và công việc của bạn là chọn những thông số cho partition đó .Sự khác nhau của các thông số đó là : Mount Point:vị trí trong hệ thống tập tin bạn muốn mount partition mới của bạn tới . Size (Megs) :kích thước của partition mới tính trên megabytes. Partiton Type: có hai là Linux native dùng cho Linux filesystem và Swap dùng cho Linux Swap Partiton . Nếu bạn có đĩa cứng loại SCSI thì tên thiết bị là /dev/sda và nếu bạn có đĩa cứng kiểu IDE thì tên sẽ là /dev/hda .Nếu bạn cần hệ thống có hiệu quả và độ ổn định thì SCSI là sự lựa chọn tốt nhất . Partition Swap được sử dụng để hổ trợ bộ nhớ ảo .Nếu máy tính của bạn có 16 MB Ram hoặc ít hơn thì bạn phải tạo một partition swap ,ngay cả khi bạn có bộ nhớ lớn thì bạn cũng nên tạo partition Swap .Kích thước tối thiểu của partition swap nên bằng hoặc lớn hơn dung lượng Ram có trên máy tính của bạn .Kích thước lớn nhất có thể sử dụng cho partition swap là 1GB cho nên nếu bạn tạo một partition swap lớn hơn 1GB thì phần còn lại trở nên vô ích Sau khi tạo các partition trên hard disk hoàn thành ,bạn sẽ thấy thông tin partition trên màn hình giống như bảng liệt kê dưới đây : Mount Point Device Requested Actual Type /boot sda1 5 MB 5M Linux Native /usr sda5 512MB 512MB Linux Native /home sda6 1146MB 1146MB Linux Native Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 26 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương /chroot sda7 256MB 256M Linux Native /cache sda8 256MB 256M Linux Native /var sda9 256Mb 256M Linux Native sda10 128MB 128M Linux Native /tmp sda11 256MB 256M Linux Native / sda12 256MB 256M Linux Native Drive Geom[C/H/S] Total(M) Free(M) Used(M) Used(%) Sda [3079/64/32] 3079M 1M 3078M 99% Chú ý:Chúng ta đang sử dụng một đĩa cứng SCSI bởi vì hai kí tự đầu tiên của thiết bị là “sd” Bây giờ chúng ta đang phân chia và chọn mount point cho các thư mục của bạn ,chọn “ Next “để tiếp tục .Sau khi các partition được tạo ,chương trình cài đặt sẽ hỏi bạn chọn partition để định dạng (format) .Chọn partition bạn muốn format và chọn vào ô “ Check for bad blocks during format ) và nhấn “ Next”.Chương trình sẽ format các partition và làm chúng có hiệu lực khi Linux sử dụng chúng . Trên màn hình kế tiếp bạn sẽ thấy sự cấu hình LILO , ở đó bạn chọn cài đặt LILO trên boot record: Master Boot Record (MBR) hoặc First Sector of Boot Partition Trong trường hợp Linux là hệ điều hành (OS) duy nhất trên máy tính của bạn ,bạn nên chọn “ Master Boot Record”. Kế đó bạn cần cấu hình mạng và giờ trên máy của bạn .Sau khi hoàn thành việc cấu hình giờ ,bạn cần phải đặt mật khẩu (password0 cho root và cấu hình việc kiểm tra tính xác thực trên server máy của bạn . Khi cấu hình Authetication đừng quên chọn : .Enable MD5 passwords .Enable Shadow 2.Sự lựa chọn những package(gói dữ kiệu ) riêng lẻ Sau khi các partition đã định hình và được chọn đẻ format , bạn chuẩn bị chọn những gói dữ liệu cho tíên trình cài đặt . Mặt định Linux là một hệ điều hành rất mạnh có khả năng thực thi nhiều dịch vụ hữu ích .Tuy nhiên có nhiều dịch vụ không cần thiết thì không đưa vào vì có thể tạo ra những lỗ hỗng trong việc bảo mật hệ thống . Một cách lý tưởng là cần cài đặt từng dịch vụ mạng trên máy phục vụ chuyên biệt. Theo mặt định ,nhiều hệ điều hành Linux được cấu hình để cung ứng một dịch vụ và ứng dụng rộng hơn những yêu câu cung cấp một dịch vụ mạng riêng biệt ,do vậy cần cấu hình server để loại bỏ những dịch vụ mạng không cần thiết .Chỉ đưa ra những dịch vụ chủ yếu trên máy chủ riêng biệt . Có thể tăng khả năng bảo mật trong server theo một vài phương pháp sau:  Những server khác không thể sử dụng để tấn công máy chủ và làm hư hại và loại bỏ những dịch vụ như mong muốn.  Những người khác nhau có thể quản lý những server khác nhau .Bằng cách cô lập các service,mỗi máy chủ và service có thể riêng lẻ một người quản trị ,bạn có thể giảm đến mức tối thiểu khả năng xung đột giữa các quản trị viên .  Máy chủ có thể được cấu hình cho phù hợp hơn với yêu cầu của từng service riêng biệt . Những server khác nhau có thể yêu cầu sự cấu hình phần cứng và Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 27 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương phần mềm khác nhau , và những cấu hình đó có thể dẫn đến những tổn hại không cần thiết hoặc giới hạn service.  Bằng cách giảm bớt những service ,số tập tin log (logfile) và các thư mục ghi cũng được giảm ,vì thế việc xoá bỏ những thông tin không cần thiết trở nên dễ dàng hơn . Một tiến trình cài đặt chính xác của Linux Server chính là bước đầu tiên cho việc ổn định ,bảo vệ hệ thống của bạn .Trước hết bạn phải chọn những thành phần ( compoment) hệ thống nào bạn muốn cài đặt.Chọn những compoment và sau đó bạn có thể tiếp tục chọn và không chọn mỗi gói dữ liệu riêng lẻ của mỗi thành phần bằng cách chọn option ( Select inđiviual packages ) trên màn hình setup Red Hat. Khi cấu hình một Linux server chúng ta không cần thiết phải cài đặt một chương trình giao tiếp đồ hoạ ( Xfree86 ) trên máy tính .Việc giảm bớt giao tiếp đồ hoạ ( graphical interface) có ý nghĩa lớn trong việc tăng các process ,tăng khả năng xử lý của CPU ,bộ nhớ , giảm sự nguy hiểm trong bảo mật và giảm bớt một vài bất tiện khác .Giao tiếp đồ hoạ ( Graphical interface) thường chỉ được sử dụng trên các trạm làm việc (workstation). Chọn nhứng gói dữ liệu dưới đây cho tiến trình cài đặt của bạn : . Network Wordstation . Network Management Workstation . Utilities Sau khi chọn những thành phần bạn muốn cài đặt bạn vẫn có thể chọn và không chọn các gói dữ liệu . Chú ý: Việc chọn tuỳ chọn ( Select inđiviual package) rất quan trọng trước khi tiếp tục khả năng chọn và không chọn các gói dữ liệu Lựa chọn các gói dữ liệu riêng lẻ ( Inđiviual package selection) Trong phần chỉ dẫn cài đặt dưới tôi đưa ra những nhóm gói dữ liệu đã có trong Linux , chọn một nhóm dữ liệu nào đó để xem xét. Ngoài mục đích hướng dẫn cài đặt , trong chương trình này tôi cúng có ý đưa vài vấn đề bảo mật và tối ưu hoá Linux vào trong tiến trình cài đặt .Những thành phần được liệt kê dưới đây cần được loại bỏ từ của sổ chọn gói dữ liệu do vấn đề bảo mật , tối ưu hoá cũng như một vài nguyên nhân khác sẽ được diễn giải dưới đây. Applications/File: git Applications/Internet: finger.ftp,fwhois,ncftp,rsh,rsync,talk, telnet Applications/Publishing: ghostscript,ghostscript-fonts,groff-perl, mpage,pnm2ppa,rhs-printfilters Applications/System: arwatch,bind-utils,rdate,rdist,screen, ucd- snmp-utils Documentation: indexhtml System Enviroment/Base: chkfontpath, yp-tools System Enviroment/Daemons: XFree86-xfs,finger-server,lpr,nfs-utils, pidentd,portmap,rsh-server,rusers,rusers- server,rwall-server,rwho,talk-server, telnet-server,tftp-server,ucd-snmp, ypbind,ypserv System Enviroment/Libraries: Xfree86-libs,libpng User Interface/X: urw-fonts Nếu những chương trình nhày không được cài đạt trên máy server của bạn thì những tin tặc buộc phải sử dụng những chương trình này từ bên ngoài hoặc thử cài đặt trên Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 28 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương máy server của bạn .Trong những trường hợp này bạn có thể tìm ra dấu vết chúng nhờ những chương trình giống như Tripwire . Làm thế nào sử dụng những lệnh RPM Phần này giới thiệu tổng quan về lệnh RPM, cách sử dụng lệnh RPM trên hệ thống Linux của bạn  Cài đặt một gói dữ liệu RPM ,sử dụng lệnh : [root@deep/]# rpm –ivh foo-1.0-2.i386.rpm Dòng lệnh trên có ý nghĩa cài đặt một gói dữ liệu rpm có tên là foo-1.0-2.i386.rpm với các thành phần sau : Tên gói dữ liệu : foo Version : 1.0 Release: 2 Kiến trúc : i386  Loại bỏ một gói dữ liệu : thay chữ in đậm ở trên bằng e.  Nâng cấp (upgrade) : Uvh  Truy vấn (query):q  Trình bày thông tin:qi  Liệt kê những tập tin trong gói dữ liệu : ql  Kiểm tra một RPM signature gói dữ liệu :checksig Lệnh kiểm tra chữ ký PGP của gói dữ liệu được chỉ định để đảo bảo tính toàn vẹn và nguyên gốc của nó .Luôn sử dụng lệnh này đầu tiên trước khi cài đặt gói dữ liệu RPM mới trên hệ thống của bạn . Khởi động và dừng những dịch vụ daemon(starting and stopping daemon service) Chương trình init của linux (cũng được hiểu như khởi tạo việc điều khiển tiến trình) phụ trách việc khởi động tất cả tiến trình bình thường hoặc được uỷ quyền chạy lúc khởi động hệ thống . Những tiến trình này có thể bao gồm APACHE,NETWORK daemon và bất kỳ những tiến trình khác yêu cầu phải chạy khi server bạn khởi động .Mỗi process này có tập tin script trong thư mục “/etc/rc.d/init.d”. Bạn có thể thi hành những script vói những dòng lệnh sau : Ví dụ :  Khởi động httpd Web server bằng tay dưới Linux :[root@deep/]#/etc/rc.d/init.d/httpd start Starting http: [OK]  Dừng httpd Web server bằng tay dưới Linux :[root@deep/]#/etc/rc.d/init.d/httpd stop Shutting down http: [OK]  Khởi động lại httpd Web server bằng tay dưới Linux :[root@deep/]#/etc/rc.d/init.d/httpd restart Shutting down http: [OK] Starting http: [OK] Các phần mềm cần phải loại bỏ sau khi tiến trình cài đặt của server hoàn thành Mặc định một số gói dữ liệu mà hệ thống Red Hat Linux không cho phép bạn chọn để tháo gỡ suốt tiến trình setup . Vì nguyên nhân này bạn phải loại bỏ chúng khi tiến trình cài đặt hoàn thành . Pump kernel-pcmcia-cs kudzu gd mt-st linuxconf raidtools pciutils eject getty_ps gnupg rmt mailcap isapnptools Red Hat-logos Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 29 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương apmd setderial Red Hat-release Sử dụng lệnh RPM như dưới đây dểd tháo dỡ chúng .  lệnh dùng để tháo gỡ phần mềm là : [root@deep]#rpm –e Ở đây là tên của phần mềm bạn muốn tháo gỡ . Một số chương trình daemon như apmd,kudzu,sendmail dều chạy ở lúc khởi động máy ,tốt nhất bạn nên dừng chúng trước khi tháo gỡ ra hệ thống của bạn .  Dừng các process với những lệnh : [root@deep/]# /etc/rc.d/apmd stop [root@deep/]# /etc/rc.d/sendmail stop [root@deep/]# /etc/rc.d/kudzu stop Bây giờ bạn có thể tháo gỡ chúng cùng các gói dữ liệu khác một cách an toàn với lệnh sau: Bước 1: Xoá bỏ những gói dữ liệu được chỉ định . [root@deep /]# rpm –e –nodeps pump mt-st eject mailcap apmd kernel-pcmcia-cs linuxconf getty_ps isapntools setserial kudzu raidtools gnupg Red Hat-logos Red Hat-release gd pciutils mt Bước 2: Xoá bỏ các tập tin Linux.conf-instanlled bằng tay: [root@deep /] # rm –f /ect/conf.linuxconf-instanlled Chương trình hdparm cần cho các IDE hard dík nhưng không cần vho SCSI hard disk bạn phải giữ lai chương trình này ,nhưng nếu không có IDE hard disk thì bạn có thể xoá khỏi hệ thống . [root@deep /]# rpm –e hdparm Những chương trình như kbdconfig,mouseconfig,timeconfig,authconfig,ntsysvvà setuptool theo thứ tự thiết lập loại keyboard ,mouse,time,NIS và shadow password chúng ít khi thay đổi sau khi cài đặt vì thế bạn có thể tháo dỡ chúng khỏi hệ thống ,nếu trong tương lai bạn cần thay đổi keyboard ,mouse,... thì bạn có thể cài đặt chúng từ các gói dữ liệu RPM trên đĩa CD-ROM Red Hat Các phần mềm có phải được cài đặt sau sự cài đặt của server Để có thể tiện biên dịch những chương trình trên server của bạn .bạn phải cài đặt những gói dữ liệu RPM sau . Bước 1: Đầu tiên chúng ta mount ổ đĩa CD-ROM và chuyển RPMS trên CD-ROM Mount CD-ROM drive và chuyển tới thư mục RPMS sử dụng những lệnh sau : [root@deep /]# mount /dev/cdrom /mnt/cdrom/ [root@deep /]# cd /mnt/cdrom/Red Hat/RPMS/ Dưới đây là những gói dữ liệu mà bạn cần biên dịch và cài đặt trên hệ thống Linux : autoconf-2.13-5,noarch.rpm m4-1.4-12.i386.rpm automake-1.4-6.noarch.rpm dev86-0.15.0-2.i386.rpm bison-1.28-2.i386.rpm byacc-1.9-12.i386.rpm cdecl-2.5-10.i386.rpm cpp-1.1.2-30.i386.rpm cproto-4.6-3.i386.rpm ctags-3.4-1.i386.rpm egcs-1.1.2-30.i386.rpm ElectricFence-2.1-3.i386.rpm flex-2.5.4a-9i386,rpm kernel-headers-2.2.15.0.i386.rpm glibc-devel-2.1.3-15.i386.rpm make-3.78.1-4.i386.rpm Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 30 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương path-2.5-10.i386.rpm Bước 2: Cài đặc những phần mềm cần thiết ở trên với một lệnh RPM:  Lệnh RPM để cài đặt tất cả các phần mềm với nhau là: [root@deep RPMS]# rpm –Uvh autoconf-2.13-5.noarch.rpm m4-1.4- 12.i386.rpm automake-1.4-6.noarch.rpm dev86-0.150-2.i386.rpm bison-1.28-2.i386.rpm byacc-1.9-12.i386.rpm cdecl-2.5-10.i386.rpm cpp-1.1.2-30.i386.rpm cproto-4.6-3.i386.rpm ctags-3.4-1.i386.rpm egcs-1.1.2-30.i386.rpm ElectricFence-2.1-3.i386.rpm flex-2.5.4a- 9.i386.rpm egcs-1.1. Bước 3: Bạn phải thoát khỏi console và login trở lại để tất cả các thay đổi có hiệu lực x Thoát khỏi console với lệnh: [root@deep /]# exit Sau khi đã cài đặt và biên dịch tất cả các chương trình bạn cần trên server của bạn sẽ là một ý hay nếu bạn xoá bỏ các tập tin object được tạo ra do biên dịch ,các trình biên dịch ,..., những tập tin mà bạn không còn cần nữa trong hệ thống của bạn.Một trong những lí do là nếu một tên tin tặc xâm phạm server của bạn hẳn không thể biên dịch hoặc thay đổi những chương trình nhị phân .Hơn nữa việc này sẽ giải phóng nhiều khoảng trống và sẽ giúp đỡ việc cải tiến kiểm tra tính toàn vẹn của những tập tin trên server. Khi bạn chạy một server bạn sẽ truyền cho nó một công việc đặt biệt để thực hiện .Bạn sẽ không bao giờ đặt tất cả các service bạn muốn cung cấp trên một máy hoặc bạn sẽ làm chậm tốc độ ( tài nguyên có sẵn được chia bởi một số tiến trình đang chạy trên server ) và làm suy yếu khả năng bảo mật của bạn ( với nhiều service cùng chạy trên cùng một máy ,nếu một tin tặc xâm nhập vào server này hắn có thể tấn công trực tiếp những gì có sẵn trên đó) Có nhiều server khác nhau làm những công việc khác nhau sẽ đơn giản hoá sự trông coi ,quản lý ( bạn biết công việc gì mỗi server sẽ làm ,những service nào có hiệu lực ,port nào thì được mở cho những client truy cập và port nào thì đóng ,bạn cũng sẽ biết những gì bạn cần thấy trong các log file...) và đặt cho bạn sự điều khiển tính linh hoạt trên mỗi server ( server chuyên dành cho mail , web,database,backup....) 3.Những chương trình đựơc cài đặt trên server của bạn: Bước 1: Do chúng ta chọn tối ưu hoá việc cài đặt hệ thống Linux của chúng ta , đây là danh sách của tất cả các chương trình cài đặt mà bạn sẽ có sau khi hoàn tất việc cài đặt Linux .Danh sách này phải so khớp một cách chính xác với nội dung tập tin instal.log trong thư mục /tmp. Đừng quên cài đặt tất cả các chương trình được liệt kê trong “ Các phần mềm phải được cài đặt của server “để có thể biên dịch đúng cách trên server của bạn . Bước 2: Sau khi chúng ta tất cả phần mềm cần tháo bỏ sau tiến trình cài đặt của server và sau khi thêm những gói dữ liệu RPM cần thiết để có thể biên dịch chương trình những chương trình trên server của chúng ta .Chúng ta kiểm tra lại danh sách của tất cả các chương trình RPM đã được cài đặc với lệnh sau :  kiểm tra danh sách tất cả gói dữ liệu được cài đặt trên server sử dụng lệnh : [root@deep /] # rpm –qa >intalled_rpm Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 31 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương Tham số “-qa” sẽ truy vấn tất cả các gói dữ liệu RPM được cài đặt trên hệ thống và ký tự đặt biệt “>” sẽ ghi lại tất cả những gì xuất ra trên màn hình vào tập tin intalled_rpm Bước 2 này yêu cầu chúng ta chắc chắn không quên loại bỏ những gói dữ liệu RPM không cần thiết và thêm vào những gói dữ liệu quan trọng ,những gói này cho phép bạn biên dịch chương trình trên hệ thống .Nếu kết quả giống như tập tin dưới đây thì ta có thể yên tâm với server Linux mới này. Nội dung của tập tin intaled_rpm phải giống dưới đây: setup-2.1.8-1 findutils-4.1-34 flex-2.5.4a-9 filesytem-1.3.5-1 gawk-3.0.4-2 ncomprocess-4.2.4-15 basesystem-6.0-4 patch-2.5-10 net-tools.54-4 idconfig-1.9.5-16 gdbm-1.8.0-3 newt-0.50.8-2 gbilc-2.1.3-15 bison-1.2.8-2 passwd-0.64.1-1 shadow-utils-19990827-10 glib-1.2.6-3 perl-5.00503-10 mktemp-1.5-2 gmp-2.0.2-13 popt-1.5-0.48 termpcap-10.2.7-9 autoconf-2.13-5 procmail-3.14-2 libtermcap-2.2.8-20 gbm-1.18.1-7 procps-2.0.6-5 bash-1.14.7-22 groff-1.15-8 psmisc-19-2 MAKEDEV-2.5.2-1 gzip-1.2.4a-2 quota-2.00pre3-2 SysVinit-2.5.2-1 inetd-0.16-4 gdb-4.18-11 anacron-2.1-6 initscripts-5.00-1 readline-2.2.2-6 chkconfig-1.1.2-1 ipchains-1.3.9-5 make-3.78.1-4 ............................................................................................................... ............................................................................................................... etcskel-2.3-1 mount-2.10f-1 glibc-devel-2.1.3-15 file-3.28-2 4.Định màu trên terminal của bạn Đặt một vài màu trên terminal của bạn có thể giúp cho bạn phân biệt các thư mục ,file ,thiết bị ,các liên kết và các tập tin thực thi (executable file ).Quan điểm của tôi là những màu sẽ giúp giảm bớt những lỗi va sự định hướng nhanh trong hệ thống . Đây là một vấn đề quan trọng và cần thiết chỉ cho Red Hat Linux 6.1 và những version cũ hơn ,kể từ Red Hat Linux 6.2 đặc trưng này luôn có bởi mặc định Hiệu chỉnh tập tin /etc/profile và thêm vào những dòng sau: #Enable Colour Is eval‟dircolors /etc/DIR_COLORS-b„ export LS_OPTION=‟-s –F –T 0 –color=yes‟ Hiệu chỉnh tập tin /etc/bashrc và thêm dòng : alias Is=‟Is –color=auto‟ Sau đó logout va login lại . Đến lúc này ,biến môi trường COLORS mới được thiết đặt và hệ thống sẽ chấp nhận điều này Xin nhắc lại đặc trưng này chỉ cần cho Red Hat Linux 6.1và cũ hơn Cập nhật phần mềm mới nhất Chúng ta nên giữ và cập nhật tất cả các phần mềm (đặc biệt là phần mềm mạng) với những version mới nhất .Chúng ta nên kiểm tra những trang đính chính ở .Những trang này có lẽ là tài nguyên tốt nhất vì đã sũa chữa gần 90% những vấn đề chung với Red Hat. Thêm nữa các giải pháp về sữa chữa các lỗ hổng bảo mật cũng sẽ được đưa lên sau 24 giờ Red Hat được thông báo ,bạn nên luôn kiểm tra web site này. Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 32 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương Phụ lục Các phần mền bảo mật Linux sXid Các tập tin SUID/SGID có thể trở thành một mối nguy cho vấn đề bảo mật và an toàn của hệ thống . Để giảm các rủi ro này ,trước đây chúng ta đã remove các bit „s‟ từ các chương trình được sở bởi root mà sẽ không yêu cầu nhiều quyền sử dụng ,nhưng tương lai các tập tin tồn tại khác có thể cài đặt với „s‟ bit được bật lên khi không có sự thông báo của bạn .sXid là một chương trình theo dỏi hệ thống suid/sgid được thiết kế chạy từ cron trên một nguyên lý cơ bản . Cơ bản là nó theo dõi bất kỳ sự thay đổi nào trong các thư mục và các tập tin s[ug]id của bạn .Nếu có bất kỳ một điều gì mới trong các thư mục hay tập tin ,các thư mục và tập tin này sẽ thay đổi bit hoặc các mode khác sau đó sẽ tự độnng thực hiện việc tìm kiếm tất cả suid/sgid trên máy server của bạn và thông báo về chúng cho bạn . Linux Logcheck Một công việc quan trọng trong thế giới bảo mật và an toàn là phải kiểm tra thường xuyên các tập tin xuất ra các kết quả theo dõi hệ thống (log file). Thông thường các hoạt động hằng ngày của người quản trị hệ thống không cho phép anh ta co thời gian để thực hiện những công việc này và có thể mang đến nhiều vấn đề . Giải thích tính trưu tượng của logcheck: Kiểm tra theo dõi và ghi nhận các sự kiện xãy ra thì rất quan trọng ! Đó là những người quản trị của hệ thống nhận biết được các sự kiện này do vậy có thể ngăn chặn các vấn đề chắc chắn xãy ra nếu bạn có một hệ thống kết nối với internet .Thật không may cho hầu hết logfile là nó không có ai kiểm tra vá log đó ,mà nó thường được kiểm tra khi có sự kiện nào đó xãy ra . Điều này logcheck sẽ giúp đỡ cho bạn Linux PortSentry Bức tường lủa (firewal) giúp đỡ chúng ta bảo vệ mạng khỏi những xâm nhập bất hợp pháp từ bên ngoài .Với firewal chúng ta có thể chọn những ports nào chúng ta muốn mở và những port nào chúng sẽ đóng.Thông tin trên được giữ một cách bí mật bởi những người chịu trách nhiệm đến firewal.Tuyệt đối không người nào từ bên ngoài biết thông tin này , tuy nhiên các hackers (tintặc ) cũng như các spammers biết một vài cách tấn công bạn ,họ có thể sử dụng một chương trình đặc biệt để quét tất cả các ports trên server của bạn nhặt thông tin quí giá này (ports nào mở ,ports nào đóng ) Như được giải thích trong lời giới thiệu của phần PortSentry Một chương trình quét port là một dấu hiệu của một vấn đề lớn đang đến với bạn .Nó thường là tiền thân cho một sự tấn công và là một bộ phận nguy hiểm trong việc bảo vệ hữu hiệu tài nguyên thông tin của bạn .PortSentry là một chương trình được thiết kế để phát hiện ra và phản hồi tới các port quét nhằm chồng lại một host đích trong thời gian chúng ta thực hiện quét port và có một số tuỳ chọn để phát hiện ra các port quét .Khi nó tìm thấy một port quét nó có thể phản ứng lại những cách sau:  Một logfile lưu các sự việc xảy qua thông qua syslog( )  Tên host mục tiêu tự động được bỏ vào trong tập tin “/etc/hosts.deny” cho những trình bao bọc TCP  Host nội bộ tự động cấu hình lại để hướng tất cả các lưu thông tới host mục tiêu trỏ tới một host không hoạt động ( deal host ) làm hệ thống mục tiêu biến mất Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 33 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương  Local host tự động cấu hình lại để loại bỏ tất cả các gói thông tin từ host mục tiêu thông qua bộ lọc local host Mục đích của PortSentry là để giúp người quản trị mạng có được công cụ khảo sát kỹ lưỡng hệ thống của mình Linux OpenSSH Clien/Server Như được minh hoạ trong chương 2 ,”Sự cài đặt Linux Server”, rất nhiều dịch vụ mạng được đưa vào ,nhưng không có hạn chế các dịch vụ như rsh ,rlogin, hoặc rexec không bị xâm nhập với kiểu mà các tin tặc thường dùng như nghe trộm điện tử.Như một hệ quả ,bất kỳ ai ,người mà đã truy cập tới bất kỳ máy tính nào đã được kết nối vào mạng đều có thể lắng nghe trên đường truyền giao tiếp của họ và lấy về mật khẩu của bạn ,và cũng như việc lấy bất kỳ thông tin riêng tư nào khác thông qua đường mạng ở dạng văn bản .Hiện tại Telnet là chương trình rất cần thiết cho công việc quản trị hằng ngày ,nhưng nó không an toàn khi nó truyền mật khẩu của bạn ở dạng văn bản ( plain text ) thông qua mạng và cho phép bất kỳ trình lắng nghe nào ( listener) ,theo cách này tin tặc sử dụng tài khoản của bạn đẻ làm bất kỳ công việc phá hoại nào mà hắn ta muốn . Để giải quyết vấn đề này chúng tìm ta một cách khác ,hoặc một chương trình để thay thế nó .Thật may mắn OpenSSH là một dịch vụ thật sự vững chắc và bảo mật có thể thay thế cho cách cũ ,các chương trình login từ xa không an toàn và cổ xưa chẳng hạn như telnet , rlogin, rsh,rdist hay rcp. Thông qua tập tin README chính thức của OpenSSH : Ssh ( Secure Shel ) là một chương trình để log vào một máy tính khác thông qua một hệ thống hệ thống mạng , để thi hành các lệnh trong một máy tính ở xa ,và để chuyển các tập tin từ một máy này tới một máy khác .Nó cung cấp tính năng xác nhận hợp lệ “ authentication” và bảo mật sự trao đổi thông tin qua các kênh truyền dẫn không an toàn .Nó cũng được dự trù để thay thế cho các chương trình rlgoin ,rsh và rdist. Trong việc cấu hình ,chúng ta phải cấu hình OpenSSH hỗ trợ tcp-wrappers ( inetd super server) để cải tiến việc bảo mật cho chương trình bảo mật sẵn có và luôn tránh việc phải chạy chương trình daemon của nó theo kiểu background trên máy server .Theo cách này ,chương trình sẽ chỉ chạy khi máy khách ( client ) kết nối đến và sẽ tái thiết lập lại chúng thông qua trình daemon TCP-WRAPPERS cho việc xác minh tính đúng đắn và cho phép trước khi được phép kết nối tới máy server .OpenSSHthì miễn phí , một sự thay thế và cải tiến của SSH1 với tất cả các cản trở của các giả thuật sáng tạo được công nhận bị xoá bỏ ( và trở thành các thư viện được mở rộng ra bên ngoài ), tất cả các lỗi được nhận biết đã được sữa chữa , các đặc trưng mới được giới thiệu và rất nhiều trình dọn dẹp rác ( clean-up) khác . Điều được khuyên là bạn dùng phiên bản SSH ( miễn phí và các lỗi đã được sửa) thay cho bản SSH1 ( miễn phí ,còn lỗi và lỗi thời ) hay SSH2 mà có nguồn gốc là được miễn phí nhưng hiện nay đã trở thành một phiên bản thương mại . Đối với tất cả mọi người mà dùng SSH2 như công Datafelows ,chúng tôi sẽ cung cấp trong quyển sách này cả hai phiên bản ,và bắt đầu với OpenSSH ,và xem nó như là một chương trình SSh mới mà mọi ngươiì sẽ phải chuyển sang sử dụng nó trong tương lai. Linux Tripwire 2.2.1 Một tiến trình cài đặc Red Hat Linux Server tiêu biểu xử lý khoảng 30.400 tập tin .Vào thời điểm bận rộn nhất của chúng ,các nhà quản trị hệ thống không thể kiểm tra tính toàn vẹn của tất cả các tập tin ,và nếu một kẻ tấn công nào đó truy cập máy server của bạn ,thì họ có thể cài đặt hay hiệu chỉnh các tập tin mà bạn không de4ẽ nhận biết những điều này .Do khả năng của sự cố trên mà một số các chương trình được tạo ra để đáp ứng loại vấn đề này . Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 34 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương Tripwire làm việc ở tầng cơ bản nhất ,bảo vệ các máy server và các máy trạm làm việc mà chúng được cấu thành mạng hợp nhất .Tripwite làm việc bằng cách trước tiên là quét một máy túnh và tạo một cơ sở dữ liệu của các tập tin của hệ thống ,một dạng số hoá “snapshot “ của hệ thống trong hệ thống bảo mật đã biết .Người sử dụng có thể cấu hình Tripwire một cách rất chính xác ,chỉ rõ tập tin và thư mục sở hưu riêng cho mỗi máy để theo dõi ,hay tạo một dạng mâux chuẩn mà nó có thể sử dụng trên tất cả các máy trong mạng . Một khi cơ sở dữ liệu tạo ra ,một người quản trị hệ thống có thể dùng Triwire để kiểm tra toàn vẹn của hệ thống ở bất kỳ thời điểm nào .Bằng cách quét một hệ thống hiện hành và so sánh thông tin với dữ liệu lưu trữ trong cơ sở dữ liệu ,Triwire phát hiện và báo cáo bất kỳ việc thêm vào hay xoá bớt ,hay thay đổi tới hệ thống bên ngoài các ranh giới bên ngoài được chỉ định . Nếu việc thay đổi là hợp lệ thì quản trị hệ thống có thể cập nhật cơ sở dữ liệu biên với thông tin mới . Nếu các thay đổi cố tình làm hại được tìm thấy ,thì người quản trị hệ thống sẽ biết ngay các phần nào của các thành phần của mạng đã bị ảnh hưởng . Phiên bản Tripwire này là một sản phẩm có các phần được cải tiến đáng kể so với phiên bản Tripwire trước đó . Server Linux DNS và BIND Một khi chúng ta đã cài đặt tất cả phần mềm bảo mật cần thiết trên Linux server , đây là thời điểm để cải tiến và điều chỉnh phần mạng ( netword ) của server của chúng ta . DNS là một trong những dịch vụ quan trọng nhất cho sự trao đổi thông tin trên mạng IP ,và vì lí do này , tát cả các máy Linux client sẽ được cài đặt những chức năng lưu giữ (caching) ở một mức độ tối thiểu nào đó .Việc cài đặt một caching server cho các máy client nội bộ sẽ làm giảm bớt tải trên các máy primary server . Mọt Caching chỉ rõ tên máy chủ sẽ tìm kiếm trả lời cho những tên ghi nhớ và phần đáp án này để khi nào chúng ta cần , nó đáp ứng ngay không cần mất nhiều thời gian vô ích Vì những nguyên nhân bảo mật , điều rất quan trọng là DNS không tồn tại sẵn giữa các máy trên mạng và máy bên ngoài . Để tăng tính năng an toàn hơn , đơn giản dùng các địa chỉ IP kết nối với những máy bên ngoài từ bên trong mạng và ngược lại Trong cấu hình cà cài đặt ,chúng ta sẽ chạy chương trình BIND/DNS với user không phải root và trong một môi trường chrooted. Chúng tôi sẽ cung cấp cho bạn ba cấu hình khác nhau : một cái chỉ đơn giản lưu tên máy (client ) , cái thứ hai la cho slave (secondary server) và cái thứ ba là cho master name server ( primary server ). Cấu hình thứ nhất simple caching name server sẽ được dùng cho máy chủ của bạn mà không hoạt động như master hoặc slave name server , cấu hình của slave và master sẽ được dùng cho máy chủ của bạn mà hoạt động như master và slave name server .Thường thường ,cấu hình sẽ bao gồm : một cái sẽ hoạt động như master , cái khác như slave và cái còn lại như simple caching client server Đề tài: An toàn và bảo mật trên hệ điều hành Linux Page 35 GVHD:Nguyễn Tấn Khôi Sinh viên thực hiện: Lê Thị Huyền Trang Nguyễn Huy Chương Mục lục I. An toàn cho các giao dịch trên mạng.....................2 II. Bảo mật Linux Server............................................7 III. Firewall.................................................................9 IV. Xây dựng hệ thống mạng Linux........................23 Phụ lục Các phần mền bảo mật...........................31

Các file đính kèm theo tài liệu này:

  • pdfAn toàn và bảo mật trên hệ điều hành Linux.pdf