Các Quy Tắc Iptables Cho Linux Firewall: Hướng Dẫn Tối Ưu Bảo Mật Hệ Thống

Các Quy Tắc Iptables Cho Linux Firewall

Hướng dẫn này sẽ giúp bạn làm quen với một số lệnh iptables phổ biến trong Linux, cung cấp nền tảng quan trọng để quản lý và bảo mật hệ thống. iptables là tường lửa tích hợp sẵn trong hầu hết các bản phân phối Linux, hoạt động như lớp bảo vệ đầu tiên trước các mối đe dọa mạng. Dù các hệ thống như Ubuntu sử dụng ufw hay Red Hat dựa vào firewalld, cả hai đều triển khai iptables ở chế độ nền để xử lý các quy tắc tường lửa.

Khi bạn triển khai các quy tắc bảo mật với iptables cho hệ thống Linux, nếu bạn đang tìm kiếm giải pháp vps ổn định, an toàn, có thể tham khảo dịch vụ VPS Việt Nam. Chọn một dịch vụ vps chất lượng giúp bạn dễ dàng triển khai các giải pháp bảo mật như iptables một cách hiệu quả và tiết kiệm chi phí.

Đối với các quản trị viên hệ thống, việc hiểu và sử dụng iptables là một kỹ năng quan trọng để kiểm soát lưu lượng mạng và bảo vệ máy chủ. Ngay cả người dùng Linux thông thường cũng có thể hưởng lợi từ việc biết cách thiết lập các quy tắc cơ bản. Hướng dẫn này cung cấp các ví dụ thực tế để bạn dễ dàng làm quen với cú pháp và nguyên tắc hoạt động của iptables, từ đó giúp hệ thống của bạn an toàn hơn.

Cảnh báo: Bạn không nên áp dụng các quy tắc iptables lên hệ thống sản xuất cho đến khi đã làm quen với cách chúng hoạt động. Ngoài ra, hãy cẩn trọng khi áp dụng các quy tắc lên các hệ thống từ xa (ví dụ, máy tính mà bạn đang thiết lập phiên SSH) vì bạn có thể vô tình khóa mình ra ngoài nếu nhập sai quy tắc.

Mục lục nội dung

Xem các quy tắc iptables đã được cấu hình trên hệ thống Linux của bạn

Yêu cầu & Quy ước

Hạng mục Yêu cầu/Phần mềm sử dụng
Hệ thống Bất kỳ bản phân phối Linux nào
Phần mềm iptables
Khác Quyền truy cập đặc quyền (đăng nhập dưới quyền root hoặc sử dụng lệnh sudo)

Quy ước:

  • Dấu # – chỉ ra các lệnh Linux cần được thực thi với quyền root (trực tiếp hoặc qua sudo).
  • Dấu $ – chỉ ra các lệnh Linux cần được thực thi dưới quyền người dùng thường (non-privileged).

Bạn có biết?

Hãy lưu ý rằng thứ tự các quy tắc iptables rất quan trọng. Khi hệ thống nhận được một gói dữ liệu mạng, iptables sẽ so khớp gói đó với quy tắc đầu tiên mà nó gặp. Do đó, nếu bạn có một quy tắc cho phép (accept) lưu lượng SSH, sau đó là quy tắc từ chối (deny) lưu lượng SSH, iptables sẽ luôn chấp nhận lưu lượng vì quy tắc cho phép nằm trước quy tắc từ chối trong chuỗi. Bạn có thể thay đổi thứ tự các quy tắc bằng cách chỉ định số thứ tự của quy tắc trong lệnh.

Quy tắc: iptables từ chối tất cả các kết nối mạng đi

Dòng thứ hai của quy tắc chỉ cho phép các kết nối đi ra hiện tại và đã được thiết lập (established connections). Điều này rất hữu ích khi bạn đang đăng nhập vào máy chủ qua ssh hoặc telnet.

# iptables -F OUTPUT
# iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -j REJECT

Quy tắc: iptables từ chối tất cả các kết nối mạng đến

# iptables -F INPUT
# iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
# iptables -A INPUT -j REJECT

