Travis Tran

Travis Tran

BREAKTHROUGH the limits

Sử dụng iptables trên CentOS

Bài viết này hướng dẫn về cách cài đặt và cấu hình iptables trên CentOS.

Tới thời điểm hiện tại, tuy rằng CentOS 7 sử dụng firewalld làm công cụ thiết lập các chính sách mạng cho server linux, nhưng mình vẫn quen sử dụng iptables hơn.

Trong hướng dẫn dưới đây, cách cài đặt iptables trên CentOS 6 và CentOS 7 chỉ khác nhau ở các lệnh start, stop, restart, disable, enable service trên CentOS. Mục này các bạn tham khảo trên internet để tìm hiểu thêm.

Cài đặt iptables

Nếu hệ điều hành bạn đang sử dụng là CentOS 7, trước tiên cần gỡ bỏ firewalld để tránh sung đột:

sudo systemctl stop firewalld
sudo systemctl disable firewalld

Cài đặt iptables bằng lệnh yum:

sudo yum install -y iptables-services
sudo systemctl start iptables
sudo systemctl status iptables
sudo systemctl enable iptables

Các thiết lập cấu hình cơ bản

Thiết lập các cấu hình iptables cơ bản để đảm bảo an toàn cho server bằng cách chặn toàn bộ INPUT tới server, chỉ cho phép OUTPUT từ server đi.

sudo iptables -F
sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
sudo iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P INPUT DROP
sudo iptables-save | sudo tee /etc/sysconfig/iptables
sudo systemctl restart iptables
sudo iptables -L -n

Ở đây, lệnh sudo iptables -F được sử dụng để xóa toàn bộ cấu hình. Cần cực kỳ lưu ý khi sử dụng lệnh này.

sudo iptables -P OUTPUT ACCEPT : Cho phép toàn bộ OUTPUT.

sudo iptables -P INPUT DROP : Chặn toàn bộ INPUT.

sudo iptables-save | sudo tee /etc/sysconfig/iptables : Lưu lại cấu hình iptables được chỉnh sửa trong session hiện tại.

sudo iptables -L -n : Hiển thị cấu hình iptables được thiết lập.

Mở kết nối đến/đi

Để bổ sung cấu hình cho phép kết nối tới một port hoặc dải port trên server, chúng ta sử dụng câu lệnh:

sudo iptables -I INPUT -p tcp -m tcp --dport 22 -j ACCEPT
sudo iptables -I INPUT -p tcp -m tcp --dport 8000:9000 -j ACCEPT

Lệnh trên cho phép mở kết nối tới server qua port 22, là port SSH và dải port 8000-9000.

Chú ý: Tham số sử dụng ở đây là -I, mục đích để bổ sung tiếp policy này vào danh sách policy hiện tại.

Để thực hiện cho phép mở nhiều port, các bạn sử dụng lệnh:

sudo iptables -I INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT

Câu lệnh trên cho phép các máy trạm kết nối tới server qua 2 port 80, 443, là các port thường được sử dụng cho web.

Để cấu hình chỉ cho phép kết nối từ một hoặc vài IP hoặc một dải IP, chúng ta cấu hình như sau:

sudo iptables -I INPUT -s 10.0.0.0/24 -p tcp -m multiport --dport 389,636 -j ACCEPT
sudo iptables -I INPUT -s 10.0.0.1,10.0.0.2 -p tcp -m multiport --dport 389,636 -j ACCEPT

Các ví dụ trên áp dụng cho các kết nối đến. Với các kết nối đi, đơn giản chúng ta thay INPUT thành OUTPUT.

Chặn kết nối đến/đi

Nếu để ý, các bạn sẽ thấy cuối mỗi chính sách trong các ví dụ trên kết thúc bằng ACCEPT, tức là cho phép. Để chặn kết nối, chúng ta thay từ khóa ACCEPT bằng REJECT. Câu lệnh cấu hình sẽ như sau:

sudo iptables -I INPUT -p tcp -m multiport --dport 389,636 -j REJECT

Cách dùng trong các trường hợp cụ thể tương tự trong các ví dụ mở kết nối.

Xóa cấu hình

Để xóa cấu hình đã có, bạn chuẩn bị câu lệnh tương tự khi insert policy, sau đó thay từ khóa -I thành -D:

sudo iptables -D INPUT -p tcp -m multiport --dport 389,636 -j REJECT

Cho phép/Chặn ping

Để cấu hình cho phép ping tới server, chúng ta thiết lập chính sách sau:

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

Để chặn ping với thông báo Destination Port Unreachable, chúng ta thiết lập:

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT

Nếu muốn server không phản hồi thông báo nào, sử dụng thiết lập sau:

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j DROP

 

X
Glad to have you at travistran.me
Welcome to TravisBot
wpChatIcon