Hơn 25 lệnh iptables phổ biến nhất với các ví dụ

Nếu đang dùng Linux, bạn có nhiều tùy chọn để bảo vệ thiết bị của mình. Nó đi kèm với iptables, một tiện ích tường lửa dòng lệnh cung cấp tính linh hoạt và khả năng bảo vệ tuyệt vời.
Tuy nhiên, vì nó là một tiện ích dòng lệnh nên nó yêu cầu một chút thời gian học tập.
Vì vậy, nếu bạn là quản trị viên hệ thống hoặc người học Linux, thì bạn đang ở đúng nơi khi chúng tôi xem qua các lệnh iptables phổ biến cùng với các ví dụ.
Mục lục
Iptables là gì?
iptables là một tường lửa tích hợp sẵn dựa trên phần mềm Linux. Nó cho phép người dùng Linux tạo hoặc xác định các chính sách tác động trực tiếp và gián tiếp đến lưu lượng truy cập internet.
Điều này có nghĩa là bạn có thể sử dụng iptables để tạo quy tắc chặn hoặc cho phép lưu lượng truy cập qua cổng, địa chỉ IP nguồn, giao diện mạng, v.v.
Khi bạn xác định các quy tắc, tất cả lưu lượng cần phải đi qua nó. Vì vậy, ví dụ: đối với mọi kết nối mới, iptables sẽ kiểm tra mọi quy tắc được xác định trước phù hợp với kết nối. Nếu có, nó sẽ áp dụng quy tắc cho kết nối. Tuy nhiên, nếu không có bất kỳ quy tắc áp dụng liên quan nào, nó sẽ triển khai quy tắc mặc định.
Để sử dụng iptables, bạn cần sử dụng lệnh sau.
$ iptables -L -n -v
Tại đây, các thông số như sau:
- -L là để liệt kê tất cả các quy tắc.
- -n làm cho đầu ra số cung cấp hiệu suất nhanh hơn.
- -v để hiển thị đầu ra ở định dạng chi tiết.
Khi bạn chạy lệnh iptables mà không có bất kỳ tham số nào, nó sẽ trả về kết quả sau:
iptables v1.8.7 (nf_tables): no command specified Try `iptables -h' or 'iptables --help' for more information.
Bạn cần cài đặt nó nếu nó gặp lỗi, chẳng hạn như không tìm thấy lệnh “iptables”.
Để cài đặt iptables trong bản phân phối Linux của bạn, hãy chạy lệnh sau.
$ sudo apt-get install iptables
Nó sẽ trả về thông tin sau vì nó đã được cài đặt sẵn trên bản phân phối Linux của tôi.
#output Reading package lists... Done Building dependency tree... Done Reading state information... Done iptables is already the newest version (1.8.7-1ubuntu5). iptables set to manually installed. 0 upgraded, 0 newly installed, 0 to remove, and 35 not upgraded.
Tường lửa là gì?
Tường lửa là hình thức cơ bản nhất để bảo vệ hệ thống, mạng và máy tính cá nhân. Nó có thể dựa trên phần cứng hoặc phần mềm, dựa vào các quy tắc để hoạt động bình thường.
Hầu hết các tường lửa đều có khả năng tùy biến cao, cho phép bạn tạo hoặc chỉnh sửa các quy tắc. Ví dụ: vì các gói từ internet sử dụng các cổng để truy cập vào hệ thống, tính năng quét dựa trên cổng có thể giúp bạn lọc chúng ra. Ngoài ra, bạn cũng có thể cho phép hoặc chặn dịch vụ theo địa chỉ IP nguồn hoặc giao diện mạng.
Nếu bạn đang sử dụng Linux, bạn sẽ có quyền truy cập vào các iptable tích hợp sẵn. Tuy nhiên, bạn cũng có thể sử dụng tường lửa Linux độc lập để hỗ trợ bạn trong quá trình bảo vệ hệ thống của mình.
Tại sao bạn cần iptables để cấu hình tường lửa?
Nhưng tại sao bạn nên sử dụng iptables? Rốt cuộc, có những tiện ích tường lửa dòng lệnh thay thế tốt như ufw và tường lửa. Ngoài ra, bạn có thể sử dụng tường lửa Linux độc lập dễ sử dụng và cung cấp nhiều tính năng hơn.
Vì vậy, điều gì làm cho iptables trở nên hấp dẫn khi cấu hình tường lửa? Những lý do để sử dụng nó bao gồm:
- Nó cung cấp tính linh hoạt tuyệt vời ra khỏi hộp. Bạn có thể đặt quy tắc ở cấp gói.
- Nó tương đối dễ sử dụng khi bạn biết nó hoạt động như thế nào.
- Chặn lưu lượng truy cập không mong muốn một cách đơn giản.
- Chuyển hướng các gói đến một địa chỉ IP thay thế.
- Bảo vệ hệ thống của bạn trước các cuộc tấn công Từ chối Dịch vụ (DoS).
Và nhiều hơn nữa!
Hiểu kiến trúc iptables và mối quan hệ của nó với Netfilter
Để hiểu đúng về iptables, chúng ta cần tìm hiểu về kiến trúc của chúng. Đầu tiên, nó sẽ cho chúng ta hiểu rõ về các thành phần iptables khác nhau. Sau đó, khi chúng tôi biết về từng người trong số họ, chúng tôi có thể sử dụng chúng để viết các quy tắc tường lửa.
Và, khi chúng ta nói về iptables, Netfilter cũng xuất hiện. Bạn có thể coi “Netfilter” như một người anh lớn của iptables. Nó được xây dựng dựa trên iptables và cung cấp một bộ tính năng tốt hơn để quản lý tường lửa của bạn. Tuy nhiên, nó sử dụng iptables như một trong những phương tiện để đạt được khả năng tường lửa tuyệt vời.
Iptables là một giao diện dòng lệnh cho các hook cấp nhân Netfilter. Các hook này có thể tương tác với ngăn xếp mạng Linux, ảnh hưởng đến các gói ở cấp độ sâu nhất.
Vì vậy, kiến trúc iptables trông như thế nào:
Những cái bàn
Kiến trúc iptables bắt đầu với các bảng. Các bảng này chăm sóc tổ chức quy tắc. Và mỗi bảng được phân loại dựa trên loại quyết định mà họ đang đưa ra. Nói một cách đơn giản hơn, một bảng đơn giản hóa việc xử lý gói tổng thể bằng cách đính kèm một cách cụ thể để xử lý các gói.
Các bảng khác nhau được cung cấp bởi iptables bao gồm:
- Bảng bộ lọc: Chỉ định loại quyết định để lọc gói. Nói một cách đơn giản, nó xác định xem một gói có đến đích hay không.
- Bảng NAT: Chỉ định loại quyết định để dịch địa chỉ. Ở đây, định tuyến của các gói được xác định dựa trên các mạng NAT. Ví dụ: nếu một gói không thể truy cập NAT, gói đó sẽ bỏ qua và cố gắng tìm kiếm mạng không NAT.
- Mangle table: Quản lý các nhu cầu xử lý đặc biệt của gói. Ví dụ: bạn có thể định cấu hình để thay đổi thông tin tiêu đề của gói, chẳng hạn như giá trị TTL.
- Bảng thô: Bảng thô cho phép bạn làm việc chăm chỉ với khía cạnh trạng thái của tường lửa iptables. Sử dụng bảng, bạn có thể định tuyến các gói dựa trên “trạng thái” của chúng trước khi nhân Linux bắt đầu theo dõi trạng thái của nó. Nó chủ yếu được sử dụng để đánh dấu các gói, cho dù hệ thống theo dõi kết nối có xử lý chúng hay không. Nếu một gói không được theo dõi, nó sẽ được đặt thành mục tiêu NOTRACK.
chuỗi
Và sau đó, chúng ta có “chuỗi” trong “bảng”.
Các chuỗi này xử lý việc kiểm tra sâu gói tin ở các giai đoạn khác nhau trong hành trình của chúng. Ví dụ: bạn có thể kiểm tra chúng khi nó đến một cổng hoặc giao diện mạng. Bằng cách này, một quyết định có thể được đưa ra trước khi gói được phát hành cho quy trình của hệ thống.
Cũng giống như các bảng, bạn cũng có các chuỗi khác nhau. Bao gồm các:
- Chuỗi PREROUTING: Tại đây, các quy tắc xử lý các gói vừa đến tại giao diện mạng.
- Chuỗi INPUT: Các quy tắc được đề cập trong chuỗi INPUT xử lý hành vi kết nối đến. Sau khi hoàn thành, chúng được trao cho quy trình cục bộ.
- Chuỗi OUTPUT: Chuỗi OUTPUT xử lý các gói xử lý sản xuất.
- Chuỗi FORWARD: Chuỗi FORWARD quản lý các gói không dành cho các hệ thống cục bộ. Nó là một nhà cung cấp dịch vụ cho các hệ thống định mệnh khác, chẳng hạn như bộ định tuyến.
- Chuỗi POSTROUTING: Cuối cùng, chúng ta có chuỗi POSTROUTING, xử lý các gói sắp rời khỏi giao diện mạng.
Không phải tất cả các chuỗi đều có sẵn trong mỗi bảng. Ví dụ: chuỗi FORWARD chỉ khả dụng trong bảng mangle, bộ lọc và bảo mật. Tương tự, chuỗi POSTROUTING có sẵn trên mangle và nat (SNAT). Chỉ có chuỗi OUTPUT có sẵn trong tất cả các bảng.
Mục tiêu
Bây giờ, chúng ta có một “mục tiêu”. Khi một gói đến, nó sẽ di chuyển qua các chuỗi để xem mô tả quy tắc nào phù hợp nhất. Nếu nó phù hợp với mô tả của một quy tắc, nó sẽ thực hiện hành động liên quan dựa trên quy tắc đó và sau đó di chuyển nó đến đích — niêm phong số phận của gói tin.
Trong nhiều trường hợp, một gói sẽ không phù hợp với bất kỳ mô tả hoặc bộ quy tắc nào. Và đó là nơi mà chính sách mặc định, một mục tiêu, xuất hiện.
Các mục tiêu có thể là CHẤP NHẬN, THẢI và TỪ CHỐI. Đây là những mục tiêu kết thúc quyết định số phận của gói tin.
- CHẤP NHẬN: Chấp nhận các gói tin.
- DROP: Bỏ gói, khiến người gửi không thể tìm hiểu xem hệ thống có hiện diện hay không.
- REJECT: Từ chối gói tin.
Ngoài ra còn có các mục tiêu không kết thúc chủ yếu được sử dụng để lưu trữ thông tin về gói.
Các lệnh iptables phổ biến nhất với các ví dụ
Trước khi bạn nhảy và bắt đầu thực hiện lệnh iptables, hãy đảm bảo:
- Bạn có quyền truy cập quản trị để chạy các lệnh. Nếu lệnh không thành công do đặc quyền quản trị, hãy chạy lại lệnh với lệnh sudo trước nó.
- Bài viết không phải là hướng dẫn cách cấu hình iptables trên Ubuntu.
- Chúng tôi sẽ sử dụng lệnh iptables hoạt động với IPv4. Nếu bạn định làm việc với IPv6, bạn sẽ cần sử dụng ip6tables để thay thế.
Kiểm tra trạng thái iptables
Để kiểm tra trạng thái iptables hiện tại, bạn cần chạy lệnh sau.
$ iptables -L -n -v
#output Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
Đầu ra ở trên chứa rất nhiều thông tin. Tuy nhiên, nó cũng gợi ý về một tường lửa không hoạt động. Đó là bởi vì, hiện tại, tất cả các chuỗi được đặt thành CHẤP NHẬN và không có quy tắc nào.
Bạn sẽ cần bắt đầu thêm các quy tắc để kích hoạt tường lửa.
Thêm quy tắc vào chuỗi
Khi bạn thêm một quy tắc, quy tắc đó luôn được thêm vào chuỗi. Do đó, bạn phải sử dụng tùy chọn -A (Nối thêm). Cú pháp cho nó như sau:
$ sudo iptables - A
Tuy nhiên, khi bạn chạy nó, nó sẽ trả về như sau:
iptables v1.8.7 (nf_tables): option "-A" requires an argument Try `iptables -h' or 'iptables --help' for more information.
Các đối số mà bạn có thể sử dụng để thêm quy tắc là:
- – i: Nó là viết tắt của giao diện. Tại đây, bạn có thể đề cập đến giao diện mà bạn đang thêm quy tắc. Nó có thể là ppp0, eth0, v.v.
- – p: Nó là viết tắt của giao thức. Ở đây, bạn đề cập đến quy tắc sử dụng giao thức mạng để lọc các nhà đóng gói. Ví dụ: bạn có thể nói ICMP, TCP, UDP, v.v. Nếu bạn muốn quy tắc hoạt động trên tất cả các giao thức, hãy đề cập đến “tất cả” làm giá trị đối số.
- – s: Tiếp theo là đối số nguồn, đề cập đến nguồn của lưu lượng truy cập (dưới dạng địa chỉ IP hoặc tên máy chủ)
- – dport: Dport là viết tắt của cổng đích, trong đó bạn đề cập đến số cổng mà gói tin được chuyển đến.
- – j: Cuối cùng, chúng tôi có một đối số MỤC TIÊU nơi bạn có thể đề cập đến tên MỤC TIÊU, CHẤP NHẬN, THẢO hoặc TRẢ LẠI
Nó cũng cần thiết để viết lệnh theo thứ tự sau:
$ sudo iptables -A <chain-name> -i <interface-name> - p <protocool-name> - s <source> --dport <port no.> -j <target>
Lưu thay đổi vào iptables
Khi bạn thêm quy tắc, bạn có thể lưu quy tắc đó bằng lệnh iptables -save.
$ sudo iptables -save
Đầu ra như sau:
[email protected]:~$ sudo iptables-save # Generated by iptables-save v1.8.7 on Sun May 14 13:37:34 2023 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT -A INPUT -p tcp -m tcp --dport 392 -j REJECT --reject-with icmp-port-unreachable -A OUTPUT -o lo -j ACCEPT COMMIT # Completed on Sun May 14 13:37:34 2023
Quy tắc liên tục theo cách thủ công
Theo mặc định, iptables không lưu các quy tắc. Vì vậy, nếu bạn khởi động lại máy tính của mình, nó sẽ xóa tất cả các quy tắc. Bạn sẽ cần sử dụng các lệnh sau để đảm bảo không phải cấu hình lại iptables.
Đối với các quy tắc IPv4, hãy viết lệnh:
$ sudo iptables-save > /etc/iptables/rules.v4
Và đối với các quy tắc IPv6, hãy viết lệnh:
$ sudo iptables-save > /etc/iptables/rules.v6
Tự động duy trì các quy tắc
Để làm cho các quy tắc tồn tại ngay cả sau khi khởi động lại và điều đó cũng tự động xảy ra, bạn sẽ cần cài đặt gói iptables-presistent.
Để làm như vậy, hãy chạy lệnh sau.
$ sudo apt-get install iptables-persistent
Nó sẽ mở ra cửa sổ sau. Nhấn enter trên
Khi chúng tôi đang làm việc với bảng IPv4, nó sẽ chỉ hiển thị các quy tắc IPv4. Nếu bạn đang làm việc trên IPv6, nó sẽ hiển thị cửa sổ liên quan.
Lưu ý: Gói này chỉ tải các quy tắc iptables đã lưu của bạn. Vì vậy, bất cứ khi nào bạn thay đổi iptables, bạn sẽ cần lưu nó bằng lệnh iptables -save.
Tải lại quy tắc sau khi khởi động lại
Khi các quy tắc được lưu, bạn phải khôi phục chúng bằng lệnh sau.
$ sudo iptables-restore < /etc/iptables/rules.v4
Và
$ sudo iptables-restore < /etc/iptables/rules.v6
Kích hoạt lưu lượng truy cập trên Localhost / Kích hoạt Loopback
Để kích hoạt lưu lượng truy cập trên Localhost, hãy sử dụng lệnh sau:
$ sudo iptables -A INPUT -i lo -j ACCEPT
Ở đây, lo là viết tắt của giao diện loopback cho tất cả các giao tiếp localhost.
Tương tự, chúng ta có thể cho phép các gói đi qua giao diện loopback.
$ sudo iptables -A OUTPUT -o lo -j ACCEPT
Để kiểm tra xem nó đã thay đổi quy tắc như thế nào, hãy chạy iptables -L -n -V
#output Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
Kích hoạt lưu lượng truy cập trên các cổng cụ thể
Bạn có thể cho phép lưu lượng truy cập CHẤP NHẬN hoặc TỪ CHỐI trên các cổng cụ thể.
Ví dụ: các cổng SSL, HTTP và SSH rất quan trọng đối với hoạt động bình thường của ứng dụng của bạn. Bạn có thể thêm quy tắc vào gói CHẤP NHẬN thông qua số cổng để đảm bảo chúng hoạt động như dự định.
Đối với SSL, hãy chạy lệnh sau.
$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Đối với HTTPS, hãy chạy lệnh sau.
$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Để cho phép tất cả lưu lượng HTTPS tại giao diện eth0.
$ iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT $ iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
Đối với SSH, hãy chạy lệnh sau.
$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Và để chấp nhận TẤT CẢ lưu lượng SSH đến trên giao diện eth0, hãy chạy như sau:
$ iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT $ iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
Một ví dụ khác là bật lưu lượng cổng trên một cổng cụ thể cho ứng dụng tùy chỉnh của bạn. Giả sử cổng 233.
Để mở các kết nối trên cổng đó, hãy chạy.
$ sudo iptables -A INPUT -p tcp --dport 233 -j ACCEPT
Tương tự, bạn cũng có thể vô hiệu hóa các kết nối trên một cổng cụ thể bằng cách sử dụng tùy chọn mục tiêu TỪ CHỐI.
Hãy chặn tất cả các kết nối tại cổng 392.
$ sudo iptables -A INPUT -p tcp --dport 392 -j REJECT
Để kiểm tra, hãy chạy lệnh iptables -L -n -v.
#output Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:233 0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
Xóa các quy tắc hiện có
Để xóa các quy tắc hiện có, bạn cần chạy lệnh sau.
$ iptables -F
hoặc
$ iptables --flush
Lưu ý: Nếu bạn chưa lưu các quy tắc của mình thì chúng sẽ bị mất vĩnh viễn và không thể khôi phục bằng iptables -restore
Xóa quy tắc với số dòng
Để xóa một quy tắc cụ thể, bạn cần lấy danh sách các quy tắc có số.
$ sudo iptables -L --line-numbers
#output Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh 2 ACCEPT tcp -- anywhere anywhere tcp dpt:http 3 ACCEPT tcp -- anywhere anywhere tcp dpt:https 4 ACCEPT tcp -- anywhere anywhere tcp dpt:233 5 REJECT tcp -- anywhere anywhere tcp dpt:392 reject-with icmp-port-unreachable
Chạy lệnh sau nếu bạn muốn xóa quy tắc số 4 cho chuỗi INPUT.
$ sudo iptables -D INPUT 4
Và, nếu bạn chạy lại lệnh iptables -n -v -L.
#output Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable
Chỉ hiển thị quy tắc chuỗi INPUT hoặc OUTPUT
Để chỉ hiển thị các quy tắc chuỗi INPUT, hãy chạy lệnh sau.
$ sudo iptables -L INPUT -n -v --line-numbers
#ouput Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 2 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 3 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 4 0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable
Tương tự, nếu bạn chỉ muốn xem các quy tắc chuỗi OUTPUT, hãy chạy:
$ sudo iptables -L OUTPUT -n -v --line-numbers
#output Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
Bắt đầu/Dừng/Khởi động lại Tường lửa
Nếu bạn đang sử dụng RHEL/ Fedora Linux hoặc CentOS, bạn có thể khởi động/dừng hoặc khởi động lại tường lửa bằng cách chạy các lệnh.
$ service iptables stop $ service iptables start $ service iptables restart
Bạn cũng có thể sử dụng lệnh systemctl.
Tuy nhiên, nó sẽ không hoạt động trên Ubuntu.
Chèn quy tắc tại một địa điểm cụ thể
Nếu bạn muốn chèn các quy tắc tại một vị trí cụ thể, bạn phải sử dụng các lệnh sau.
Đầu tiên, kiểm tra các quy tắc.
$ sudo iptables -L INPUT -n --line-numbers
#output Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 4 REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable
Chạy lệnh sau nếu bạn muốn chèn quy tắc giữa 2 và 3.
$ sudo iptables -I INPUT 3 -s 252.32.1.2 -j DROP
Bây giờ, hãy kiểm tra các quy tắc được cập nhật.
#output Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 3 DROP all -- 252.32.1.2 0.0.0.0/0 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 5 REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:392 reject-with icmp-port-unreachable
Chặn lưu lượng đến nhưng cho phép lưu lượng đi
Bạn sẽ cần nhập lệnh sau để chặn tất cả lưu lượng truy cập đến.
$ iptables -P INPUT DROP $ iptables -P FORWARD DROP $ iptables -P OUTPUT ACCEPT $ iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT $ iptables -L -v -n
Bằng cách này, bạn có thể ping hoặc tải xuống các gói nhưng chặn bất kỳ lưu lượng truy cập không xác định nào.
Chặn một địa chỉ IP cụ thể
Để chặn một địa chỉ IP cụ thể, hãy chạy lệnh sau.
$ iptables -A INPUT -s 14.23.59.9 -J DROP
Bạn cũng có thể xác định một biến để lưu trữ địa chỉ IP bị chặn và sau đó chạy lệnh.
BLOCK_THE_IP = “a.b.c.d”
Và, sau đó chạy:
$ iptables -A INPUT -s “BLOCK_THE_IP” -j DROP
Lưu ý: Thay đổi “abcd” thành địa chỉ IP ưa thích của bạn.
Cho phép hệ thống Ping từ bên ngoài
Bạn có thể yêu cầu người dùng bên ngoài ping máy chủ của mình để làm cho mạng của bạn có thể phát hiện được.
$ sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT $ sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
Cho phép Mạng nội bộ nói chuyện với Mạng bên ngoài
Chạy lệnh sau để cho phép mạng nội bộ (giả sử eth0) kết nối với mạng bên ngoài (giả sử eth1).
$ sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
Cho phép DNS gửi đi
Để cho phép kết nối DNS với máy chủ của bạn, hãy chạy lệnh sau.
$ iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT $ iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT
Cho phép Rsycn từ một mạng cụ thể
Nếu bạn sử dụng lệnh Rsync và muốn kích hoạt nó trên một mạng cụ thể, hãy chạy lệnh sau.
iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT
Chặn cổng
Chạy lệnh sau để chặn một cổng cụ thể và mọi yêu cầu đến.
iptables -A INPUT -p tcp --dport 80 -j DROP iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP
Chặn lưu lượng gửi đi đến một địa chỉ IP cụ thể
Bạn có thể chặn lưu lượng truy cập vào bất kỳ địa chỉ IP nào bằng cách chạy lệnh sau.
$ host -t a techpoe.com.com
#đầu ra
techpoe.com.com có địa chỉ là 172.66.40.93
Để chặn lưu lượng gửi đến địa chỉ IP cụ thể đó, hãy chạy lệnh sau.
iptables -A OUTPUT -d 72.66.40.93 -j DROP
Tương tự, bạn cũng có thể chặn các nền tảng mạng xã hội như Instagram, Twitter và Facebook.
Tìm địa chỉ IP mạng xã hội bằng cách chạy lệnh sau:
$ host -t a social-media-web-adrress.com
Ví dụ: đối với Instagram, nó sẽ là:
$ host -t a www.instagram.com
Bây giờ, bạn sẽ cần tìm CIDR cho địa chỉ IP của nền tảng truyền thông xã hội cụ thể đó.
$ whois 185.89.219.11 | grep CIDR
Lưu ý: Bạn có thể cần cài đặt gói whois bằng cách chạy sudo apt-get install whois
Bây giờ, hãy nhập giá trị CIDR theo cách sau:
$ iptables - A OUTPUT -p tcp -d CIDR-value -j DROP
Lưu ý: Đảm bảo thay đổi giá trị CIDR tương ứng.
Cho phép hoặc Chặn Yêu cầu Ping ICMP
Để cho phép hoặc chặn các yêu cầu ping ICMP, hãy chạy các lệnh sau.
$ iptables -A INPUT -p icmp --icmp-type echo-request -j DROP $ iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP
Mở một phạm vi cổng cụ thể
Để mở một loạt các cổng, hãy chạy lệnh sau.
$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8933: 8500 -j ACCEPT
Liệt kê các quy tắc NAT
Để liệt kê các quy tắc NAT, hãy chạy lệnh sau:
$ sudo iptables -t nat -L -n -v
Hoặc
$ sudo iptables -t nat -v -L -n --line-number
Đặt lại bộ đếm gói
Để kiểm tra bộ đếm iptables hiện tại:
$ sudo iptables -L -n -v
Để đặt lại hoặc xóa bộ đếm, hãy chạy như sau:
$ sudo iptables -Z $ sudo iptables -L -n -v
Để chỉ đặt lại bộ đếm chuỗi INPUT, hãy chạy:
$ iptables -Z INPUT
Để đặt lại bộ đếm quy tắc cụ thể, hãy chạy như sau:
$ iptables -z INPUT RULE-NUMBER
Đảm bảo thay đổi RULE-NUMBER thành quy tắc cụ thể đó.
Từ cuối cùng
iptables là một tiện ích dòng lệnh tường lửa mạnh mẽ. Bạn có thể định cấu hình hầu hết mọi thứ liên quan đến tài nguyên mạng, gói, giao diện và các tình huống cụ thể.
Ngoài ra, iptables cung cấp nhiều tùy chọn. Kiểm tra trang chính của nó bằng cách sử dụng lệnh man để có được bức tranh hoàn chỉnh.
$ man iptables $ man ip6tables
Tiếp theo, hãy kiểm tra tường lửa mạng và cách nó giúp ngăn chặn các cuộc tấn công.