Chào mừng bạn đến với hướng dẫn chi tiết về cách chuyển đổi từ firewalld sang iptables trên CentOS 7. Trong môi trường quản trị hệ thống Linux, firewalld là tường lửa mặc định, nổi bật với sự linh hoạt và khái niệm “zone” độc đáo. Tuy nhiên, không phải lúc nào nó cũng là lựa chọn tối ưu. Nhiều quản trị viên hệ thống (sysadmin) có kinh nghiệm vẫn ưa chuộng iptables vì khả năng kiểm soát chi tiết và hiệu suất vượt trội trong các kịch bản phức tạp. Một số người dùng gặp khó khăn khi cấu hình các quy tắc (rule) nâng cao hoặc tích hợp với các công cụ cũ hơn trên firewalld. Giải pháp hiệu quả là quay trở lại với iptables, một công cụ mạnh mẽ và quen thuộc. Bài viết này sẽ hướng dẫn bạn từng bước, từ việc tắt firewalld, cài đặt và cấu hình iptables, cho đến các mẹo và phương pháp tốt nhất để quản lý tường lửa hiệu quả.
Tìm hiểu về firewalld và iptables trên CentOS 7
Để đưa ra quyết định đúng đắn, bạn cần hiểu rõ bản chất của cả hai công cụ tường lửa này. Mỗi công cụ đều có triết lý hoạt động và thế mạnh riêng, phù hợp với những nhu cầu sử dụng khác nhau.
Giới thiệu firewalld
Firewalld là giải pháp tường lửa động được cài đặt mặc định trên các bản phân phối Linux hiện đại như CentOS 7. Vai trò chính của nó là quản lý truy cập mạng một cách linh hoạt mà không cần phải khởi động lại dịch vụ mỗi khi thay đổi quy tắc. Đặc điểm nổi bật nhất của firewalld là việc sử dụng các “zone” (vùng) và “service” (dịch vụ).

Bạn có thể định nghĩa các vùng bảo mật khác nhau (ví dụ: public, private, trusted) và gán các giao diện mạng vào từng vùng. Cách hoạt động này giúp đơn giản hóa việc quản lý tường lửa cho người mới bắt đầu. Ưu điểm của firewalld là cấu hình thân thiện, dễ hiểu và khả năng áp dụng thay đổi ngay lập tức mà không làm gián đoạn các kết nối hiện tại.
Giới thiệu iptables
Iptables là một công cụ tường lửa dựa trên packet filtering (lọc gói tin) đã tồn tại từ lâu trong nhân Linux. Nó hoạt động ở tầng thấp hơn, cho phép quản trị viên kiểm soát trực tiếp các chuỗi (chains) quy tắc như INPUT, OUTPUT và FORWARD. Đây là phương pháp quản lý tường lửa truyền thống, mang lại sự kiểm soát tuyệt đối trên từng gói tin đi vào và đi ra khỏi hệ thống. Ưu điểm lớn nhất của iptables chính là sự linh hoạt và mạnh mẽ. Bạn có thể tạo ra các quy tắc cực kỳ chi tiết, phức tạp, tối ưu hóa hiệu suất cho các hệ thống yêu cầu cao như máy chủ web có lưu lượng truy cập lớn hoặc router mạng. Sự phổ biến lâu đời cũng giúp iptables có một cộng đồng hỗ trợ khổng lồ và tương thích với vô số kịch bản, công cụ tự động hóa.
Lý do nên chuyển từ firewalld sang iptables
Mặc dù firewalld là mặc định, nhưng có nhiều lý do chính đáng để một quản trị viên hệ thống quyết định chuyển sang sử dụng iptables. Quyết định này thường xuất phát từ nhu cầu kiểm soát sâu hơn và tối ưu hóa hiệu suất hệ thống.
Hạn chế của firewalld trong một số trường hợp
Firewalld, dù thân thiện, lại bộc lộ một số hạn chế trong các môi trường đòi hỏi sự tùy biến cao. Lớp trừu tượng (abstraction layer) mà nó tạo ra đôi khi làm giảm hiệu suất, đặc biệt trên các máy chủ có hàng ngàn kết nối đồng thời. Việc xử lý quy tắc thông qua các zone và service có thể tạo ra độ trễ không mong muốn.

