Bạn mở một phiếu hỗ trợ, đính kèm bản xuất chẩn đoán do ứng dụng khách tạo ra, và chờ đợi. Tệp có lẽ không chứa lịch sử duyệt web nào cả, và chính điều đó khiến nó có vẻ an toàn. Nó vẫn chứa bạn là ai, dùng máy nào, đã tới những địa chỉ nội bộ nào và khi nào, và đôi khi là một khóa riêng do ứng dụng khách ghi nhật ký cấu hình của nó sao chép vào. Xem qua tệp trước khi gửi mất khoảng năm phút và ngăn một sự lộ lọt vĩnh viễn.

Mở nó và đọc bốn mươi dòng đầu

Bắt đầu từ trên cùng, nơi các ứng dụng khách thường đổ phiên bản, nền tảng và cấu hình. Những dòng đầu cho biết tệp chi tiết đến đâu, và điều đó quyết định bạn phải quan tâm bao nhiêu phần còn lại. Nhật ký mặc định và nhật ký gỡ lỗi là những hiện vật khác nhau với mức phơi bày khác nhau.

head -n 40 vpn-support.log
sed -n '1,40p' vpn-support.log | grep -nE 'version|platform|config|option'

Cũng hãy kiểm tra kích thước và hình dạng của tệp trước khi đọc bất cứ thứ gì từ nó. Một tệp văn bản hai megabyte với một sự kiện lặp lại thì dễ cắt bớt. Một bản ghi nhị phân trong cùng thư mục là vấn đề hoàn toàn khác, và nó cần một cuộc trò chuyện khác với người đã yêu cầu bản xuất.

Trên Windows, các tương đương là mỗi thứ một cmdlet, và cái đầu tiên đáng chạy trên bất kỳ tệp nào bạn không tự tạo:

Get-Content .\vpn-support.txt -TotalCount 40
Get-Item .\vpn-support.txt | Select-Object Length,LastWriteTime

Những trường nhận dạng một người

Tên người dùng xuất hiện ở những nơi người ta không ngờ: tài khoản dùng để xác thực, chủ thể chứng chỉ, đường dẫn hồ sơ dưới thư mục nhà, và tên máy thường mã hóa một tên thật. Một nhật ký biên tập trường tài khoản mà để nguyên đường dẫn nhà thì chưa biên tập gì cả.

FieldWhat it identifiesPractical treatment
Account or usernameA person, and often an employerReplace consistently, keep the mapping
Certificate subject and CNDevice or user identityKeep the structure, replace the value
Home directory pathA login name, sometimes a full nameReplace the segment, not the whole path
Machine or hostnameA person or a physical locationReplace with a stable pseudonym

Tính nhất quán quan trọng hơn tính đầy đủ khi kỹ sư hỗ trợ phải theo dõi một phiên qua tệp. Thay giá trị bằng nhãn ổn định thay vì xóa chúng, để mọi lần xuất hiện của cùng một người dùng vẫn đọc là cùng một người dùng. Xóa hoàn toàn trường đó làm đứt sợi chỉ mà kỹ sư cần và không làm tệp an toàn hơn.

Dấu thời gian cũng là dữ liệu cá nhân khi tổng hợp. Thời điểm một tài khoản kết nối, lấy trong một tháng, mô tả giờ làm việc và việc đi lại. Nếu câu hỏi không cần toàn bộ khoảng thời gian, hãy cắt tệp về cửa sổ quanh sự kiện.

Những trường nhận dạng một mạng

Địa chỉ điểm cuối, tuyến nội bộ và các tùy chọn được đẩy mô tả hình dạng của một mạng riêng. Đó chính là thông tin mà kẻ tấn công muốn có, và nó thường hiện diện chi tiết hơn nhiều so với nhu cầu của phiếu.

Tìm họ địa chỉ đang dùng, không chỉ họ bạn mong đợi. Một ứng dụng khách hai ngăn xếp có thể ghi một điểm cuối IPv6 và một tập tuyến IPv6 mà không ai nghĩ đến việc biên tập vì bản rà soát chỉ tìm các bộ bốn có dấu chấm.

