Bối cảnh: Khi SSL truyền thống là chưa đủ
Cách đây không lâu, mình xử lý một ca khó: Triển khai cổng thông tin nội bộ cho một tổ chức yêu cầu ẩn danh tuyệt đối. Ngay cả nhà cung cấp hạ tầng (ISP) cũng không được phép biết server tồn tại. Với HTTPS thông thường, ISP vẫn thấy bạn kết nối tới IP nào. Để giải quyết triệt để, Tor Onion Service (website .onion) là lựa chọn duy nhất mình tin dùng.
Sau khi audit hơn 10 hệ thống bảo mật, mình thấy lỗi phổ biến nhất là để lộ IP thật do cấu hình Nginx hớ hênh. Chạy một website .onion thì dễ, nhưng chạy sao cho không bị “lộ căn cước” mới là nghệ thuật. Bài viết này sẽ đi thẳng vào kỹ thuật thiết lập chuẩn trên Linux.
Bước 1: Cài đặt Nginx và Tor
Đầu tiên, chúng ta cần một web server (Nginx) và dịch vụ Tor để tạo tunnel. Mình khuyến khích dùng Ubuntu hoặc Debian vì các gói package được cập nhật rất ổn định.
sudo apt update
sudo apt install nginx tor -y
Cài xong, hãy kiểm tra trạng thái dịch vụ. Tor lúc này chỉ mới chạy như một client thông thường, chưa có Hidden Service nào được kích hoạt.
sudo systemctl status tor
Bước 2: Cấu hình Nginx – Chặn đứng rò rỉ IP
Đây là tử huyệt của nhiều sysadmin. Mặc định, Nginx lắng nghe trên 0.0.0.0 (tất cả interface). Nếu giữ nguyên, kẻ tấn công dùng công cụ như Shodan có thể quét thấy server của bạn qua IP public. Từ đó, họ đối chiếu nội dung và khẳng định bạn chính là chủ nhân của trang .onion đó.
Hãy ép Nginx chỉ được phép lắng nghe trên localhost (127.0.0.1).
sudo nano /etc/nginx/sites-available/default
Chỉnh sửa block server như sau:
server {
listen 127.0.0.1:8080;
server_name localhost;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
# Giấu phiên bản Nginx để tránh bị exploit theo CVE
server_tokens off;
}
Mình dùng port 8080 để tách biệt hoàn toàn với traffic web thông thường. Khởi động lại Nginx để áp dụng thay đổi:
sudo systemctl restart nginx
Bước 3: Kích hoạt Tor Onion Service
Bây giờ, chúng ta sẽ mở cánh cửa để thế giới Tor tìm thấy server. Bạn cần can thiệp vào file torrc.
sudo nano /etc/tor/torrc
Tìm phần “Hidden Services” và thêm hai dòng sau:
HiddenServiceDir /var/lib/tor/my_onion_site/
HiddenServicePort 80 127.0.0.1:8080
Lưu ý quan trọng:
HiddenServiceDir: Nơi lưu private key. Mất file này là mất vĩnh viễn địa chỉ .onion.HiddenServicePort: Tor nhận traffic từ cổng 80 của mạng ẩn danh rồi đẩy về cổng 8080 nội bộ.
Khởi động lại Tor để hệ thống tự sinh địa chỉ định danh:
sudo systemctl restart tor
Bước 4: Lấy địa chỉ .onion
Tor sẽ tự tạo một thư mục riêng với quyền hạn cực kỳ khắt khe. Bạn cần quyền root để đọc file chứa tên miền.
sudo cat /var/lib/tor/my_onion_site/hostname
Kết quả sẽ là một chuỗi ký tự dài như vww6ybal4bd7szmgncyruucpgfkqahzddiqe.onion. Hãy copy nó vào Tor Browser. Nếu trang Nginx hiện ra, bạn đã thành công.
Bước 5: Hardening – Gia cố pháo đài
Online được là một chuyện, trụ vững trước các đợt scan hay không lại là chuyện khác. Nhiều server bị “lật mặt” qua các HTTP header thừa thãi.
Xóa sạch dấu vết Header
Nginx thường gửi kèm X-Powered-By hoặc các thông tin backend. Hãy dùng các chỉ thị sau để xóa chúng:
# Thêm vào block server của Nginx
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
proxy_hide_header X-Powered-By;
Cấu hình Log ẩn danh
Để bảo vệ người dùng, tốt nhất là không lưu log truy cập. Nếu server bị chiếm quyền kiểm soát, kẻ tấn công sẽ không có dữ liệu để phân tích hành vi user.
access_log off;
error_log /var/log/nginx/error.log crit;
Giám sát bằng Nyx
Muốn biết server đang tải bao nhiêu bandwidth hay có bao nhiêu circuit đang kết nối? Hãy dùng nyx.
sudo apt install nyx
sudo -u debian-tor nyx
Nguyên tắc sống còn (OPSEC)
Kỹ thuật đúng mới chỉ đạt 50% yêu cầu. 50% còn lại nằm ở tư duy vận hành:
- Cách ly dịch vụ: Tuyệt đối không chạy Mail server hay Database có kết nối ra ngoài trên cùng máy chủ này. Một sơ hở nhỏ từ dịch vụ khác sẽ khiến IP thật bị lộ ngay lập tức.
- Metadata là kẻ thù: Ảnh bạn upload lên web thường chứa tọa độ GPS hoặc thông tin thiết bị (EXIF). Hãy dùng công cụ xóa sạch metadata trước khi đăng tải.
- Ưu tiên Static Content: JavaScript là con dao hai lưỡi. Nó có thể bị khai thác để ép trình duyệt người dùng thực hiện truy vấn ngoài ý muốn nhằm tìm ra danh tính thực.
Triển khai Tor Onion Service không chỉ dành cho những mục đích nhạy cảm. Đây là công cụ mạnh mẽ để bảo vệ quyền riêng tư trong một thế giới mà dữ liệu cá nhân đang bị khai thác quá mức. Hy vọng hướng dẫn này giúp bạn xây dựng được một không gian số an toàn và bảo mật.

