Xây dựng Tor Transparent Proxy: Cổng kết nối bảo mật tuyệt đối cho Lab ẩn danh

Security tutorial - IT technology blog
Security tutorial - IT technology blog

Tại sao sự ẩn danh lại quan trọng trong Lab?

Tôi đã từng chứng kiến các bản ghi (log) máy chủ của mình tràn ngập hơn 5.000 nỗ lực tấn công SSH brute-force chỉ trong một đêm sau một lỗi rò rỉ IP nhỏ. Sự cố đó là một hồi chuông cảnh tỉnh. Nó chứng minh rằng ngay cả một khoảnh khắc lộ IP công khai cũng có thể thu hút sự quét dọn liên tục và các cuộc tấn công có mục tiêu từ các bot tự động. Khi bạn đang thực hiện phân tích phần mềm độc hại hoặc kiểm thử xâm nhập, việc để lộ danh tính thực không chỉ là sơ suất về quyền riêng tư — đó còn là một lỗ hổng bảo mật khổng lồ.

Mặc dù Tor Browser hoạt động tốt cho việc nghiên cứu web cơ bản, nhưng nó không bảo vệ được các công cụ CLI, các bản cập nhật hệ thống chạy ngầm hoặc các script tùy chỉnh vốn thường bỏ qua các thiết lập proxy ở cấp trình duyệt. Đó là lý do tại sao tôi tin dùng Tor Transparent Proxy. Bằng cách thiết lập một gateway Linux chuyên dụng, bạn buộc mọi gói tin rời khỏi lab của mình phải đi qua mạng Tor. Không rò rỉ, không cần cấu hình thủ công cho từng ứng dụng, và hoàn toàn yên tâm.

Kiến trúc hệ thống

Thiết lập này hoạt động tốt nhất trên một máy Linux cấu hình nhẹ, chẳng hạn như một máy ảo Debian với 1GB RAM hoặc Raspberry Pi. Bạn sẽ cần hai giao diện mạng:

  • eth0 (WAN): Kết nối đầu ra internet.
  • eth1 (LAN/Internal): Gateway cho các máy trong lab (máy ảo hoặc thiết bị vật lý).

Mục tiêu của chúng ta là chặn tất cả lưu lượng truy cập đến trên eth1 và dẫn nó trực tiếp vào tiến trình Tor trước khi nó chạm tới mạng internet mở qua eth0.

Bước 1: Cài đặt Tor và các gói phụ thuộc

Tránh sử dụng các gói lỗi thời từ kho lưu trữ tiêu chuẩn. Kho lưu trữ chính thức của Tor Project là cách duy nhất để đảm bảo bạn có các bản vá bảo mật và cải thiện hiệu suất mới nhất.

# Cài đặt các gói điều kiện tiên quyết
sudo apt update
sudo apt install apt-transport-https curl lsb-release -y

# Thêm kho lưu trữ chính thức của Tor Project
cat <<EOF | sudo tee /etc/apt/sources.list.d/tor.list
deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org $(lsb_release -cs) main
EOF

# Nhập khóa GPG
curl -s https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | sudo tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null

# Cài đặt Tor, keyring và Nyx để giám sát
sudo apt update
sudo apt install tor deb.torproject.org-keyring nyx -y

Bước 2: Cấu hình Tor Daemon

Theo mặc định, Tor hoạt động như một SOCKS proxy trên cổng 9050. Chúng ta cần cấu hình lại để nó hoạt động như một gateway trong suốt và một bộ phân giải DNS. Mở tệp /etc/tor/torrc và thêm các dòng sau vào cuối tệp:

# Cổng Transparent Proxy
TransPort 9040

# Cổng DNS cho các máy khách trong lab
DNSPort 5353

# Ánh xạ địa chỉ .onion sang IP ảo
VirtualAddrNetworkIPv4 10.192.0.0/10
AutomapHostsOnResolve 1

RunAsDaemon 1

Áp dụng cấu hình mới bằng cách khởi động lại dịch vụ:

sudo systemctl restart tor

Bước 3: Định tuyến lưu lượng với IPTables