Quy tắc: iptables để từ chối tất cả các kết nối mạng

Quy tắc này sẽ loại bỏ (drop) và chặn tất cả các kết nối mạng, bất kể là đến hay đi. Quan trọng hơn, nó cũng bao gồm cả các kết nối đã được thiết lập.

# iptables -F
# iptables -A INPUT -j REJECT
# iptables -A OUTPUT -j REJECT
# iptables -A FORWARD -j REJECT

Quy tắc: iptables để loại bỏ các yêu cầu ping đến

Quy tắc iptables này sẽ DROP tất cả các yêu cầu ping đến. Lưu ý rằng bạn có thể sử dụng REJECT thay vì DROP. Sự khác biệt giữa DROP và REJECT là DROP sẽ lặng lẽ loại bỏ gói dữ liệu đến, trong khi REJECT sẽ trả về lỗi ICMP.

# iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

Quy tắc: iptables để chặn các kết nối telnet đi

Quy tắc iptables này sẽ chặn bất kỳ lưu lượng đi ra nào tới bất kỳ máy chủ nào có cổng đích là 23 (telnet).

# iptables -A OUTPUT -p tcp --dport telnet -j REJECT

Quy tắc: iptables để từ chối các kết nối telnet đến

Quy tắc iptables này sẽ từ chối tất cả các yêu cầu kết nối đến cổng 23 (telnet) trên máy cục bộ.

# iptables -A INPUT -p tcp --dport telnet -j REJECT

Quy tắc: iptables để từ chối các kết nối ssh đi

Quy tắc iptables này sẽ từ chối tất cả các kết nối đi ra xuất phát từ cổng 22 (ssh) trên máy cục bộ.

# iptables -A OUTPUT -p tcp --dport ssh -j REJECT

Quy tắc: iptables để từ chối các kết nối ssh đến

Từ chối tất cả các kết nối đến cổng 22 (ssh) trên máy cục bộ.

# iptables -A INPUT -p tcp --dport ssh -j REJECT

Quy tắc: iptables để từ chối tất cả lưu lượng đến ngoại trừ các kết nối ssh và kết nối nội bộ

Các quy tắc này sẽ từ chối tất cả các kết nối đến máy chủ, ngoại trừ các kết nối trên cổng 22 (SSH) và các kết nối trên giao diện loopback.

# iptables -A INPUT -i lo -j ACCEPT
# iptables -A INPUT -p tcp --dport ssh -j ACCEPT
# iptables -A INPUT -j REJECT

Quy tắc: iptables để cho phép các kết nối ssh đến từ một địa chỉ IP cụ thể

Với quy tắc này, tất cả các kết nối đến cổng 22 (ssh) sẽ bị chặn, ngoại trừ những kết nối từ địa chỉ IP 77.66.55.44. Nghĩa là chỉ host có IP 77.66.55.44 mới được phép kết nối ssh.

# iptables -A INPUT -p tcp -s 77.66.55.44 --dport ssh -j ACCEPT
# iptables -A INPUT -p tcp --dport ssh -j REJECT

Quy tắc: iptables để cho phép các kết nối ssh đến từ một địa chỉ MAC cụ thể

Với quy tắc này, tất cả các kết nối đến cổng 22 (ssh) sẽ bị chặn, ngoại trừ các kết nối từ host có địa chỉ MAC 00:e0:4c:f1:41:6b. Nói cách khác, tất cả các kết nối ssh sẽ chỉ giới hạn cho một host có địa chỉ MAC 00:e0:4c:f1:41:6b.

# iptables -A INPUT -m mac --mac-source 00:e0:4c:f1:41:6b -p tcp --dport ssh -j ACCEPT
# iptables -A INPUT -p tcp --dport ssh -j REJECT

Quy tắc: iptables để từ chối các kết nối đến trên một cổng TCP cụ thể

Quy tắc iptables sau sẽ loại bỏ tất cả lưu lượng đến trên cổng TCP 3333.

# iptables -A INPUT -p tcp --dport 3333 -j REJECT

