Giới thiệu
Trong lab này, bạn sẽ học cách sử dụng lệnh iptables, một công cụ tường lửa mạnh mẽ trong Linux, để quản lý và kiểm soát lưu lượng mạng trên hệ thống của bạn. Bạn sẽ bắt đầu bằng cách hiểu cấu trúc và các khái niệm cơ bản của iptables, bao gồm các bảng và chuỗi tích hợp khác nhau của nó. Sau đó, bạn sẽ khám phá các lệnh iptables khác nhau để quản lý các quy tắc tường lửa, chẳng hạn như liệt kê các quy tắc hiện có, thêm các quy tắc mới và xóa các quy tắc hiện có. Cuối cùng, bạn sẽ học cách triển khai các cấu hình iptables nâng cao hơn để phù hợp với các yêu cầu mạng cụ thể của bạn.
Hiểu các kiến thức cơ bản về iptables
Trong bước này, bạn sẽ tìm hiểu các khái niệm cơ bản về tường lửa iptables trong Linux. iptables là một công cụ mạnh mẽ cho phép bạn quản lý và kiểm soát lưu lượng mạng trên hệ thống của bạn.
Đầu tiên, hãy hiểu cấu trúc cơ bản của iptables. iptables được tổ chức thành các bảng khác nhau, mỗi bảng có bộ chuỗi tích hợp riêng. Các bảng thường được sử dụng nhất là:
filter
: Bảng này chịu trách nhiệm lọc các gói mạng, xác định có cho phép hay chặn chúng.nat
: Bảng này được sử dụng để dịch địa chỉ mạng, thường được sử dụng để chuyển tiếp cổng hoặc masquerading.mangle
: Bảng này được sử dụng để thay đổi gói chuyên dụng, chẳng hạn như đặt trường Type of Service (ToS) trong tiêu đề IP.
Mỗi bảng chứa một tập hợp các chuỗi tích hợp, chẳng hạn như INPUT
, OUTPUT
và FORWARD
, tương ứng với các giai đoạn khác nhau của quá trình truyền gói.
Bây giờ, hãy khám phá một số lệnh iptables cơ bản:
## List all existing rules
sudo iptables -L
## List rules for a specific table (e.g., filter)
sudo iptables -t filter -L
## Add a new rule to the INPUT chain to block traffic on port 80
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
## Delete a rule from the INPUT chain
sudo iptables -D INPUT 1
## Save the current iptables configuration
sudo iptables-save > ~/project/iptables-rules.txt
Ví dụ về đầu ra:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW,RELATED,ESTABLISHED
ACCEPT udp -- anywhere anywhere state NEW,RELATED,ESTABLISHED
DROP tcp -- anywhere anywhere dport 80
Trong ví dụ trên, trước tiên chúng ta liệt kê tất cả các quy tắc iptables hiện có, sau đó thêm một quy tắc mới vào chuỗi INPUT
để chặn lưu lượng truy cập trên cổng 80 và cuối cùng xóa quy tắc vừa thêm. Chúng ta cũng lưu cấu hình iptables hiện tại vào một tệp để tham khảo trong tương lai.
Quản lý các quy tắc tường lửa bằng iptables
Trong bước này, bạn sẽ học cách quản lý các quy tắc tường lửa bằng iptables. Chúng ta sẽ đề cập đến việc thêm, xóa và sửa đổi các quy tắc, cũng như lưu cấu hình hiện tại.
Đầu tiên, hãy liệt kê các quy tắc tường lửa hiện tại:
sudo iptables -L
Ví dụ về đầu ra:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW,RELATED,ESTABLISHED
ACCEPT udp -- anywhere anywhere state NEW,RELATED,ESTABLISHED
DROP tcp -- anywhere anywhere dport 80
Bây giờ, hãy thêm một quy tắc mới để cho phép lưu lượng SSH (cổng 22) trên chuỗi INPUT
:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Để xóa quy tắc mà chúng ta đã thêm trước đó để chặn cổng 80, chúng ta có thể sử dụng lệnh sau:
sudo iptables -D INPUT -p tcp --dport 80 -j DROP
Cuối cùng, hãy lưu cấu hình iptables hiện tại vào một tệp:
sudo iptables-save > ~/project/iptables-rules.txt
Điều này sẽ lưu các quy tắc iptables hiện tại vào tệp iptables-rules.txt
trong thư mục ~/project
.
Triển khai các cấu hình iptables nâng cao
Trong bước cuối cùng này, bạn sẽ học cách triển khai một số cấu hình iptables nâng cao, chẳng hạn như chuyển tiếp cổng và dịch địa chỉ mạng (NAT).
Đầu tiên, hãy thiết lập chuyển tiếp cổng để chuyển hướng lưu lượng truy cập từ một cổng sang một cổng khác. Ví dụ: hãy chuyển tiếp lưu lượng truy cập từ cổng 8080 đến cổng 80 trên máy cục bộ:
## Enable IP forwarding
sudo sysctl -w net.ipv4.ip_forward=1
## Add a port forwarding rule
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 127.0.0.1:80
Bây giờ, bất kỳ lưu lượng truy cập nào đến hệ thống trên cổng 8080 sẽ được chuyển tiếp đến cổng 80 trên máy cục bộ.
Tiếp theo, hãy định cấu hình một quy tắc NAT (Network Address Translation) đơn giản để masquerade lưu lượng truy cập исходящий từ mạng cục bộ:
## Add a masquerade rule for the default interface
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Quy tắc này sẽ masquerade tất cả lưu lượng truy cập исходящий từ mạng cục bộ (giả sử giao diện mặc định là eth0
) đến mạng bên ngoài.
Cuối cùng, hãy lưu cấu hình iptables hiện tại vào một tệp:
sudo iptables-save > ~/project/iptables-advanced-rules.txt
Điều này sẽ lưu các quy tắc iptables nâng cao vào tệp iptables-advanced-rules.txt
trong thư mục ~/project
.
Tóm tắt
Trong lab này, bạn đã học các khái niệm cơ bản về tường lửa iptables trong Linux, bao gồm cấu trúc cơ bản, các bảng và chuỗi tích hợp của nó. Bạn đã khám phá các lệnh iptables khác nhau để quản lý các quy tắc tường lửa, chẳng hạn như liệt kê các quy tắc hiện có, thêm các quy tắc mới, xóa các quy tắc và lưu cấu hình hiện tại. Bạn cũng đã hiểu cách sử dụng bảng filter
để lọc gói, bảng nat
để dịch địa chỉ mạng và bảng mangle
để thay đổi gói chuyên dụng. Với kiến thức này, giờ đây bạn có thể định cấu hình và quản lý hiệu quả tường lửa của hệ thống Linux bằng iptables.