Xem mẫu

  1. Phần 2 TẤN CỒNG VÀ PHÒNG THỦ v íl MÂY TÍNH CHẠY LINUX 1. KHỞI ĐỘNG LINUX TỪ ĐĨA CD Trước đây, nếu muôn sử dụng Linux bạn cần cài hệ điều hành này lên đĩa cứng của máy tính. Nhưng mọi thứ đã thay đổi vì hiện nay xuất hiện vài phiên bản Linux có khả năng chạy trực tiếp từ đĩa CD-ROM, ví dụ như phiên bản Ubuntu Linux mà trong khuôn khổ bài viết này xin tạm gọi là Linux "mì án liền". Tương tự các phiên bản Linux cần cài đặt vào máy tính, Ubuntu Linux cho phép người dùng tải về miễn phí từ Internet tập tin có phần mở rộng là .iso. Sau khi tải về máy tính, bạn dùng tiện ích ghi đĩa như Roxio Easy CD Creator hay Nero để chép tập tin .iso này lên CD-ROM trắng. Với Roxio Easy CD Creator thực hiện thủ tục sau: nhấn Eile.Record CD from CD Image hay Eile.Burn Image (với tiện ích Nero). Khi ghi đĩa xong, bạn có thể sử dụng đĩa CD khởi động Ubuntu này và bắt đầu khám phá thế giới Linux mà không cần trải qua những công đoạn cài đặt đầy khó khăn. Giốhg như thực phẩm chế biến sẵn, Linux "mì ăn liền" được cài sẵn vô số ứng dụng để thoả mãn tốt nhất mọi yêu cầu của nhiều đổi tượng người dùng. Và do được thực thi trực tiếp từ đĩa CD-ROM nên bạn không thể cài đặt thêm 183
  2. ứng dụng mới hay gỡ bỏ ứng dụng không cần thiết, tinh chỉnh cấu hình để hệ thông hoạt động phù hỢp với nhu cầu sử dụng cá nhân như khi dùng Linux được cài đặt trên đĩa cứng. Hơn thế nữa, tốc độ hoạt động của Linux "mì ăn liền" cũng bị hạn chế phần nào do phải dành một phần bộ nhớ RAM để làm vùng nhớ đệm cho hệ điều hành hoạt động. Do vậy, nếu sau khi chạy thử và cảm thấy thích thú vói Linux thì bạn nên "hạ sơn" phiên bản Linux "mì ăn liền" đang sử dụng xuống đĩa cứng của máy. Bạn có thê lựa chọn hai phiên bản Linux như Fedora Core do Red Hat tài trỢ và Open Circulation của Xandros Desktop cần lưu ý rằng phiên bản này chỉ có hỗ trỢ ghi lên dĩa CD (không hỗ trỢ ghi lên DVD) và Xandros là một sản phẩm thương mại nên nhà sản xuất không cung cấp dạng tải về miễn phí. Nếu trước đây đã cài đặt Windows trên đĩa cứng thì cần lưu ý khai báo chính xác trong quá trình cài đặt để tiện ích cài đặt Linux tự động thiết lập chế độ khởi động đôi cho hệ thống (cho phép người dùng khởi động Windows hoặc Linux). Trước khi cài đặt Linux, bạn nên ghi ra giấy các thông số cấu hình hệ thống cần thiết như địa chỉ IP của máy tính, máy chủ DNS, cổng truy cập Internet (gateway). Để có được các thông tin này trong Windows 98/Me, bạn nhấn chuột phải lên biểu tượng Netvvork Neighborhood rồi chọn Properties. Tiếp đến, nhấn đúp chuột vào mục TCP/IP rồi tìm các thẻ IP Address, Gateway và DNS Coníìguration. Với Windows 2000/XP, nhấn chuột phải lên biểu tượng My Netvvork Places rồi chọn Properties. Trong cửa sổ Network Connections, nhấn chuột phải lên biểu tượng kết nối mạng rồi chọn Properties, sau đó tìm và nhấn đúp chuột lên mục Internet Protocol (TCP/IP). Ngoài ra, bạn cũng nên ghi lại tên, thông sô' kỹ thuật của màn hình và card đồ họa của máy tính phòng trường hỢp trình cài đặt Linux không tự động xác định được các thiết bị này. 184
  3. 2. KHẮC PHỤC LỖI TIỆN ÍCH NAUTILUS Tiện ích Nautilus trong phiên bản Ubuntu Linux 5.4 (có tính năng tướng tự như Windows Explorer của Windows) có một nhược điểm là tự động đóng các cửa sổ thư mục khi bạn thực hiện mở một thư mục khác. Để khắc phục tình trạng trên, chọn Applications.Run Application, gõ vào Enter>. Trong cửa sổ cây thư mục bên trái, chọn apps.nautilus.preíerences và đánh dấu tùy chọn no_ubuntu_spatial ở cửa sổ bên phải. Tiếp đến, đóng cửa sô ConLiguration Editor lại (tương tự như Control Panel của Windows) để kết thúc. Từ bây giò, tất cả cửa sổ thư mục sẽ được mở cho đến khi nào bạn ra lệnh đóng. 3. CÀI ĐẶT CÁC ỨNG DỤNG TỪ MÀ NGUỔN TRÊN LINUX Có nhiều bạn khi lần đầu tiên đến với Linux cảm giác sự khó khán và bất tiện của việc cài đặt các ứng dụng trên Linux, đặc biệt là các ứng dụng phải cài đặt từ mã nguồn như xine, openGL... Trên Windows, bạn chỉ cần tải ứng dụng về, giải nén rồi click vào fíle Setup là hoàn tấ t việc cài đặt, nhưng trên Linux đó là một chuyện hoàn toàn khác. Phần viết này sẽ nhằm mục đích hướng dẫn bạn các thao tác cài đặt các phần mềm ứng dụng trên Linux và cung cấp các kiến thức căn bản giúp bạn có thể quản lý hệ thống của riêng mình. Để dễ dàng thì bài viết sẽ gọi các phần mềm trên Linux là các gói (package). Thực tế tên gọi “gói” đúng đắn hơn vì các gói trên Linux có thể không phải là một trình ứng dụng nào đó mà chỉ là các thư viện nền như thư viện đồ họa Gtk+ hoặc OpenGL... Bạn có thể sẽ tự hỏi rằng tại sao các phần mềm trên Linux không tự đóng gói sẵn cho chúng ta rồi khi xuất bạn chỉ cần tải về và cài đặt nó. 185
  4. Vấn đề là các phần mềm viết trên Linux không hẳn chỉ có thể chạy trên Linux mà có thể chạy trên nhiều hệ thống khác nhau trong họ Unix như Solaris, AIX, HP- UX... thậm chí các phần mềm đó có thể chạy trên rất nhiều vi xử lý khác nhau như Intel, Motorola, PPG... Có đưỢc sự đa năng đó là nhò vào tính đa nền (portable) của ngôn ngữ C/C++ nhưng đòi hỏi chúng ta phải biên dịch lại phần mềm từ mã nguồn cho hệ thống mà chúng vận hành. Bạn sẽ tự hỏi là tại sao tác nhà phát triển lại không biên dịch sẵn cho chúng ta trên hệ thống thông dụng nào đó như Linux chẳng hạn. Các phần mềm này là phần mềm mã nguồn mở và các nhà phát triển không có cách gì hơn là để lại phần biên dịch cho chúng ta. Tuy nhiên bạn đừng thất vọng vì có một số nhà phát triển rất là tốt bụng có thê biên dịch sẵn cho chúng ta ra các gói có dạng rpm và cùng với sự hỗ trỢ của công ty Red Hat chúng ta cũng đã có những chương trình quản lý các phần mềm hiệu quả không kém gì trên Windows như RPM (Redhat Package Manager). Mặc dù là thế nhưng không phải lúc nào các gói mới nhất từ các nhà phát triển gốc đều có phiên bản biên dịch sẵn mà thường là một khoảng thời gian sau các phiên bản đó mới có được dưói dạng biên dịch sẵn. Bên cạnh đó còn có rất nhiều nhà phát triển không hề biên dịch sẵn sản phầm của mình mà đòi hòi người dùng phải biên dịch, điển hình là trình chơi phim và nhạc xine. Các gói biên dịch sẵn các bạn có từ xine đa sô" là từ các nhà nhát triển khác. Do đó nếu bạn không bạn không biết cách cài đặt các gói từ nguồn là một trở ngại rất lớn cho việc hiểu và quản trị hệ thống của riêng mình. Căn bản của việc cài đặt Điều đầu tiên khi bạn tiến hành cài đặt là bạn phải có mã nguồn của gói đó trước. Hãy lên mạng search bất kì gói nào 186
  5. bạn thích như thư viện Gtk+ hoặc Gnome... Sau khi tải về, thông thường có dạng là ,gz hoặc ,bz2, đây đều là 2 chuẩn nén khác nhau, sau khi giải nén bằng gunzip cho gz hoặc bunzip2 cho bz2 thì các gói sẽ có dạng mới là tar, cũng là một chuẩn nén khác, bạn có thể giải nén bằng lệnh, tar -xvf... Thế nhưng đê dễ dàng và tiết kiệm dung lượng ổ đĩa thì chúng ta có thể gộp các câu lệnh đó thành một như sau: - ĐỐI với gói ,gz: # tar -zxvf tengoi.gz - Đôi với gói .bz2: # tar -jxvf tengoi.bz2 Sau khi giải nén xong và tìm tập tin INSTALL để đọc cụ thể cho phần hướng dẫn cài đặt. Thê nhưng hầu như các gói đều tuân theo các thao tác tuần tự sau: # ./coníĩgure # make # make install Chỉ có vài gói đặc biệt sẽ có riêng cách cài đặt nhưng khi bạn đã nắm vững nguyên tắc chung thì dù là cách thức nào bạn cũng có thể xoay xở được. Chúng ta hãy xét đến câu lệnh đầu tiên, ./conílgure... Thực chất conhgure là một Shell script sẽ kiểm tra những yêu cầu của hệ thông của bạn có đáp ứng đủ để cài đặt gói lên không, ví dụ như một sô" gói đòi hỏi bạn phải có sẵn thư viện đồ họa Gtk 2.4 trở lên hoặc là thư viện để giải nén nhạc Mp3... Rất nhiều gói có sự phụ thuộc như thê chứ các gói khi tải về không hề có sẵn các gói tương ứng cần thiết cho nó. Khi bạn chạy conhgure xong kết quả sẽ cho bạn biết các gói nào cần thiết để cài đặt. Nhiệm vụ của bạn không gì hơn là phải tìm các gói phụ thuộc đó cài lên máy rồi mói tiếp tục việc cài đặt. Nếu như hệ thống của bạn thỏa mãn đầy đủ các yêu cầu để cài đặt thì các Makefile sẽ được tạo ra. Makeíĩle là một íĩle đặc biệt của tiện ích make nhằm hướng dẫn biên dịch mã nguồn của gói ra dạng thực thi. 187
  6. Sau khi bạn thực thi lệnh 'make' xong thì toàn bộ mã nguồn của gói đã được biên dich sang dạng thực thi nhưng các íĩle thực thi vẫn còn nằm trên thư mục hiện hành. Do đó bạn cần phải thực hiện thêm lệnh 'make instair để chép các ílle thực thi đó sang đúng vỊ trí của nó trên hệ thống. Nếu như không có thông báo lỗi gì xảy ra thì bạn đã hòan tất việc cài đặt gói lên hệ thống của mình. Tổ chức các file tiên hệ thống Bạn hoàn toàn biết thư mục trên Linux thì thư mục /usr là thư mục quan trọng nhất vì nó sẽ chứa các chương trình và hàm thư viện trên đó. Trong thư mục /usr/bin là sẽ chứa các ílle thực thi cho các gói bạn đã cài đặt trên máy, các file trong thư mục này bạn sẽ thấy các file rất quen thuộc như mozilla, gedit... Thư mục /usr/lib sẽ chứa các hàm thư viện, bạn sẽ thấy rất nhiều ílles có phần mỏ rộng là .so (shared object) là các hàm thư viện liên kết động hoặc .a (archive) hoặc .la đều là các hàm thư viện liên kết tĩnh. Đặc tính cán bản của 2 dạng thư viện này là hàm thư viện liên kết tĩnh sẽ được liên kết thẳng vói files thực thi luôn trong quá trình liên kết, còn hàm thư viện liên kết động thì sẽ được liên kết trong quá trình thực thi, cho nên sau khi chương trình đã được biên dịch và liền kết rồi các thư viên tĩnh chúng ta có thể bỏ đi nhưng thư viện hên kết động thì bắt buộc phải đi kèm với chương trình. Thư mục /usr/share sẽ chứa các icon, manual hoặc info của gói. Loại bỏ một gói Nếu bạn mong muốh lọai bỏ một gói đã cài đặt trên hệ thống thì cách duy nhất là bạn phải vào lại thư mục mã ___________ ______________ _ _ v 1 1 I I * , n t ^ ,1 V, , nguôn của gói và gõ lệnh make 'uninstair... thông thường bạn sẽ có các câu lệnh sau: 'make clean' 'make distclean'... Các câu 188
  7. lệnh có ý nghĩa rất tương đốĩ và được định nghĩa trong tập tin Makeíìle, nên đầu tiên bạn cứ thử với 'make uninstair rồi 'make clean' cái CUỐI cùng 'make distclean' là giúp bạn xóa hết các tập tin đã biên dịch ở thư mục nguồn và đồng thòi xóa Makeíile, bạn phải chạy lại ./coniĩgure để tạo lại Makehle. Quản iý các gói Do việc xóa bỏ một gói như trên rất là phiền phức đôi lúc bạn chẳng thể xóa bỏđược nếu như mất đi mã nguồn, cho nên bạn có thể thay vì cài nó vào thư mục mặc định là /usr thì bạn có thể cài vào các thư mục của riêng bạn, ví dụ như bạn có thể tạo thư mục Vsoft'... Sau đó để cài gói gedit thì bạn tạo thêm thư mục /soft/gedit và dùng lệnh ./conílgure... bạn thêm tùy chọn sau: ./conílgure --preflx=/soft/gedit Thì khi bạn gõ make install sẽ copy toàn bộ sang thư mục /soft/gedit. Khi bạn muốh xóa toàn bộ gói thì chỉ đơn giản xóa đi thư mục đó thôi. Lưu ý là khi bạn cài vào thư mục riêng của mình rồi bạn phải tạo 2 đường dẫn cho 2 biến môi trường (environment variable) LD_LIBRARY_PATH và PKG_CONFIG_PATH. LD_LIBRARY_PATH sẽ có đường dẫn đến thư mục lib của gói vừa tạo (ví dụ như /soft/gedit/lib) còn PKG_CONFIG_PATH sẽ có đường dẫn đến thư mục pkg_config trong thư mục lib (ví dụ như /soft/gedit/lib/pkg_config). Bên cạnh đó nếu bạn muôn chương trình gọi tự động thì bạn cũng nên thêm vào biến PATH cho gói của mình. 4. BẢO MẬT LINUX c ơ sở Thê giới hiện nay vốh tồn tại hai kiểu quan niệm về bảo mật: một bên là những người nghĩ rằng bảo mật máy 189
  8. tính thật vui và thú vị, còn một bên lại cho rằng nó thật bí ẩn và đáng sỢ. Các chuyên gia quản trị hệ thống chắc chắn sẽ nói bảo mật máy tính thực sự khá buồn tẻ. Bởi họ phải thường xuyên đọc các file thông tin cơ sở (log file) khô khan và gắn liền với những đêm dài mất ngủ, tâm trạng hoảng hốt khi liên tục chông lại các cuộc tấn công, nguy cơ xâm nhập hệ thống và đôi khi còn có cả những hoạt động điên khùng. Hàng tháng, bạn đọc các file log đều đặn lặp đi lặp lại tin báo giôhg nhau. Rồi vào một buổi sáng bỗng dưng một cảnh báo lạ khác xuất hiện. Suy nghĩ đầu tiên của bạn là: "Mình đã bị tấn công!". Muốh xác định xem liệu cuộc tấn công có thành công hay không, bạn lùng sục trong các bản ghi log, kiểm tra file hệ thông, tìm kiếm dấu hiệu khác thường. Nhưng rốt cuộc chẳng có gì xảy ra cả. Cuộc tấn công đã thất bại? Cũng chưa hẳn, có thể kẻ tấn công thông minh hơn bạn. Rồi hàng ngày, hàng tuần bạn tự hỏi không hiểu hàng rào bảo vệ của mình có bị xâm nhập không. Cuối cùng, bạn quên nó và đối phó với cuộc khủng hoảng mới. Bảo mật máy tính, ở một số điểm cũng giốhg như việc lái xe vậy. Một số người nghĩ rằng lái xe là thú vị, hồi hộp, nhưng số khác lại cho rằng nó nguy hiểm và đáng sỢ. Trong lái xe, tôi luôn tuân thủ các quy định đường bộ: đeo dây bảo hiểm, tránh đường có hại, luôn quan sát đường đi, bảo dưỡng định kỳ. Vậy những nguyên tắc tương ứng trong bảo mật trong máy tinh tbì như thế nào? Xin được thông báo điều đầu tiên là: hầu hết chương trình bảo mật máy tính không mang tính kỹ thuật nặng nề, giông như người lái xe không đòi hỏi phải hiểu chi tiết động cơ hoạt động bên trong như thế nào. Lái xe tốt cũng có thế chán như lái xe tồi, có thể chẳng vui vẻ gì hơn. Bảo mật máy tính đòi hỏi nhiều nỗ lực. Bạn phải thực hiện kiểm tra có phương pháp các chi tiết cần thiết mới có khả 190
  9. náng mang lại hiệu quả cho hệ thống máy tính vốh tẻ nhạt, và có thể dự đoán trước được. Lái xe an toàn và an toàn trong máy tính đều đòi hỏi khả năng kỹ thuật của bạn. Mục đích là giúp bạn tránh những điều có hại ngay từ những bước đầu tiên. Bài báo này có thể giống như một khoá học lái xe an toàn trên đường cao tôíc cho bạn vậy. Bảo hiểm Hầu hết các nước trên thê giới đều không cho phép bạn lái xe khi không có bảo hiểm, một phiíơng pháp rất cũ trong việc quản lý và phân phôi các nguy hiểm. Leo lên một chiếc ô tô, mức độ rủi ro nguy hiểm gây chết người và tổn thương nghiêm trọng cho bạn gia tăng. Nhưng hầu hết mọi người đều lái xe. Cũng giống như thế, kết nôi máy tính vói mạng đặt bạn trưóc nguy cơ bị mất mát hay bị ăn trộm dữ liệu. Nhưng ai cũng đều có vẻ miễn cưỡng nếu buộc phải ngắt kết nôl Internet khi có sự cố xảy ra. Là một quản trị viên hệ thống Linux, có thể bạn không dự đoán được nguy hiểm, nhưng luôn quản lý được chúng. Trưóc hết bạn cần biết mức độ tự nhiên của các mối nguy hiểm rồi mới có thể quản lý được chúng. Bảo hiểm ô tô có thê là các hoá đơn thuốc, bảo hiểm nguy cơ cho xe ô tô, các kiện cáo liên quan đến tai nạn, trộm cắp xe. Khi đặt một máy tính vào mạng Internet, những nguy hiểm gì phát sinh cho bạn? Các chuyên gia bảo mật máy tính nói rằng người dùng và người quản trị nên phát triển mô hình đe doạ thử nghiệm để nghiên cứu. Bạn muốn bảo vệ khả năng truy cập mạng, khả năng in hay lưu trữ file? Bạn đang lo lắng về tính cẩn mật của fíle nào đó trên hệ thống? Bạn đang lo lắng mọi người có thể chỉnh sửa hay phá huỷ dữ 'liệu? Bạn có muốn hacker xoá Nvebsite và đe doạ làm méo mó hình ảnh của bạn? 191
  10. Thực thi bảo mật đòi hỏi ít nhất bạn phải hiểu được cái gì đe doạ mình. Các điểm nguy hiểm trong bảo mật không giốhg như bảo hiểm. Sao lưu trong bảo mật máy tính cũng giông như bảo hiểm ở lái xe; Tuỳ thuộc vào mô hình nguy hiểm và cấu hình hệ thống, các phân vùng khác nhau của thủ tục sao lưu có thể được nhấn mạnh. Nếu hệ thống đang sử dụng là tiêu chuẩn Linux không dùng đĩa CD với một chút tuỳ chỉnh trong các ílle cấu hình, bạn có thể chỉ cần một đĩa nén để sao lưu íĩle trong thư mục gốc. Nếu tuỳ chỉnh hệ thống mở rộng, bạn cũng có thể sao lưu trong thư mục: /etc và /usr/local. Nếu việc lưu trữ file vói cơ chế cài đặt 'làm tươi' đem lại sự chính xác cho hệ thống, bạn có thể thực hiện cơ chê sao lưu đầy đủ thông thường. Luật đường bộ Hầu hết mọi chính phủ trên thế giới đều đòi hỏi bạn phải học luật khi muốh lái xe. Trước khi cấp quyền được lái cho ai đó, họ phải vượt qua bài kiểm tra chứng minh khả năng hiểu luật đường bộ. Còn đối với người dùng mạng, cuốh sách luật cầm tay là các điều khoản dịch vụ trong hỢp đồng vói nhà cung cấp ISP. Nếu dùng máy tính cho công việc, bạn cũng phải tuân theo các hướng dẫn tổng hỢp hay các chính sách tổng hỢp. Các điều khoản dịch vụ có thể gồm một mức giói hạn dịch vụ giám sát và thực thi trên mạng, cùng vói các điều khoản yêu cầu luật sở hữu trí tuệ khắt khe. Các chính sách tổng hỢp đòi hỏi phải có mật khẩu an toàn, việc dùng hệ thông cho các hoạt động không liên quan đến công việc, các hỢp đồng bảo mật... Khi là một quản trị viên hệ thống, bạn phải xây dựng một sô" chính sách như mật khẩu của tổ chức, giải mã lưu 192
  11. lượng mạng, quét tìm lỗ hổng bảo mật trên các máy công ty. Nếu bạn nghĩ rằng đó không phải là vấn đề, hãy đọc về trường hỢp của Randal Schwartz và về vụ một số nhân viên CIA gần đây bị kỷ luật vì sử dụng dịch vụ chat không rõ nguồn gốc. Nếu bạn chưa có một chính sách nào, hãy đầu tư phát triển chúng. Hãy thắt dây an toàn Lòi khuyên tốt nhất khi tham gia giao thông là bạn nên ở vai trò của một người bộ hành. Hầu hết các xâm phạm bảo mật nguy hiểm nhất lại không phải do hacker, đốỉ thủ cạnh tranh hay tổ chức chính phủ bất chính nào gây ra. Nguyên nhân xuất phát từ chính các nhân viên không thực hiện điều luật quy định. Họ sử dụng mật khẩu tồi trên laptop, đặt chúng vào mạng bảo hiểm ở nhà cũng như trong các cuộc họp... Hãy chắc chắn rằng tất cả các nhân viên hiểu được chính sách của bạn và giúp họ biết đưỢc các nguy hiểm cận kề kết hỢp với sự xâm phạm của họ. Thậm chí cho dù các xâm phạm không gây hại trực tiếp nhưng chúng trở thành nguyên nhân làm gia tăng mức độ nguy hiểm, chính xác đốĩ ngược lại với những gì bạn đang cô" gắng thực hiện. Thắt dây an toàn cũng giông như cân bằng các mổỉ đe doạ: những ngưòi bạn luôn nói vối tôi về một người nào đó đã bị giết khi axih ta th ắt dây an toàn nhưng thay vào đó là được bảo vệ an toàn. Cho dù một trong các câu chuyện đó không phải là sự thực, nhưng cũng có những ngoại lệ, dẫu không phải là nguyên tắc. Những người lái xe thận trọng hay hành khách biết điều đó. Thắt lưng an toàn đã cứu đưỢc nhiều người. Tương tự, thực thi một sô" tính năng bảo mật máy tính có thể khiến bạn phải đô"i mặt .với nhiều thách thức hơn. Có khi chúng trở thành đích nhắm thú vị 193
  12. cho hacker. Một câu hỏi luôn được đặt ra là: "Xét về tổng thể, chừng này làm tăng hay giảm tính bảo mật?" Tránh đường xấu Một chiếc ô tô tốt đưọc thiết kế sao cho có được sức bền càng lớn càng hay. Sức bền trên Internet cũng tương tự với dòng hằng của các chương trình quét mức thấp và các máy dò hacker dùng để tìm kiếm hệ thống có thể xâm nhập. Cách tốt nnất để tránh việc này là giữ một proílle thấp. Hầu hết các quản trị viên Linux đều mở nhiều dịch vụ hơn mức cần thiết trong khu vực làm việc. Tôi đã từng chứng kiến hàng loạt máy bị hack qua các bản copy lỗi thời của BIND cài đặt trến hệ thốhg. Hệ thồhg đó thậm chí không dùng tên dịch vụ cục bộ. Nếu tính năng “named” không thực thi, hệ thông sẽ không an toàn. Hãy tắt bất kỳ dịch vụ thừa và gỡ bỏ phần mềm không cần thiết nếu có thể. Nhiều chương trình nguy hiểm đến từ inetd. Bạn có thể tắt chúng bằng cách dẫn giải các dòng phù hỢp tương ứng trong thư mục /etc/inetd.conf. Một sô" hệ thống như Red Hat 7.0 sử dụng xinetd thay thế cho các file cấu hình xinetd, dễ dàng trong sử dụng và cũng dễ dàng tắt các dịch vụ này. Nhiều dịch vụ nguy hiểm khác xuất hiện trong các bản script khởi động ở /etc/rc[l-5].d, /etc/init.d/rc[l- 5].d, hay /sbin/rc[l-5].d. (Thư mục này có thể thay đổi tuỳ thuộc vào hệ thốhg phân phối của bạn), nhưng tốt nhất là nên giói hạn lượng tối thiểu vừa đủ. Cuối cùng là bảo vệ dữ liệu khi được truyền đi trên mạng. Các chương trình như Telnet, FTP truyền tải tất cả mật khẩu và dữ liệu qua mạng dưối dạng văn bản thuần tuý (cleartext). Bất kỳ ai có bộ sniffer mạng đều có thể đọc được chúng. Bạn nên thay thê các gói này bằng OpenSSH hoặc một phần mềm nào đó khác bảo vệ dữ liệu bằng cách sử dụng phương pháp mã hoá. 194
  13. Hãy luôn chú ý tới đường đi Một người lái xe giỏi phải luôn quan sát được chướng ngại vật, biết các nguy cơ có thể xảy đến và biết cách xử lý chúng ra sao. Trong bảo mật, danh sách mailing là điểm then chốt để thực hiện điều này. CIAC và CERT sử dụng bộ danh sách mailing mức thấp với thông tin về các nguy cơ bảo m ật cho nhiều công ty phát triển Linux như Red Hat, SuSE, Debian và Mandrake. Nếu bạn muốn biết cụ thể hơn các vấn đề diễn ra hàng ngày, BugTraq là danh sách mailing hữu hiệu, nơi nhiều vấn đề bảo mật được đũa ra đầu tiên. Để luôn quan sát được những gì đang diễn ra, hãy đọc các íĩle log cơ sở. Đó là điều đầu tiên bạn nên làm mỗi sáng, sau khi kiểm tra e-mail đến. Nếu sử dụng một hệ thống dò tìm xâm nhập như Snort, bạn cũng nên đọc các file log. Chương trình GIAC (Global Incident Analysis Center) của học viện SANS Institute cho phép bạn tìm ra hệ thống dò tìm xâm nhập không hoạt động của người khá. Đọc íĩle log của các admin khác là một cách thông minh để hiểu các vấn đề cơ sở. Bảo dưỡng định kỳ Ngay cả những chiếc xe an toàn nhất, hiện đại nhất cũng cần phải được kiểm tra và bảo dưỡng định kỳ mối có thể luôn duy trì được khả năng hoạt động tốt nhất của mình. Máy tính cũng vậy. Vói các hệ thốhg Linux, bảo dưỡng định kỳ tức là phải luôn cập nhật bản mới nhất cho phần mềm trong máy. Như vối Red Hat Linux chẳng hạn. Thời gian cập nhật cho các bản update mới nhất là khá thường xuyên: một hoặc thậm chí hơn các bản update trong một tuần. Mặc dù giữ tốc độ cập nhật liên tục cho phần mềm hệ 1Q.'=;
  14. thông có nhiều thách thức, nhưng điều đó là cần thiết. Hầu hết các hệ thống bị phá hoại xuất phát từ nguyên nhân khai thác các lỗ hổng bảo mật trong phần mềm chưa được update bản mối nhất. Bạn có thể ví nó như một cuộc đua: bạn sẽ tìm thấy các lỗ hổng trưóc khi vá chúng? Nhiều phân phối Linux hiện nay đều trang bị cơ chế update tự động. Debian và các phân phôi liên quan hỗ trỢ lệnh apt-get update, Mandrake có Mandrakeưpdate và Red Hat có 'up2date'. sử dụng các chức năng này hoặc tự nâng cấp cho tất cả phần mềm trong hệ thống hiện thòi của bạn là yếu tô" quan trọng để giành chiến thắng trong cuộc đua chổng những kẻ xâm phạm bất hỢp pháp. Giốhg như lái xe, bảo mật máy tính cũng có những điểm hết sức đáng chán. Để giữ an toàn, bạn phải tiếp tục thực hiện các nguyên tắc cơ bản sau đây: • Sao lưu hệ thống như là một hình thức bảo hiểm. • Biết mình đang cố gắng bảo vệ cái gì. • Thực hiện tất cả các chính sách thích hỢp (nếu cần thì có thể xây dựng chính sách riêng). • Biết ưóc lượng khả năng của mình và giói hạn nó. • Luôn quan sát, theo dõi các môl đe doạ phù hỢp. • Luôn cập nhật các bản mới nhất cho phần mềm. Để giữ an toàn cho hệ thống cần phải luôn kiên trì, kiên định và thường xuyên nâng cao cảnh giác. 5. LÀM REVERSE PROXY VỚI LINUX + APACHE HTTPD, THUỘC SERIES "BẢO VỆ MÁY CHỦ..." Giói thiệu Nhiệm vụ của chúng ta là bảo vệ một hay nhiều content web-server -1- nằm trong vùng Internal -2-, các 1 QC
  15. web-server này có thể là Apache httpd, hoặc Microsoft IIS, hoặc có thể chỉ là một web-server đơn giản được embedded vào một ứng dụng nào đó. Để hoàn thành nhiệm vụ, chúng ta sẽ tập trung vào xây dựng một firewall/ids hoạt động ở tầng application, trong tài liệu này gọi là reverse-proxy, sử dụng Apache httpd -3- trên nền Linux. Reverse proxy là gì? M ột proxy, th eo địn h ngh ĩa, là m ột th iết bị đứng giữa server và Client, th am gia vào "cuộc trò chuyện" giữa hai bên. K hái niệm proxy m à chún g ta thường dùng hàn g n gày tốt hơn n ên được gọi là m ột forward proxy: m ột th iết bị đứng giữa m ột Client và tấ t cả server m à Client đó m uốn truy cập vào. M ột reverse proxy làm công việc hoàn toàn ngược lại: nó đứng giữ a m ột server và tấ t cả Client m à server n à y p h ải phục vụ. R everse proxy giôhg như m ột nh à ga kiêm m ột trạm kiểm soát, các req uest từ Client, bắt buộc p h ải ghé vào reverse proxy, tạ i reverse proxy sẽ kiểm soát, lọc bỏ các req u est k h ôn g hỢp lệ, và lu ân chuyển các req u est hỢp lệ đến đích cuối cùng là các server. Chú ý là m ột reverse proxy có th ể lu ân chuyển req uest cho n h iều server cùng lúc. Lợi thê lộn nhất của việc sử dụng reverse proxy là ở khả năng quản lí tập trung. Một khi đã đẩy được tất cả traffiC đi qua một trạm kiểm soát day nhất (là reverse proxy), chúng ta có thể áp dụng nhiều "đồ nghề" khác để tăng cường an ninh cho hệ thông của mình. Dĩ nhiên, bất kì sản phẩm hay công nghệ nào cũng có ưu và khuyết điểm của nó, đi cùng với single point of access bao giò cũng là "bóng ma" single point of failure. Single point of íailure có thể đưỢc giải quyết bằng cách xây dựng cluster. Đây là một vấn đề hoàn toàn vượt qua khỏi phạm vi của bài viết 197
  16. này, tôi chỉ xin giới thiệu bồ nào muốn tìm hiểu về cluster trên Linux thì thử ghé vào http://www.linux-ha.org. Ngoài ra áp dụng reverse proxy đúng cách sẽ giúp tăng cường períormance cũng như nâng cao scalability của các web- application chạy trên các content server. Chút xíu nữa, tôi sẽ đi vào chi tiết các ưu điểm của reverse proxy cũng như làm thê nào để khai thác các ưu điểm đó. Cài đặt máy chủ reverse-pioxy Chọn và cài đặt hệ điều hành cho reverse proxy Dĩ nhiên là sử dụng linux cho máy chủ reverse proxy. ở đây không mô tả quá trình cài đặt linux bởi có rất nhiều tài liệu hảy trên Internet nói về đề tài này, và hơn nữa một khi đã nghĩ đến chuyện làm reverse proxy thì chắc chắn chuyện cài đặt Linux không là vấn đề. 1.3.X hay 2.X? Trước tiên, bạn cần phải trả lòi câu hỏi là chúng ta sẽ chọn phiên bản Apache nào để làm reverse proxy đây, 1.3.X hay 2.X? Chọn 2.X vì ba lý do: Thứ nhất là có rất nhiều 0-day trong phiên bản 1.3.X :D. Thứ hai là Apache 2.X cung cấp một bộ íĩltering API tốt hơn so với phiên bản 1.3.X, cho phép các module có thể nhìn thấy và tương tác vói nội dung của các request cũng như các response tưong úng từ trả lòi từ server. Điều này rất quan trọng đôi với một reverse proxy đóng vai trò là một application gateway bởi vì nó phải kiểm tra tất cả thông tin đi xuyên qua nó trước khi chuyển giao cho bên nhận. -6-. Thứ ba là Apache httpd 2.X có perlormance cao hơn hẳn 1.3.X khi phục vụ các static content như íĩle HTML và file hình ảnh. chúng ta quan tâm đến vấn để này là vì mong muôn giảm tải cho các content server bên trong 198
  17. bằng cách tách content ra làm hai loại là dynamic (các loại file CGI/Perl, PHP) và static (các fiie HTML và file hình ảnh), các content server chỉ phục vụ dynamic cõntent, còn tất cả static content thì đưa qua máy chủ reversế proxv luôn. Lúc đó khi các request của Client đi vào reverse proxy, nếu request đó có đích đến là một static content, máy chủ reverse proxy sẽ trả lòi luôn cho Client mà không cần forward request đó đến content server ở phía sau, chỉ những request đến các dynamic content mới được forward để các content server xử lí. Chọn module cho Apache httpd Ngoài những module mà tài liệu "Securing Apache 2; step by step" đề nghị, chúng ta phải chọn thêm các module sau đây: -mod_rewrite, mod_proxy, mod_proxy_http: các module này sẽ hỗ trỢ chúng ta trong việc thiết lập reverse proxy. -mod_security: module này giúp chúng ta cấu hình reverse proxy thành một application firewall để chống lại các dạng tấn công thưòng thấy vào các web-application chạy trên content server. -7- -mod_ssl: module này giúp chúng ta mã hóa dữ liệu của các kết nối từ Client đến server thông qua giao thức SSL và TLS, biến giao thức HTTP không an toàn thành giao thức HTTPS rất bảo mật. -8- Phần quan trọng tiếp theo là chọn một MPM phù hỢp với mục đích làm reverse proxy của chúng ta. MPM là viết tắt của cụm từ Multi-Processing Module, là một cải thiện đáng kể của Apache httpd 2.X so với Apache l.x. Trong kiến trúc của Apache 2.X, MPM đóng vai trò hết sức quan trọng, nó chịu trách nhiệm lắng nghe trên các cổng mạng, chấp nhận các yêu cầu kết nốĩ từ phía Client, và chuyển 199
  18. các yêu cầu đó vào bên trong để Apache httpd xử lí -9-. Trong trường hỢp này chọn MPM worker. MPM worker sử dụng thread để phục vụ các request, do đó nó có khả năng phục vụ một lượng lớn các request nhưng lại tốh rất ít tài nguyên so vói các process-based MPM khác như prefork. Đồng thời MPM worker vẫn khai thác đặc tính ổn định của cá process-based MPM bằng cách tạo ra nhiều process đê trước, mỗi process có nhiều thread để sẵn sàng phục vụ Client -10-. Biên dịch và cài đặt Apache httpd Như chúng ta đều biết, có hai cách biên dịch các module trong Apache httpd. Cách thứ nhất, gọi là phương pháp động, là biên dịch các module thành các thư viện liên kết chia sẻ (tương tự như các thư viện DLL trên Windows). Với cách này, các module sẽ được biên dịch thành các ílle •SO, và sẽ được tải lên khi Apache httpd khởi động nếu cần (tùy theo các câu lệnh LoadModule trong file cấu hình conf/httpd.conf). Cách biên dịch thứ hai, gọi là phương pháp tĩnh, là gom tất cả module nhét vào trong fí.le bin/httpd luôn (link statically). Khi khỏi động và trong quá trình chạy, Apache httpd không cần phải tải thêm module nào nữa. Phương pháp tĩnh được xem là lựa chọn tốt hơn hết. Chọn phương pháp tĩnh, chúng ta không cần dùng đến module mod_so (module cần thiết để tải các íile .so trong phương pháp động). Hơn nữa, theo kh\iyến cáo của Apache, sử dụng phương pháp tĩnh sẽ giúp tăng 5% về mặt períormance so vối phương pháp động. Chúng ta tải Apache httpd 2.X ở http://httpd.apache.org/ download.cgi và tải mod_security tại http://www.modsecurity.org sử dụng các lệnh sau: CODE localhost$ wget http://www.tux.Org/pub/net/apache/dist/httpd/httpd-2.0.54.tar.gz 200
  19. lo c a lh o st$ w g e t h ttp ://w w w .m c x lse c u r ity .o r g /d o w n lo a d /m o d se c u r ity -1.8 .7 .ta r.g z lcx;alhost$ tar - x z f h ttp d -2 .0 .5 4 .ta r.g z -C /usr/l(x:al/src lcx:alhost$ tar - x z f m cx lsecu rity -1 .8 .7 .ta r.g z -C /u sr/lcx:al/src Tài liệu kèm theo của mod_security chỉ hướng dẫn cách biên dịch mod_security thành một thư viện chia sẻ của Apache httpd, do đó chúng ta cần phải chuẩn bị đôi chỗ để có thể biên dịch tĩnh mod_security; CODE lcx;alhost$ c d /u sr/l(x:al/src lo c a lh o st$ m k d ir -p h ttp d -2 .0 .5 4 /m o d u les/secu rity l(x:alh ost$ c p m cxlsecu rity -1 .8 .7 /a p a ch e2 /m cx l_ secu rity .c httpd- 2 .0 . 5 4 /m o d u le s/se c u r ity lo c a lh o st$ c p h ttp d -2 .0 .5 4 /m c x iu le s/e c h o /M a k e file .in httpd- 2 .0 . 5 4 /m c x lu le s/se c u r ity Bắt đầu biên dịch như sau: CODE lo c a lh o st$ c d /u sr/l(x :a l/src/h ttp d -2 .0 .5 4 lcx:alhost$ ,/c o n fig u r e —w ith -m p m = w o rk er —d isa b le -c h a r se t-lite —d isa b le -in c lu d e —d is a b le - e n v —d isa b le-sta tu sN —d isa b le -a u to in d e x —d is a b le - a s is —d isa b le -c g id —d is a b le -c g i —d isa b le -n e g o tia tio n —d is a b le - im a p —d isa b le -a c tio n s -d is a b le -u s e r d ir X 201
  20. —d is a b le -a lia s —d is a b le - s o —w ith -m c x lu le = se c u r ity :m o d _ se c u r ity .c —en a b le-m o d u les= 'ssl rew rite proxy proxy_http' Nếu quá trình biên dịch thành công, chúng ta sẽ tiếp tục như sau để cài Apache httpd vào hệ thống (tại thư mục mặc định là /usr/local/apache): CODE lo ca lh o st$ m ake lo ca lh o st$ su lo c a lh o st# um ask 0 2 2 lo c a lh o st# m ak e install lo c a lh o st# ch o w n -R root:sys /u sr/lo ca l/a p a ch e 6. RED HAT LINUX VÀ 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. Sau đây là một sô"kinh nghiệm về bảo mật trên hệ điểu hành Red Hat 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ốhg, 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/securetty chỉ quy định những console được phép truy nhậ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/securetty và bỏ đi những console bạn không muốh root truy nhập. 202
nguon tai.lieu . vn