Cấu hình phần cứng và phần mềm tốt nhất nhưng không thể bảo vệ được tài nguyên của ta nếu ta không có chính sách bảo mật hiệu quả. Trước khi thực hiện bất kỳ một phần mềm tin tưởng nào, hãy dành thời gian để xem xét lại chính sách bảo mật của ta. Một chính sách bảo mật tốt, thực thi đúng, ngoài dòng tài sản ta đang cố gắng bảo vệ, các cơ chế bảo vệ được cài đặt như thế nào, mức độ chấp nhận rủi ro hoạt động và phải làm gì trong trường hợp thỏa hiệp hoặc sự cố. Thiếu đi sự vững chắc, và đúng đắn trong chính sách bảo mật thì nghĩa là ta đang chiến đấu một trận chiến mà đã nắm chắc phần thua.
2.3.2.Những biện pháp bảo vệ máy chủ web.
Có một vài cách để tránh những con mắt tò mò của một trình thu thập web khỏi việc khai thác quá sâu vào website của ta. Tuy nhiên, hãy nhớ rằng một máy chủ web được thiết kế để lưu trữ dữ liệu có nghĩa là nó được sử dụng chung. Mặc dù tất cả các biện pháp bảo vệ là tốt nhất thì rò rỉ thông tin vẫn xảy ra. Nếu ta thực sự quan tâm về việc giữ thông tin nhạy cảm của mình, hãy giữ nó tránh xa những máy chủ web công cộng. Di chuyển dữ liệu đến một mạng nội bộ hoặc trên một máy chủ chuyên biệt, nơi được dành riêng để phục vụ thông tin với chính sách thực thi một cách an toàn và đáng tin cậy. Đừng tạo thói quen chia máy chủ web thành các vai trò riêng biệt dựa trên mức độ truy cập. Nó cũng quá dễ để người sử dụng sao chép dữ liệu từ một tập tin khác, mà có thể làm cho một vài cơ chế bảo vệ trên thư mục trở nên vô dụng. Hơn nữa, xem xét sự ảnh hưởng từ một hệ thống máy chủ web công khai khi bị thỏa hiệp. Cân nhắc kỹ trong việc hệ thống được xây dựng đúng cách, sự thỏa hiệp của một máy chủ web công khai chỉ là kết quả trong sự thỏa hiệp của thông tin công khai. Hạn chế thích hợp việc truy cập sẽ ngăn chặn được những kẻ tấn công máy chủ web từ một máy khác bất kỳ, làm cho kẻ tấn công gặp nhiều khó khăn hơn khi xâm nhập vào các thông tin nhạy cảm. Nếu thông tin nhạy cảm được lưu trữ bên cạnh những thông tin công khai trên máy chủ web công khai, sự thỏa hiệp của máy chủ đó cũng có thể có khả năng làm hại đến nhiều thông tin
56
nhạy cảm. Chúng ta sẽ bắt đầu bằng việc xem xét một vài biện pháp khá đơn giản mà có thể được thực hiện để khóa một máy chủ web từ bên trong. Đây là những nguyên tắc chung, chúng không có nghĩa là một giải pháp hoàn chỉnh mà là để nhấn mạnh một số khu vực quan trọng thường gặp trong việc phòng thủ. Chúng ta sẽ không tập trung vào bất kỳ loại hình máy chủ cụ thể nào nhưng sẽ xem xét ý kiến cho rằng nên phổ biến đến bất cứ máy chủ web nào. Chúng ta sẽ không nghiên cứu cách cụ thể để bảo vệ ứng dụng web mà sẽ khai thác nhiều hơn về phương thức thường gặp đã được chứng minh là đặc biệt hiệu quả để chống lại trình thu thập web 2.3.3.1 Vô hiệu hóa liệt kê thư mục (directory listing)
Hình 2.27: Directory listing tiết lộ vị trí tập tin .htaccess
Hình 2.27 thể hiện một ví dụ của directory listing đã tiết lộ vị trí của tập tin .htaccess. Bình thường, tập tin này dùng để bảo vệ nội dung thư mục khỏi bị xem trái phép. Tuy nhiên, một máy chủ cấu hình sai tập tin này đã cho phép xem danh sách thư mục, thậm chí là đọc nó.
Directory listing nên bị vô hiệu hóa trừ khi ta muốn cho người dùng bình thường đọc được các tập tin trong chế độ ftp. Trên một vài máy chủ danh sách thư mục sẽ xuất hiện nếu file index bị thiếu. File này giống như index.html, index.htm hay
57
default.asp nên xuất hiện trong mỗi thư mục và nên trình bày trang này tới người dùng. Trên máy chủ web Apache, ta có thể vô hiệu hóa directory listing bằng cách đặt dấu gạch ngang hoặc dấu trừ trước từ Indexes trong file httpd.conf. Nó có thể giống như thế này nếu directory listing (hoặc "indexes") bị vô hiệu hóa:
Options -Indexes FollowSymLinks MultiViews
2.3.2.2 Xây dựng file robots.txt
File robots.txt là file dạng văn bản, cung cấp một danh sách các lệnh cho trình thu thập web tự động, cũng có thể gọi là robots hay bots. Được tiêu chuẩn hóa tại địa chỉ www.robotstxt.org/wc/norobots.html, các tập tin và thư mục đặt ra giới hạn cho robots web. File robots.txt phải được đặt trong thư mục gốc của máy chủ web với các quyền cho phép máy chủ web đọc các tập tin. Dòng đầu tiên của file sẽ có dấu # được xem như chú thích và sẽ được bỏ qua. Mỗi dòng tiếp theo sẽ không bắt đầu bằng dấu # mà bắt đầu bằng User-agent hay lệnh disallow, theo sau đó là dấu 2 chấm và các tùy chọn. Những dòng này được viết để không cho phép trình thu thập truy cập vào các thư mục hoặc tập tin nhất định. Mỗi trình thu thập web nên gửi trường user-agent, trong đó liệt kê tên hay kiểu của trình thu thập. Giá trị của trường user-agent của Google là Googlebot. Muốn bots của Google nên sử dụng hướng dẫn này để tìm kiếm trên web của ta thì user-agent nên để như sau:
User-agent: Googlebot
Để áp dụng cho tất cả các bots của các hệ thống tìm kiếm thì có thể dùng
User-agent: *
Để ngăn chặn Googlebot thu thập tất cả các tài liệu PDF của ta, có thể sự dụng lệnh sau trong file robots.txt
58
Ký tự $ cho biết kết thúc của một tên. Hoặc ta không muốn Googlebot “dòm ngó” đến một file hoặc thư mục nào đó ta chỉ cần thay thế dòng disallow với tên file hoặc thư mục mà ta không muốn nó “dòm ngó”,
ví dụ ta không muốn nó “lục lọi” ở thư mục admin hoặc cgi-bin:
User-agent: Googlebot Disallow: /admin/ Disallow: /cgi-bin/
Khi ta đã cài đặt file robots.txt, ta có thể kiểm tra tính hợp lệ của nó bằng cách truy cập vào www.sxw.org.uk/computing/robots/check.html
Tuy file robots.txt có rất nhiều ưu điểm nhưng nó lại có một nhược điểm khá lớn đó là kẻ tấn công có thể xem file robots.txt của website để biết được các file và thư mục được ánh xạ trên máy chủ. Dưới đây là một ví dụ
59
Hình 2.29: Nội dung của một tập tin roots.txt
NOARCHIVE: File robots.txt giúp ngăn chặn việc tìm kiếm của Google trên website của ta. Tuy nhiên, trong trường hợp ta muốn Google thu thập trang của ta nhưng lại không muốn Google sao chép website lên cache hoặc lưu trư một liên kết đến cache trong kết quả tìm kiếm. Có thể thực hiện điều này với thẻ META. Để chặn tất cả các trình thu thập lưu trữ tài liệu lên cache, đặt thẻ META sau đây trong phần
HEAD của tài liệu:
<META NAME="ROBOTS" CONTENT="NOARCHIVE">
Nếu ta muốn chỉ có Google thì sử dụng thẻ META trong phần HEAD của tài liệu:
<META NAME="GOOGLEBOT" CONTENT="NOINDEX, NOFOLLOW">
Bất kỳ trình thu thập phối nào có thể được giải quyết theo cách này bằng cách chèn tên của nó như là META NAME. Có thể hiểu rằng, quy định này chỉ đề cập đến trình thu thập còn khác truy cập hoặc kẻ tấn công vẫn có thể truy cập các trang này.
60
NOSNIPPET: Snippet là nội dung được liệt kê bên dưới tiêu đề của một tài liệu liên trên trang kết quả của Google. Có in đậm những từ khóa có mặt trên từ khóa tìm kiếm của người dùng truy vấn, snippet rất tiện lợi khi ta đang có hàng đống kết quả. Tuy nhiên, trong một vài trường hợp, snippet cần được loại bỏ. Xem xét trường hợp thuê bao - dựa vào dịch vụ tin tức. Mặc dù website muốn có các loại trình bày mà Google có thể cung cấp, nó cần bảo vệ nội dung của nó (bao gồm cả nội của snippets) từ khách hàng không trả phí. Trang web như vậy có thể thực hiện mục tiêu này bằng cách kết hợp các thẻ META NOSNIPPET với các bộ lọc trên nền IP cho phép trình thu thập của Google duyệt nội dung. Để Google hiển thị các snippets, sử dụng đoạn mã sau:
<META NAME="GOOGLEBOT" CONTENT="NOSNIPPET">
Một chức năng khá thú vị của thẻ NOSNIPPet là Google sẽ không lưu các tài liệu vào cache. NOSNIPPET loại bỏ cả snippet và các trang cache.
2.3.2.3 Cơ chế bảo vệ bằng mật khẩu
Google không đưa vào các hình thức xác thực người dùng. Khi gặp các form password thông thường, Google dường như bỏ qua và chỉ giữ lại URL của trang trong cơ sở dữ liệu của nó. Nếu Google thu thập một trang bảo vệ bằng mật khẩu hoặc trước khi trang được bảo vệ hoặc trong khi việc bảo vệ bằng mật khẩu không hoạt động, Google sẽ lưu lại một hình ảnh của trang được bảo vệ. Nhấn vào trang gốc sẽ hiển thị hộp thoại mật khẩu, nhưng các trang lưu trữ không cung cấp các ảnh mà Google đã bỏ qua bảo mật của trang. Trong một trường hợp khác, trang tìm kiếm thông tin của Google sẽ cung cấp một đoạn của câu chuyện trong bản tin từ trang web đã đăng ký. Nhưng khi nhấn vào liên kết đến câu chuyện trên màn hình thì lại hiện ra hộp thoại đăng nhập gồm membername và password. Bằng cách nào đó Google đã bỏ qua hộp thoại mật khẩu và màn hình đăng ký. Nếu ta không muốn để dữ liệu của mình một cách công khai (trình thu thập như google), ta có thể áp dụng một cơ chế xác thực mật khẩu. Một cơ chế xác thực mật khẩu cơ bản như htaccess dành cho Apache. File htaccess kết hợp với file htpassword cho phép ta
61
xác định một danh sách kết hợp các tên người dùng, mật khẩu có thể truy cập vào các thư mục cụ thể. Ta sẽ tìm thấy một hướng dẫn về htaccess dành cho Apache tại http://httpd.apache.org/docs/howto/htac-cess.html hoặc thử tìm kiếm trên Google sử dụng htaccess như thế nào?