HostingViet | Công ty Cổ phần Công nghệ số Thiên Quang

Hướng Dẫn Sử Dụng IPtables - Bảo Mật Ubuntu Với Linux Firewall

Tư vấn dịch vụ - Các dịch vụ Cloud, Server, Hosting & Phần mềm | 2024-01-04 17:23:58+07

IPtables là gì?

IPtables là một ứng dụng Firewall trong Linux. Nó hoàn toàn miễn phí. Ứng dụng này cho phép người dùng có thể cấu hình các quy tắc riêng cho tường lửa, nhằm kiểm soát tất cả các truy cập, chọn lọc truy cập và tăng cường bảo mật.

Các thành phần của IPtables Linux

IPtables cơ bản chỉ là dòng lệnh dùng để tương tác với thành phần packet filtering của netfilter framework. Packet filtering có cơ chế hoạt động gồm 3 phần là Tables, Chains, Targets.

Trong đó:

- Table được IPtables dùng để định nghĩa các quy tắc cho những gói tin. Nó gồm các Table sau:

- Chains: Được tạo ra tương ứng với mỗi Table và có số lượng nhất định. Nó có tính năng lọc gói tin ở nhiều điểm khác nhau. Cụ thể như sau.

- Target: Đây là hành động cho những gói tin đáp ứng các quy tắc. Bao gồm:

Cách thức hoạt động cơ bản của IPtables Ubuntu 

Toàn bộ dữ liệu trong gói tin gửi đi được internet định dạng. Tiếp đến, Linux kernel thực hiện lọc chúng thông qua giao diện bảng các bộ lọc. Và IPtables chính là ứng dụng dòng lệnh, đồng thời cũng là tường lửa của Linux. Nó giúp người dùng cấu hình, duy trì và quản lý các bảng này.

Người dùng có thể thiết lập nhiều bảng khác nhau. Trong đó, mỗi bảng chứa nhiều chuỗi và mỗi chuỗi ứng với một quy tắc. Các quy tắc này sẽ định nghĩa hành động được thực thi khi gói tin phù hợp với nó.

Một mục tiêu (target) chỉ đưa ra khi đã xác định được một gói tin. Mục tiêu có thể là chuỗi khớp với một trong những giá trị như: ACCEPT (gói tin được đi qua), DROP (gói tin bị từ chối, không được đi qua), RETURN (chuỗi hiện tại bị bỏ qua, quy lại quy tắc kế tiếp của chuỗi mà gói tin được gọi).

Các quy tắc trong IPtables là gì?

Để xem các quy tắc đang có trong IPtables Linux, bạn sử dụng câu lệnh sau: 

IPtables -L –v

TARGET    PROT OPT  IN OUT SOURCE DESTINATION

ACCEPT    all --   lo any anywhere   anywhere

ACCEPT    all --   any any anywhere   anywhere ctstate  RELATED,ESTABLISHED

ACCEPT    tcp --   any any anywhere   anywhere tcp dpt:ssh

ACCEPT    tcp --   any any anywhere   anywhere tcp dpt:http

ACCEPT    tcp --   any any anywhere   anywhere tcp dpt:https

DROP      all --   any any anywhere   anywhere

Trong đó:

>>Xem thêm: Lấy Lại Mật Khẩu Wordpress Đơn Giản

Các tùy chọn của IPtables Centos 7

Một số tùy chọn được dùng để chỉ định thông số của IPtables là:

Các tùy chọn được dùng thao tác với chain là: 

Các tùy chọn được dùng thao tác với quy tắc là:

Các lệnh cơ bản của IPtables 

Tạo một quy tắc mới, bạn sử dụng câu lệnh sau

IPtables -A INPUT -i lo -j ACCEPT

Trong đó:

- A INPUT: Là kiểu kết nối được áp dụng.

- i lo: Là thông tin thiết bị mạng được áp dụng.

- j ACCEPT: Là hành động được áp dụng đối với quy tắc.

