Đề 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. Firewalls 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.Firewall 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 Firewall này không khôn khéo. Firwall 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.Nó cho phép người quản trị may firewall cho yêu cầu của mỗi loại ứng dụng. Caci 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. 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 firewall tại tất cả 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 thi hành. o Firewall 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ế 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 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 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 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 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, 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ừ 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ảng đều được ghi vào tập tin .bash_history( nếu sd bashshell) 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ừ 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 gõ 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, 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à 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 đã gõ khi người dùng thoát khỏi shell. 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 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 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à 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 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 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, 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 firewalls, 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 : http://www.insecure.org .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 . 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. 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ề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. 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