Cơ chế bảo vệ an toàn dữ liệu trên hệ điều hành Linux

MỤC LỤC MỤC LỤC 1 DANH MỤC HÌNH VẼ 4 DANH MỤC CÁC BẢNG 5 LỜI MỞ ĐẦU 6 CHƯƠNG I: TỔNG QUAN HỆ ĐIỀU HÀNH LINUX 8 1.1. Về lịch sử 8 1.2. Những ưu điểm kỹ thuật nổi bật của Linux 9 1.3. Một vài nhược điểm của Linux 11 1.4. Một số tập lệnh cơ bản trong linux 13 CHƯƠNG II: CÁCH THỨC TỔ CHỨC, CƠ CHẾ BẢO VỆ DỮ LIỆU TRONG LINUX 15 2.1. Sơ bộ kiến trúc nội tại của hệ thống file 15 2.2. Ý nghĩa các thư mục hệ thống trong Linux 20 2.3. Linux và các tệp tin quản lý 22 2.4. Ý nghĩa các tệp tin con trong etc và một số thư mục 24 2.5. Hệ thống ghi nhật ký, cơ chế journaling file system (JFS), journaling block device (JBD). 32 2.5.1. Lịch sử hệ thống file nhật ký của Linux 33 2.5.2. Cơ chế JFS (journaling file system) 34 2.5.3. Cơ chế JBD (journaling block device) 35 2.6. Kiểu hệ thống file trợ giúp bằng cơ chế journaling file system 37 2.6.1. Hệ thống file Reiserfs 38 2.6.2. Hệ thống file XFS 38 2.6.3. Hệ thống File JFS 39 2.6.4. Ext3 39 CHƯƠNG III: CƠ CHẾ QUẢN LÝ TÀI NGUYÊN PHÂN QUYỀN 41 3.1. Quyền truy nhập thư mục và file 41 3.2. Chế độ truy cập 44 3.2.1. Cách xác lập tương đối 46 3.2.2. Cách xác lập tuyệt đối 47 3.3. Một số lệnh thay đổi chế độ truy cập 49 3.3.1. Thay đổi quyền sở hữu file với lệnh chown 49 3.3.2. Thay đổi quyền sở hữu nhóm với lệnh chgrp 50 3.3.3. Thay đổi quyền truy cập file với lệnh chmod 50 CHƯƠNG IV: BẢO MẬT TRÊN LINUX 52 4.1. Xác định và ngắt các dịch vụ không cần thiết 52 4.1.1. Tìm kiếm các dịch vụ đang sử dụng 52 4.1.2. Quyết định ngắt các dịch vụ nào 52 4.2. An toàn cho các giao dịch trên mạng 54 4.3. Nguyên tắc bảo vệ hệ thống mạng 55 4.3.1. Hoạch định hệ thống bảo vệ mạng 55 4.3.2. Mô hình bảo mật 56 4.3.3. Nâng cao mức độ bảo mật 56 4.4. Kiến trúc bảo mật của hệ thống mạng 57 4.4.1. Sự an toàn vật lý. 59 4.4.2. An toàn hệ thống. 59 4.4.3. An toàn mạng 60 4.4.4. Các ứng dụng an toàn. 60 4.4.5. Chu vi an toàn. 61 4.4.6. Firewall mạng 62 4.5. Bảo mật Linux Server 62 4.5.1. Không cho phép sử dụng tài khoản root từ console 62 4.5.2. Xoá bớt tài khoản và nhóm đặc biệt 63 4.5.3. Tắt các dịch vụ không sử dụng 63 4.5.4. Không cho “SU” (Substitute) lên root 63 4.5.5. Che dấu file mật khẩu 63 4.5.6. Luôn nâng cấp cho nhân (kernel) Linux 63 4.5.7. Tự động thoát khỏi Shell 64 4.5.8. Không cho phép truy nhập file kịch bản khởi động của Linux 64 4.5.9. Giới hạn việc tự ý ghi nhận thông tin từ shell 64 4.5.10. Tắt các tiến trình SUID/SGID 65 4.6. Linux Firewall và hệ thống phòng chống, kiểm tra hệ thống 65 4.6.1. Dùng công cụ dò tìm để khảo sát hệ thống 67 4.6.2. Phát hiện sự xâm nhập qua mạng 68 4.6.3. Kiểm tra khả năng bị xâm phạm 69 4.6.4. Đối phó khi hệ thống bị tấn công 70 4.6.5. Thiết lập tường lửa Iptables cho Linux 71 4.7. Các phần mềm bảo mật 73 4.7.1. Linux sXid 73 4.7.2. Linux Logcheck 73 4.7.3. Linux PortSentry 74 4.7.4. Linux OpenSSH Clien/Server 74 4.7.5. Linux Tripwire 2.2.1 76 KẾT LUẬN 77 TÀI LIỆU THAM KHẢO 79 DANH MỤC KÝ TỰ VIẾT TẮT 80

