8/21/09

Phần mềm nguồn mở có an toàn không?

Một trong những lý luận thường gặp nhất của những người chống Linux (nhưng tuyệt đại đa số không hiểu gì về Linux) là Linux không an toàn. Cái cảm giác mơ hồ về một sản phẩm  do một đám người ảo trên mạng tham gia xây dựng, ai cũng có thể đọc được "ruột" của nó dẫn đến cảm giác bất an cũng là điều dễ hiểu.

Để trấn an nỗi lo lắng đó của những người sử dụng bình thường, có thể dùng các lý lẽ sau đây:

  1. Quân đội Mỹ, quân đội Pháp, các tổ chức tài chính hàng đầu: ngân hàng HSBC, Morgan Stanley, thị trường chứng khoán NewYork, các chính phủ G7, các đại công ty thuộc danh sách Fortune 500, v.v.... đều đang dùng Linux và dùng trong những hệ thống có yêu cầu an ninh rất cao (chi tiết xem thêm ở đây).

  2. Trong một cuộc thi hack các hệ điều hành năm 2008, các hệ điều hành Mac Leopard và Windows Vista đều bị hạ. Duy nhất chỉ có Ubuntu Linux trụ vững được.

  3. Khi bạn mua một thiết bị gia dụng đắt tiền (xe máy, điều hòa, v.v...), giữa một thiết bị được mở toang, bày giữa cửa hàng cho ai cũng xem được từng bộ phận bên trong với một thiết bị niêm phong kín, (của cùng các hãng danh tiếng) cái nào đáng tin cậy hơn?

  4. Cách đây ít năm, Microsoft đã có lần bị tố cáo là để cổng hậu (backdoor) trong Windows cho FBI khi cần có thể vào kiểm soát máy tính. Tất nhiên là hãng ra sức thanh minh. Nhưng ngoài việc tin vào Bill Gate, bạn có cách nào kiểm tra được không? Ngược lại, với phần mềm nguồn mở, về nguyên tắc có thể đọc từng dòng mã nguồn để kiểm tra xem có mã độc nào lẫn trong đó không trước khi cho dịch thành mã máy để chạy. Tất nhiên việc này đòi hỏi phải có một đội ngũ chuyên gia trình độ cao mà chỉ ở quy mô chính phủ hoặc các ngành cần an ninh cao như quân đội, công an có thể tổ chức làm được (và nên làm, như Cuba, một nước có tinh thần cảnh giác rất cao hiện đang làm. Việt nam mà chưa làm thì cũng hơi lạ).

  5. Nếu các lý lẽ nói trên vẫn chưa thuyết phục nổi bạn và bạn cho rằng mình cẩn thận hơn chính phủ Anh, công việc của mình quan trọng hơn chỉ huy tác chiến của quân đội Mỹ và những thứ "linh tinh" đã nêu ở mục 1 thì mời bạn chịu khó xem báo cáo sau đây:



Báo cáo về an ninh: Windows so với Linux


Một đánh giá độc lập của  Nicholas Petreley

Posted in Security, 22nd October 2004 07:26 GMT

(Bản báo cáo này khoảng 50 trang, tôi lược dịch một số phần đáng chú ý. Những lập luận thì có thể còn phải bàn, nhưng hệ tiêu chí đánh giá lỗi bảo mật và số lượng, tỷ lệ lỗi thì đáng tin cậy. Nguyên bản xem tại đây - ND)

Tóm tắt


Nhiều công trình đã được thực hiện để xem Linux có thực sự an toàn hơn Windows hay không. Chúng tôi so sánh Windows và Linux bằng cách tìm hiểu 40 bản vá/thông báo lỗi bảo mật gần đây của Microsoft Windows Server 2003 và Red Hat Enterprise Linux AS v.3 theo các tiêu chí sau:

  1. Mức độ nghiêm trọng của lỗi bảo mật dựa trên các tiêu chí:

    1. Mức độ thiệt hại có thể do lỗi đó gây ra.

    2. Khả năng khai thác lỗi đó dễ hay khó.

    3. Khả năng bộc lộ của hệ thống do lỗi (cần loại truy cập nào để khai thác được lỗi?)



  2. Số lượng lỗi nghiêm trọng.


