Liên kết đến tài liệu chính thức và được đề xuất tồn tại trên trang web Netfilter.
Đây không phải là một chủ đề mới, tài nguyên là vô hạn .
Hầu hết các lệnh cơ bản là khá trực quan và có thể dễ dàng được tham chiếu đến trang chủ .
netfilter, công nghệ cấp kernel cho phép lọc gói, khá tiên tiến. Có các bảng bổ sung có thể quản lý gói, dịch gói và ảnh hưởng đến việc định tuyến. Các iptables
tiện ích là công cụ Userland để tương tác với netfilter. Nếu bạn muốn tìm hiểu về chức năng nâng cao, tôi khuyên bạn nên tham khảo tài liệu nói trên. Để biết giới thiệu về các chức năng cơ bản, xin vui lòng đọc thêm.
Để liệt kê tất cả các quy tắc hiện có:
iptables -L -n
-n
ngăn iptables giải quyết ips, tạo ra đầu ra nhanh hơn.
Bảng mặc định là filter
bảng, đây là bảng được sử dụng để áp dụng các quy tắc tường lửa cơ bản cho ba chuỗi. Ba chuỗi mặc định trong filter
bảng là INPUT
, OUTPUT
, và FORWARD
.
Các chuỗi phần lớn là tự giải thích. Chuỗi INPUT ảnh hưởng đến các gói đến, chuỗi OUTPUT ảnh hưởng đến các gói được tạo cục bộ và cuối cùng là FORWARD cho bất kỳ gói nào đi qua hệ thống.
Trong số các mục tiêu bạn có thể chỉ định, bạn có thể DROP
gói, có nghĩa là chỉ cần bỏ qua và không trả lời. Bạn có thể REJECT
gói, trong đó một phản hồi icmp sẽ được gửi đến nguồn từ chối. Cuối cùng, bạn có thể ACCEPT
chúng, cho phép các gói tiếp tục định tuyến.
Thông thường với tường lửa đối diện bên ngoài, lựa chọn mặc định sẽ DROP
trái ngược với REJECT
, vì nó làm giảm dấu chân có thể nhìn thấy của mạng của bạn trên Internet. Ví dụ: một IP giới hạn các dịch vụ đối với một máy chủ cụ thể sẽ có ít khả năng hiển thị hơn DROP
.
Lưu ý, -A
có nghĩa là nối vào cuối chuỗi. Nếu bạn muốn chèn lên đầu, bạn có thể sử dụng -I
. Tất cả các quy tắc được xử lý từ trên xuống. -D
để xóa.
Đến DROP
một gói đến từ 192.168.235.235
:
iptables -A INPUT -s 192.168.235.235 -j DROP
Điều này nhảy đến DROP
mục tiêu cho tất cả các giao thức đến từ IP đó.
Chấp nhận:
iptables -A INPUT -s 192.168.235.235 -j ACCEPT
Để ngăn truy cập vào IP đó từ máy chủ hoặc mạng cục bộ của bạn:
iptables -A OUTPUT -d 192.168.235.235 -j DROP
Bạn có thể chỉ định -p
giao thức, -s
nguồn của gói, -d
đích của gói, cổng đích --dport
, cổng nguồn --sport
và nhiều cờ khác sẽ ảnh hưởng đến cách các gói được xử lý theo quy tắc.
Nếu INPUT
chính sách mặc định của bạn là DROP
và bạn muốn cho phép mọi người trong 192.168.123.0/24
mạng con truy cập SSH trên máy chủ của mình thì đây là một ví dụ:
iptables -A INPUT -s 192.168.123.0/24 -p tcp --dport 22 -j ACCEPT
Đúng vậy, bạn cũng có thể sử dụng ký hiệu CIDR !
Nói chung, chính sách mặc định tốt nhất là DROP
dành cho tất cả các chuỗi. Mỗi chuỗi có một chính sách mặc định, được chỉ định bởi -P
cờ. Ngay cả khi bạn đã đặt chính sách của mình thành mặc định DROP
, bạn vẫn nên có mục cuối cùng trong chuỗi DROP
.
Ví dụ: để thay đổi chính sách đối DROP
với các chuỗi INPUT, FORWARD và OUTPUT:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
Hãy cẩn thận , nếu bạn chỉ định chính sách mặc định của DROP cho INPUT trên hệ thống từ xa mà trước tiên không cho phép bạn truy cập SSH, bạn có thể ngăn mình truy cập hệ thống. Nếu trên một hệ thống từ xa, bạn có thể chỉ định một crontab tạm thời để xóa tất cả các quy tắc cứ sau 5 phút là không an toàn.
Để xóa tất cả các quy tắc và cho phép tất cả lưu lượng truy cập:
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -X
iptables -F
Lưu ý, -X
loại bỏ tất cả các chuỗi đã tạo. -F
tuôn ra tất cả các quy tắc.
Có các công cụ gốc để lưu và khôi phục các quy tắc. Đặc biệt, iptables-save
và iptables-restore
. Hầu hết các bản phân phối Linux hiện đại đều có save
và các restore
chức năng trong tệp init iptables được cung cấp cùng với hệ thống.
Có các thực tiễn tốt nhất về tường lửa khác, chẳng hạn như bỏ các gói không đúng định dạng và loại lưu lượng không mong muốn khác. Đây là một lợi thế của việc sử dụng tiện ích giao diện người dùng như Shorewall , vì nó sẽ thực hiện nhiều chính sách này theo mặc định. Tuy nhiên, tôi đồng ý với cách tiếp cận của bạn và cũng muốn duy trì trực tiếp các quy tắc của riêng tôi và những thực tiễn tốt nhất này có thể được thực hiện mà không cần kết thúc.