Với iptables của kernel hoàn toàn trống ( iptables -F
), điều này sẽ làm những gì bạn yêu cầu:
# iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j DROP
Điều này nói rằng tất cả các địa chỉ LAN được phép nói chuyện với cổng TCP 22, rằng localhost có cùng sự cân nhắc (có, 127. * không chỉ 127.0.0.1) và các gói từ mọi địa chỉ khác không khớp với hai quy tắc đầu tiên đó bị bỏ rơi một cách bất thường các chút xô . Bạn có thể sử dụng REJECT
thay vì DROP
nếu bạn muốn từ chối hoạt động (TCP RST) thay vì biến cổng TCP 22 thành lỗ đen cho các gói.
Nếu mạng LAN của bạn không sử dụng khối 192.168.0. *, Tự nhiên bạn sẽ cần thay đổi IP và mặt nạ trên dòng đầu tiên để khớp với sơ đồ IP của mạng LAN.
Các lệnh này có thể không làm những gì bạn muốn nếu tường lửa của bạn đã có một số quy tắc được cấu hình. (Nói iptables -L
là root để tìm hiểu.) Điều thường xuyên xảy ra là một trong những quy tắc hiện có lấy các gói bạn đang cố lọc, do đó việc thêm các quy tắc mới không có hiệu lực. Trong khi bạn có thể sử dụng -I
thay vì -A
với các iptables
lệnh để ghép quy định mới vào giữa một chuỗi thay vì phụ họ, nó thường là tốt hơn để tìm hiểu cách thức các chuỗi được dân cư khi khởi động hệ thống và sửa đổi quá trình đó nên quy định mới của bạn luôn luôn được cài đặt trong thứ tự đúng.
7+
Trên các hệ thống loại gần đây của RHEL, cách tốt nhất để làm điều đó là sử dụng firewall-cmd
hoặc tương đương GUI của nó. Điều này cho firewalld
daemon của hệ điều hành những gì bạn muốn, đó là những gì thực sự cư trú và thao túng những gì bạn nhìn thấy thông qua iptables -L
.
RHEL 6 và trước đó
Trên các hệ thống loại cũ của RHEL, cách dễ nhất để sửa đổi chuỗi tường lửa khi đặt hàng là vấn đề cần chỉnh sửa /etc/sysconfig/iptables
. Các công cụ tường lửa GUI và TUI của HĐH khá đơn giản, vì vậy một khi bạn bắt đầu thêm các quy tắc phức tạp hơn như thế này, tốt hơn là quay lại các tệp cấu hình cũ tốt. Coi chừng, một khi bạn bắt đầu thực hiện việc này, bạn có nguy cơ mất các thay đổi nếu bạn từng sử dụng các công cụ tường lửa của HĐH để sửa đổi cấu hình, vì nó có thể không biết cách xử lý các quy tắc thủ công như thế này.
Thêm một cái gì đó như thế này vào tập tin đó:
-A RH-Firewall-1-INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 22 -j DROP
Nơi bạn thêm nó là một chút khó khăn. Nếu bạn tìm thấy một dòng trong tập tin đó nói về --dport 22
, chỉ đơn giản là thay thế nó với ba dòng trên. Mặt khác, nó có lẽ nên đi trước dòng hiện tại đầu tiên kết thúc bằng -j ACCEPT
. Nói chung, bạn sẽ cần có được sự quen thuộc với cách thức hoạt động của iptables , tại thời điểm đó, điểm chèn chính xác sẽ rõ ràng.
Lưu tệp đó, sau đó nói service iptables restart
để tải lại các quy tắc tường lửa. Hãy chắc chắn để làm điều này trong khi đăng nhập vào bảng điều khiển, trong trường hợp bạn mập ngón tay chỉnh sửa! Bạn không muốn tự khóa máy của mình khi đăng nhập qua SSH.
Sự tương đồng với các lệnh trên không phải là ngẫu nhiên. Hầu hết các tập tin này bao gồm các đối số cho iptables
lệnh. Sự khác biệt liên quan đến ở trên là iptables
lệnh bị loại bỏ và INPUT
tên chuỗi trở thành chuỗi đặc biệt dành riêng cho RHEL RH-Firewall-1-INPUT
. (Nếu bạn quan tâm đến việc kiểm tra tệp chi tiết hơn, bạn sẽ thấy sớm hơn trong tệp mà về cơ bản họ đã đổi tên INPUT
chuỗi. Tại sao? Không thể nói.)