Kết quả không có gì bất ngờ. Ngay cả theo những tiêu chuẩn chủ quan của Microsoft, 38% lỗi bảo mật của Windows được xem là nghiêm trọng, trong khi đó Red Hat chỉ có 10%. Nếu theo các tiêu chuẩn riêng của chúng tôi, số lỗi nghiêm trọng của Windows chiếm tới 50% tổng số lỗi đã công bố.

Thêm vào đó, chúng tôi đã tìm kiếm trong cơ sở dữ liệu lỗi bảo mật của đội Ứng cứu khẩn cấp máy tính Mỹ ( the United States Computer Emergency Readiness Team- CERT), các dữ liệu ở đó khẳng định kết luận của chúng tôi ở một tầm mức còn lớn hơn. Khi tìm trong cơ sở dữ liệu về lỗi bảo mật của Windows, trong 40 lỗi đầu xếp theo thứ tự giảm dần về mức độ nghiêm trọng thì 39 lỗi thuộc loại trên ngưỡng báo động cao (severe alert) của CERT. Trong khi đó Red Hat Linux chỉ có 3/40 lỗi thuộc loại đó. Nếu tìm chung trong cơ sở dữ liệu Linux, chỉ có 6/40 lỗi đầu vượt ngưỡng nói trên.

Vậy thì tại sao vẫn còn những lời đồn đại rằng Linux không an toàn bằng Windows? Một trong những nguyên nhân là những lời đồn đại đó dựa trên những tiêu chí không đầy đủ và có những lỗ hổng về mặt logic như phân tích dưới đây.

Hóa giải những điều đồn đại


Số lượng ít nên an toàn


Một trong những điều hoang tưởng được lặp lại nhiều nhất về độ an toàn của Windows so với Linux là lập luận rằng Windows có nhiều virus, mã độc và các vụ tấn công an ninh là do các hacker chỉ tập trung vào Windows vì thị phần của nó rất lớn. Linux ít bị hơn vì chiếm thị phần nhỏ, các hacker chưa thèm để ý đến. Và ngụ ý đằng sau lập luận này là Linux và các ứng dụng Linux cũng không an toàn gì hơn Windows và các ứng dụng Windows.

Lý luận này không đứng vững được khi xét đến các phần mềm máy chủ web. Theo một nghiên cứu của hãng NetCrap tháng 9/2004 [1], 68% website chạy trên phần mềm máy chủ web nguồn mở Apache, 21% chạy trên Microsoft IIS (Internet Information Services). Nếu theo lý luận trên, virus, malware nhằm vào Apache và hệ điều hành bên dưới nó phải nhiều hơn, cũng như các cuộc tấn công thành công vào Apache phải nhiều hơn Windows server và IIS.


Tuy nhiên thực tế lại chứng tỏ ngược lại. IIS từ lâu đã là mục tiêu hàng đầu của các loại sâu (worm) và các kiểu tấn công, và nhiều những cuộc tấn công thành công lớn. Sâu Code Red khai thác lỗi tràn bộ đệm của IIS để giành quyền kiểm soát web server đã lan tràn trên 300,000 máy chủ và chỉ dừng lại do bản thân sâu đó được lập trình tự ý ngừng lây nhiễm. Sâu Code Red.A còn lây nhanh hơn và cũng tự ngừng sau ba tuần. Một sâu khác, IISWorm, có tác hại giới hạn chỉ vì người viết nó kém chứ không phải IIS tự bảo vệ tốt.



Sâu cho Apache cũng có, ví dụ Slapper (mặc dù thực ra Slapper khai thác lỗi của OpenSSL, không phải lỗi của Apache). Tuy nhiên, sâu Apache hiếm khi tạo nên thành tựu nổi bật vì tác hại của chúng giới hạn và dễ dàng bị tiêu diệt. Có thể diệt sâu và khôi phục site bị nhiễm chỉ bằng một vài lệnh mà không cần phải reboot máy nhờ vào bản chất module của Linux và Unix.

Có lẽ vì thế mà theo nghiên cứu nói trên của Netcrapt, 47 trong 50 site có thời gian chạy liên tục dài nhất (uptime) chạy trên Apache [2] . Không một site nào trong 50 site trên chạy trên Windows hoặc IIS.

