Site icon Knowledge Base| Kiến thức Dịch vụ P.A Việt Nam

Cách cấu hình iptables bảo mật Ubuntu VPS, Linux Firewall

iptables là gì?

iptables là ứng dụng tường lửa miễn phí trong Linux, cho phép thiết lập các quy tắc riêng để kiểm soát truy cập, tăng tính bảo mật. Khi sử dụng máy chủ, tường lửa là một trong những công cụ quan trọng giúp bạn ngăn chặn các truy cập không hợp lệ. Đối với các bản phân phối Linux như Ubuntu, Fedora, CentOS… bạn có thể tìm thấy công cụ tường lửa tích hợp sẵn iptables.

Cách sử dụng iptables để mở port VPS

Chèn chuỗi ACCEPT PORT để mở port trong iptables với cấu trúc lệnh mở port xxx:

# iptables -A INPUT -p tcp -m tcp --dport xxx -j ACCEPT

A là Append – chèn vào chuỗi INPUT (chèn xuống cuối)

# iptables -I INPUT -p tcp -m tcp --dport xxx -j ACCEPT

I là Insert – chèn vào chuỗi INPUT (chèn vào dòng chỉ định rulenum).

Để tránh xung đột với rule gốc, chèn rule vào đầu, dùng –I.

Mở port SSH

Mở port SSH 22 để truy cập VPS thông qua SSH, cho phép kết nối SSH ở bất kì thiết bị nào, người nào, ở bất cứ đâu.

# iptables -I INPUT -p tcp -m tcp --dport 22 -j ACCEPT

SSH được hiển thị mặc định ở cổng 22, nếu đổi SSH sang một cổng khác thì iptables sẽ hiển thị số cổng.

ACCEPT
tcp  -- anywhere 
anywhere
cp dpt:ssh

Cấu hình chỉ cho phép kết nối VPS qua SSH từ một địa chỉ IP duy nhất được xác định.

# iptables -I INPUT -p tcp -s xxx.xxx.xxx.xxx -m tcp --dport 22 -j ACCEPT

Lúc đó, iptables sẽ thêm rule

ACCEPT  tcp  -- xxx.xxx.xxx.xxx    anywhere         tcp dpt:ssh

Mở port Web Server

Cho phép truy cập vào web server qua port mặc định 80 và 443:

# iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT

# iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT

iptables hiển thị HTTP và HTTPS theo mặc định

ACCEPT tcp -- anywhere       anywhere    tcp dpt:http

ACCEPT tcp -- anywhere      anywhere     tcp dpt:https

Mở port Mail

Cho phép user dùng SMTP Server qua port mặc định là 25 và 465:

# iptables -I INPUT -p tcp -m tcp --dport 25 -j ACCEPT

# iptables -I INPUT -p tcp -m tcp --dport 465 -j ACCEPT

iptables sẽ hiển thị SMTP và URD theo mặc định

ACCEPT   tcp  -- anywhere      anywhere           tcp dpt:smtp

ACCEPT   tcp  -- anywhere      anywhere           tcp dpt:urd

Mở port POP3 (port mặc định 110 và 995) cho phép user đọc mail trên server

# IPtables -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT

# IPtables -A INPUT -p tcp -m tcp --dport 995 -j ACCEPT

iptables sẽ hiển thị POP3 và POP3S theo mặc định

ACCEPT 	tcp  --  anywhere         	anywhere        	tcp dpt:pop3
ACCEPT 	tcp  --  anywhere         	anywhere        	tcp dpt:pop3s

Cho phép sử dụng giao thức IMAP mail protocol (port mặc định là 143 và 993)

# IPtables -A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
# IPtables -A INPUT -p tcp -m tcp --dport 993 -j ACCEPT

iptables sẽ hiển thị IMAP và IMAPS theo mặc định

ACCEPT 	tcp  --  anywhere         	anywhere        	tcp dpt:imap
ACCEPT 	tcp  --  anywhere         	anywhere        	tcp dpt:imaps

Chặn 1 IP truy cập

# IPtables -A INPUT -s IP_ADDRESS -j DROP

Chặn 1 IP truy cập vào 1 port cụ thể

#IPtables -A INPUT -p tcp -s IP_ADDRESS –dport PORT -j DROP

Sau khi đã thiết lập tất cả bao gồm mở các port cần thiết hoặc hạn chế kết nối cần block toàn bộ các kết nối còn lại và cho phép toàn bộ các kết nối ra ngoài từ VPS.

# IPtables -P OUTPUT ACCEPT
# IPtables -P INPUT DROP

Kiểm tra lại các quy tắc sau khi thiết lập

# service IPtables status

Hoặc

# IPtables -L –n