Bạn thực hiện nhập lại lệnh IPtables -L –v thì một quy tắc mới sẽ xuất hiện.

after-created-IPtables-rule

Sau khi tiến hành thêm mới hoặc điều chỉnh quy tắc, bạn phải gõ lệnh lưu rồi tái khởi động IPtables để các thay đổi được cập nhật và có thể áp dụng. 

Câu lệnh:

service IPtables save 

service IPtables restart

Sau đó, bạn tiếp tục thêm một quy tắc mới để lưu lại các kết nối đang có, đồng thời, tránh tình trạng tự block khỏi máy chủ. Cú pháp câu lệnh:

IPtables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Kế đến, bạn nhập lệnh để cho phép các port (SSH có port là 22, HTTP có port là 80, HTTPs có port là 443) có thể được truy cập từ ngoài vào bằng giao thức TCP. 

Câu lệnh như sau:

IPtables -A INPUT -p tcp --dport 22 -j ACCEPT

Trong đó:

-p tcp: Giao thức áp dụng (ví dụ như tcp, udp, all)

- - dport 22: Cổng áp dụng và 22 là giá trị của SSH

Sau cùng, bạn tiến hành chặn tất cả các kết nối từ bên ngoài không đáp ứng điều kiện của các quy tắc trên. Câu lệnh có dạng:

IPtables -A INPUT -j DROP

Bổ sung 1 quy tắc mới

Nếu muốn chèn 1 quy tắc mới vào bất kỳ vị trí nào, bạn chỉ việc thay tham số -A table bằng –I (INSERT).

IPtables -I INPUT 2 -p tcp --dport 8080 -j ACCEPT

Xóa 1 quy tắc

Để xóa 1 quy tắc ở vị trí bất kỳ, bạn dùng tham số -D.

*Ví dụ, xóa 1 rule ở hàng 4 thì câu lệnh có dạng:

IPtables -D INPUT 4

Nếu muốn xóa tất cả các quy tắc chứa hành động DROP thì câu lệnh là: 

IPtables -D INPUT -j DROP

Cài đặt IPtables trên Centos 7 để mở port VPS

Để mở cổng trong IPtables, bạn chèn chuỗi ACCEPT PORT vào cấu trúc câu lệnh mở port xxx:

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

Với A (viết tắt của Append) là chèn vào chuỗi INPUT, tức chèn ở vị trí cuối.

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

Với I (viết tắt của Insert) là chèn vào chuỗi INPUT, tức chèn ở dòng được chỉ định rulenum.

Đồng thời, bạn chèn quy tắc vào đầu để tránh xung đột với quy tắc gốc.

Mở port SSH

Khi thực hiện mở port SSH để truy cập VPS sẽ cho phép kết nối SSH ở mọi thiết bị tại bất kỳ vị trí nào và không phân biệt người dùng.

Cú pháp câu lệnh:

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

ACCEPT

tcp  -- anywhere
anywhere

cp dpt:ssh 

Nếu bạn đổi cổng khác thì IPtables hiển thị giá trị cổng tương ứng. 

Trong trường hợp, bạn chỉ cho kết nối VPS thông qua SSH từ một IP xác định thì câu lệnh lúc này là: 

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

Với xxx.xxx.xxx.xxx là địa chỉ của IP cho phép kết nối.

Như vậy, IPtables sẽ thêm quy tắc:

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

Mở port Web Server

Khi bạn muốn cho các truy cập vào máy chủ web thông qua cổng mặc định là 80 và 443 thì câu lệnh có dạng:

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

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

Lúc đó, IPtables sẽ hiển thị theo mặc định tương ứng với cổng là HTTP và HTTPS:

ACCEPT tcp -- anywhere       anywhere    tcp dpt:http

ACCEPT tcp -- anywhere      anywhere     tcp dpt:https

Mở port Mail

- Khi bạn muốn cho phép user sử dụng máy chủ SMTP thông qua cổng mặc định 25 và 465 thì câu lệnh sẽ là:

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

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