Xem được mã nguồn là dễ tìm ra lỗi để tấn công.


Thành công về an ninh nêu trên của Apache cũng bác bỏ một điều hoang tưởng khác: Phần mềm nguồn mở nguy hiểm hơn phần mềm nguồn đóng vì ai cũng có thể tìm hiểu mã nguồn để tìm ra khe hở tấn công.

Thực tế thì số lượng virus, worm, Trojan, spyware và các loại mã độc khác trên Windows nhiều không đếm xuể (mặc dù mã nguồn của Windows không công khai). Chúng hung hăng tới mức có thể lây nhiễm vào một hệ Windows XP chưa được vá sau 16 phút kết nối Internet, ngắn hơi thời gian cần để tải và cài đặt bản vá [3].

Một ví dụ khác: Apache là phần mềm nguồn mở và thường cũng chạy trên các hệ điều hành nguồn mở, ai cũng đọc được mã nguồn của hai phần mềm đó. Nếu theo lý luận trên, chúng phải bị tấn công nhiều hơn, thời gian uptime ngắn hơn Microsoft Windows và IIS, nhưng thực tế ngược lại như đã nói ở trên. Vậy việc đọc được mã nguồn không mang lại lợi ích gì thêm cho hacker. (Đọc được mã nguồn là một chuyện, có tìm ra khe hở trong đó để tấn công hay không lại là chuyện khác - ND)

Các lý lẽ mơ hồ chỉ dựa trên một tiêu chí


Hai lý lẽ nữa là “Linux có nhiều cảnh báo về lỗi an ninh hơn Windows và vì thế Windows an toàn hơn” và “thời gian trung bình từ lúc phát hiện lỗi đến lúc công bố bản vá của Linux dài hơn của Windows và do đó Windows an toàn hơn”.

Cái lý lẽ sau là bí hiểm nhất vì không hiểu nó dựa vào đâu. Microsoft mất bảy tháng để chữa một trong những lỗi nghiêm trọng nhất (Microsoft Security Bulletin MS04-007 ASN.1 Vulnerability, eEye Digital Security publishes the delay in advisory AD20040210) và có những lỗi Microsoft còn công khai nói họ sẽ không bao giờ chữa.

Thời gian khắc phục lỗi nhanh cũng không phải là một tiêu chí để nói là Windows an toàn hơn Linux. Nếu bạn bị đau tim, bạn muốn vào cấp cứu ở một bệnh viện có thời gian từ lúc vào viện đến lúc xuất viện ngắn nhất hay là đến một bệnh viện có chế độ chăm sóc chu đáo nhất?

Việc lựa chọn phần mềm rõ ràng không chỉ dựa trên một tiêu chí thời gian chữa lỗi ngắn nhất. Ngay số lần cảnh báo lỗi an ninh chung chung cũng vô nghĩa. Phải biết rõ trong đó bao nhiêu lỗi có thể gây hậu quả, trong các hậu quả, bao nhiêu phần trăm là nghiêm trọng? Nên chọn một phần mềm có 100 lỗi nhưng đều nhẹ hoặc chỉ user có quyền đăng nhập mới khai thác được hay chọn một phần mềm chỉ có 1 lỗi nhưng hacker có thể qua Internet chui vào xóa hết dữ liệu?

(Trong phần sau của báo cáo này, tác giả xây dựng một hệ thống các tiêu chí logic, chi tiết để đánh giá mức độ nghiêm trọng của các lỗi bảo mật. Kết quả đánh giá đã trình bày tóm tắt ở phần đầu báo cáo - ND)

So sánh thiết kế của Windows và Linux.


Thiết kế của Windows


Virus, Trojan và các loại mã độc khác thâm nhập được vào Windows vì những nguyên nhân rất thông thường với Windows nhưng xa lạ với Linux:

  1. Windows chỉ gần đây mới chuyển từ thiết kế một người dùng sang thiết kế nhiều người dùng.

  2. Windows được thiết kế theo nguyên tắc đơn khối (monolithic) không phải đa khối (modular) như Linux.

  3. Windows phụ thuộc quá sâu vào mô hình RPC ( Remote Procedure Call).

  4. Windows tập trung vào giao diện đồ họa.