-n để nói đến yếu tố cần quan tâm là địa chỉ IP, ví dụ nếu chặn kết nối từ một địa chỉ xác định thì iptables sẽ hiển thị là xxx.xxx.xxx.xxx với tham số -n

Kết thúc, lưu lại các thiết lập tường lửa iptables nếu không chúng sẽ mất khi reboot hệ thống. Đối với CenOS, cấu hình được lưu tại /etc/sysconfig/iptables.

# IPtables-save | sudo tee /etc/sysconfig/IPtables

Hoặc

# service IPtables save
IPtables: Saving firewall rules to /etc/sysconfig/IPtables:[ OK ]

Cách thiết lập iptables với Linux Firewall để bảo mật Ubuntu VPS 

Bước 1: Cài đặt iptables Linux Firewall

Hầu hết các bản Linux hiện nay đều được tích hợp sẵn iptables. Tuy nhiên, nếu chưa có sẵn trên Ubuntu hoặc Debian bạn có thể dùng lệnh sau để cài đặt:

sudo apt-get update
sudo apt-get install IPtables
sudo IPtables -L v

Trong đó, -L dùng để liệt kê tất cả quy tắc (rule) và –v để liệt kê các danh sách bổ trợ. Chú ý đến ký tự viết hoa và viết thường được phân biệt với nhau.

Ví dụ:

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

Kết quả trên cho biết ba Chain được thiết lập mặc định là ACCEPT và không có Chain nào có rule.

Bước 2: Định nghĩa các chain rules

Tức là thêm nó vào danh sách chain hiện tại, dưới đây là lệnh iptables được định dạng với các tùy chọn thông thường.

sudo IPtables -A  -i <interface> -p <protocol (tcp/udp)> -s <source> --dport <port no.>  -j <target>

Trong đó:

Cho phép lưu lượng truy cập trên localhost

Cho phép giao tiếp giữa ứng dụng mà database của nó trên server như bình thường.

sudo IPtables -A INPUT -i lo -j ACCEPT

Kết quả:

Chain INPUT (policy ACCEPT 7 packets, 488 bytes)
pkts bytes target prot opt in out source            destination
0 0 ACCEPT all  --  lo any anywhere      	anywhere

-A thêm rules vào chains INPUT cho phép tất cả kết nối ở interface lo

Các cổng được phép truy cập: HTTP, SSH, SSL

sudo IPtables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo IPtables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo IPtables -A INPUT -p tcp --dport 443 -j ACCEPT

Cho phép tất cả các truy cập TCP trên các cổng 22 (SSH), HTTP (80), HTTPS (443).

Lọc các gói tin dựa trên nguồn

Thêm vào tham số -s để cho phép hoặc từ chối các gói tin dựa trên IP nguồn.

sudo IPtables -A INPUT -s 192.168.1.3 -j ACCEPT

Các gói tin đến từ IP nguồn là 192.168.1.3 sẽ được nhấp nhận.

sudo IPtables -A INPUT -s 192.168.1.3 -j DROP

Các gói tin đến từ IP nguồn là 192.168.1.3 sẽ bị từ chối.

sudo IPtables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.200 -j DROP

Từ chối các gói tin từ một dãy IP, dùng tham số Iprange –m với dãy IP đặt sau-src-range.

Chặn tất cả truy cập

sudo IPtables -A INPUT -j DROP

Kiểm tra lại sau khi thiết lập

sudo IPtables -L v

Lưu ý: cần DROP tất cả các gói tin từ các nguồn khác để tránh các truy cập trái phép từ các cổng mở trên server.

Xóa các rules

sudo IPtables -F

Xóa tất cả các rules để tạo lại từ đầu.

Để xóa từng rule khác nhau dùng tham số -D và chọn số tương ứng. Liệt kê các rule bằng lệnh:

sudo IPtables -L --line-numbers

Kết quả:

Chain INPUT (policy ACCEPT)
num  target prot opt source        	destination
ACCEPT all  --  192.168.0.4   	anywhere
ACCEPT tcp  --  anywhere      	anywhere      	tcp dpt:https
ACCEPT tcp  --  anywhere      	anywhere      	tcp dpt:http
ACCEPT tcp  --  anywhere      	anywhere      	tcp dpt:ssh

Sau đó, xóa một rule bằng cú pháp

sudo IPtables -D INPUT 3

Xóa rules số 3 ở chain INPUT

Bước 3: Lưu giữ các thay đổi

Những iptables rules được tạo ra đều được lưu trong bộ nhớ, khi reboot máy chủ cần phải tạo lại các rules này. Để lưu giữ các thay đổi vào hệ thống dùng lệnh:

sudo /sbin/IPtables-save

Để tắt firewall, dùng lệnh:

sudo IPtables -F
sudo /sbin/IPtables-save
Rate this post
Exit mobile version