Tin tức và phân tích của tất cả các thiết bị di động

Hơn 25 lệnh iptables được sử dụng phổ biến nhất kèm theo ví dụ

Nếu bạn đang sử 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 công cụ 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 công cụ dòng lệnh nên nó đòi hỏi một chút kiến ​​thức.

Vì vậy, nếu bạn là quản trị viên hệ thống hoặc đang học Linux, thì bạn đã đến đúng nơi vì chúng ta sẽ xem xét các lệnh iptables phổ biến kèm theo các ví dụ.

iptables là gì?

iptables là một tường lửa tích hợp trên Linux dựa trên phần mềm. Nó cho phép người dùng Linux tạo hoặc xác định các chính sách ảnh hưở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, IP nguồn, giao diện mạng, v.v.

Khi các quy tắc được xác định, tất cả lưu lượng truy cập phải đi qua chúng. Ví dụ: đối với mỗi kết nối mới, iptables sẽ kiểm tra xem có quy tắc được xác định trước nào phù hợp với kết nối hay không. Nếu vậy, nó sẽ áp dụng quy tắc cho kết nối. Tuy nhiên, nếu không có quy tắc liên quan nào được liên kết với nó, 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 

Ở đây các thông số như sau:

  • -L được sử dụng để hiển thị tất cả các quy tắc.
  • -n khiến đầu ra số mang lại hiệu suất tốt 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ả đầu ra 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 có lỗi, chẳng hạn như không tìm thấy lệnh “iptables”.

Để cài đặt iptables trên 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 bảo vệ cơ bản nhất cho 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 và 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ổng để vào hệ thống của bạn nên việc quét dựa trên cổng có thể giúp lọc chúng ra. Ngoài ra, bạn cũng có thể cho phép hoặc chặn các dịch vụ dựa trên địa chỉ IP nguồn hoặc giao diện mạng.

Nếu bạn đang sử dụng Linux, bạn có quyền truy cập vào iptables 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 để tự trợ giúp mình 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 của bạn?

Nhưng tại sao lại sử dụng iptables? Rốt cuộc, có những công cụ tường lửa dòng lệnh thay thế tốt như ufw và tường lửa. Bạn cũng 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.

Điều gì khiến iptables trở nên hấp dẫn khi thiết lập tường lửa? Những lý do tại sao bạn nên sử dụng nó bao gồm:

  • Cung cấp sự linh hoạt tuyệt vời ngay lập tức. Bạn có thể đặt quy tắc ở cấp độ gói.
  • Nó tương đối dễ sử dụng một 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 dễ dàng.
  • Chuyển hướng gói đến một địa chỉ IP thay thế.
  • Bảo vệ hệ thống của bạn khỏi các cuộc tấn công từ chối dịch vụ (DoS).

Và còn nhiều nữa!

Hiểu kiến ​​trúc iptables và cách nó liên quan đến Netfilter

Để hiểu đúng về iptables, chúng ta cần biết kiến ​​trúc của chúng. Đầu tiên, nó sẽ giúp chúng ta hiểu rõ ràng về các thành phần khác nhau của iptables. Sau đó, khi đã biết về từng quy tắc đó, 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” là người anh lớn của iptables. Nó dựa trên iptables và cung cấp một bộ tính năng quản lý tường lửa tốt hơn. Tuy nhiên, nó sử dụng iptables như một cách để đạt được khả năng tường lửa tuyệt vời.

Iptables là giao diện dòng lệnh để chụp ở cấp hạt nhân Netfilter. Những hook này có thể tương tác với ngăn xếp mạng Linux, điều này ảnh hưởng đến các gói ở mức sâu nhất.

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 bằng các bảng. Các bảng này đảm nhiệm việc tổ chức các quy tắc. Mỗi bảng được phân loại dựa trên loại quyết định mà nó đưa ra. Nói một cách đơn giản, bảng đơn giản hóa việc xử lý gói chung bằng cách đưa vào một cách xử lý gói cụ thể.

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ó quyết định liệu gói hàng có đến được đích hay không.
  • Bảng NAT: Chỉ định loại quyết định cho việc dịch địa chỉ. Trong trường hợp này, tuyến gói được xác định dựa trên mạng NAT. Ví dụ: nếu một gói không thể truy cập NAT, nó sẽ bỏ qua và cố gắng tìm mạng không phải NAT.
  • Bảng Mangle: quản lý các nhu cầu đặc biệt của việc xử lý gói. Ví dụ: nó có thể được cấu hình để thay đổi thông tin tiêu đề gói 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 này, 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 tin, cho dù hệ thống theo dõi cuộc gọi có hỗ trợ chúng hay không. Nếu gói không được theo dõi, nó sẽ được đặt làm mục tiêu NOTTRACK.