Gần đây Windows mới phát triển từ thiết kế một người dùng (single-user design) sang mô hình đa người dùng (multi-user model)


Thiết kế đầu tiên của Windows là một người dùng (single-user). Vì vậy cả người dùng và phần mềm ứng dụng đều có thể tự do truy cập đến toàn hệ thống, lục lọi mọi chương trình hệ thống hoặc file hệ thống quan trọng. Do đó, virus và các loại mã độc cũng có thể làm vậy vì Windows không cô lập, bảo vệ các chương trình hoặc file hệ thống.

Windows XP là phiên bản Windows đầu tiên có những cố gắng nghiêm chỉnh để cách ly người dùng khỏi hệ thống, mỗi người dùng có các file riêng và quyền truy cập hệ thống hạn chế. Nhưng khi đó, các ứng dụng Windows cũ lại không chạy được vì chúng “quen” được phép lục tung hệ thống. Do đó, Windows XP có một kiểu chạy tương thích (compatibility mode) cho phép các chương trình ứng dụng chạy như thể chạy trên các hệ Windows cũ, có quyền truy cập tự do vào hệ thống. (Và virus cũng có thể làm được vậy - ND)

Như vậy, Windows XP đã là một tiến bộ nhưng vẫn không phải hệ đa người dùng (multi-user) thực sự và do đó vẫn còn các lỗ hổng an ninh của hệ single-user.

Windows Server 2003 là một bước tiến mới về môi trường đa người dùng thật sự nhưng vẫn không thoát khỏi các lỗ hổng an ninh thừa kế từ các đời single-user trước. Vì vậy, Windows server 2003 mặc định phải tắt nhiều tính năng của trình duyệt có nguy cơ về an ninh như ActiveX, scripting,...

(Ở đây có hai vấn đề: a/do mới chuyển sang multi-user nên công nghệ sẽ không hoàn chỉnh, chín muồi được như Linux đã làm từ hàng chục năm nay, b/vẫn phải đảm bảo tương thích với một số ứng dụng cũ nên sẽ tạo lỗ hổng an ninh. Gần đây, Google khi xây dựng hệ Chrome OS đã hứa hẹn là sẽ thiết kế mới hoàn toàn để đảm bảo an ninh. Và chỉ có như vậy mới triệt để -ND)

Windows được thiết kế đơn khối (Monolithic by Design) không phải đa khối (Modular).


Một hệ đơn khối thì các tính năng tích hợp trong một thể thống nhất. Ngược với đơn khối, trong hệ đa khối các tính năng được chia thành các lớp (các module) riêng biệt, mỗi lớp có khả năng truy cập giới hạn đến các lớp khác.

Trong khi một số nhược điểm an ninh của Windows là do thiết kế đơn người dùng như đã nói ở trên, một số nhược điểm khác lại do những quyết định thiết kế cố tình. Microsoft đã loại trình duyệt Nestcape cạnh tranh bằng cách tích hợp trình duyệt Internet Explorer vào hệ điều hành đến mức không thể gỡ ra được. Dùng Help hay Outlook, … đều phải gọi đến IE. Microsoft đã thành công loại các sản phẩm cạnh tranh bằng cách tích hợp ngày càng nhiều các dịch vụ vào hệ điều hành nhưng điều đó cũng tạo nên một con quái vật gồm các dịch vụ phụ thuộc qua lại lẫn nhau chặt chẽ và đó chính là một hệ đơn khối.

Sự phụ thuộc chặt chẽ vào nhau của các dịch vụ tạo ra hai hệ quả xấu.

Thứ nhất, trong một hệ đơn khối, mọi lỗ hổng an ninh của một bộ phận sẽ ảnh hưởng đến tất cả các bộ phận khác phụ thuộc vào nó. Việc tích hợp IE vào hệ điều hành sẽ làm cho một lỗ hổng an ninh của IE sẽ ảnh hường đến hàng loạt ứng dụng khác.