Lúc này IPtables cũng hiển thị tương ứng SMTP và URD mặc định là

ACCEPT   tcp  -- anywhere      anywhere           tcp dpt:smtp

ACCEPT   tcp  -- anywhere      anywhere           tcp dpt:urd

- Tương tự như trên, nếu muốn mở cổng POP3 có giá trị mặc định là 110 và 995 để cho phép user có thể đọc mail trên máy chủ thì câu lệnh như sau:

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

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

Và IPtables hiển thị POP3 và POP3S tương ứng là:

ACCEPT tcp  --  anywhere         anywhere        tcp dpt:pop3

ACCEPT tcp  --  anywhere         anywhere        tcp dpt:pop3s

- Đối với giao thức IMAP mail protocol có cổng là 143 và 993 thì câu lệnh như sau:

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

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

Lúc này, IPtables hiển thị IMAP và IMAPS mặc định sẽ là:

ACCEPT tcp  --  anywhere         anywhere        tcp dpt:imap

ACCEPT tcp  --  anywhere         anywhere        tcp dpt:imaps

Chặn truy cập của một địa chỉ IP 

Câu lệnh có dạng:

# IPtables -A INPUT -s IP_ADDRESS -j DROP

Nếu muốn chặn 1 địa chỉ IP cụ thể truy cập vào 1 port xác định thì câu lệnh sẽ là: 

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

Nếu muốn kiểm tra lại tất cả các rule sau khi thiết lập, bạn sử dụng một trong 2 câu lệnh sau:

# service IPtables status

Hay:

# IPtables -L –n

Trong đó:

Tham số -n: là địa chỉ IP. Ví dụ, khi muốn chặn kết nối từ 1 IP xác định, lúc này IPtables hiển thị là xxx.xxx.xxx.xxx với tham số -n

Sau đó, bạn lưu lại tất cả các thiết lập. Câu lệnh là: 

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

Hay có thể sử dụng lệnh sau:

# service IPtables save

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

>>Xem thêm: 9 nguyên tắc cơ bản sử dụng wordpress an toàn không có virus, không bị hack

Cách thiết lập IPtables Linux để bảo mật Ubuntu VPS

Các bước thực hiện như sau:

- Bước 1: Bạn tiến hành cài đặt tường lửa IPtables Linux 

+ Cài đặt IPtables

Tất cả các phiên bản Linux đều được cài đặt sẵn IPtables. Trong trường hợp, chúng chưa có thì bạn sử dụng câu lệnh sau để tiến hành cài đặt:

sudo apt-get update

sudo apt-get install IPtables

+ Xem trạng thái của Iptables

Câu lệnh như sau:

sudo IPtables -L v

Với -L là tất cả các quy tắc và –v là các danh sách bổ trợ. Lưu ý, các ký tự viết HOA và thường sẽ được phân biệt, vì chúng mang ý nghĩa khác nhau. 

- Bước 2: Định nghĩa Chain Rules

Bạn thêm quy tắc vào chain hiện tại, cấu trúc câu lệnh sẽ có dạng:

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

Trong đó:

-A: Thêm chain rules.

i: Giao diện mạng có trách nhiệm lọc gói tin.

p: Giao thức mạng đảm nhận nhiệm vụ lọc (tcp/udp).

dort : Cổng mà bạn dự định đặt bộ lọc.

+ Cho phép truy cập trên localhost

Cấu trúc câu lệnh cho phép database của ứng dụng giao tiếp với máy chủ:

sudo IPtables -A INPUT -i lo -j ACCEPT

Bạn thêm cổng được phép truy cập TCP theo câu lệnh sau. 

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

Trong đó, cổng 22 là SSH, cổng 80 là HTTP, cổng 443 là HTTPS.

+ Lọc gói tin dựa vào nguồn

Để thực hiện lọc gói tin căn cứ vào IP nguồn gửi thì bạn thêm tham số -s vào câu lệnh. 