Trái phiếu

Và sau đó chúng ta có “chuỗi” trong “bảng”.

Các chuỗi này hỗ trợ kiểm tra sâu các gói ở 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 nó khi nó đến một cổng hoặc giao diện mạng. Bằng cách này, quyết định có thể được đưa ra trước khi gói được phát hành vào quy trình hệ thống.

Giống như các bảng, bạn cũng nhận được các chuỗi khác nhau. Chúng bao gồm:

  • Chuỗi PREROUTING: Trong trường hợp này, các quy tắc xử lý các gói vừa đến giao diện mạng.
  • Chuỗi INPUT: Các quy tắc được liệt kê trong chuỗi INPUT hỗ trợ hoạt động của các kết nối đến. Khi hoàn tất, chúng được chuyển đến quy trình cục bộ.
  • Chuỗi OUTPUT: Chuỗi OUTPUT xử lý các gói được tạo bởi các quy trình.
  • Chuỗi FORWARD: Chuỗi FORWARD quản lý các gói không dành cho hệ thống cục bộ. Nó là sóng mang cho các hệ thống mục tiêu 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 trên mỗi bàn. Ví dụ: chuỗi FORWARD chỉ có sẵn trong các bảng mangle, filter và security. 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.

Khách quan

Bây giờ chúng ta đã có “mục tiêu”. Khi đến nơi, gói hàng sẽ đi qua các chuỗi để xem mô tả quy tắc nào phù hợp nhất. Nếu nó khớp với 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 mục tiêu – phong ấn số phận của gói tin.

Trong nhiều trường hợp, một gói không khớp với bất kỳ mô tả hoặc bộ quy tắc nào. Và ở đây có nguyên tắc mặc định, mục tiêu.

Các mục tiêu có thể được CHẤP NHẬN, BỊ TỪ CHỐI và TỪ CHỐI. Đây là những mục tiêu hoàn thiện quyết định số phận của đàn.

  • ACCEPT: Chấp nhận gói tin.
  • DROP: Bỏ gói tin, ngăn người gửi kiểm tra 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 chưa hoàn thành chủ yếu được sử dụng để lưu trữ thông tin gói hàng.

Các lệnh iptables phổ biến kèm ví dụ

Trước khi bắt đầu và chạy lệnh iptables, hãy đảm bảo rằng:

  • Bạn có quyền truy cập quản trị để chạy lệnh. Nếu lệnh không thành công do đặc quyền quản trị, hãy phát lại lệnh với sudo trước nó.
  • Bài viết không phải là hướng dẫn thiết lập iptables trên Ubuntu.
  • Chúng tôi sẽ sử dụng lệnh iptables hoạt động với IPv4. Nếu định làm việc với IPv6, bạn sẽ phải sử dụng ip6tables thay thế.

Kiểm tra trạng thái iptables

Để kiểm tra trạng thái hiện tại của iptables, 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 chỉ ra tường lửa không hoạt động. Điều này là do 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.

Để kích hoạt tường lửa, bạn cần bắt đầu thêm quy tắc.

Thêm quy tắc vào chuỗi

Khi bạn thêm quy tắc, quy tắc đó luôn được đưa vào chuỗi. Do đó, phải sử dụng tùy chọn -A (Thêm). Cú pháp cho nó như sau:

$ sudo iptables - A

Tuy nhiên khi chạy nó sẽ trả về kết quả 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ố có thể được sử dụng để thêm quy tắc là:

  • – i: biểu thị một giao diện. Ở đâ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: 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 trì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 chỉ định “tất cả” làm giá trị đối số.
  • – s: Sau đó là đối số nguồn, liệt kê nguồn lưu lượng truy cập (dưới dạng địa chỉ IP hoặc tên máy chủ)
  • – dport: dport là cổng đích nơi bạn cần chỉ định số cổng mà gói tin được gửi tới.
  • – j: Cuối cùng chúng ta có đối số MỤC TIÊU nơi bạn có thể chỉ định tên MỤC TIÊU, CHẤP NHẬN, THẢ hoặc TRẢ LẠI

Cũng cần phải 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 các thay đổi vào iptables

Sau khi thêm quy tắc, bạn có thể lưu nó 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 quy tắc. Vì vậy, nếu bạn khởi động lại máy tí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 quy tắc IPv4, hãy viết lệnh:

$ sudo iptables-save > /etc/iptables/rules.v4

Và đối với quy tắc IPv6, hãy viết lệnh:

$ sudo iptables-save > /etc/iptables/rules.v6

Quy tắc liên tục tự động

Để các quy tắc vẫn tồn tại ngay cả sau khi khởi động lại và tự động, bạn cần cài đặt gói iptables-present.