Thứ hai, một hệ đơn khối về bản chất là không ổn định. Khi thiết kế một hệ có quá nhiều quan hệ phụ thuộc lẫn nhau giữa các bộ phận, việc thay đổi một bộ phận có thể gây nên vô số rủi ro, ảnh hưởng dây chuyền đến các bộ phận khác phụ thuộc vào bộ phận bị thay đổi. Một ví dụ điển hình là mỗi lần cập nhật hoặc vá lỗi một bộ phận của Windows thường làm hỏng các bộ phận hoặc ứng dụng khác (nhất là ứng dụng của bên thứ ba).

Windows phụ thuộc quá nhiều vào mô hình RPC.


RPC là chữ viết tắt của Remote Procedure Call (gọi thủ tục từ xa). Một chương trình gửi một message lên mạng để bảo một chương trình khác làm một việc gì đó. Sở dĩ có từ “remote – từ xa” là vì chương trình được gọi có thể nằm trên cùng máy, trên máy khác trong mạng hoặc thậm chí trên Internet.

RPC là một nguy cơ an ninh tiềm ẩn vì nó cho phép một máy khác trong mạng có thể bảo máy của bạn làm một việc gì đó. Windows phụ thuộc vào RPC đến mức mà bạn không thể tắt RPC đi ngay cả khi máy không nối mạng. Một số lỗi an ninh nghiêm trọng của Windows Server 2003 (xem bảng dưới đây) là do khe hở an ninh trong chính chức năng RPC chứ không phải trong chương trình sử dụng RPC. Cách thông thường nhất để khai thác một lỗ hổng RPC là tấn công dịch vụ sử dụng RPC.

Điều quan trọng là RPC không phải lúc nào cũng cần và vì thế rất khó hiểu là tại sao Microsoft lại dựa vào nó một cách bừa bãi đến vậy. Nếu một web site dùng một database server và một web server trên cùng một máy thì database server không cần phải dùng đến RPC để liên lạc với web server (nhưng lại vẫn phải dùng nếu là sản phẩm của Microsoft).

Nhắc đến điều đó vì chính sâu Slammer, một trong những sâu nguy hiểm nhất từng tấn công Internet, khai thác một trong những lỗi RPC của Microsoft. Slammer lây nhanh qua nhiều hệ thống đến nỗi thực tế đã làm tê liệt Internet.

Windows chú trọng vào giao diện đồ họa máy để bàn quen thuộc


Microsoft xem giao diện Windows quen thuộc của máy để bàn là một ưu điểm khi dùng Windows Server 2003.

Vì thế người dùng đăng nhập vào Windows Server với tên người quản trị (admininstrator) và có toàn quyền với hệ thống. Như vậy, khi dùng một chương trình dễ bị lỗi an ninh như IE, toàn server sẽ bị nguy hiểm.

(Trong Linux server thì không như vậy. Xem phần sau)

Thiết kế của Linux


Theo kết quả một cuộc điều tra mùa hè 2004 của Evans Data Linux Developers, 93% nhà lập trình Linux đã gặp dưới hai sự cố khi máy Linux bị lỗi. 87% chỉ gặp 1 sự cố và 78% chưa bao giờ gặp một cuộc xâm nhập nào vào máy Linux. Trong một số ít trường hợp bị xâm nhập, nguyên nhân chủ yếu là do đặt cấu hình an ninh không tốt.

92% số người được hỏi chưa bao giờ gặp một virus, Trojan hoặc các loại mã độc khác trên các máy Linux.

Virus, Trojan và các loại mã độc khác hiếm khi nhiễm được vào một hệ Linux một phần vì các lý do sau:

  1. Linux có thiết kế multi-user lâu đời, được rà soát, bổ xung đầy đủ.

  2. Linux hầu như dựa trên thiết kế đa khối.

  3. Linux không phụ thuộc vào RPC, các dịch vụ thường mặc định được cấu hình không dùng RPC.

  4. Các máy chủ Linux là lý tưởng để quản trị từ xa, không trực tiếp.


Linux có thiết kế multi-user lâu đời, được rà soát, bổ xung đầy đủ.


