Bảo vệ VPN kết thúc ở đâu trên đường tới máy chủ FTP
VPN chỉ bao phủ đường tới cổng của nó, không bao gồm đoạn phía sau. Phân biệt FTP thường, FTPS và SFTP, sau đó xác minh kênh dữ liệu và danh tính của bên kia.
VPN bảo vệ một tuyến đường, và mọi tuyến đường đều có điểm kết thúc. Khi đường hầm kết thúc tại cổng của công ty, việc truyền tệp tiếp tục từ đó dưới sự bảo vệ mà giao thức của chính nó cung cấp. Sự khác biệt đó quyết định việc truyền được bảo vệ từ đầu đến cuối hay chỉ đến cổng. Chỉ báo Connected không nói gì về cả hai.
Hai vị trí, hai tuyến đường còn lại
Lấy một máy tính xách tay tham gia VPN của công ty rồi mở phiên FTP tới một máy chủ nội bộ riêng. Đường hầm dừng tại cổng, và đoạn từ cổng đến máy chủ đó nằm ngoài nó.
FTP thường không có mã hóa chỉ vì các gói tin của nó đến qua một đường hầm. Trên đoạn còn lại đó, các lệnh, thông tin đăng nhập và nội dung tệp di chuyển đúng như giao thức quy định, tức là công khai. Việc đó có quan trọng hay không phụ thuộc vào cấu trúc mạng và vào thứ khác bảo vệ đoạn đường, và gọi địa chỉ là riêng tư không trả lời câu hỏi. Lập luận tương tự cũng đúng theo chiều ngược lại khi máy chủ nằm trong một mạng đám mây mà cổng tiếp cận qua thêm một bước nhảy.
Đặt điểm cuối VPN và dịch vụ FTP trên cùng một máy, và không còn đoạn tiếp theo nào phải lo. Đó là một vị trí khác, không phải bằng chứng rằng các tiến trình, tệp và thông tin đăng nhập của máy chủ là an toàn.
FTP thường, FTPS và SFTP là ba quyết định
FTP thường không mã hóa bất cứ thứ gì, kể cả mật khẩu. FTPS thêm TLS vào FTP, nên kênh điều khiển và, khi được thương lượng, kênh dữ liệu được bảo vệ. SFTP là một giao thức khác được mang bên trong SSH, và nó không phải một cách viết khác của FTPS.
Máy chủ phải hỗ trợ lựa chọn đó, vì máy khách không thể tạo ra một trình lắng nghe không tồn tại. Chọn SFTP không biến một dịch vụ chỉ chạy FTP thành điểm cuối SSH, và đổi tên dấu trang hay đổi cổng không chứng minh gì về những gì đã thương lượng. Xác nhận giao thức từ phía máy chủ cũng như từ phía máy khách. Ổ khóa trong trình quản lý tệp là một khẳng định về phiên, không phải về trình lắng nghe phía sau nó.
| Protocol | Usual port | What it protects | Identity check |
|---|---|---|---|
| FTP | 21 | Nothing on the wire | None beyond the login |
| FTPS | 21 or 990 | Control channel, data channel when required | TLS server certificate |
| SFTP | 22 | The whole session inside SSH | SSH host key |
Đọc cột cuối khi việc truyền tệp quan trọng, vì đó là nơi xuất hiện một thay đổi danh tính bất ngờ.
Kết nối dữ liệu là kết nối thứ hai
FTP mở một kết nối điều khiển rồi các kết nối dữ liệu riêng cho danh sách và truyền tệp. Một lần đăng nhập được bảo vệ không nói gì về những kết nối sau đó, trừ khi việc triển khai yêu cầu bảo vệ cho cả chúng.
Với FTPS, máy khách yêu cầu một kênh dữ liệu được bảo vệ bằng một lệnh cụ thể, và chính sách của máy chủ có thể từ chối phương án công khai. Hãy xác minh rằng chính sách yêu cầu điều đó thay vì cho rằng mặc định của máy khách là đủ. Chế độ thụ động thêm một phức tạp thứ hai, vì máy chủ quảng bá một địa chỉ và cổng cho kết nối dữ liệu. Tường lửa hoặc thiết bị NAT ghi lại hoặc chặn quảng bá đó tạo ra một phiên xác thực được rồi bị treo ở danh sách đầu tiên.
curl -vk ftps://files.corp.example/ --user alice --ftp-ssl-control
openssl s_client -connect files.corp.example:21 -starttls ftp
ss -tnp | grep -E ':21|:990'
Lệnh thứ hai cho thấy máy chủ trình bày gì trên kênh điều khiển trước khi chạm vào bất kỳ tệp nào. Lệnh thứ ba cho thấy liệu một kết nối dữ liệu có bao giờ được thiết lập, đó là khác biệt giữa lỗi xác thực và lỗi của chế độ thụ động.
Các kiểm tra danh tính sống sót qua đường hầm
Một máy khách FTPS xác thực danh tính máy chủ TLS, và một máy khách SFTP xác thực khóa máy chủ SSH. Cả hai kiểm tra đều thuộc giao thức truyền tệp, và không kiểm tra nào do VPN thực hiện.
Sự tách biệt đó quan trọng khi thứ gì đó ở giữa muốn kiểm tra phiên. Tắt TLS để thiết bị mạng có thể đọc các lệnh làm thay đổi mô hình bảo vệ thay vì hoàn thiện nó, và điều tương tự cũng đúng với việc chấp nhận một khóa máy chủ không rõ lý do vì đường hầm đã lên. Giữ cấu hình tin cậy đã định và lấy vật liệu đúng từ người vận hành. Một đường hầm xác thực được không nói gì về máy chủ ở đầu xa của nó.
Vật liệu khóa riêng và chứng chỉ cho các giao thức này là một bí mật thứ ba nữa, tách khỏi thông tin đăng nhập VPN.
Ghi lại những gì bạn thực sự đã xác minh
Chọn một tệp vô hại mà bạn được phép di chuyển, và ghi lại bốn sự thật về lần thử: giao thức nào đã chạy, danh tính bên kia nào đã được kiểm tra, tuyến đường nào đã định, và việc truyền tệp có hoàn tất không.
lftp -u alice -e "set ftp:ssl-protect-data true; ls; bye" ftps://files.corp.example
sftp -v [email protected]
Danh sách thư mục, đăng nhập vào đường hầm và một lần truyền đã hoàn tất là ba quan sát riêng biệt, và chỉ quan sát cuối cùng nói rằng tuyến đường hoạt động với tệp. Nếu thiết kế chỉ dựa vào VPN cho tính bí mật ở bước nhảy còn lại, hãy ghi điều đó như chính quyết định đó. Một ghi chú nghiệm thu nêu tên bước nhảy và giả định tin cậy của nó có giá trị hơn ảnh chụp màn hình một máy khách đang kết nối.