Quy tắc: iptables để loại bỏ tất cả các kết nối đến trên một giao diện mạng cụ thể

Quy tắc sau sẽ loại bỏ lưu lượng đến trên một giao diện mạng cụ thể đến từ subnet 192.168.0.0/16. Điều này rất hữu ích để chặn tất cả các địa chỉ IP giả mạo. Nếu eth0 là giao diện mạng ngoài, thì không có lưu lượng đến từ mạng nội bộ nào nên đi qua giao diện eth0.

# iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP

Quy tắc: iptables để tạo IP Masquerading đơn giản

Quy tắc sau sẽ tạo một gateway IP Masquerading đơn giản cho phép tất cả các host trên cùng một subnet có thể truy cập Internet. Ở đây, eth0 được chỉ định là giao diện mạng ngoài kết nối với Internet.

# echo "1" > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -o $EXT_IFACE -j MASQUERADE

Quy tắc: Từ chối tất cả lưu lượng telnet đến ngoại trừ từ một địa chỉ IP cụ thể

Quy tắc iptables sau sẽ từ chối tất cả lưu lượng telnet đến, ngoại trừ yêu cầu kết nối từ địa chỉ IP 222.111.111.222.

# iptables -A INPUT -t filter ! -s 222.111.111.222 -p tcp --dport 23 -j REJECT

Quy tắc: Từ chối tất cả lưu lượng ssh đến ngoại trừ từ một dải địa chỉ IP cụ thể

Quy tắc iptables sau sẽ từ chối tất cả lưu lượng ssh đến, ngoại trừ yêu cầu kết nối từ dải địa chỉ IP từ 10.1.1.90 đến 10.1.1.1.100.
(Lưu ý: Nếu bỏ đi dấu “!” thì quy tắc dưới đây sẽ từ chối tất cả lưu lượng ssh xuất phát từ dải địa chỉ IP 10.1.1.90 – 10.1.1.100.)

# iptables -A INPUT -t filter -m iprange ! --src-range 10.1.1.90-10.1.1.100  -p tcp --dport 22 -j REJECT

Quy tắc: iptables để từ chối tất cả lưu lượng đi đến một host từ xa cụ thể

Quy tắc iptables sau sẽ từ chối tất cả lưu lượng đi đến một host từ xa có địa chỉ IP 222.111.111.222.

# iptables -A OUTPUT -d 222.111.111.222 -j REJECT

Quy tắc: iptables để chặn truy cập đến một website cụ thể

Quy tắc iptables sau sẽ chặn tất cả lưu lượng đến từ facebook.com (với cổng nguồn là port 80 / www).
Lưu ý rằng quy tắc iptables trên sẽ chặn truy cập đến cả facebook.com và www.facebook.com.

# iptables -A INPUT -s facebook.com -p tcp --sport www -j DROP

Kết luận

Trong hướng dẫn này, chúng ta đã tìm hiểu bộ quy tắc iptables cơ bản dành cho Linux, bao gồm các thiết lập phổ biến giúp kiểm soát và bảo vệ hệ thống. Một trong những ví dụ điển hình là chặn tất cả kết nối SSH ngoại trừ từ một địa chỉ IP cụ thể, nhằm giảm thiểu nguy cơ truy cập trái phép.

Việc triển khai các quy tắc iptables phù hợp sẽ giúp bạn củng cố lớp bảo mật cho máy chủ, ngăn chặn các cuộc tấn công tiềm ẩn và duy trì sự ổn định của hệ thống. Bạn có thể tùy chỉnh các thiết lập này theo nhu cầu thực tế để đảm bảo hệ thống hoạt động hiệu quả và an toàn hơn.

Ngoài việc sử dụng iptables để bảo vệ hệ thống Linux, bạn cũng có thể cân nhắc việc thuê máy chủ VPS với cấu hình mạnh mẽ, tối ưu cho các tác vụ bảo mật và quản trị mạng. Việc chọn đúng dịch vụ VPS giúp bạn dễ dàng quản lý các quy tắc firewall và nâng cao bảo mật cho các ứng dụng của mình.

Để lại một bình luận

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 *