Bên cạnh đó, việc cấu hình các quy tắc phức tạp, ví dụ như NAT (Network Address Translation) nâng cao hay các rule dựa trên điều kiện đặc biệt, có thể trở nên khó khăn và không trực quan. Đôi khi, bạn sẽ cảm thấy bị giới hạn bởi những gì firewalld cho phép, thay vì có thể tự do định hình chính sách bảo mật theo ý muốn.
Lợi ích khi dùng iptables thay thế
Chuyển sang iptables mang lại hai lợi ích cốt lõi: kiểm soát chi tiết và khả năng tương thích rộng rãi. Với iptables, bạn có toàn quyền truy cập vào Netfilter framework của nhân Linux, cho phép bạn tạo ra các quy tắc tường lửa cực kỳ cụ thể và hiệu quả. Bạn có thể kiểm soát từng gói tin dựa trên địa chỉ IP nguồn/đích, cổng, giao thức, trạng thái kết nối và nhiều thông số khác. Sự linh hoạt này là vô giá khi xây dựng một hệ thống phòng thủ vững chắc. Hơn nữa, iptables đã trở thành một tiêu chuẩn trong nhiều năm, do đó nó tương thích với hầu hết các ứng dụng, kịch bản tự động hóa và các công cụ giám sát mạng cũ và mới. Điều này giúp việc tích hợp và quản lý hệ thống trở nên liền mạch hơn.
Hướng dẫn tắt firewalld và cài đặt iptables trên CentOS 7
Quá trình chuyển đổi bao gồm hai bước chính: dừng hoàn toàn firewalld và sau đó cài đặt, kích hoạt dịch vụ iptables. Hãy đảm bảo bạn thực hiện các bước này một cách cẩn thận để tránh làm gián đoạn kết nối mạng, đặc biệt là khi làm việc trên máy chủ từ xa.
Cách tắt và vô hiệu hóa firewalld
Đầu tiên, bạn cần dừng dịch vụ firewalld đang chạy. Sử dụng lệnh sau trong terminal với quyền root: systemctl stop firewalld Sau khi dừng dịch vụ, bạn cần vô hiệu hóa nó để đảm bảo firewalld không tự động khởi động lại sau mỗi lần reboot hệ thống. Thực hiện bằng lệnh: systemctl disable firewalld Để chắc chắn rằng firewalld đã hoàn toàn ngừng hoạt động, hãy kiểm tra trạng thái của nó: systemctl status firewalld Kết quả trả về nên hiển thị dịch vụ là “inactive (dead)” và “disabled”.

Điều này xác nhận firewalld sẽ không can thiệp vào quá trình cấu hình iptables của bạn.
Cài đặt và cấu hình iptables cơ bản
Tiếp theo, bạn cần cài đặt gói dịch vụ cho iptables, vì CentOS 7 không cài sẵn nó. Sử dụng trình quản lý gói yum: yum install iptables-services -y Sau khi cài đặt hoàn tất, hãy kích hoạt dịch vụ iptables để nó tự khởi động cùng hệ thống: systemctl enable iptables Bây giờ, hãy khởi động dịch vụ lần đầu tiên: systemctl start iptables File cấu hình mặc định của iptables nằm tại /etc/sysconfig/iptables. Ban đầu, file này có thể trống. Bạn có thể tạo một file cấu hình cơ bản để cho phép các kết nối cần thiết, ví dụ như SSH, trước khi bắt đầu thêm các quy tắc phức tạp hơn.
Các lệnh cơ bản để cấu hình iptables
Hiểu rõ cú pháp lệnh của iptables là chìa khóa để quản lý tường lửa hiệu quả. Các lệnh này cho phép bạn thêm, sửa, xóa và xem các quy tắc một cách linh hoạt.
Thêm, sửa và xóa luật firewall
Iptables hoạt động dựa trên các chuỗi (chains) quy tắc. Ba chuỗi cơ bản và quan trọng nhất là:
- INPUT: Quản lý các gói tin đi vào máy chủ.
- OUTPUT: Quản lý các gói tin đi ra từ máy chủ.
- FORWARD: Quản lý các gói tin được chuyển tiếp qua máy chủ (dùng cho router, gateway).
Để thêm một quy tắc mới, bạn dùng tùy chọn -A (Append). Ví dụ, để cho phép kết nối SSH (cổng 22): iptables -A INPUT -p tcp --dport 22 -j ACCEPT Để cho phép lưu lượng truy cập web (cổng 80 và 443): iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT Để chặn một địa chỉ IP cụ thể, bạn có thể dùng: iptables -A INPUT -s 192.168.1.100 -j DROP Để xem danh sách các quy tắc hiện có với thông tin chi tiết, sử dụng lệnh: iptables -L -n -v Để xóa một quy tắc, bạn có thể dùng tùy chọn -D (Delete) và chỉ định chính xác quy tắc đó hoặc số thứ tự của nó trong chuỗi.