grep -nEo '([0-9]{1,3}\.){3}[0-9]{1,3}' vpn-support.log | sort -u | head -n 40
grep -nEo '([0-9a-fA-F]{0,4}:){2,7}[0-9a-fA-F]{0,4}' vpn-support.log | sort -u | head -n 20

Danh sách duy nhất mới là điểm mấu chốt. Nó cho biết tệp nhắc đến bao nhiêu địa chỉ khác nhau, và thường ít hơn nhiều so với cảm giác khi cuộn. Nó cũng cho bạn danh sách kiểm tra để biên tập và cách chứng minh đã bao phủ tất cả. Mười địa chỉ là việc năm phút, còn một trăm cho thấy bản xuất rộng hơn câu hỏi.

Giữ lại cấu trúc liên kết nếu kỹ sư cần. Thay octet thứ hai và thứ ba trong khi giữ quan hệ mạng con trả lời câu hỏi mà không công bố dải địa chỉ. Cùng mẹo đó hiệu quả với tiền tố IPv6. Điều kỹ sư cần là hình dạng của sự cố, và hình dạng đó tồn tại sau một phép thay thế nhất quán.

Bí mật ẩn trong hình dạng, không phải nhãn

Một khóa riêng không cần từ “password” ở gần. Nó xuất hiện như một khối giữa các dòng đánh dấu, như một chuỗi base64 dài, hoặc như một bản kết xuất cấu hình nội tuyến. Token xuất hiện dưới dạng tham số truy vấn, và thông tin đăng nhập xuất hiện bên trong URL mà ứng dụng khách đã ghi nguyên văn.

grep -nE 'BEGIN [A-Z ]*PRIVATE KEY|password|passwd|token|secret|psk|auth-user-pass' vpn-support.log
grep -nE 'https?://[^ ]*:[^ ]*@' vpn-support.log

Mẫu thứ hai là mẫu người ta quên. Một URL dạng lược đồ, người dùng, mật khẩu, máy chủ là một thông tin đăng nhập đầy đủ, và ứng dụng khách ghi những URL như vậy mỗi khi proxy hoặc nguồn cấp được cấu hình với xác thực nội tuyến.

Đừng bao giờ gửi tệp gốc như bằng chứng rằng bạn đã không chỉnh sửa nó. Nếu người vận hành khăng khăng muốn bản xuất không thay đổi, hãy hỏi họ cần nó để làm gì, gửi qua kênh hỗ trợ đã xác minh của họ, rồi xóa bản sao cục bộ của bạn. Yêu cầu đó là chính đáng; dán công khai thì không.

Tạo bản sao đã biên tập và gửi đoạn trích

Làm việc trên một bản sao, giữ bản gốc ở nơi được bảo vệ, và biên tập bằng một lệnh có thể lặp lại thay vì bằng tay. Một lượt qua các mẫu địa chỉ bắt được phần lớn:

cp vpn-support.log vpn-support.original.log
sed -E 's/([0-9]{1,3}\.){3}[0-9]{1,3}/ADDR/g; s/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+/USER@DOMAIN/g' \
  vpn-support.original.log > vpn-support.redacted.log
grep -cE 'PRIVATE KEY|password|token' vpn-support.redacted.log

Số đếm cuối cùng phải bằng không. Nếu không, lượt biên tập đã bỏ sót một hình dạng và bạn nên xem những dòng đó trước khi gửi bất cứ thứ gì. Cũng hãy đọc tệp đã biên tập một lần bằng chính mắt bạn; script bắt mẫu, không bắt ngữ cảnh.

Gửi đoạn trích nhỏ nhất mà vẫn cho thấy sự cố. Mười dòng quanh lỗi thường là đủ, và chúng dễ xem lại hơn nhiều so với một tệp hai megabyte. Sau đó giữ ánh xạ giữa nhãn của bạn và giá trị thật ở nơi bạn kiểm soát, vì câu hỏi tiếp theo sẽ cần đến nó.

Tài liệu ghi nhật ký của OpenVPN mô tả mức độ chi tiết thay đổi những gì được ghi lại, đây là ngữ cảnh hữu ích để quyết định vấn đề thực sự cần bao nhiêu phần của tệp.

Bài viết liên quan