OffshoreVps
Bảo mật19 thg 10 20268 phút đọcBởi đội ngũ OffshoreVps

Ẩn IP máy chủ gốc: proxy, CDN và các rò rỉ

CDN chỉ che được máy chủ của bạn khi không có gì khác làm lộ nó. Tìm hiểu cách IP gốc bị rò rỉ qua lịch sử DNS, email và chứng chỉ, và cách khóa chặt máy chủ gốc.

Đặt CDN hoặc reverse proxy phía trước một website giúp hấp thụ lưu lượng và che giấu địa chỉ máy chủ, nhưng chỉ khi IP thật vẫn chưa bị lộ. Kẻ tấn công hiếm khi phá được CDN. Chúng tìm thẳng máy chủ gốc. Hướng dẫn này liệt kê những nơi máy chủ gốc có thể bị lộ và cách khiến nó từ chối mọi thứ ngoại trừ proxy của bạn.

Hình minh họa khiên và ổ khóa với các nhãn Proxy đứng trước, Danh sách cho phép máy chủ gốc, Không rò rỉ, thể hiện việc giữ bí mật IP máy chủ gốc
Các ý chính được đề cập trong bài viết này.

Máy chủ gốc bị tìm ra bằng cách nào

  • Lịch sử DNS: một số dịch vụ lưu lại bản ghi cũ, nên IP bạn dùng trước khi thêm CDN vẫn còn được liệt kê.
  • Subdomain: các bản ghi như mail., ftp. hoặc dev. trỏ thẳng vào máy chủ.
  • Header email: thư gửi đi từ cùng một máy chủ để lộ IP của nó trong phần header.
  • Certificate transparency và quét internet: các bộ quét đối chiếu một chứng chỉ với mọi IP đang phục vụ chứng chỉ đó.
  • Hành vi của ứng dụng: webhook, trình tải ảnh và các tính năng "kiểm tra URL này" đều kết nối ra ngoài từ máy chủ gốc.

Bước 1: bắt đầu từ trạng thái sạch

Nếu máy chủ đã bị lộ, cách khắc phục an toàn nhất là dùng IP mới, hoặc dùng máy chủ mới rồi di chuyển sang. Che giấu một địa chỉ đã công khai là vô ích. Hãy lên kế hoạch chuyển với hướng dẫn di chuyển không gián đoạn.

Các bước của hướng dẫn này theo thứ tự: 1. Máy chủ gốc bị tìm ra bằng cách nào; 2. bắt đầu sạch; 3. chỉ nhận lưu lượng từ proxy; 4. tách biệt mọi thứ có thể rò rỉ; 5. kiểm tra như kẻ tấn công
Các bước trong hướng dẫn này, theo thứ tự.

Bước 2: chỉ nhận lưu lượng từ proxy

Chỉ cho phép các cổng web từ dải IP mà proxy công bố và không gì khác. Với UFW, việc này trông như bên dưới, dùng các dải IP mà nhà cung cấp của bạn công bố.

sudo ufw default deny incoming
sudo ufw allow OpenSSH
for ip in $(cat proxy-ranges.txt); do sudo ufw allow from "$ip" to any port 443 proto tcp; done
sudo ufw enable

Hãy làm mới danh sách theo lịch, vì các dải IP thay đổi. Để bảo đảm chắc chắn hơn, hãy dùng authenticated origin pulls (mutual TLS) để Nginx từ chối mọi client không có chứng chỉ của proxy.

Bước 3: tách riêng mọi thứ có thể gây rò rỉ

  • Gửi email qua một máy chủ hoặc relay khác, đừng bao giờ gửi từ máy chủ gốc.
  • Giữ các subdomain không phải web ra khỏi IP của máy chủ gốc.
  • Cho các yêu cầu tải dữ liệu ra ngoài của ứng dụng đi qua một proxy hoặc một worker riêng.
  • Dùng một server block Nginx mặc định trả về phản hồi rỗng với Host không xác định, để việc quét IP trần không cho thấy gì.
server {
    listen 443 ssl default_server;
    ssl_reject_handshake on;
}

Bước 4: kiểm tra như một kẻ tấn công

Hãy tìm tên miền của bạn trong các công cụ lịch sử DNS, quét dải IP của chính bạn để tìm chứng chỉ và kiểm tra header của một thư thử. Nếu bất kỳ cách nào để lộ máy chủ gốc, hãy đổi IP và lặp lại.

Hãy nhớ điều này làm được gì và không làm được gì: nó bảo vệ khả năng hoạt động và tính riêng tư của địa chỉ. Nó không che giấu ai là chủ tài khoản. Về điều đó, hãy đọc hosting ẩn danh thực sự ẩn danh đến đâu, và với các cuộc tấn công vượt qua tầng mạng, xem phòng thủ Layer 7.