Để thực hiện việc này, hãy chạy lệnh sau.

$ sudo apt-get install iptables-persistent

Cửa sổ sau sẽ mở ra. Nhấn enter trên .

Vì chúng ta đang làm việc với bảng IPv4 nên nó sẽ chỉ hiển thị các quy tắc IPv4. Nếu bạn đang làm việc trên IPv6, cửa sổ tương ứng sẽ được hiển thị.

Lưu ý: gói chỉ tải các quy tắc iptables đã lưu. Vì vậy mỗi khi thay đổi iptables bạn sẽ phải lưu nó bằng lệnh iptables -save.

Tải lại quy tắc sau khi khởi động lại

Sau khi lưu các quy tắc, bạn cần khôi phục chúng bằng lệnh sau.

$ sudo iptables-restore < /etc/iptables/rules.v4

$ sudo iptables-restore < /etc/iptables/rules.v6

Kích hoạt lưu lượng truy cập trên localhost/Bật loopback

Để kích hoạt lưu lượng truy cập vào 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ả giao tiếp localhost.

Tương tự, chúng ta có thể cho phép các gói thoát qua giao diện loopback.

$ sudo iptables -A OUTPUT -o lo -j ACCEPT

Để kiểm tra xem anh ấy đã 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

Cho phép lưu lượng truy cập trên các cổng cụ thể

Bạn có thể kích hoạt lưu lượng 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. 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

Vì đã cho phép tất cả lưu lượng HTTPS trê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

Để chấp nhận TẤT CẢ lưu lượng SSH đến trên eth0, hãy chạy lệ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à kích hoạt lưu lượng cổng trên một cổng cụ thể cho một ứng dụng tùy chỉnh. Giả sử cổng 233.

Để mở kết nối trên cổng này, hãy chạy.

$ sudo iptables -A INPUT -p tcp --dport 233 -j ACCEPT

Tương tự, bạn cũng có thể tắt kết nối trên một cổng cụ thể bằ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 trên cổng 392.

$ sudo iptables -A INPUT -p tcp --dport 392 -j REJECT

Để xác minh điều này, 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     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 quy tắc của mình, 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 có 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 số quy tắc 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ỉ xem các quy tắc của 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 của 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 chạy 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 của mình bằng cách chạy 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 chính sách vào vị trí được chỉ định

Nếu bạn muốn chèn quy tắc vào một vị trí cụ thể, bạn cần sử dụng các lệnh sau.

Kiểm tra các quy tắc đầu tiên.

$ 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 truy cập vào nhưng cho phép lưu lượng truy cập ra

Để chặn tất cả lưu lượng truy cập đến, bạn cần nhập lệnh sau.

$ 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 lưu lượng truy cập đến không xác định.

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 rồi 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 được 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 bạn để mạng của bạn có thể được phát hiện.

$ 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ộ giao tiếp với mạng bên ngoài

Chạy lệnh sau để cho phép mạng nội bộ (giả sử eth0) 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ủ, 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ạng được chỉ định

Nếu bạn đang sử dụng 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 cổng được chỉ định và mọi yêu cầu gửi đế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 đi đến một địa chỉ IP cụ thể

Bạn có thể chặn lưu lượng truy cập đến bất kỳ địa chỉ IP nào bằng cách chạy lệnh sau.

$ host -t a newsblog.pl.com

#Lối ra

newsblog.pl.com có ​​địa chỉ 172.66.40.93

Để chặn lưu lượng truy cập đ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 truyền thông xã hội như Instagram, Twitter Và Facebook.

Tìm địa chỉ IP của phương tiện truyền thông xã hội bằng cách chạy lệnh sau:

$ host -t a social-media-web-adrress.com

Ví dụ: trên Instagram sẽ là:

$ host -t a www.instagram.com

Bây giờ bạn 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 như sau:

$ iptables - A OUTPUT -p tcp -d CIDR-value -j DROP

Lưu ý: Đảm bảo thay đổi giá trị CIDR cho phù hợp.

Cho phép hoặc chặn yêu cầu ping ICMP

Để cho phép hoặc chặn 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 phạm vi 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

Danh sách 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 làm theo các bước 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 làm theo các bước sau:

$ iptables -z INPUT RULE-NUMBER

Hãy nhớ thay đổi RULE-NUMBER thành quy tắc cụ thể này.

những từ cuối

iptables là một công cụ 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 còn cung cấp nhiều tùy chọn. Kiểm tra trang chủ của nó bằng lệnh man để có bức tranh hoàn chỉnh.

$ man iptables
$ man ip6tables

Sau đó kiểm tra tường lửa của bạn và tìm hiểu cách nó giúp ngăn chặn các cuộc tấn công.