doc86 trang | Chia sẻ: lvcdongnoi | Lượt xem: 5675 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Cơ chế bảo vệ an toàn dữ liệu trên hệ điều hành Linux, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
at mà không cần r (rlogin sẽ được liệt kê là login). Nếu cần thiết, sử dụng ssh thay thế. Máy chủ telnet Sử dụng sshd thay thế. Máy chủ ftp  Chỉ sử dụng với các máy chủ ftp chuyên dụng có thể được kiểm tra và bảo mật. Đối với các file trao đổi khác, sử dụng scp hoặc http. BIND (named), gói DNS Server Dịch vụ này được yêu cầu cho các hoạt động hệ thống như là tên các máy chủ cho miền. Chúng nên được hạn chế hay đặt trong tường lửa khi sử dụng qua Internet. Nhân tố chuyển thư: sendmail, exim, postfix, qmail Những dịch vụ này là không cần thiết cho các máy tính độc lập mà sẽ sử dụng một dịch vụ ISP’s POP nhận trực tiếp thư từ các máy chủ Internet trên mạng LAN, chỉ cho phép các dịch vụ này sau tường lửa, truy nhập các chính sách đúng chỗ. Bảng 6: Các dịch vụ tiêu biểu không nên cho phép hoạt động trên Internet Ghi chú trong bảng thật sự là rlogin, rsh và cần phải được ngắt. Chẳng hạn, netstat thông báo rằng các dịch vụ login và shell đang chạy. Telnet và ftp được liệt kê như những máy chủ chấp nhận các kết nối đầu vào tới máy. Bởi vì đây là một hệ thống tách rời, cần phải tắt các dịch vụ này. Luôn luôn sử dụng máy khách ftp hay telnet khi cần tải file xuống hay telnet qua Internet. Lệnh netstat cũng thông báo rằng máy chủ http đang chạy, được yêu cầu bởi một số phân phối truy nhập tài liệu trực tuyến. Nếu định giữ các dịch vụ này chạy thì sẽ cần phải kiểm tra rằng xem có thể tiếp cận từ bên ngoài hệ thống được hay không. Một máy chủ in cũng đang hoạt động. Máy chủ in có thể giữ cổng mở nếu việc in ấn được thực hiện qua mạng. Một khi máy in được nối vật lý tới máy, sẽ an toàn khi hoạt động. Cũng sẽ cần giữ hệ thống cửa sổ trong suốt mạng mà tập hợp và phân phối người dùng được nhập vào các chương trình máy khách. Nếu hệ thống được sử dụng như người dùng chuyên dụng, thì sẽ không cần thiết nên tắt nó đi. 4.1.3. Tắt các dịch vụ không cần thiết Một khi đó quyết định những dịch vụ nào không cần thiết, có thể bắt đầu tắt chúng đi. Sẽ là một ý tưởng tốt khi tắt một dịch vụ và chạy hệ thống mà không có dịch vụ để xem liệu có ổn hay không. Tiếp tục, dừng dịch vụ khác và lặp lại quá trình cho đến khi tắt hết tất cả các dịch vụ không cần thiết. Người dùng đăng nhập có khả năng ngắt một dịch vụ bằng cách nhập tên đường dẫn tới mã dịch vụ theo tùy chọn Stop. Chẳng hạn, để tắt nfs, nhập: #/etc/init.d/nfsstop Chú ý phiên bản Red Hat của Linux có thể sử dụng đường dẫn: /etc/rc.d/init.d. Mặc dù đó tắt một dịch vụ, nhưng có thể nó không được tắt ngay lập tức. Chẳng hạn, một dịch vụ có thể được cho phép khởi động lại hệ thống. Vì thế để chắc chắn hãy chạy netstat sau lần khởi động lại và sau mỗi lần nâng cấp hệ thống hay cài đặt mới. 4.2. 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 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, 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. 4.3. Nguyên tắc bảo vệ hệ thống mạng 4.3.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 trọng 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 họa 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 nhất 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ụ. Không nên để họ thất vọng khi cố gắng truy cập các file của chính mình. Bốn hiểm họa chính đối với sự an ninh của mạng là: - Truy nhập mạng bất hợp pháp - Sự can thiệp bằng phương tiện điện tử - Kẻ trộm - Tai họa vô tình hoặc có chủ ý * Mức độ bảo mật: tuỳ thuộc vào dạng môi trường trong đó mạng đang hoạt động * 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, ghi đúng tên đăng nhập và password hợp lệ. * Đà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. * 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 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 người đó. 4.3.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: * 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. * 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. 4.3.3. Nâng cao mức độ bảo mật * 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 đó thu 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 đó. * Máy tính không đĩa: không có ổ đĩa cứng và ổ mềm. Có thể thi hành mọi việc 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 muốn khởi động. Server trả lời bằng cách 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. * 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. * 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 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 nghiệ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 4.4. Kiến trúc bảo mật của hệ thống mạng Hình 4. 1: Mô hình các mức an toàn thông tin trên mạng Không có điều gì là hoàn hảo trong việc an toàn hệ thống mạng như Linux. Đượ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ẽ chỉ để tập trung vào sự an toàn. Hệ điều hành mã nguồn mở là những 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. Thật 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, cũng không phải là một phần mềm, 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 bắt đầu từ nhân 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 để xem xét đó là: - Sự an toàn vật lý. - An toàn hệ thống. - An toàn mạng. - An toàn các ứng dụng. - Sự truy nhập từ xa và việc chấp nhận. 4.4.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ụ xâm nhập. 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. 4.4.2. An toàn hệ thống. An toàn hệ thống bao gồm việc chọn phân phối hệ điều hành Linux, xây dựng kernel hướng tới sự an toàn tài khoản người dùng, cho phép truy cập thư mục file, 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ầu như chính sách được phác thảo trong cơ chế an toàn. Việc xây dựng một kernel sẵn có có hai lợi thế: - Những lựa chọn 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ó 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. - Sự an toàn các tài khoản 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ản không hoạt động, vô hiệu hoá việc truy cập đến NFS lên root, hạn chế những đăng nhập vào trong môi trường điều khiể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. 4.4.3. An toàn mạng Ở đây liên quan đến việc 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. 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ết của an toàn mạng. Đ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 họ. Cách tiếp cận việc kiểm định mạng hiệu quả nhất sẽ trong vai trò của kẻ phá hoại. Có những công cụ kiểm định cục bộ và host . 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 công nhận đầu tiên năm 1995. SAINT mạnh hơn SATAN, trong khi SARA là một modul package, 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, đượ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 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 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ó tính khả dụng cho những hồi đáp. 4.4.4. Các ứng dụng an toàn. Một vài chế độ chuẩn trong việc phân phối Linux hiện thời là những ứng dụng đầy đủ mà 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 cơ quan cho phép (MTA) 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 SSh hỗ trợ cho Apache sẽ cũng tươ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 với SLL nên các lệnh quản lý Samba được bảo vệ. 4.4.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. Firewalls là thành phần chính của miền chu vi an toàn, là phần mềm 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. Firewall 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 firewall tại các lớp của mạng. Firewall mạng được biết như các packet-filtering gateway, nơi mà chúng kiểm tra những gói tin IP vào giao diện firewall 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 Firewall này không khôn khéo. Firewall giao vận làm việc bởi khảo sát TCP hoặc UDP. Firewall yêu cầu sự can thiệp người dùng sửa đổi những thủ tục. Firewall ứng dụng làm cho các quyết định truy nhập ở tầng ứng dụng. Cho phép người quản trị firewall cho yêu cầu của mỗi loại ứng dụng. Các bất tiện trong firewall là người quản trị cần định hình triển khai theo dõi, và bảo trì quá trình firewall cho mỗi ứng dụng mà cần truy nhập điều khiển. Luôn thực hiện tốt bảo mật bởi việc sử dụng kết hợp một firewall tại ba tầng để tránh sự tổn thương. Firewall 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 thực hiện. 4.4.6. Firewall mạng Có vài lợi thế trong việc sử dụng Linux như nền tảng firewall. 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, đánh giá giữa các lý do tại sao. Lọc gói là lợi ích hiệu quả và cách bảo báo trong 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ế . 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. Hiện nay có những thiết kế firewall 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 như khu vực được phi quân sự hoá (DMZ). 4.5. Bảo mật Linux Server Một số biện pháp bảo mật linux server 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 (nhất là người quản trị- root) không đặt sự bảo mật lên hàng đầu. Sau đây là một số kinh nghiệm về bảo mật trên hệ điều hành Red Hat Linux. 4.5.1. Không cho phép sử dụng tài khoản root từ console Sau khi cài đặt, tài khoản 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 file /etc/security và bỏ đi những console không muốn root truy cập. 4.5.2. Xoá bớt tài khoản và nhóm đặc biệt Người quản trị nên xoá bỏ tất cả các tài khoản 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, gopher…). Thực hiện việc xoá bỏ tài khoản bằng lệnh usedel và xoá bỏ nhóm với lệnh groupdel. 4.5.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.5.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ản 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 file /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 4.5.5. Che dấu file mật khẩu Giai đoạn đầu, mật khẩu toàn bộ tài khoản được lưu trong file /etc/password, file mà mọi người dùng đều có quyền đọc. Đây là khe 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 riêng mật khẩu mã hoá vào file /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. 4.5.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 hacker. 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. 4.5.7. Tự động thoát khỏi Shell 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 shell 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 xuấ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 shell 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, nên vào file /ect/ profile để luôn tác dụng trong mọi phiên làm việc. 4.5.8. Không cho phép truy nhập file kịch bản khởi động của Linux Khi hệ điều hành Linux khởi động, các file 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ị nên hạn chế quyền truy xuất tới các file này và chỉ cho phép tài khoản root xử lý bằng lệnh sau: #chmod –R 700/etc/rc.d/init.d* 4.5.9. Giới hạn việc tự ý ghi nhận thông tin từ shell Theo mặc định, tất cả lệnh được thực thi tại dấu nhắc shell của tài khoản đều được ghi vào file .bash_history ( nếu sd bashshell) trong thư mục cá nhân của từng tài khoản. Đ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 ghi 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ừ shell 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 ghi tại dấu nhắc shell 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, 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. Thực hiện việc này bằng cách thay đổi giá trị hai biến nêu trên trong file /etc/profile như sau: HISTFILESIZE = 0 HISTSIZE = xx Trong đó xx là số lệnh mà shell 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 đó ghi khi người dùng thoát khỏi shell. 4.5.10. Tắt 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 file /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. Tuy thế, khả năng 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 shell đượ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 shell vừa tạo vì mọi lệnh thực hiện trong shell 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 file có thuộc tính SUID/SGID “ ngoài luồng”, có thể loại bỏ các thuộc tình này bằng lệnh: #chmod a-s. 4.6. Linux Firewall và hệ thống phòng chống, kiểm tra hệ thống 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à firewall là một thành phần cốt yếu cho việc đảm bảo an ninh. Một firewall 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 firewall cơ bản là: Proxy/Application firewall và filtering gateway firewall. Hầu hết các hệ thống firewall 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 firewall, 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 firewall 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 Firewalling 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/firewall dễ dàng. Một thành phần quan trọng khác của 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, 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ị lỗi. - 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ởi qua 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 để xử lý. - Return: Terminate the rule list. Hoàn thành danh sách các quy tắc. 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. Ngoài ra, có thể dùng các sản phẩm firewall thương mại như Check Point FireWall -1, Phoenix Adaptive Firewall, Gateway Guardian, XSentry Firewall, Raptor, ... hay rất nhiều các phiên bản miễn phí, mã nguồn mở cho Linux như T.Rex Firewall, Dante, SINUS, TIS Firewall Toolkit, ... 4.6.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ể vào hệ thống của 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"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. 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 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 . 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. 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, thâm nhập firewalls, và cung cấp những tin quấy rầy, không tin cậy đang chạy trên host. 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 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. 4.6.2. Phát hiện sự xâm nhập qua mạng Nếu hệ thống có kết nối vào internet, 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ó 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), để ngăn ngừa, phát hiện và đối phó với chúng nếu không muốn hệ thống 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 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 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ư. 4.6.3. Kiểm tra khả năng bị xâm phạm 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 xảy ra, 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à 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. 4.6.4. Đối phó khi hệ thống 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 liên tục bị bận. Nếu phát hiện ra hệ thống đang bị tấn công. Sau đây là những bước cơ bản để giải quyết: * Tập hợp 1 nhóm để đối phó với sự tấn công: 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. * 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. * 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. Liên hệ nhà cung cấp dịch vụ Internet của để thông báo về cuộc tấn công. Có thể nhà cung cấp dịch vụ Internet của sẽ chặn đứng được cuộc tấn công. 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. * 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 bảo rằng kẻ xâm nhập không thể chặn và lấy được thông tin. * Ghi lại tất cả các hoạt động (chẳng hạn như gọi điện thoại, thay đổi file, ...). * Theo dõi các hệ thống quan trọng trong quá 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ú ý (chẳng hạn một tấn công DoS với dụng ý làm lạc hướng, không quan tâm đến sự chú ý 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). 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, ...) Những bước nên làm để giảm rủi ro và đối phó với sự tấn công trong tương lai: * Liên hệ nhà chức trách để báo cáo về vụ tấn công. * Xây dựng và trao quyền cho nhóm đối phó với sự tấn công. * Thi hành kiểm tra an ninh và đánh giá mức độ rủi ro của hệ thống * 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. * Nâng cao khả năng về an toàn máy tính. Các bước kiểm tra để giúp bảo đảm tính hiệu quả của hệ thống an ninh * 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. * 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. * 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). * Kiểm tra thường xuyên 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. * 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, ... * Kiểm tra định kỳ để xác định trạng thái hiện tại của hệ thống an ninh. 4.6.5. Thiết lập tường lửa Iptables cho Linux 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. Iptables rules sẽ cài đặt để cho phép các kết nối shh. 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 dùng. Đây là mức bổ sung cho việc phòng thủ của server trong trường hợp Firewall được thỏa 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. 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. Hình 4. 2: 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 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ắt 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. Hình 4. 3: Cấu trúc bảng của Iptables Để hạn chế khả năng bị DoS và tăng cường tốc độ cho máy chủ phục vụ web có thể dùng cách tải cân bằng (load-balacing) như sau: 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. Cách 2: đặt các máy chủ phục vụ web trong một mạng DMZ. 4.7. Các phần mềm bảo mật 4.7.1. Linux sXid Các thuộc tính 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 đã xóa các bit từ các chương trình được sở hữu 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 file tồn tại khác có thể cài đặt với bit được bật lên khi không có sự thông báo của người quản trị. 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à theo dõi bất kỳ sự thay đổi nào trong các thư mục và các file SUID và SGID. Nếu có bất kỳ một điều gì mới trong các thư mục hay file, các thư mục và file này sẽ thay đổi bit hoặc các mode khác sau đó sẽ tự động thực hiện việc tìm kiếm tất cả suid/sgid trên máy server và thông báo về chúng. 4.7.2. 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 file 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 người dùng có 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 chất 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 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à không có ai kiểm tra var log đó, mà thường được kiểm tra khi có sự kiện nào đó xảy ra . Điều này logcheck sẽ giúp đỡ. 4.7.3. Linux PortSentry Bức tường lửa (firewall) giúp đỡ 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 firewall có thể chọn những ports nào 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 firewall. 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 cũng như các spammers biết một vài cách tấn công, 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 và gom những thông tin quí giá này (ports nào mở, ports nào đóng). Như được giải thích trong phần đầu 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. 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. 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 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 tìm thấy một port quét 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 file “/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. * 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. 4.7.4. Linux OpenSSH Clien/Server “Việc 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 hacker thường dùng như nghe trộm điện tử. Bất kỳ ai đó 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, 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 không an toàn khi truyền mật khẩu của ở dạng văn bản (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 hacker sử dụng tài khoản để làm bất kỳ công việc phá hoại nào mà người đó muốn. Để giải quyết vấn đề này nên tìm ra một cách khác, hoặc một chương trình để thay thế. 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. Ssh ( Secure Shell ) 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 file từ một máy này tới một máy khác. 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, 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, 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 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. OpenSSH thì 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à 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ũng 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 Datafellows, và bắt đầu với OpenSSH, và xem 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 trong tương lai. 4.7.5. 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 file. Vào thời điểm 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 file, và nếu một kẻ tấn công nào đó truy cập máy server, thì họ có thể cài đặt hay hiệu chỉnh các file mà không dễ 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 . 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 file 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ỉ trừ file 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ẫu chuẩn mà 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, 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 đó. KẾT LUẬN Khi làm và nghiên cứu đồ án tốt nghiệp với đề tài “Nghiên cứu cơ chế bảo vệ an toàn dữ liệu trên hệ điều hành Linux” em đã tự trang bị cho mình một số kiến thức và thực tế trên hành trang của một kỹ sư trước khi ra trường, điều này mang lại rất nhiều thuận lợi cho việc tiếp xúc và trải nghiệm với thực tế về sau. Sau một thời gian nghiên cứu tìm hiểu, đồ án của đã thực hiện được một số việc như sau: - Tìm hiểu về hệ điều hành mã nguồn mở Linux, ý nghĩa cấu trúc file thư mục, file nhật ký. - Tìm hiểu nghiên cứu cơ chế bảo vệ an toàn dữ liệu trên hệ điều hành Linux và cách thức cơ chế được áp dụng vào hệ điều hành Linux. Gồm các cơ chế tương đối nổi bật là Journal và cơ chế quản lý tài nguyên phân quyền đối với các file thư mục. - Chỉ ra những mối nguy cơ tiềm ẩn trên hệ thống mạng internet đối với hệ điều hành mã nguồn mở Linux, đồng thời đưa ra các biện pháp phòng chống khi bị tấn công, các biện pháp khắc phục khi hệ thống bị tấn công. - Xây dựng phát triển đồng thời nghiên cứu các phương thức bảo mật cho hệ thống Linux server. Áp dụng sự nghiên cứu các công cụ tấn công (phần mềm …) từ đó cải thiện được hệ thống an ninh hệ điều hành Linux. - So sánh hệ điều hành Linux với một hệ điều hành đang thống trị hiện nay la Windows của microsoft, qua đó thấy một thực tế về hiện trạng và nhu cầu sử dụng hệ điều hành hiện tại và trong tương lai của các doanh nghiệp, cơ quan và người sử dụng. Tuy nhiên do thời gian làm đồ án có hạn nên vẫn còn một số vấn đề em chưa giải quyết được đó là: - Vẫn chưa thể nêu hết về tất cả các cơ chế an toàn dữ liệu trên hệ điều hành Linux, với 2 cơ chế nổi bật là journal và quản lý phân quyền đối với file thư mục. - Việc xây dựng một ứng dụng thực tế một server Linux vẫn chưa có, xây dựng hoàn toàn dựa trên máy ảo. - Do kiến thức hạn chế bài viết còn chưa sâu sắc. Đồ án tốt nghiệp của em có sự mở rộng về tính chất bảo mật khi áp dụng cơ chế bảo vệ an toàn dữ liệu trên hệ điều hành Linux, vấn đề bảo mật cũng được đưa ra khá chi tiết. Nhận thấy rằng hệ điều hành Linux có rất nhiều điều đáng quan tâm và cần được chú trọng, nên xây dựng một server linux dưới mô hình mạng được áp dụng vào thực tế. Với mô hình được xây dựng. Hình 4. 4: Mô hình xây dựng hệ thống mạng Linux cho cơ quan Trong đó Server được sử dụng hệ điều hành Linux các client là các máy trạm thuộc các phòng ban của cơ quan tổ chức. Máy chủ Linux sử dụng cơ chế an toàn dữ liệu và sử dụng NFS (Network file system) để chia sẻ dữ liệu qua mạng với các client. Hệ thống tập tin mạng (NFS, Network File System) là một hệ thống giúp mount file system từ một máy vi tính khác qua mạng TCP/IP. Với NFS, một file system nằm trên máy vi tính từ xa cũng được mount tại chỗ, và thoạt trông cũng giống như một file system cho các user. Hình thức này có nhiều lợi ích. Trên hệ thống hiện có một PC giữ vai trò server với dung lượng ổ cứng rất lớn. Ổ cứng máy này chứa tất cả các home directory của tất cả các user. Nếu mount những ổ cứng ấy qua NFS cho tất cả máy trạm khác của hệ thống, các user có thể truy cập home directory của họ từ bất kỳ máy nào. Giờ đã có NFSv4 tuy nhiên NFS có cần phải được cấu hình một các cẩn thận để phục vụ vấn đề bảo mật. TÀI LIỆU THAM KHẢO Website - - - - - - Ebooks * Linux Filesystem Performance Comparison for QLTP (Rajendra Kulkarni, Peter Schay) * Red Hat's New Journaling File System (by Red Hat, Inc.) * Linux Troublesooting (Christopher Negus, Thomas Weeks) * Linux System Administration (O’reilly Media,inc march 1,2007) * The Linux Kernel Hackers' Guide (Michael K.Johnson) * Linux Installation và Getting Started (Matt Welsh) * The Linux Frequently Asked Questions (FAQ) List (Ian Jackson duy trì) DANH MỤC KÝ TỰ VIẾT TẮT kernel Nhân FSCK File system check Kiểm tra tập tin hệ thống I/O Input/Output Thiết bị vào / ra DNS Domain Name Server Hệ thống tên miền NFS Network File System Giao thức truyền tập tin trên mạng VFS Visual file system Hệ thống file ảo JBD Journaling block device Cơ chế ghi nhật ký thiết bị ngăn chặn JFS Journaling File System Cơ chế ghi nhật ký FAT File Allocation Table Bảng cấp phát tập tin NTFS New Technology File System Hệ thống tập tin công nghệ mới EXT3 Third Extented Filesystem Hệ thống file mở rộng 3 ACL Access Control List Danh sách quyền truy cập ACE Access Control Entries Mảng quyền truy cập UID User Identifical Định danh người dùng GID Group Identifical Định danh nhóm SSH Secure Shell Giao thức truy cập từ xa bảo mật DMZ demilitarized zone Khu vực phi quân sự

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

  • docCơ chế bảo vệ an toàn dữ liệu trên hệ điều hành Linux.doc