Có một nghi lễ vượt qua cho bất kỳ ai mới chạy máy chủ của riêng mình: bạn quyết định thiết lập một tường lửa, bạn gõ vài lệnh ufw, bạn bấm enable — và terminal của bạn im lặng. SSH biến mất. Bạn không sập gì, bạn không bị hack. Bạn chỉ khóa cửa với bạn ở bên ngoài.
Nó xảy ra với cả các sysadmin giỏi. Nó xảy ra với một khách hàng của chúng tôi tuần trước, đó là vì sao tôi viết cái này xuống. Tin vui: nó hoàn toàn khôi phục được trong dưới một phút, và bạn không cần cài lại hay mất một tập tin. Đây là cách.

Điều gì thực sự sai
ufw (Uncomplicated Firewall) mặc định từ chối tất cả đến. Khoảnh khắc bạn chạy ufw enable, bất cứ gì bạn không cố ý cho phép bị bỏ — kể cả phiên SSH bạn đang ngồi. Nếu bạn quên ufw allow cổng SSH của bạn trước, bạn đã cắt kết nối của chính mình ngay khi quy tắc có hiệu lực.
Đó là phiên bản kinh điển. Có hai loại khác bắt người ta:
- Bạn cho phép sai cổng. Gõ sai, hoặc bạn cho phép cổng dịch vụ (giả sử 8080) và quên 22.
- Bạn cho phép 22 nhưng rồi đặt một quy tắc
denycao hơn trong danh sách che nó. ufw nhạy thứ tự.
Dù cách nào chính máy chủ vẫn ổn — đang chạy, đĩa nguyên vẹn, ứng dụng của bạn vẫn ngân nga sau bức tường. Nó thuần túy là một vấn đề truy-cập-mạng. Chính là vì sao cách sửa dễ.
Nước đi sai: cài lại
Bản năng đầu tiên thường là "cứ reset máy chủ và bắt đầu lại." Đừng — không cho cái này. Một lần cài lại xóa mọi thứ để lấy lại một SSH hoạt động, khi thứ chặn SSH là một lệnh tường lửa bạn có thể hoàn tác trong mười giây. Bạn sẽ đốt cả ngôi nhà vì bạn khóa cửa trước.
Cài lại là lựa chọn đúng khi bạn muốn một khởi đầu sạch. Cho một lần khóa ufw, nó là quá mức.
Nước đi đúng: web console
Mọi VPS đáng giá cho bạn một console ngoài-băng-tần — một đường vào cỗ máy không đi qua SSH hay thậm chí ngăn xếp mạng. Trên EQVPS nó là nút Console trên trang máy chủ của bạn. Nó là một serial console: chỉ văn bản, kết nối thẳng tới VM theo cách một màn hình và bàn phím sẽ làm. Một quy tắc tường lửa không có quyền lực trên nó, vì nó không phải lưu lượng mạng.

Bấm nó, đăng nhập với thông tin đăng nhập root của bạn (hoặc tiết lộ mật khẩu trong panel nếu bạn không có nó sẵn), và bạn ở trên cỗ máy — tường lửa hay không tường lửa.
Giờ hoàn tác thiệt hại. Con đường nhanh nhất:
sudo ufw disable
Cái đó tắt tường lửa và giữ các quy tắc của bạn, để bạn có thể bật lại nó sau khi bạn đã sửa sai lầm. SSH trở lại thẳng.
Nếu bạn thà không bỏ tường lửa hoàn toàn, chỉ mở cổng bạn đã bỏ lỡ:
sudo ufw allow 22
sudo ufw status numbered
Xem status numbered đáng nhìn — nó cho thấy thứ tự quy tắc, vốn là nơi các trường hợp "tôi cho phép 22 nhưng nó vẫn chặn" ẩn. Nếu một deny ngồi trên allow của bạn, xóa nó với sudo ufw delete <number>.
Cái bẫy NAT hầu hết các hướng dẫn bỏ lỡ
Nếu bạn ở một gói NAT, có một cái bẫy ở đây. Bạn SSH vào trên một cổng cao — thứ gì đó như 20266 — nên bản năng tự nhiên là ufw allow 20266. Cái đó không làm gì.
Trên NAT, cổng ngoài đó được chuyển tiếp tới cổng 22 bên trong VM. ufw chạy bên trong VM và chỉ từng thấy 22. Nên quy tắc bạn thực sự cần là:
sudo ufw allow 22
Cho phép 20266 và bạn sẽ nhìn chằm chằm một kết nối vẫn hỏng tự hỏi vì sao. Cho phép 22 và bạn vào. Cùng ý tưởng cho bất kỳ dịch vụ: cho phép cổng mà tiến trình lắng nghe bên trong cỗ máy, không phải cái được chuyển tiếp bạn kết nối từ bên ngoài.
Cách không bao giờ làm điều này lần nữa
Cách sửa mất một phút, nhưng không cần nó thì tốt hơn. Hai thói quen:
Cho phép cổng SSH của bạn trước khi bạn bật. Theo thứ tự này, luôn luôn:
sudo ufw allow 22
sudo ufw enable
Làm ngược lại và bạn trở lại trong console.
Giữ một phiên thứ hai mở trong khi bạn thay đổi các quy tắc tường lửa. Đăng nhập hai lần. Làm các thay đổi của bạn trong một cửa sổ; nếu SSH chết, cửa sổ kia vẫn sống để sửa nó. Mẹo cũ, cứu bạn mỗi lần.
Và nếu bạn đang thiết lập một cỗ máy mới, danh sách kiểm tra bảo mật VPS-mới của chúng tôi bao quát ufw theo đúng thứ tự, cùng các khóa SSH và một nhúm thứ khác thực sự quan trọng trong mười phút đầu.
Điều rút ra
Một lần khóa ufw trông đáng sợ và gần như không là gì. Máy chủ không bao giờ rời đi; bạn chỉ cần một cửa mà một tường lửa không thể đóng sầm — web console — và một lệnh. Giữ ufw disable và console trong túi sau của bạn, cho phép cổng của bạn trước khi bạn bật lần sau, và bạn sẽ không bao giờ toát mồ hôi vì cái này lần nữa.
Bình luận
Chưa có bình luận nào. Hãy là người đầu tiên.