Đảm bảo an ninh cho máy tính Linux của bạn bằng việc khoá nó và dựng một chòi gác để canh phòng những kẻ thâm nhập trái phép.
Secure your Linux box by locking it down and posting a guard to watch for intruders
September 20th 2008
By Graham Morrison
Theo: http://www.techradar.com/news/computing/catch-system-intruders-with-linux-467913
Bài được đưa lên Internet ngày: 20/09/2008
Lời người dịch: Một bài viết về an ninh trong các hệ điều hành GNU/Linux rất đáng được quan tâm.
Ảnh Tripwire: http://mos.techradar.com//Review%20images/PC%20Plus/Linuxintruders-728-75.jpg
Không nghi ngờ gì rằng Linux là một hệ điều hành có an ninh. Tuy nhiên, không có gì là hoàn hảo cả. Hàng triệu dòng mã lệnh sẽ được khuấy qua nhân mỗi giây và nó chỉ cần một lỗi lập trình duy nhất để mở cửa vào trong hệ điều hành. Nếu dòng mã lệnh đó xảy ra trên Internet, thì đó là một cửa hậu cho máy chủ của bạn.
Những con mắt nhìn thấy nó
Các bản vá thường được tung ra nhanh hơn và thường xuyên hơn đối với các hệ thống Linux so với các sản phẩm sở hữu độc quyền. Điều này là vì bất kỳ ai cũng có thể xem mã nguồn – và hàng ngàn lập trình viên thường xuyên làm. Tiếp cận “nhiều con mắt” này, mà nó là tiến bộ của Linus Torvalds, có nghĩa là các vấn đề như các cửa hậu thường bị tìm ra một cách nhanh chóng. Nó cũng có nghĩa rằng các lỗi được sửa sẽ được tung ra một cách nhanh chóng.
Đã và đang có nhiều tranh luận ầm ĩ trong danh sách thư điện tử nhân Linux gần đây, với các nhà lập trình phát triển tranh luận về việc liệu các lỗi an ninh mà sẽ được sửa sẽ có được công bố và ghi chép lại thành tài liệu một cách chính thức hay không. Torvalds tin tưởng rằng việc làm ra một bài hát và điệu nhảy lớn về các miếng vá an ninh sẽ thu hút sự chú ý của những kẻ vô lại đê tiện giống như những con ong đối với mật vậy. Những người khác thì tin rằng bất kể thứ gì ngoại trừ trừ tính mở hoàn toàn sẽ chống lại triết lý của Phần mềm Tự do.
Cuộc tranh luận vẫn đang nóng bỏng, nhưng trong khi những vị chúa tể của nhân Linux còn đang quyết định cách nào để nhún nhảy, thì có một vụ lớn mà bạn có thể làm để bảo vệ hệ thống của bạn, ngay cả nếu một dịch vụ đối mặt Internet bị tổn thương theo cách nào đó.
There's no doubt that Linux is a secure operating system. However, nothing is perfect. Millions of lines of code are churned through the kernel every second and it only takes a single programming mistake to open a door into the operating system. If that line of code happens to face the Internet, that's a backdoor to your server.
The eyes have it
Patches are often released quicker and more often for Linux systems than they are for proprietary products. This is because anyone can take a look at the code – and thousands of developers regularly do. This 'many eyes' approach, which was advanced by Linus Torvalds, means that problems like back doors are usually found quickly. It also means that fixes are released just as quickly.
There's been a very vocal debate on the Linux kernel mailing list recently, with developers arguing about whether security bugs that are fixed should be formally announced and documented. Torvalds believes that making a big song and dance about security patches attracts the attention of miscreants like bees to honey. Others believe that anything but complete openness goes against the philosophy of Free Software.
The debate is still burning, but while the overlords of the Linux kernel are deciding which way to swing, there's a great deal you can do to protect your system, even if an Internet facing service is compromised in some way.
Theo dõi các cái bẫy với Tripwire
Tripwire tạo ra việc kiểm tra các con số tổng [checksum]. Nếu chỉ một bit nào đó của dữ liệu thay đổi trong tệp, thì việc checksum tạo ra sẽ là hoàn toàn khác.
Những checksums này không thể bị phá hoặc bị trùng lắp vì chúng dựa vào một phương pháp cố và thử mã hoá. Sử dụng cơ sở dữ liệu checksums này, Tripwire sẽ theo chu kỳ kiểm tra lại giá trị của từng tệp nhị phân trong cơ sở dữ liệu của nó. Nếu bất kỳ tệp nào bị thay đổi, thì thông điệp này sẽ nhân 3 lần và một sự báo động sẽ được phát tín hiệu.
Hệ thống này hiệu quả đáng kinh ngạc, vì thứ đầu tiên mà một tin tặc thường làm khi chúng giành được sự truy cập vào hệ thống của bạn là thay thế các tệp hệ thống quan trọng bằng phiên bản của riêng chúng. Điều này được biết tới như một 'công cụ cơ bản', và nó có nghĩa rằng kẻ tin tặc này có thể luôn truy cập được hệ thống của bạn – ngay cả sau khi bạn định vị được và cập nhật vấn đề an ninh 'cửa hậu' gốc này.
Có một loạt các công cụ mà chúng tìm kiếm chữ ký nói lên cái đuôi của một cài đặt của công cụ cơ bản, nhưng Tripwire giành trên các công cụ này bằng việc chộp lấy những thay đổi đối với hệ thống tệp – hy vọng trước khi công cụ cơ bản này có thể ngay cả được sử dụng. Vì lý do này, bạn có thể tìm Tripwire trong kho các gói của gần như mỗi phát tán Linux mà chúng ta có thể nghĩ. Hãy tìm kiếm nó và cài đặt nó.
Sự bảo vệ của Tripwire là thành công đến nỗi mà một công ty sở hữu độc quyền đã từng tung ra ở đằng sau của sản phẩm Tripwire gốc, vừa rất là dễ lẫn lộn gọi là Tripwire. Tuy nhiên, may mắn là phiên bản nguồn mở của phần mềm này còn là phổ biến, dù thực tế là, giống như tất cả các công cụ an ninh của Linux, nó cần một nỗ lực đáng kể để làm cho nó làm việc được.
Hầu hết nỗ lực đó là phải làm bằng việc soạn thảo các tệp cấu hình nhà nghề. Việc chọn Ubuntu hoặc Debian có thể giúp cho việc này, vì cả 2 phát tán này đều đưa vào một thiết lập nhanh theo từng bước khi bạn cài đặt các gói. Chúng tôi đã sử dụng Ubuntu Hardy Heron [8.04] trong việc thiết lập cấu hình ví dụ bên dưới. Chúng tôi cũng đã cung cấp các lệnh hướng dẫn cho việc thiết lập cấu hình nếu bạn đang sử dụng một phát tán khác.
Watching for traps with Tripwire
Tripwire generates checksums f-rom all the essential binaries that are running on your system. Every file has a completely unique checksum. If a single bit of data changes in the file, the checksum it generates will be completely different.
These checksums can't be cracked or duplicated because they rely on a tried and tested method of encryption. Using this database of checksums, Tripwire will periodically recheck the value of each binary file in its database. If any file has changed, the wire is tripped and an alarm is signalled.
This system is incredibly effective, because the first thing a hacker usually does when they gain access to your system is replace important system files with their own version. This is known as a 'rootkit', and it means that the hacker can always access your system – even after you locate and up-date the original 'back door' security problem.
There are various tools that look for the tell-tale signature of a rootkit installation, but Tripwire preempts these tools by catching changes to the file system – hopefully before the rootkit can even be used. For this reason, you can find Tripwire in the package repository of nearly every Linux distribution we can think of. Just search for it and install.
Tripwire defence has been so successful that a proprietary company has been launched on the back of the original Tripwire product; both are confusingly called Tripwire. Thankfully, however, the opensource version of the software is still popular, despite the fact that, like all Linux security tools, it takes a considerable effort to get it working.
Most of that effort is to do with editing arcane configuration files. Choosing Ubuntu or Debian can help with this, as both of these distributions include a quick setup wizard when you install the packages. We've used Ubuntu Hardy Heron in the example configuration below. We've also provided the manual commands for configuration if you're using a different distribution.
Hãy chắc chắn mọi thứ mà chúng cần phải được cài đặt đã được cài đặt xong. Nếu bạn bổ sung thêm các gói sau khi cài đặt Tripwire, thì bạn sẽ phải đi lại một vòng việc thiết lập lại cấu hình này. Vì lý do này, sẽ thẳng thắn hơn hãy cài đặt Tripwire sau khi bạn đã thiết lập cấu hình và cài đặt máy chủ chính xác như bạn cần nó.
Thiết lập cấu hình
Sau khi cài đặt các gói Tripwire, bạn sẽ được trình bày với từng bước cấu hình của Tripwire. Câu hỏi đầu tiên sẽ hỏi liệu bạn có muốn tạo hoặc sử dụng khoá mật khẩu cho site của bạn hay không. Đây là một khoá được mã hoá duy nhất mà nó được sử dụng để tạo ra các thông tin checksums cho các tệp của bạn, và Tripwire sử dụng 2 cái – một cho các tệp mà chúng sẽ chỉ được sử dụng trên máy cài đặt (như bản thân các tệp thiết lập cấu hình của Tripwire), và cái kia cho các tệp mà chúng có thể truy cập và sử dụng được trên các máy khác trong hệ thống mạng. Trang tiếp sau của hướng dẫn từng bước một này sẽ hỏi bạn về điều này.
Tuy nhiên, sẽ có một hố tro. Nếu ai đó khác có một bản sao của đúng những khoá này, thì họ có thể có tiềm năng tạo ra các tệp mà chúng trình ra xác thực. Có một rủi ro an ninh nhỏ với các khoá được tạo ra bởi trình cài đặt Debian, nên nếu bạn có bất kỳ nghi ngờ nào về an ninh hệ thống của bạn, bạn phải tạo các khoá này bằng tay (xem đoạn sau cách làm điều này). Nếu không, hãy tiếp tục với trang tiếp sau của chỉ dẫn từng bước một này, hãy gõ vào cụm từ mà bạn có thể dễ dàng nhớ cho các khoá thiết lập cấu hình và để cho việc thiết lập theo chỉ dẫn từng bước một tạo ra tệp thiết lập cấu hình.
Để tạo các khoá cả cho máy chủ và local bằng tay, hãy mở một terminal và chuyển sang sử dụng tài khoản của quản trị hệ thống. Hãy gõ lệnh sau (người sử dụng Ubuntu phải gõ vào dằng trước các dòng lệnh với 'sudo'):
twadmin -m G -S /etc/Tripwire/site.key
twadmin -m G -L /etc/Tripwire/ hostname-local.key
Make sure everything that needs to be installed is installed. If you add more packages after the Tripwire installation, you'll have to go through a rather convoluted reconfiguration routine. For this reason, it's more straightforward to install Tripwire after you've configured and set up the server exactly as you need it.
Configuration
After installing the Tripwire packages, you'll be presented with the Tripwire configuration wizard. The first question asks whether you want to cre-ate or use your site passkey. This is the unique encryption key that's used to generate the checksum information for your files, and Tripwire uses two – one for files that are only going to be used on the installation machine (such as the Tripwire configuration files themselves), and another for files that may be accessed and used on other machines across a network. The next page of the wizard will ask you for these.
However, there is a caveat. If someone else has a copy of the same keys, they can potentially cre-ate files that appear authentic. There's a slight security risk with keys generated by the Debian installer, so if you're in any doubt about the security of your system, you should generate the keys manually (see the next paragraph for how to do this). Otherwise, continue with the next page of the wizard, enter long phrases that you can easily remember for both configuration keys and let the set-up wizard generate the configuration file.
To generate both the local and server keys manually, open a terminal and switch to using the System Administrator's account. Type the following (Ubuntu users should precede both lines with 'sudo'):
twadmin -m G -S /etc/Tripwire/site.key
twadmin -m G -L /etc/Tripwire/ hostname-local.key
Bạn phải thay thế 'hostname' trong lệnh thứ hai bằng hostname máy chủ của bạn. Trong Ubuntu, đây là từ mà đi sau biểu tượng 'username@' trong dòng lệnh này. Trong cả 2 trường hợp, bạn sẽ được hỏi cho một passphrase (mật khẩu) để tạo ra khoá này. Bạn cần sử dụng các khoá này để mã hoá 2 tệp thiết lập cấu hình được sử dụng bởi Tripwire, chúng đều trú ngụ trong thư mục '/etc/Tripwire' ở dạng plain text (văn bản thông thường) – nên dễ hiểu vì sao chúng có phần mở rộng là '.txt'. Hãy mã hoá cái đầu bằng việc gõ lệnh sau:
cd /etc/Tripwire
twadmin -m F -S site.key twcfg.txt
Enter pass phrase:
Như bạn có thể thấy trong các lệnh ở trên, bạn sẽ được hỏi về khoá mật khẩu passkey của bạn, và bạn sẽ cần gõ vào mật khẩu passphrase mà bạn đã sử dụng để tạo ra khoá ở phía máy chủ trước đó. Tệp thiết lập cấu hình thứ 2 mà chúng ta cần để mã hoá được gọi là 'twpol.txt'. Đây là tệp chính sách của Tripwire, và nó chứa đựng tất cả các chính sách và luật lệ được sử dụng bởi Tripwire để quản lý bảo vệ tệp của nó. Debian/Ubuntu sẽ tạo ra một tập hợp mặc định các chính sách mà chúng sẽ là hơn cả đầy đủ cho hầu hết các thiết lập cấu hình. Nếu bạn nhìn vào bản thân các chính sách này, thì bạn sẽ thấy những vùng nhỏ của mã lệnh mà nó trông giống như ví dụ được đưa ra bên dưới.
Cú pháp bên trên là tương đối không phức tạp, nếu nói lòng vòng. Vùng bên trên này đang bảo vệ các tệp khởi động sống còn của hệ thống, như được giải thích trong tên của điều luật. Bạn có thể xem những thư mục nào đặc biệt trong vùng thấp bên dưới hơn.
Thư mục khởi động chứa cả Grub và trình khởi động của Linux. Một công cụ cơ bản hoặc trojan mà nó thay đổi bất kỳ tệp nào ở đây có thể gây ra những hư hại nghiêm trọng. Thư mục '/lib/modules' chứa đựng tất cả các trình điều khiển nhân cho hệ thống của bạn. Một sự thay đổi tinh vi đối với các modules này có thể gây ra tất cả mọi dạng tàn phá dù là tinh vi hay không tinh vi. Vì lý do này, các thư mục đã được trao cho một sự ngặt nghèo của SIG_HI, mà nó là tín hiệu mạnh nhất có thể được từ Tripwire rằng có gì đó không ổn.
You should replace 'hostname' in the second command with your machine's hostname. In Ubuntu, this is the word that comes after the 'username@' symbol in the command line. In both cases, you'll be asked for a passphrase to generate the key. You need to use these keys to encrypt the two configuration files used by Tripwire, both of which reside in the '/etc/Tripwire' directory in plain text – which is why they have the '.txt' extension. Encrypt the first by typing the following command:
cd /etc/Tripwire
twadmin -m F -S site.key twcfg.txt
Enter pass phrase:
As you can see in the above commands, you will be asked for your passkey, and you will need to enter the passphrase that you used to generate the server-side key earlier. The second configuration file that we need to encrypt is called 'twpol.txt' . This is Tripwire's policy file, and it contains all of the policies and rules used by Tripwire to govern its file protection. Debian/Ubuntu cre-ates a default set of policies that should be more than adequate for most installations. If you take a look at the policies themselves, you will see small sections of code that look like the example given below:
The syntax above is relatively straightforward, if a little verbose. The section above is protecting critical system boot files, as explained in the rule name. You can see which directories specifically in the lower section.
The boot directory contains both Grub and the Linux boot loader. A rootkit or trojan that changes any files here could cause serious damage. The '/lib/modules' directory contains all the kernel drivers for your system. A subtle change to the modules here could cause all kinds of subtle and not so subtle havoc. For this reason, both directories have been given a severity of SIG_HI, which is the strongest possible signal f-rom Tripwire that something is wrong.
Trước đó trong tệp thiết lập cấu hình, GIG_HI được đưa ra một điểm là 100. Nếu bạn có những thư mục và tệp mà không phải là một phần của cài đặt Ubuntu tiêu chuẩn, và nó cần phải được bảo vệ, thì bạn sẽ cần tạo ra những chính sách riêng của mình cho những vị trí này. Sau khi bạn kết thúc việc xem xét tệp chính sách, là tới lúc để mã hoá nó như chúng tôi đã làm cho tệp đầu. Hãy gõ lệnh sau đây:
twadmin -m P twpol.txt
Bạn sẽ được hỏi về mật khẩu passphrase của bạn một lần nữa trước khi tệp được mã hoá có thể được tạo ra. Và đó là tất cả việc thiết lập cấu hình bạn cần. Bước tiếp sau là gõ 'Tripwire – init' để bắt đầu xây dựng cơ sở dữ liệu từ những vị trí đặc chủng trong tệp cấu hình của bạn. Thời gian cho điều này phụ thuộc vào việc có bao nhiêu thư mục và tệp cần phải được quét, nhưng dự kiến chờ đủ lâu để đun được ấm nước và cho chè ngấm.
Khi bạn trở lại với màn hình, bạn sẽ có thể thấy vài thông điệp báo lỗi vì Tripwire sẽ kêu về những thư mục đặc biệt trong tệp thiết lập cấu hình mà chúng không tồn tại. Bạn có thể bỏ qua một cách an toàn những thứ này. Tripwire bây giờ đã sẵn sàng để bảo vệ hệ thống của bạn.
Việc thử hệ thống tệp hiện hành của bạn chống lại sự sao chép được giữ trong cơ sở dữ liệu của Tripwire là đơn giản như việc gõ 'Tripwire – check'. Sau vài phút, Tripwire sẽ bắt đầu thông báo bất kỳ thay đổi nào được thấy. Như một thử nghiệm, hãy thử soạn thảo một trong các tệp được bảo vệ bởi chính sách của bạn.
Bạn có thể thêm một nhóm mới, ví dụ, hoặc thay đổi một mật khẩu người sử dụng. Các hành động này sẽ thay đổi một tệp thiết lập cấu hình, làm cho nó khác với tệp được lưu trữ trong cơ sở dữ liệu của Tripwire. Báo cáo được tạo ra sẽ đưa vào một bảng hữu ích, sao cho bạn có thể thấy chính xác những gì đã bị thay đổi và dạng ngặt nghèo như thế nào vấn đề đã được dấy lên. Bên dưới cái bảng đó, kết quả sẽ được đưa ra chi tiết. Đây là một phần nhỏ từ kết quả của Tripwire nếu bạn thay đổi một mật khẩu:
Rule Name: Security Control (/etc/shadow)
Severity Level : 66
Modified:
"/etc/shadow"
Earlier on in the configuration file, SIG_HI is given a point score of 100. If you have directories and files that aren't part of a standard Ubuntu installation, and these need to be protected, then you'll need to cre-ate your own policies for those locations. After you've finished looking at the policy file, it's time to encrypt it as we did the first one. Just type the following:
twadmin -m P twpol.txt
You will be asked for your passphrase again before the encrypted file can be generated. And that's all the configuration you need. The next step is to type 'Tripwire --init' to start building the database f-rom the locations specified in your configuration file. The time this takes is dependent on how many directories and files need to be scanned, but expect to wait long enough for the kettle to boil and the tea to stew.
When you come back to the screen, you'll probably see some error messages as Tripwire complains about directories specified in the configuration file that don't exist. You can safely ignore these. Tripwire is now ready to defend your system.
Testing your current file system against the copy held in the Tripwire database is as simple as typing 'Tripwire --check'. After a few minutes, Tripwire will start to report any detected changes. As an experiment, try editing one of the files covered by your policy.
You could add a new group, for example, or change a user's password. Either of these actions will change a configuration file, making it different f-rom the one held in the Tripwire database. The generated report will include a useful table, so that you can see exactly what has changed and what kind of severity the issue has raised. Below the table, the output goes into greater detail. Here's a snippet f-rom Tripwire's output if you change a password:
Rule Name: Security Control (/etc/shadow)
Severity Level : 66
Modified:
"/etc/shadow"
Bạn có thể thấy tên của luật theo đó các tệp mật khẩu bị sửa (bóng shadow là tệp mã hoá được sử dụng để lưu trữ các mật khẩu), và bạn cũng có thể thấy sự khắc nghiệt của vấn đề. Ở mức an ninh 66, nó là ít khắc nghiệt hơn một sự thay đổi được phát hiện ra trong các tệp khởi động và các thư mục của các modules, nhưng nó vẫn còn được lưu ý tới. Vì kết quả của Tripwire là đủ chi tiết, nên bạn có thể quyết định cho bản thân những khả năng có thể của một hệ thống bị tổn thương. Kết quả này được lưu trữ ở một dạng mã hoá trong thư mục '/var/lib/ Tripwire/report', và nếu bạn xem nó, bạn có thể thấy một tệp cho mỗi báo cáo mà bạn đã chạy.
Nếu bạn muốn tạo bất kỳ thay đổi vĩnh viễn nào được phát hiện ra và đánh dấu chúng như là chấp nhận được, thì hãy gõ 'Tripwire – up-date -r hostnamereport. Twr', chèn tên của báo cáo bạn muốn soạn thảo thay vì chỗ trống của bạn. Điều này sẽ giải mã các nội dung của báo cáo trong một phiên soạn thảo Vim (như một tập hợp của một trong các tệp thiết lập cấu hình). Các lệnh được nhúng trong tệp này, nhưng bạn thường chỉ cần loại bỏ một chữ 'x' từ các tệp mà bạn muốn cập nhật.
Việc ra khỏi trình soạn thảo này sẽ chạy việc quét một lần nữa, với những thay đổi mà bạn đã thêm vào. Với mọi thứ chạy đúng, thì bạn có thể muốn định trước thời gian cho một khoảng thời gian thường xuyên nào đó để Tripwire kiểm tra. Việc chạy một kiểm tra ít nhất một lần trong 24 giờ đồng hồ được khuyến cáo, nhưng tất cả điều này phụ thuộc vào tính dễ bị tổn thương của hệ thống của bạn. Nếu bạn biết rằng hệ thống của bạn có vấn đề về an ninh, thì hãy thử chạy Tripwire một lần trong vài giờ. Khi bạn kiểm tra các báo cáo, bạn có thể chắc chắn một cách đầy đủ rằng hệ thống của bạn không bị tổn thương.
Cập nhật: đã loại bỏ khoảng trống không chính xác trong wadmin -m G -S /etc/Tripwire/site.key. Xin thứ lỗi! - Ed.
You can see the rule name under which the password files fall under (shadow is the encrypted file used to store passwords), and you can also see the severity for the issue. At a security level of 66, it's less severe than a change detected in the boot files and modules directories, but it's still notable. Because the output f-rom Tripwire is quite detailed, you can decide for yourself the likelihood of a compromised system. The output is stored in an encrypted form in the '/var/lib/ Tripwire/report' directory, and if you take a look at it, you can see a file for every report you've run.
If you want to make any discovered changes permanent and flag them as acceptable, type 'Tripwire --up-date -r hostnamereport. twr', in-serting the name of the report you want to edit instead of our placeholder. This will decrypt the report's contents into a Vim editing session (as set in one of the configuration files). Instructions are embedded within the file, but you generally just need to remove an 'x' f-rom the files you want to up-date.
Quitting the editor will run the scan again, with your changes added. With everything running correctly, you might want to schedule a regular time interval for Tripwire checks. Running a check at least once every 24 hours is recommended, but this all depends on the vulnerability of your system. If you know that your system has security issues, try running Tripwire once every few hours. As long as you check the reports, you can be completely certain that your system hasn't been compromised.
Up-date: removed incorrect space in wadmin -m G -S /etc/Tripwire/site.key. Apologies! - Ed.
Dịch tài liệu: Lê Trung Nghĩa
Ý kiến bạn đọc
Những tin mới hơn
Những tin cũ hơn
Blog này được chuyển đổi từ http://blog.yahoo.com/letrungnghia trên Yahoo Blog sang sử dụng NukeViet sau khi Yahoo Blog đóng cửa tại Việt Nam ngày 17/01/2013.Kể từ ngày 07/02/2013, thông tin trên Blog được cập nhật tiếp tục trở lại với sự hỗ trợ kỹ thuật và đặt chỗ hosting của nhóm phát triển...