Ví dụ, những gói tin đến từ IP 192.168.1.3 sẽ được nhấp nhận:

sudo IPtables -A INPUT -s 192.168.1.3 -j ACCEPT

Còn nếu muốn từ chối tất cả các gói tin đến từ dãy IP bất kỳ, bạn sử dụng Iprange –m và dãy địa chỉ IP được đặt sau -src-range.

+ Chặn toàn bộ truy cập

Câu lệnh có dạng là:

sudo IPtables -A INPUT -j DROP

Sau khi thiết lập xong, nếu muốn kiểm tra lại, bạn sử dụng lệnh:

sudo IPtables -L v

*Lưu ý: Bạn nên chặn các gói tin từ những nguồn khác, nhằm tránh tình trạng có nhiều truy cập trái phép từ những port mở trên máy chủ. 

+ Xóa quy tắc

Nếu muốn xóa toàn bộ quy tắc để thiết lập lại từ đầu, bạn dùng câu lệnh sau:

sudo IPtables -F

Còn xóa từng quy tắc thì bạn sử dụng tham số -D, đồng thời chọn giá trị của hàng tương ứng. Ví dụ, xóa quy tắc số 3 của chain INPUT, câu lệnh sẽ là:

sudo IPtables -D INPUT 3

- Bước 3: Lưu lại tất cả các thay đổi

Tất cả các quy tắc IPtables khi được tạo sẽ được lưu mặc định ở bộ nhớ. Do đó, khi reboot máy chủ thì bạn bắt buộc phải tạo lại chúng. Vì vậy, để lưu các thay đổi này vào hệ thống, bạn sử dụng lệnh sau:

sudo /sbin/IPtables-save

Để tắt tường lửa (firewall), bạn dùng lệnh:

sudo IPtables -F

sudo /sbin/IPtables-save

>>Xem thêm: Web Hosting là gì? Các loại Hosting Phổ Biến và ưu nhược điểm của nó!!

Nhà cung cấp Tên Miền - Hosting - VPS tốt nhất Việt Nam

Là đơn vị thuộc top 3 lĩnh vực dịch vụ lưu trữ website tại Việt Nam, Hosting Việt được đánh giá là nơi có hosting giá rẻ và luôn nhận được nhiều lời giới thiệu từ diễn đàn tin học về nơi mua host ở đâu tốt . Chỉ từ 50.000đ/tháng, người dùng đã có ngay cho mình một host để thỏa sức học tập, nghiên cứu hoặc chạy demo website… Bên cạnh đó, Hosting Việt còn là đơn vị luôn tiên phong trong công nghệ điện toán đám mây (cloud hosting), gói thuê server với băng thông khủng không giới hạn.

Hosting Việt có đa dạng gói dịch vụ, bên cạnh những gói giá siêu rẻ 50.000đ/tháng, nhà cung cấp còn có những vps giá rẻ chất lượng dành cho nhiều nhóm doanh nghiệp khác nhau. Các gói này luôn đáp ứng đủ nhu cầu lưu trữ, truy cập hàng chục nghìn người mỗi ngày.

Ngoài ra, với dịch vụ chăm sóc khách hàng chuyên nghiệp, đội ngũ kỹ thuật viên có chuyên môn cao sẽ nhanh chóng hỗ trợ, xử lý các vấn đề phát sinh. Từ đó, giúp người dùng có được sự trải nghiệm mượt mà, thú vị.

Như vậy, qua bài viết trên Hosting Việt đã giúp bạn có thêm nhiều thông tin bổ ích! Hi vọng bạn sẽ có thể trang bị thêm thật nhiều kiến thức khác mà chúng tôi đã chia sẻ! Nếu có bất kỳ thắc mắc hay câu hỏi nào cần giải đáp, hãy liên hệ ngay với Hosting Việt để được hỗ trợ và tư vấn nhanh chóng, miễn phí nhé!


Bài viết khác