Đây là nơi chúng ta định nghĩa logic định tuyến. Chúng ta phải yêu cầu nhân Linux lấy bất kỳ lưu lượng nào truyền đến giao diện nội bộ và chuyển hướng nó đến TransPort của Tor. Tôi sử dụng một shell script cho việc này để dễ dàng cập nhật và thiết lập lại.

Tạo tệp tor-gateway.sh:

#!/bin/bash

# Cấu hình
_tor_uid=$(id -u debian-tor)
_trans_port="9040"
_dns_port="5353"
_int_if="eth1"

# Xóa các quy tắc hiện có để bắt đầu mới
iptables -F
iptables -t nat -F

# 1. Điều hướng lưu lượng DNS
iptables -t nat -A PREROUTING -i $_int_if -p udp --dport 53 -j REDIRECT --to-ports $_dns_port

# 2. Điều hướng toàn bộ lưu lượng TCP đến Tor
iptables -t nat -A PREROUTING -i $_int_if -p tcp --syn -j REDIRECT --to-ports $_trans_port

# 3. Chặn tất cả lưu lượng không qua Tor từ LAN để ngăn rò rỉ
iptables -A FORWARD -i $_int_if -j DROP

# 4. Bảo vệ gateway cục bộ (ngăn chính gateway bị rò rỉ dữ liệu)
iptables -t nat -A OUTPUT -m owner --uid-owner $_tor_uid -j RETURN
iptables -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to-ports $_dns_port
iptables -t nat -A OUTPUT -p tcp --syn -j REDIRECT --to-ports $_trans_port

Thực thi script với quyền root:

chmod +x tor-gateway.sh
sudo ./tor-gateway.sh

Để đảm bảo các quy tắc này vẫn tồn tại sau khi khởi động lại hệ thống, hãy cài đặt gói persistence:

sudo apt install iptables-persistent -y
sudo netfilter-persistent save

Bước 4: Loại bỏ rò rỉ DNS

Rò rỉ DNS là sai lầm phổ biến nhất trong các thiết lập bảo mật. Ngay cả khi lưu lượng web của bạn được mã hóa, ISP vẫn có thể thấy mọi tên miền bạn yêu cầu nếu bạn sử dụng DNS tiêu chuẩn. Bằng cách thiết lập DNSPort 5353 và điều hướng cổng 53, chúng ta buộc mọi truy vấn phải đi qua mạch nối (circuit) của Tor.

Trên các máy khách của bạn, hãy thiết lập DNS server tĩnh thành địa chỉ IP của giao diện eth1 trên gateway. Điều này đảm bảo máy khách không cố gắng kết nối trực tiếp đến 8.8.8.8 hoặc các bộ phân giải của ISP.

Bước 5: Kiểm tra và Giám sát

Đừng bao giờ mặc định rằng proxy đang hoạt động cho đến khi bạn chứng minh được điều đó. Từ một máy khách, hãy chạy một kiểm tra đơn giản:

curl https://check.torproject.org

Nếu trang web xác nhận bạn đang sử dụng Tor, hệ thống của bạn đã an toàn.

Để theo dõi thời gian thực, tôi khuyên dùng Nyx. Đây là một bảng điều khiển CLI mạnh mẽ cho các nút Tor. Chạy nó trên gateway để xem các mạch nối đang hoạt động:

sudo -u debian-tor nyx

Công cụ này giúp bạn trực quan hóa việc sử dụng băng thông và xác định vị trí địa lý của các nút thoát (exit nodes) hiện tại.

Đôi dòng về hiệu năng

Định tuyến tất cả lưu lượng qua ba lớp nút mã hóa sẽ làm tăng độ trễ đáng kể. Bạn nên chuẩn bị tinh thần cho việc ping tăng từ 20ms lên 300ms hoặc cao hơn. Mặc dù điều này khiến việc tải các tệp ISO lớn trở nên tẻ nhạt, nhưng sự đánh đổi về bảo mật là bắt buộc đối với các nghiên cứu quan trọng. Việc xây dựng nền tảng này đúng cách đảm bảo rằng một công cụ bị cấu hình sai sẽ không vô tình tiết lộ vị trí của bạn cho những kẻ tấn công.

Share: