Bài viết dưới đây sẽ mình hướng dẫn bạn cách thiết lập bảo mật IPtables cho hệ thống tổng đài Server Linux. Qua bài viết này, mình sẽ giải thích cụ thể cách bảo mật tổng đài Voip với Iptables?” theo hướng đơn giản và dễ hiểu nhất.

IPtables là gì?

Sử dụng tường lửa (Firewall) hầu như là việc bắt buộc phải làm khi chúng ta vận hành Server Linux. Để chống lại các truy cập bất hợp pháp bằng cách tự thiết lập ra các quy tắc chặn truy cập của riêng.

Trong các phiên bản hệ điều hành của Linux như CentOS, Ubuntu hay Fedora,… có tích hợp sẵn hay cài đặt 1 công cụ để quản lý, cấu hình các quy tắc Firewall gọi là IPtables.

Một số thuật ngữ cần biết trong IPtables

Trước khi tiến hành thiết lập IPtables, hãy tìm hiểu ý nghĩa danh sách các quy tắc tường lửa cần thiết trong Server Linux. Theo mặc định, IPtables sẽ không có bất cứ quy tắc nào cả.

Trong đó:

  • TARGET: Hành động sẽ thực thi cho mỗi chuỗi quy tắc.
  • PROT: Viết tắt của từ Protocol – giao thức. Tức là các giao thức sẽ được áp dụng để thực thi quy tắc này. Bạn có 3 lựa chọn gồm: all, tcp hoặc udp. Các ứng dụng như SSHFTPsFTP, … đều sử dụng giao thức kiểu tcp.
  • IN: Thiết bị mạng nhận kết nối vào được áp dụng cho quy tắc, chẳng hạn như loeth0eth1.
  • OUT: Thiết bị mạng phục vụ nhu cầu gửi kết nối ra ngoài được áp dụng quy tắc.
  • DESTINATION: Địa chỉ của lượt truy cập được phép áp dụng quy tắc.

Dòng 1:

Chấp nhận toàn bộ kết nối thông qua thiết bị lo“Loopback Interface“ – là một thiết bị mạng ảo nội bộ, chẳng hạn như IP 127.0.0.1 là kết nối qua thiết bị này.

Dòng 2:

Cho phép giữ lại các kết nối hiện tại. Có nghĩa rằng, khi bạn đang ở trong SSH và điều chỉnh lại Firewall, hệ thống sẽ không ngắt kết nối của bạn ra khỏi SSH nếu bạn không thỏa mãn quy tắc.

Dòng 3:

Cho phép kết nối vào SSH Server ở bất cứ thiết bị nào, bất cứ ai và bất cứ đâu. Mặc định hệ thống sẽ hiển thị dpt:ssh để diễn đạt port 22 của SSH. Nếu bạn có điều chỉnh Port SSH thì hệ thống sẽ hiển thị thông tin Port tương ứng.

Dòng 4:

Cho phép kết nối vào cổng 80 và mặc định sẽ diễn đạt bằng chữ http.

Dòng 5:

Cho phép kết nối vào cổng 443 và mặc định sẽ diễn đạt bằng chữ https.

Dòng 6:

Chặn tất các kết nối

Tạo Rule IPtables

Nếu IPtables chưa được thiết lập, bạn chạy lệnh dưới đây để kiểm tra Filter Rule:

 iptables -nvL

Tại đoạn trên, bạn sẽ thấy hệ thống gồm có 3 quy tắc nhỏ (chain) để giúp bạn thiết lập các nguyên tắc lọc gói:

  • Forward Chain : lọc gói khi đi đến các server khác.
  • Input Chain : lọc gói khi đi vào trong server.
  • Output Chain : lọc gói khi ra khỏi server.

Lọc các kết nối

Ví dụ thiết lập một rule đơn giản vào IPtables bằng lệnh sau:

iptables -A INPUT -i lo -j ACCEPT

Với ý nghĩa :

  • -A INPUT: khai báo kiểu kết nối sẽ được áp dụng (-A nghĩa là Append).
  • -i lo: Khai báo thiết bị mạng được áp dụng (-i < interface-name > nghĩa là Interface).
  • -j ACCEPT: khai báo hành động sẽ được áp dụng cho quy tắc này (-j < target > nghĩa là Jump).

Kiểm tra Filter Rule lần nữa, bạn sẽ thấy Rule chúng ta vừa thiết lập.

Lưu lại các kết nối hiện tại

Bây giờ chúng ta thêm một quy tắc để cho phép lưu lại các kết nối hiện tại để tránh hiện tượng tự Block bạn ra khỏi Server.

 iptables -A INPUT -m conntrack –ctstate RELATED,ESTABLISHED -j ACCEPT

Đoạn lệnh này có cấu trúc giống như quy tắc chúng ta vừa thiết lập ở ví dụ phía trên nhưng lần này sẽ có thêm hai tham số mới là:

  • -m conntrack: Sử dụng cho các kết nối thuộc Module “Connection Tracking“ với 4 kiểu kết nối gồm NEW, RELATED, ESTABLISHED và INVALID. Cụ thể, bạn sẽ sử dụng kiểu RELATED và ESTABLISHED để lọc các kết nối đang truy cập.
  • –ctstate RELATED,ESTABLISHED: Dùng để khai báo loại kết nối được áp dụng thuộc Module “Connection Tracking

Cho phép truy cập Port cụ thể

Để thiết lập truy cập vào Port cụ thể, bạn sử dụng lệnh dưới đây:

iptables -A INPUT -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -p udp –dport 5060 -j ACCEPT

iptables -A INPUT -j DROP

Trong đó:

  • -p tcp: Giao thức được áp dụng.
  • –dport 22–dport 5060: Cổng cho phép áp dụng.
  • -j DROP : Nhưng sẽ khóa toàn bộ các kết nối còn lại.

Bổ sung Rule IPtables

iptables -I INPUT 2 -p tcp –dport 443 -j ACCEPT

Trong đó:

-I INPUT 2 là đặt Rule này vào dòng thứ 2 trong danh sách các Rule thuộc loại kết nối INPUT.

Xóa Rule IPtables

Trước khi xóa, quan trọng nhất là bạn cần phải xác định được quy tắc này nằm ở hàng thứ mấy trong loại kết nối (INPUT, OUTPUT,..) bằng việc thực thi command :

iptables -L

Chain INPUT (policy ACCEPT)

target prot opt source destination

ACCEPT all — anywhere anywhere

ACCEPT tcp — anywhere anywhere tcp dpt:https

ACCEPT all — anywhere anywhere ctstate RELATED,ESTABLISHED

ACCEPT tcp — anywhere anywhere tcp dpt:ssh

ACCEPT tcp — anywhere anywhere tcp dpt:http

DROP all — anywhere anywhere

Chain FORWARD (policy ACCEPT)

target prot opt source destination

Chain OUTPUT (policy ACCEPT)

target prot opt source destination

Vậy ở đây là chúng ta cần xóa quy tắc số 4 của INPUT:

iptables -D INPUT 4

Ngoài ra, nếu bạn muốn xóa toàn bộ các quy tắc chứa hành động DROP thì có thể sử dụng lệnh sau:

 iptables -D INPUT -j DROP

Lưu cấu hình IPtables

Sau khi cấu hình xong, bạn phải luôn nhớ gõ lệnh lưu quy tắc và khởi động lại IPtables để hệ thống áp dụng thay đổi.

service iptables save
service iptables restart

Lời kết

Với IPtables bạn dễ dàng thêm các quy tắc cho tổng đài Voip các bạn có thể tham khảo thêm tại HowTos/Network/Iptables của CentOS để hiểu hơn. IPtables khá quan trọng nên nếu có thể bạn hãy nắm vững cách sử dụng nó. Bởi vì ngoài IPtables ra, còn có một số ứng dụng khác như CSF Firewall, Fail2Ban để thiết lập tường lửa. Nhưng chung quy lại vẫn sử dụng thông qua IPtables.

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

Bài viết liên quan

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 *