Ngay từ đầu, Linux xây dựng theo mô hình Unix đã là một hệ multi-user, mỗi user chỉ có quyền truy cập hạn chế, vừa đủ vào hệ thống vào các ứng dụng. Khi một user chạy một ứng dụng, ứng dụng đó chạy theo các quyền hạn chế của user, chỉ ghi vào thư mục riêng của user, không thay đổi các file hệ thống và cả các thư mục của user khác trừ khi người quản trị cho phép.

Điều quan trọng nữa là mọi tính năng, dịch vụ mà Linux cung cấp hầu hết đều dưới dạng các module thư viện (modular libraries). Do đó, khi một trình soạn văn bản cần tô màu một ảnh JPEG, chức năng tô màu sẽ chạy với cùng quyền truy cập như trình soạn văn bản, tức là với quyền của user sử dụng trình soạn văn bản đó. Nếu có một lỗ hổng an ninh trong thủ tục tô màu, hacker khai thác lỗ hổng đó cũng chỉ có quyền như user và do đó hạn chế thiệt hại vì không tác động được vào hệ thống. Đó chính là ưu điểm của thiết kế đa khối.

Do bản chất đa khối của Linux, khi gửi một email có nhiễm virus cho một Linux user, virus đó không thể lan ra toàn bộ máy. Dù trình email client có tồi đến thế nào đi nữa thì virus cũng chỉ có thể nhiễm, làm hỏng thư mục riêng của user. Trình duyệt Linux không hỗ trợ các đối tượng kém an toàn như ActiveX controls, và dù nó có hỗ trợ thì một ActiveX control chứa mã độc cũng chỉ chạy với quyền của user đang dùng trình duyệt, không thể phá hoại hệ thống hoặc các user khác được.

Ngay cả các dịch vụ, như máy chủ web, cũng chạy như một user với quyền truy cập hạn chế. Ví dụ trong bản Linux Debian, máy chủ web Apache chạy với quyền của user www-data. Nếu hacker chiếm được quyền kiểm soát Apache, hacker đó cũng chỉ tác động được đến các file mà user www-data là chủ (owner). Cơ sở dữ liệu MySQL, thường dùng chung với Apache, được chạy với quyền của user mysql. Do đó nếu Apache có lỗ hổng, hacker kiểm soát được Apache cũng không kiểm soát được MySQL vì MySQL do một user khác làm chủ.

Ngoài ra, các user điều khiển các dịch vụ như nói ở trên thường không có quyền truy cập các lệnh. Vì vậy nếu hacker nắm được quyền điều khiển user mysql cũng không thể phát ra các lệnh cho máy chủ Linux vì user mysql không có quyền chạy lệnh.

Ngược hẳn lại các điều nói trên, Windows ban đầu được thiết kế để mọi user và mọi ứng dụng đều có quyền admininstrator với mọi file của toàn bộ hệ thống. Chỉ sau này, Windows mới hạn chế dần quyền của user. Windows Server 2003 đã gần đạt được đến mức đó. Nhưng phương pháp luận của Microsoft để dựng rào cản giữa user và hệ thống vẫn là dựa trên cơ sở thiết kế cũ mà không thiết kế lại một cách cơ bản để hỗ trợ khả năng multi-user và đảm bảo an ninh.

Thiết kế Linux là đa khối, không phải đơn khối


Linux là một hệ điều hành phần lớn theo thiết kế đa khối từ nhân (kernel) đến các ứng dụng. Trong Linux hầu như không có cái gì liên kết chặt với cái khác đến mức không gỡ ra được. Hệ thống Help hoặc trình email không phụ thuộc vào một động cơ trình duyệt (browser engine) duy nhất. Có thể dễ dàng cấu hình trình email dùng động cơ trình duyệt có sẵn hoặc bất kỳ trình duyệt nào khác để xem các thư HTML. Vì vậy một lỗ hổng an ninh trong động cơ trình duyệt sẽ ảnh hưởng rất ít hoặc không ảnh hưởng đến các ứng dụng khác vì có ít hoặc không có ứng dụng nào phụ thuộc vào trình duyệt đó.

Không phải mọi thứ trong Linux đều đa khối. Hai môi trường đồ họa phổ biến nhất GNOME và KDE có thiết kế ít nhiều đơn khối; ít nhất cũng đủ để nếu update một phần của GNOME hoặc KDE có thể có nguy cơ làm hỏng các phần khác. Tuy nhiên, chúng cũng không đơn khối đến độ chỉ cho phép chạy các ứng dụng viết riêng cho chúng. Có thể chạy các ứng dụng GNOME trong KDE và ngược lại.

