Skip to main content

Hướng dẫn thay đổi tường lửa Firewalld bằng Iptables trên Red Hat CentOS 7

Hướng dẫn thay đổi tường lửa Firewalld bằng Iptables trên Red Hat CentOS 7

Chào các bạn! Từ phiên bản CentOS 7 Red Hat đã quyết định thay thế dịch vụ Iptables bằng dịch vụ Firewalld, Firewalld nhắm đến việc quản lý vùng (ZONE) cho thiết bị mạng nếu nó phải di chuyển nhiều, ví dụ laptop hoặc phone… để mỗi nơi bạn đến bạn sẽ tùy theo đó chuyển dịch chế độ mạng sang Công ty – Nhà – Quán cafe công cộng… Giống như Firewall Windows hay hỏi bạn mỗi khi bạn bắt được Wifi hay cắm mạng vào. Việc này rất hay tuy nhiên theo mình thấy nếu ở trên Server nằm một chổ trong Datacenter thì việc ấy khá thừa thải.
(Nếu bạn vẫn quyết định muốn sử dụng Firewalld trên Red Hat CentOS 7 bạn có thể vào đây xem cách sử dụng)
Tìm hiểu và sử dụng Firewalld thì cũng khá hay và hợp thời tuy nhiên đối với những bạn đã quá quen với việc sử dụng dịch vụ Iptables truyền thống thì lại muốn quay về chế độ quản lý tường lửa như trước, hôm nay mình sẽ hướng dẫn các bạn thay thế tường lửa Firewalld bằng Iptables trên Red Hat CentOS 7.

Đầu tiên các bạn tắt Firewalld đi bằng các câu lệnh sau:

system-config-firewall-tui >/dev/null 2>&1
systemctl stop firewalld
systemctl disable firewalld

Kiểm tra lại trạng thái Firewalld đã không còn chạy nữa:

firewall-cmd --state

not running

Xem lại những rule cũ đang có trên Firewalld:

grep 'ACCEPT\|DROP\|QUEUE\|RETURN\|REJECT\|LOG' ~/firewalld_iptables_rules

Mọi người sẽ thấy lại những rule mà chúng ta đã add vào Firewalld ở bài trước:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i lo -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A IN_public_allow -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
-A IN_public_allow -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW -j ACCEPT
-A IN_public_allow -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
-A IN_public_allow -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
-A IN_public_allow -p udp -m udp --dport 5000:6000 -m conntrack --ctstate NEW -j ACCEPT

Bạn có thể lưu lại thông tin trên để sau sử dụng mà add vào Iptables.

Bây giờ chúng ta cài đặt dịch vụ Iptables trên Red Hat CentOS 7:

yum -y install iptables-services

Kiểm tra cấu hình rule mới mà Iptables đang có:

 cat /etc/sysconfig/iptables

# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Như bạn có thể thấy bên trên, Iptables đã có open sẵn port 22/tcp để bạn có thể ssh vào nếu bạn tiến hành chạy Iptables lúc này:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

Tuy nhiên những port cũ cần thiết ta đã cho phép như 21,80/tcp hay dãy 5000-6000/udp thì vẫn chưa có. Bạn có thể thêm vào tương ứng theo ý bạn. Chú ý bạn phải có kiến thức về việc viết rule Iptables để làm những việc này. Còn mình ở đây chỉ đơn giản là copy lại dòng cho phép port 22 và thay đổi vào đó những port cần thiết theo ý mình:

 nano /etc/sysconfig/iptables

# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 5000:6000 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Sửa xong save lại bạn có thể chạy dịch vụ Iptables:

service iptables start
service ip6tables start
chkconfig iptables on
chkconfig ip6tables on

Bạn kiểm tra lại các port xem đã mở chưa, chú ý phải có ứng dụng đang lắng nghe ở port đó thì mới có thể check port qua các website cung cấp tool check. Mình thường check port ở 2 site sau:
http://ping.eu/port-chk
http://www.base64online.com/port-check.php

Chúc các bạn thành công

Cám ơn bạn đã đọc hết bài viết, hãy bấm chia sẻ lên mạng xã hội để nhớ rằng bạn đã từng nắm được kiến thức do bài viết này cung cấp rồi:
Share

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Share