Lưu và áp dụng cấu hình iptables
Một điểm quan trọng cần nhớ là các thay đổi bạn thực hiện bằng lệnh iptables chỉ là tạm thời và sẽ mất đi sau khi khởi động lại máy chủ. Để lưu chúng vĩnh viễn, bạn cần sử dụng dịch vụ iptables. Sau khi đã thêm và kiểm tra các quy tắc của mình, hãy chạy lệnh sau: service iptables save Lệnh này sẽ ghi tất cả các quy tắc hiện tại vào file cấu hình /etc/sysconfig/iptables. Mỗi khi hệ thống khởi động, dịch vụ iptables sẽ tự động đọc file này và áp dụng lại các quy tắc. Ngoài ra, bạn cũng có thể sử dụng lệnh iptables-save để xuất cấu hình ra một file tùy chọn và iptables-restore để nạp cấu hình từ một file.
Kiểm tra và đảm bảo iptables hoạt động chính xác
Sau khi cấu hình, bước quan trọng tiếp theo là kiểm tra để đảm bảo tường lửa hoạt động đúng như mong đợi. Việc xác minh này giúp bạn tránh các sự cố như mất kết nối hoặc vô tình chặn các dịch vụ quan trọng.
Kiểm tra trạng thái iptables
Cách đơn giản nhất để kiểm tra các quy tắc đang được áp dụng là sử dụng lệnh iptables -L. Để có cái nhìn chi tiết hơn, bao gồm số gói tin và byte đã khớp với mỗi quy tắc, hãy dùng: iptables -L -n -v
-L: Liệt kê các quy tắc.-n: Hiển thị địa chỉ IP và cổng dưới dạng số (không phân giải tên miền).-v: Hiển thị thông tin chi tiết (verbose).
Hãy chú ý đến chính sách mặc định (default policy) của các chuỗi.

Nếu chính sách mặc định của chuỗi INPUT là DROP, bạn phải chắc chắn rằng đã có quy tắc ACCEPT cho các dịch vụ cần thiết như SSH. Sau khi áp dụng một quy tắc mới, hãy kiểm tra kết nối mạng tới các dịch vụ liên quan để đảm bảo không có gì bị chặn ngoài ý muốn.
Thử nghiệm thực tế để xác nhận firewall hoạt động tốt
Kiểm tra trên lý thuyết là chưa đủ. Bạn cần thực hiện các bài kiểm tra thực tế từ một máy tính khác. Các công cụ như nc (netcat) hoặc telnet rất hữu ích để kiểm tra xem một cổng có mở hay không. Ví dụ, để kiểm tra xem cổng 22 (SSH) trên máy chủ 192.168.1.5 có mở không, bạn chạy lệnh từ máy khác: nc -zv 192.168.1.5 22 Nếu kết quả là “succeeded!”, điều đó có nghĩa là quy tắc tường lửa của bạn đã cho phép kết nối. Nếu không, kết nối sẽ bị timeout hoặc từ chối. Nếu gặp sự cố, hãy kiểm tra nhật ký hệ thống tại /var/log/messages hoặc sử dụng lệnh dmesg | grep iptables để tìm các thông báo liên quan đến các gói tin bị từ chối. Điều này có thể cung cấp manh mối quý giá về quy tắc nào đang gây ra vấn đề.
Các lưu ý và mẹo khi sử dụng iptables thay cho firewalld
Việc chuyển sang iptables mang lại sức mạnh lớn, nhưng cũng đòi hỏi sự cẩn trọng. Dưới đây là một số mẹo và lưu ý quan trọng để giúp bạn quản lý tường lửa một cách an toàn và hiệu quả.
Đầu tiên, thứ tự của các quy tắc rất quan trọng. Iptables xử lý các quy tắc trong một chuỗi theo thứ tự từ trên xuống dưới. Ngay khi một gói tin khớp với một quy tắc, hành động tương ứng (ACCEPT, DROP, REJECT) sẽ được thực thi và các quy tắc còn lại trong chuỗi sẽ không được xét đến nữa. Do đó, hãy đặt các quy tắc cụ thể, chi tiết lên trên các quy tắc chung chung hơn. Ví dụ, một quy tắc ACCEPT cho một IP cụ thể nên được đặt trước một quy tắc DROP cho cả dải mạng chứa IP đó.
Tiếp theo, hãy đặc biệt chú ý đến chính sách mặc định (default policies). Một thực hành bảo mật tốt là đặt chính sách mặc định cho chuỗi INPUT và FORWARD là DROP. Điều này có nghĩa là mọi lưu lượng không được cho phép một cách rõ ràng sẽ bị chặn. Tuy nhiên, trước khi làm điều này, hãy đảm bảo bạn đã có quy tắc cho phép kết nối SSH và các kết nối đã được thiết lập (-m conntrack --ctstate RELATED,ESTABLISHED) để không tự khóa mình khỏi máy chủ.
Luôn luôn sao lưu cấu hình trước khi thực hiện các thay đổi lớn. Một lệnh đơn giản như cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak có thể cứu bạn khỏi nhiều giờ khắc phục sự cố.

Cuối cùng, để quản lý hiệu quả hơn, bạn có thể sử dụng các script khởi động để tự động nạp cấu hình iptables, đặc biệt hữu ích trong các môi trường phức tạp. Đồng thời, hãy thường xuyên theo dõi và cập nhật các quy tắc khi có sự thay đổi về dịch vụ trên máy chủ.
Các vấn đề thường gặp và cách xử lý
Ngay cả với sự chuẩn bị kỹ lưỡng, bạn vẫn có thể gặp phải một số vấn đề phổ biến khi làm việc với iptables. Biết cách xác định và khắc phục chúng sẽ giúp bạn tiết kiệm thời gian và giảm thiểu rủi ro.
Iptables không tự động chạy sau khi khởi động lại
Đây là sự cố phổ biến nhất đối với người mới. Bạn đã cấu hình mọi thứ hoàn hảo, nhưng sau khi reboot, tất cả các quy tắc đều biến mất. Nguyên nhân thường là do bạn quên kích hoạt dịch vụ iptables để nó khởi động cùng hệ thống. Để khắc phục, hãy chạy lại lệnh: systemctl enable iptables Sau đó, hãy kiểm tra lại trạng thái của dịch vụ để đảm bảo nó đã được “enabled”. Bạn cũng nên đảm bảo rằng mình đã lưu cấu hình bằng lệnh service iptables save sau khi thực hiện các thay đổi. Nếu không, dịch vụ sẽ khởi động nhưng nạp một file cấu hình trống hoặc cũ.
Mất kết nối do rule sai mức độ nghiêm ngặt
Đây là một lỗi nguy hiểm, đặc biệt khi bạn đang quản trị máy chủ từ xa. Một quy tắc quá nghiêm ngặt, chẳng hạn như đặt chính sách INPUT mặc định thành DROP mà không có quy tắc ACCEPT cho cổng SSH, sẽ khiến bạn mất hoàn toàn kết nối. Nếu điều này xảy ra, bạn sẽ cần quyền truy cập vật lý hoặc qua console (KVM, VNC) để đăng nhập và sửa lỗi. Cách nhanh nhất để lấy lại quyền truy cập là tạm thời xóa tất cả các quy tắc (flush). iptables -F iptables -P INPUT ACCEPT Sau khi lấy lại quyền truy cập, hãy phân tích lại file cấu hình của bạn, điều chỉnh các quy tắc cho phù hợp. Luôn đảm bảo rằng quy tắc cho phép SSH và các kết nối liên quan (RELATED,ESTABLISHED) được ưu tiên hàng đầu.
Best Practices khi chuyển sang iptables
Để quá trình chuyển đổi và quản lý iptables diễn ra suôn sẻ và an toàn, hãy tuân thủ các phương pháp thực hành tốt nhất sau đây. Những nguyên tắc này giúp giảm thiểu rủi ro và đảm bảo hệ thống của bạn được bảo vệ một cách tối ưu.
Đầu tiên và quan trọng nhất: luôn sao lưu cấu hình trước khi thay đổi. Một bản sao lưu đơn giản của file /etc/sysconfig/iptables sẽ là cứu cánh khi bạn mắc lỗi.

Thói quen này nên trở thành phản xạ tự nhiên của mọi quản trị viên hệ thống.
Thứ hai, nếu có thể, hãy thử nghiệm cấu hình trong một môi trường test (staging environment) trước khi áp dụng trên máy chủ sản xuất (production server). Việc này cho phép bạn phát hiện và sửa lỗi mà không ảnh hưởng đến người dùng cuối. Một máy ảo hoặc một container là môi trường lý tưởng để thử nghiệm các quy tắc tường lửa mới.
Thứ ba, hãy ghi chú và tài liệu hóa các thay đổi của bạn. Khi bộ quy tắc của bạn trở nên phức tạp, việc có tài liệu giải thích lý do đằng sau mỗi quy tắc sẽ cực kỳ hữu ích cho việc bảo trì sau này, đặc biệt khi làm việc trong một đội nhóm. Ghi chú trực tiếp trong file cấu hình bằng cách sử dụng các dòng bắt đầu bằng dấu #.
Thứ tư, tránh tạo ra các quy tắc quá phức tạp nếu không thực sự cần thiết. Một bộ quy tắc đơn giản, rõ ràng sẽ dễ quản lý và gỡ lỗi hơn. Hãy tập trung vào việc bảo vệ những gì cần thiết và giữ cho cấu hình gọn gàng.
Cuối cùng, hãy đảm bảo cập nhật thường xuyên hệ thống và bản thân iptables. Kiểm tra tính tương thích của các quy tắc với các dịch vụ mới và các bản vá bảo mật của hệ điều hành để đảm bảo hệ thống luôn được bảo vệ một cách toàn diện.

Kết luận
Việc di chuyển từ firewalld sang iptables trên CentOS 7 là một quyết định chiến lược giúp bạn giành lại quyền kiểm soát chi tiết và tối ưu hóa hiệu suất tường lửa. Mặc dù firewalld cung cấp sự tiện lợi với các khái niệm như zone, iptables lại mang đến sự linh hoạt và sức mạnh không giới hạn cho những ai muốn xây dựng một hệ thống phòng thủ vững chắc, tùy chỉnh theo từng nhu cầu cụ thể.

Qua bài viết này, chúng ta đã cùng nhau đi qua toàn bộ quy trình, từ việc tìm hiểu lý do chuyển đổi, tắt firewalld, cài đặt và cấu hình iptables, cho đến việc nắm vững các lệnh cơ bản và các phương pháp thực hành tốt nhất.
Điều quan trọng nhất cần nhớ là luôn kiểm tra kỹ lưỡng và sao lưu cấu hình trước khi thực hiện bất kỳ thay đổi nào trên môi trường sản xuất. Một sai lầm nhỏ trong cấu hình tường lửa có thể dẫn đến việc mất kết nối hoặc tạo ra lỗ hổng bảo mật nghiêm trọng. Chúng tôi khuyến khích bạn thực hành theo hướng dẫn này để làm chủ công cụ iptables, từ đó nâng cao khả năng bảo mật cho hệ thống của mình. Đừng quên theo dõi các bài viết tiếp theo của AZWEB để tìm hiểu thêm nhiều kiến thức nâng cao về quản trị firewall và hệ thống Linux.