Vì sao một quy tắc cổng nguồn phá hỏng một trong các tuyến SSH của bạn
Một kết khớp "sport 22" không cho biết phản hồi thuộc về mục SSH nào. Hãy giới hạn quy tắc chính sách ở luồng quản trị thay vì một bảng chỉ dành cho WAN.
Hai mục quản trị trên một máy chủ, một cổng dịch vụ và một quy tắc chính sách lẽ ra phải giúp cả hai. Quy tắc khớp với cổng nguồn 22, gửi truy vấn tới một bảng chỉ biết mặc định của WAN, và mục VPN ngừng trả lời các lần đăng nhập mới trong khi mục trực tiếp vẫn hoạt động. Không có gì bí ẩn khi bộ chọn được đọc đúng. Cổng nguồn nhận diện một dịch vụ, không phải tuyến mà một kết nối đến.
Hai mục, một cổng dịch vụ
Máy chủ có một địa chỉ phía LAN và một địa chỉ VPN, và sshd lắng nghe trên cả hai. Vì vậy phiên trực tiếp và phiên đường hầm dùng chung cổng dịch vụ và chỉ khác nhau ở địa chỉ cục bộ nào nhận kết nối.
Khác biệt đó đủ để chọn tuyến phản hồi, và nó đúng là khác biệt mà một quy tắc dựa trên cổng bỏ qua. Cả hai phiên đều tạo ra phản hồi có cổng nguồn là 22, nên quy tắc khớp với cổng đó không thể tách chúng. Nó gửi cả hai truy vấn tới cùng một bảng, và một trong hai nhận phản hồi không phù hợp. Cách sửa là khớp với thuộc tính thực sự khác biệt.
Gán cho mỗi mục một cổng riêng cũng sẽ hiệu quả, và coi đó là yêu cầu là một lựa chọn thiết kế, không phải thuộc tính của SSH.
Đọc quy tắc, rồi đọc bảng
Quy tắc chính sách là một bộ chọn có thứ tự, và quy tắc đầu tiên trả về phản hồi dùng được sẽ kết thúc truy vấn. Đọc danh sách theo thứ tự và để ý quy tắc nào có thể thắng.
Sau đó đọc bảng mà quy tắc đó trỏ tới, vì một quy tắc được giải quyết thành công không phải là quy tắc được giải quyết hữu ích. Một bảng chỉ chứa tuyến mặc định sẽ gửi phản hồi có nguồn gốc VPN ra ngoài qua giao diện WAN. Một tuyến cụ thể hơn trong bảng sau không bao giờ được xem xét, và đó là lý do việc thêm bảng thứ hai thường không thay đổi gì. Bảng được chọn mới là thứ cần kiểm tra.
ip -4 rule show
ip route show table 100
ip route show table main
Hai kết quả đó cùng nhau giải thích kết cục; mỗi cái riêng lẻ mời gọi một kết luận sai.
Giới hạn quy tắc ở luồng mà bạn muốn nói tới
Thuộc tính tách hai mục là địa chỉ nguồn cục bộ. Quy tắc khớp với địa chỉ đó chỉ gửi các phiên đường hầm tới bảng riêng và để các phiên trực tiếp ở bảng chính.
Quy tắc đó phải được ghép với một bảng chứa tuyến riêng và tuyến trở về cho mạng con đó. Giới hạn cả hai ở lưu lượng quản trị thay vì mọi dịch vụ trên máy chủ. Một quy tắc bắt mọi lưu lượng từ địa chỉ đó cũng sẽ chuyển hướng mọi thứ khác mà máy chủ gửi từ đó. Hẹp thắng khôn ở đây, vì người tiếp theo phải đọc nó.
sudo ip rule add from 10.90.0.1 lookup 100 priority 100
sudo ip route add 10.90.0.0/24 dev wg0 table 100
ip route get 10.90.5.20 from 10.90.0.1
Nếu cả hai mục được dịch sang một địa chỉ cục bộ, khác biệt đó biến mất và thiết kế cần trạng thái nhận biết kết nối thay vào đó.
Giữ riêng trình lắng nghe, quyền và việc chọn phản hồi
Ba điều riêng biệt phải đúng trước khi một phiên hoạt động: địa chỉ tồn tại, dịch vụ lắng nghe trên đó, và phản hồi tìm được đường về. Thay đổi tuyến chỉ sửa điều thứ ba.
Cấu hình trình lắng nghe là tệp riêng và lần tải lại riêng, và nhiều địa chỉ lắng nghe là bình thường. Xác thực lại là quyết định thứ ba, và một ngoại lệ định tuyến không cấp quyền truy cập cho ai. Giữ xác minh khóa máy chủ, xác thực tài khoản và các giới hạn nguồn trên cả hai mục, và chống lại mong muốn làm yếu các kiểm soát khác của đường hầm để một tuyến quản trị hoạt động.
Giữ một kênh khôi phục không phụ thuộc vào tuyến bạn đang thay đổi, vì một sai sót ở đây khóa luôn chính việc sửa.
Hãy chứng minh bằng phiên mới, không phải phiên cũ
Một terminal đã thiết lập không chứng minh gì, vì nó được chấp nhận trước khi thay đổi. Mở phiên mới qua từng mục dự định.
ss -ltnp | grep ':22'
sudo sshd -T | grep -i listenaddress
ssh -v [email protected] true
sudo journalctl -u ssh -n 30
Sau đó lặp lại việc kết nối lại VPN và thử lại, vì một tuyến sống sót qua lần kết nối lại không giống một tuyến được thêm vào bảng mà lần kết nối lại xóa sạch. Quan sát các nguồn bị từ chối tách khỏi các nguồn được phép, để một lần thử bị chặn không ẩn sau một phiên đang hoạt động. Lưu địa chỉ cục bộ, quy tắc và bảng bên cạnh kết quả. Nếu thay vào đó bạn tách các cổng, hãy ghi đó là quyết định vận hành chứ không phải giới hạn của SSH.