Nhân Linux dùng các module driver, nhưng về cơ bản nó là nhân đơn khối trong đó các dịch vụ của nhân phụ thuộc lẫn nhau. Tuy nhiên, tác hại của tính đơn khối này cũng được giảm đến mức tối thiểu vì nhân Linux được thiết kế sao cho nhỏ nhất. Linux đi theo triết lý sau: “Nếu một việc có thể làm được bên ngoài nhân, thì nó phải được làm ngoài nhân”.

(Hình như điều này bây giờ đã thay đổi, xem tại đây - ND)

Ngược lại, lỗi driver màn hình là nguyên nhân phổ biến nhất dẫn đến cái-chết-màn-hình-xanh của Windows. Đó là vì Windows tích hợp đồ họa vào nhân, lỗi đồ họa sẽ làm sập cả hệ thống. Trong Linux, trừ một vài trường hợp ngoại lệ như với driver màn hình Nvidia, Linux buộc tất cả các driver card màn hình chạy bên ngoài nhân. Một lỗi của driver có thể làm hỏng môi trường đồ họa nhưng không làm sập cả hệ thống. Chỉ cần khởi động lại môi trường đồ họa mà không phải khởi động lại máy tính.

Linux không bị phụ thuộc vào mô hình RPC (Remote Procedure Call)


Như đã nói ở trên, Windows phụ thuộc nặng vào RPC và cho chạy nó cả khi không cần thiết. Điều đó dẫn tới những nguy cơ an ninh nghiêm trọng.

Phần lớn các chương trình Linux khi cài đặt đều mặc định tắt truy cập mạng. Ví dụ cơ sở dữ liệu MySQL thường được cài sao cho nó không nghe các lệnh từ mạng. Nếu bạn xây dựng một website dùng Apache và MySQL chạy trên cùng một máy thì Apache sẽ liên hệ trực tiếp với MySQL và MySQL sẽ không liên hệ gì với mạng. (Ngược lại Microsoft SQL Server luôn luôn lắng nghe mạng dù có cần hay không). Nếu muốn MySQL nghe các lệnh đến từ mạng thì phải thiết lập điều đó bằng tay, rồi xác định user và máy được phép truy cập đến MySQL.

Ngay cả khi các ứng dụng Linux mặc định sử dụng mạng, chúng cũng thường được cấu hình để chỉ trả lời máy cục bộ, bỏ qua các yêu cầu của các máy khác trong mạng.

Các máy chủ Linux là lý tưởng để quản trị từ xa


Máy chủ Linux thường có thể và nên cài như một hệ “không đầu – headless” (không có màn hình) và quản trị từ xa (truy cập máy chủ từ một máy khác trong mạng, không dùng bàn phím, màn hình nối trực tiếp vào máy chủ - ND). Đó là kiểu cài lý tưởng cho máy chủ vì quản trị từ xa không có những nguy cơ mà quản trị tại chỗ có thể gặp.

Ví dụ, bạn có thể log in vào máy để bàn của bạn như một user thường với quyền hạn hạn chế rồi quản trị máy chủ Linux qua một giao diện quản trị web (Admininstration consol). Ngay cả những lỗi an ninh nguy hiểm nhất của trình duyệt web cũng chỉ ảnh hưởng đến user thường mà bạn đã dùng log in vào máy để bàn của bạn, không ảnh hưởng gì đến máy chủ.

(webmin là một trong những giao diện quản trị web quản trị được khá nhiều thứ trên máy chủ - ND)

Trong các phần tiếp theo, tác giả xây dựng một hệ thống các tiêu chí đánh giá lỗi bảo mật, áp dụng cụ thể vào 40 lỗi được công bố gần thời điểm viết báo cáo và kết quả tìm kiếm trong cơ sở dữ liệu lỗi của CERT. Kết quả tóm tắt đã được nêu ở phần đầu báo cáo.


Chi tiết đọc thêm tại đây.



No comments: