
Võ Nguyên Thoại
Contents
Sự phát triển không ngừng của các cuộc tấn công mạng khiến việc bảo vệ hệ thống máy chủ trở thành một nhiệm vụ “sống còn” đối với các nhà quản trị. Từ việc chặn lưu lượng truy cập không mong muốn đến bảo vệ chống lại các mối đe dọa từ bên ngoài, IPtables mang lại sự linh hoạt và kiểm soát mạnh mẽ cho người dùng. Trong bài viết này, MONA Host sẽ giúp bạn tìm hiểu IPtables là gì, các bước chi tiết để cấu hình Iptables trên Ubuntu nhằm tăng cường bảo mật hệ thống Linux Firewall của bạn một cách hiệu quả nhất.
IPtables là một công cụ quản lý tường lửa mạnh mẽ trên hệ điều hành Linux, cho phép người dùng kiểm soát lưu lượng mạng vào ra thông qua việc tạo ra các quy tắc cụ thể. Việc sử dụng IPtables giúp tăng cường an ninh mạng, ngăn chặn các truy cập trái phép và bảo vệ hệ thống khỏi các mối đe dọa tiềm ẩn.
IPtables được tích hợp sẵn trong hầu hết các bản phân phối Linux phổ biến như Ubuntu, Debian, và CentOS, giúp người dùng dễ dàng quản lý các chính sách bảo mật mạng của mình.
IPtables hoạt động dựa trên ba thành phần chính, bao gồm Tables (bảng chứa các quy tắc lọc gói tin), Chains (chuỗi các quy trình kiểm tra), và Targets (hành động cụ thể sau khi gói tin được kiểm tra). Dưới đây là mô tả chi tiết về các thành phần cơ bản trong IPtables.
Bạn có thể thiết lập nhiều bảng khác nhau, mỗi bảng có thể chứa nhiều chuỗi, mỗi một chuỗi là một bộ quy tắc.
Các Tables (bảng) trong IPtables đóng vai trò quan trọng trong việc quản lý và xử lý gói tin mạng thông qua các quy tắc định trước. Mỗi bảng trong hệ thống này đảm nhận một chức năng cụ thể để đảm bảo sự bảo mật và hiệu quả cho mạng lưới.
Chains trong IPtables là những khối lệnh quyết định cách xử lý gói tin, có vai trò quan trọng cho quá trình điều hướng và bảo mật hệ thống mạng. Mỗi bảng trong IPtables như Filter Table, Mangle Table hay Nat Table đều chứa các chuỗi (Chain) với chức năng riêng biệt, cụ thể là:
Target trong IPtables đại diện cho hành động mà hệ thống sẽ thực hiện đối với gói tin khi chúng thỏa mãn điều kiện của các quy tắc đã được thiết lập trước đó. Các Target phổ biến trong IPtables bao gồm:
Target quyết định cách hệ thống xử lý các gói tin khi chúng đi qua tất cả các quy tắc đã đặt mà không gặp phải sự gián đoạn nào.
Khi nhắc đến tường lửa, nhiều người thường tìm đến các giải pháp đơn giản, dễ sử dụng như firewalld hoặc ufw. Tuy nhiên, sự đơn giản của chúng cũng hạn chế tính linh hoạt và không khai thác hết tiềm năng mà iptables mang lại như:
Khi thiết lập tường lửa với IPtables, người dùng cần thực hiện một số cấu hình cơ bản để đảm bảo an toàn cho hệ thống. IPtables cho phép người dùng quản lý lưu lượng mạng bằng cách sử dụng các quy tắc cụ thể để xác định hành động đối với các gói tin. Người dùng có thể dễ dàng cấu hình các quy tắc này thông qua dòng lệnh.
Mỗi quy tắc trong IPtables bao gồm một chuỗi và một mục tiêu tương ứng. Nghĩa là người dùng có thể thiết lập các quy tắc để cho phép, từ chối hoặc ghi lại các gói tin. Các mục tiêu phổ biến bao gồm:
Công cụ IPtables mang đến nhiều tùy chọn phong phú, giúp người dùng thực hiện các tác vụ quản lý tường lửa một cách hiệu quả. Mỗi tùy chọn này không chỉ tạo điều kiện thuận lợi cho việc cấu hình mà còn đảm bảo an ninh cho hệ thống.
Các tùy chọn được phân loại rõ ràng theo từng loại khác nhau. Tùy chọn để chỉ định các thông số cho IPtables là một trong những yếu tố cực kỳ quan trọng. Do đó, chi tiết thực hiện các tùy chọn chỉ định thông số như sau:
Trong công cụ này, các tùy chọn để thao tác trên chain sẽ cung cấp cho người dùng những khả năng linh hoạt trong việc quản lý lưu lượng mạng. Việc hiểu rõ và áp dụng chính xác các tùy chọn này là rất quan trọng để đạt được hiệu quả tối ưu. Chi tiết về các tùy chọn để thao tác trên chain bao gồm:
Để thao tác trên các quy tắc trong Iptables, người dùng cần nắm rõ các tùy chọn được quy định. Những tùy chọn này giúp việc quản lý và điều chỉnh quy tắc trở nên dễ dàng hơn. Dưới đây là một số tùy chọn quan trọng mà người dùng nên ghi nhớ:
Các lệnh này trong IPtables được phân thành hai loại chính: cơ bản và nâng cao. Trên thực tế, người dùng thường chỉ cần áp dụng linh hoạt các lệnh cơ bản để thực hiện các thao tác đơn giản mà hiệu quả. Một số lệnh cơ bản dưới đây mà người dùng cần nắm vững.
Để tạo một rule mới trong IPtables, bạn có thể sử dụng câu lệnh:
iptables -A INPUT -i lo -j ACCEPT
Trong đó:
Sau khi thêm quy tắc, bạn có thể kiểm tra các quy tắc hiện tại bằng lệnh:
iptables -L -v
Nếu quy tắc mới được thêm thành công, bạn sẽ thấy nó xuất hiện trong danh sách. Đừng quên lưu lại các thay đổi và khởi động lại tường lửa để áp dụng:
service iptables save
service iptables restart
Để tiếp tục thêm các quy tắc cho phép duy trì kết nối hiện tại, bạn có thể sử dụng:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Nếu bạn cần mở cổng từ bên ngoài sử dụng giao thức TCP, ví dụ cho SSH trên cổng 22, bạn có thể thực hiện lệnh:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Trong đó, -p tcp xác định giao thức và –dport 22 chỉ định cổng áp dụng. Cuối cùng, để ngăn chặn mọi kết nối không tuân thủ quy tắc đã thiết lập, bạn có thể dùng:
iptables -A INPUT -j DROP
Để thêm một quy tắc mới vào IPtables tại một vị trí cụ thể, việc sử dụng các lệnh bổ sung là rất cần thiết. Người dùng có thể thay thế tham số -A table bằng tham số -I để thực hiện điều này. Câu lệnh để thêm một quy tắc mới có thể được viết như sau:
iptables -I INPUT 2 -p tcp --dport 8080 -j ACCEPT
Với câu lệnh này, bạn có thể dễ dàng cấu hình để chấp nhận các kết nối TCP đến cổng 8080.
Để xóa một quy tắc đã được thiết lập trong IPtables, bạn có thể sử dụng lệnh xóa với tham số -D. Cụ thể, cấu trúc lệnh để loại bỏ một quy tắc sẽ như sau:
IPtables -D INPUT 4
Nếu bạn muốn xóa tất cả các quy tắc có hành động DROP trong IPtables, quy trình này cũng khá đơn giản. Chỉ cần thực hiện lệnh với cú pháp sau để xóa toàn bộ các quy tắc đó:
IPtables -D INPUT -j DROP
Việc mở port một cách an toàn sẽ đảm bảo tính ổn định trong việc kết nối hệ thống với các dịch vụ bên ngoài. Sau đây MONA Host sẽ cung cấp hướng dẫn chi tiết về cách mở port sử dụng IPtables (IPtables open port), giúp bạn không chỉ hiểu rõ hơn về cách thức hoạt động của công cụ này mà còn có thể áp dụng thực tiễn một cách hiệu quả.
Để mở cổng SSH 22 và cho phép truy cập vào VPS từ bất kỳ thiết bị hay người dùng nào, bạn có thể thực hiện theo các bước đơn giản sau đây.
Trước tiên, để cho phép truy cập SSH từ mọi nguồn, bạn hãy sử dụng lệnh sau:
iptables -I INPUT -p tcp -m tcp --dport 22 -j ACCEPT
Cổng SSH thường được cài đặt mặc định là 22. Nếu bạn đã thay đổi cổng SSH sang một số khác, hãy nhớ điều chỉnh lại cổng trong lệnh trên.
Tiếp theo, nếu bạn muốn chỉ cho phép kết nối SSH từ một địa chỉ IP cụ thể, hãy sử dụng lệnh này:
iptables -I INPUT -p tcp -s xxx.xxx.xxx.xxx -m tcp --dport 22 -j ACCEPT
Trong lệnh này, IPtables sẽ thêm một quy tắc cho phép kết nối SSH chỉ từ địa chỉ IP mà bạn đã chỉ định (được đại diện bởi xxx.xxx.xxx.xxx).
Để mở cổng cho Web Server và cho phép truy cập từ bất kỳ thiết bị nào, bạn có thể thực hiện như sau:
Đầu tiên, để mở cổnng HTTP (cổng 80) cho mọi nguồn truy cập, hãy sử dụng lệnh sau:
iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
Cổng HTTP thường được thiết lập mặc định là 80. Nếu bạn đã thay đổi cổng cho Web Server sang một cổng khác, hãy nhớ điều chỉnh lại số cổng trong lệnh trên.
Nếu bạn chỉ muốn cho phép kết nối từ một địa chỉ IP cụ thể, hãy sử dụng lệnh sau:
iptables -I INPUT -p tcp -s xxx.xxx.xxx.xxx -m tcp --dport 80 -j ACCEPT
Trong lệnh này, IPtables sẽ thêm một quy tắc cho phép kết nối đến Web Server chỉ từ địa chỉ IP mà bạn đã chỉ định (được đại diện bởi xxx.xxx.xxx.xxx).
Để mở các cổng cho dịch vụ Mail trên server bằng IPtables, hãy thao tác theo các bước sau:
Các lệnh cho phép người dùng sử dụng giao thức SMTP qua các cổng mặc định là 25 và 465 là:
# IPtables -I INPUT -p tcp -m tcp --dport 25 -j ACCEPT
# IPtables -I INPUT -p tcp -m tcp --dport 465 -j ACCEPT
Công cụ này sẽ hiển thị các giao thức SMTP và URD như sau:
ACCEPT tcp -- anywhere anywhere tcp dpt:smtp
ACCEPT tcp -- anywhere anywhere tcp dpt:urd
Để mở các cổng POP3 (cổng mặc định 110 và 995) cho phép người dùng đọc email trên server, hãy sử dụng lệnh:
# IPtables -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
# IPtables -A INPUT -p tcp -m tcp --dport 995 -j ACCEPT
Công cụ này sẽ hiển thị các giao thức POP3 và POP3S:
ACCEPT tcp -- anywhere anywhere tcp dpt:pop3
ACCEPT tcp -- anywhere anywhere tcp dpt:pop3s
Cuối cùng, bạn có thể sử dụng các dòng lệnh dưới đây để mở cổng cho giao thức IMAP (cổng mặc định 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
Công cụ này sẽ hiển thị các giao thức IMAP và IMAPS như sau:
ACCEPT tcp -- anywhere anywhere tcp dpt:imap
ACCEPT tcp -- anywhere anywhere tcp dpt:imaps
Để chặn một địa chỉ IP cụ thể truy cập vào server, sử dụng lệnh:
IPtables -A INPUT -s IP_ADDRESS -j DROP
Hay nếu muốn chặn một địa chỉ IP truy cập vào một cổng nhất định, bạn có thể áp dụng lệnh:
IPtables -A INPUT -p tcp -s IP_ADDRESS --dport PORT -j DROP
Sau khi đã thiết lập tất cả các quy tắc, bao gồm việc mở các cổng cần thiết hoặc hạn chế kết nối, cần chặn 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, sử dụng lệnh:
service IPtables status
IPtables -L -n
Tùy chọn -n giúp chỉ định IP, ví dụ, nếu chặn kết nối từ một địa chỉ cụ thể, IPtables sẽ hiển thị là xxx.xxx.xxx.xxx với tham số -n.
Cuối cùng, lưu lại các cài đặt tường lửa IPtables, nếu không sẽ mất khi khởi động lại hệ thống.
Trong CentOS, cấu hình được lưu tại:
/etc/sysconfig/IPtables
Để lưu các quy tắc tường lửa, sử dụng:
IPtables-save | sudo tee /etc/sysconfig/IPtables
Hoặc:
service IPtables save
Kết thúc, các quy tắc tường lửa được lưu vào /etc/sysconfig/IPtables: [OK]
Để thiết lập IPtables Linux Firewall, người dùng cần nắm rõ các quy tắc và lệnh cơ bản. Việc áp dụng chính xác các lệnh này không chỉ giúp bảo vệ hệ thống mà còn tăng cường khả năng kiểm soát lưu lượng mạng. Dưới đây MONA Host sẽ hướng dẫn bạn những bước thiết lập IPtabales cụ thể và chi tiết nhất.
Hướng dẫn này giả định rằng bạn đang sử dụng máy chủ Linux với IPTables đã được cài đặt và người dùng của bạn có quyền truy cập với lệnh sudo. Khi làm việc với IPTables trên firewall Linux, bạn cần lưu ý không tự khóa truy cập vào máy chủ của mình bằng cách chặn lưu lượng SSH (cổng 22, theo mặc định). Nếu bạn mất quyền truy cập, bạn có thể cần phải kết nối thông qua một OOB console (Out of Band console) để khôi phục quyền truy cập của mình.
Trên hầu hết các phiên bản Linux hiện nay, IPtables đã được tích hợp sẵn. Để xác nhận iptables đã được cài đặt, hãy sử dụng lệnh sau:
iptables --version
Đối với các hệ điều hành dựa trên Debian, chẳng hạn như Ubuntu, bạn có thể thực hiện các bước sau để cài đặt IPtables (install IPtables). Đầu tiên, sử dụng trình quản lý gói APT để cài đặt IPtables Ubuntu bằng lệnh:
sudo apt install iptables
Để đảm bảo rằng các quy tắc tường lửa IPtables được giữ nguyên sau khi khởi động lại, bạn cần cài đặt gói iptables-persistent:
sudo apt install iptables-persistent
Trong quá trình này, hệ thống sẽ hiển thị đường dẫn tệp lưu các quy tắc và yêu cầu bạn xác nhận việc lưu các quy tắc hiện tại cho IPv4 và IPv6.
Cuối cùng, để kích hoạt dịch vụ netfilter-persistent khi khởi động, bạn chỉ cần chạy lệnh sau:
sudo systemctl enable netfilter-persistent
Lệnh này đảm bảo rằng dịch vụ sẽ tự động khởi động mỗi khi hệ thống được khởi động lại.
Lệnh iptables cho phép người dùng quản lý lưu lượng truy cập mạng thông qua việc cấu hình tường lửa. Để cấu hình IPtables trên Linux (configure IPtables in Linux) hiệu quả, trước hết bạn cần nắm vững các lệnh cơ bản hay được sử dụng. Dưới đây là hướng dẫn chi tiết cách cấu hình IPtables trong các tình huống thực tế.
Để xem các quy tắc iptables ở chế độ dạng bảng, bạn hãy sử dụng lệnh sau:
sudo iptables -L
Hệ thống sẽ hiển thị trạng thái các chuỗi hiện có, bao gồm INPUT, FORWARD và OUTPUT.
Nếu bạn muốn giới hạn đầu ra cho một chuỗi cụ thể ( INPUT, OUTPUT, TCP,…), bạn hãy chỉ định tên chuỗi ngay sau -L.
Ví dụ như: bạn cần xem chuỗi INPUT, hãy nhập lệnh sau:
sudo iptables -L INPUT
Giao diện loopback, hay còn được gọi là lo, giúp các phần mềm trong máy tính giao tiếp nhanh chóng và hiệu quả. Khi bạn ping localhost hoặc ping 127.0.0.1, máy chủ của bạn sẽ tự ping chính nó bằng cách sử dụng vòng lặp.
Để cho phép toàn bộ lưu lượng trên giao diện loopback, bạn hãy chạy lệnh sau:
sudo iptables -A INPUT -i lo -j ACCEPT
Lệnh này sẽ cấu hình tường lửa để chấp nhận tất cả lưu lượng truy cập từ giao diện localhost.
Để cho phép lưu lượng trên các cổng cho các dịch vụ khác nhau, người dùng có thể tham khảo các lệnh dưới đây:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Người dùng có thể kiểm soát lưu lượng dựa trên địa chỉ IP bằng các lệnh như:
sudo iptables -A INPUT -s [IP-address] -j ACCEPT
sudo iptables -A INPUT -s [IP-address] -j DROP
sudo iptables -A INPUT -m iprange --src-range [IP-address-range] -j REJECT
Thay thế địa chỉ IP trong lệnh bằng địa chỉ thực tế.
Để ghi lại các gói tin bị loại bỏ, thực hiện các bước sau:
sudo iptables -A INPUT -j LOG --log-prefix "Dropped: "
sudo iptables -A INPUT -j DROP
sudo dmesg | grep "Dropped"
sudo tail -f /var/log/syslog | grep “Dropped packet”
Để xóa một rule cụ thể, đầu tiên bạn cần liệt kê tất cả các quy tắc bằng lệnh là:
sudo iptables -L --line-numbers
Nhập câu lệnh này để xác định số dòng của rule cần xóa và chạy:
sudo iptables -D INPUT [number]
Thay thế [number] bằng số dòng quy tắc cần xóa.
Để chặn mọi lưu lượng truy cập đến ngoại trừ các kết nối SSH, bạn cần thực hiện các thao tác chi tiết như sau:
sudo iptables -P INPUT DROP
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Để giữ các quy tắc IPtables sau khi khởi động lại, hãy thực hiện lưu bằng câu lệnh:
sudo netfilter-persistent save
Bằng cách hiểu rõ các lệnh và quy tắc trong IPtables là gì, bạn sẽ kiểm soát tốt hơn việc truy cập và bảo mật cho VPS của mình. Nếu bạn đang tìm kiếm một Cloud Hosting, VPS mạnh mẽ và bảo mật, MONA Host chính là giải pháp toàn diện, đáp ứng đầy đủ những yêu cầu từ chất lượng sản phẩm cho đến dịch vụ hỗ trợ chuyên nghiệp. Hãy liên hệ ngay HOTLINE 1900 636 648 để được tư vấn và trải nghiệm dịch vụ lưu trữ web hàng đầu thị trường.
Đăng ký để nhận các bài nghiên cứu, blog, thông tin mới nhất từ chúng tôi