Về vấn đề bảo mật, khi triển khai máy chủ đám mây trên DataOnline, tường lửa (Firewall) sẽ tự động được kích hoạt. Loại phần mềm tường lửa được sử dụng trên máy chủ của bạn sẽ phụ thuộc vào hệ điều hành bạn đã triển khai. Hướng dẫn này sẽ giúp bạn xác định loại tường lửa hiện tại, cách cấu hình để cho phép hoặc chặn lưu lượng truy cập, cùng với các thông tin bổ sung về cách quản lý tường lửa của bạn.
Bạn đang muốn bảo mật máy chủ đám mây? Trước khi bắt đầu, hãy chọn một VPS chất lượng để đảm bảo hiệu suất. Tìm hiểu ngay các gói mua VPS tại DataOnline với cấu hình mạnh mẽ, hỗ trợ 24/7, giúp bạn vận hành hệ thống an toàn và ổn định.
Máy chủ của tôi sử dụng loại tường lửa nào ?
Tùy thuộc vào hệ điều hành, máy chủ đám mây của bạn có thể sử dụng một trong các tường lửa sau:
- Firewalld: Fedora, CentOS 7 và các bản phân phối khác dựa trên Red Hat hoặc SUSE Linux sử dụng công cụ cấu hình này cho iptables.
- IPFW: FreeBSD.
- Packet Filter (pf): OpenBSD.
- IP Filter (ipf): FreeBSD, NetBSD, OpenBSD và Solaris.
- Uncomplicated Firewall (UFW): Công cụ cấu hình của Ubuntu cho iptables.
- nftables: Các máy chủ Debian sử dụng bản nâng cấp của iptables.
- Windows Firewall: Microsoft Windows.
- iptables: Nhiều tiện ích tường lửa của OS là giao diện cho iptables, được bàn luận ở cuối bài viết này.
Hướng dẫn khởi động nhanh Firewalld
Firewalld là phần mềm tường lửa mặc định cho Fedora, CentOS 7 và các bản phân phối hiện đại khác dựa trên Red Hat hoặc SUSE Linux. Hướng dẫn nhanh này đưa ra một số lệnh và kỹ thuật hữu ích để hỗ trợ gỡ lỗi Firewalld.
Kiểm tra Firewalld đang hoạt động
$ firewall-cmd --state running
Kiểm tra các Zone gán cho các Interface đang hoạt động
$ firewall-cmd --get-active-zones public interfaces: ens3
Kiểm tra các cổng và dịch vụ được cho phép
Giả sử zone đang hoạt động của bạn là public, kiểm tra nhanh cho biết lưu lượng nào được phép:
$ firewall-cmd --zone=public --list-ports 7000-8000/tcp $ firewall-cmd --zone=public --list-services cockpit dhcpv6-client ssh
Ví dụ: Cho phép SSH
Giả sử zone đang hoạt động là public, bạn có thể dùng một trong hai phương pháp sau để cho phép SSH:
$ firewall-cmd --zone=public --add-service=ssh
hoặc
# firewall-cmd --add-port=22/tcp
Chế độ Panic
Chế Độ Drop Tất Cả Các Gói
Với quyền root, sử dụng tham số --panic-on
:
# firewall-cmd --panic-on
Tất cả các gói sẽ bị chặn. Các kết nối đang hoạt động sẽ bị ngắt sau một khoảng thời gian không hoạt động.
Tắt Chế Độ Panic
Với quyền root, sử dụng tham số --panic-off
:
# firewall-cmd --panic-off
Kiểm Tra Trạng Thái Chế Độ Panic
firewall-cmd --query-panic && echo "enabled" || echo "Not enabled"
Cấu hình vĩnh viễn với Tạm thời
Các thay đổi tạm thời gây ra một vấn đề phổ biến; máy chủ hoạt động như mong đợi cho đến khi khởi động lại. Hãy đảm bảo rằng bạn lưu cấu hình của mình một cách vĩnh viễn.
Để làm cho một lệnh trở thành cấu hình vĩnh viễn, thêm tùy chọn --permanent
vào tất cả các lệnh (trừ các lệnh --direct
vốn là tạm thời theo bản chất). Các thiết lập được thực hiện với tùy chọn --permanent
sẽ không có hiệu lực cho đến khi tường lửa được tải lại, dịch vụ khởi động lại hoặc hệ thống khởi động lại. Các thiết lập không có tùy chọn --permanent
có hiệu lực ngay lập tức nhưng chỉ có giá trị cho đến lần tải lại tường lửa, khởi động lại hệ thống hoặc dịch vụ.
Vô hiệu hóa Firewalld
Với quyền root, hãy mask và vô hiệu hóa dịch vụ:
# systemctl mask --now firewalld.service # systemctl disable --now firewalld.service
Thông tin thêm
Hướng dẫn khởi động nhanh IPFW
IPFW là tường lửa có trạng thái (stateful firewall) và bộ lọc gói của FreeBSD. Hướng dẫn nhanh này đưa ra một số lệnh và kỹ thuật hữu ích để hỗ trợ gỡ lỗi IPFW.
Kích hoạt và khởi động IPFW
Để kích hoạt IPFW khi khởi động, thêm dòng sau vào tập tin /etc/rc.conf:# sysrc firewall_enable="YES"
# sysrc firewall_enable="YES"
Khởi động tường lửa:
# service ipfw start
Liệt kê tất cả các quy tắc tường lửa
# ipfw list
Xóa Tất Cả Các Quy Tắc
# ipfw -q -f flush
Vô Hiệu Hóa và Dừng IPFW
Tham khảo tài liệu của IPFW.
Dừng tường lửa:
# /etc/rc.d/ipfw stop
Để vô hiệu hóa tường lửa, chỉnh sửa tập tin /etc/rc.conf và đặt:
firewall_enable="NO"
Ví Dụ: Cho Phép SSH và Chặn Tất Cả Các Lưu Lượng Khác
Giả sử địa chỉ IP của máy chủ là 192.0.2.123
.
Cho phép tất cả lưu lượng outbound từ địa chỉ này:
# ipfw -q add allow all from 192.0.2.123 to any out
Chặn tất cả lưu lượng outbound từ các địa chỉ khác:
# ipfw -q add deny log all from any to any out
Cho phép TCP nếu thiết lập thành công:
# ipfw -q add allow tcp from any to any established
Cho phép các gói IP fragments:
# ipfw -q add allow all from any to any frag
Cho phép inbound SSH:
# ipfw -q add allow tcp from any to 192.0.2.123 22 setup
Tất cả các lưu lượng khác đều bị chặn và ghi log:
# ipfw -q add deny log all from any to any
Quy tắc vĩnh viễn với tạm thời
Có thể thay đổi cấu hình IPFW “on-the-fly” mà không lưu vĩnh viễn. Điều này gây ra vấn đề phổ biến; máy chủ hoạt động như mong đợi cho đến lần khởi động lại tiếp theo. Hãy đảm bảo rằng bạn lưu cấu hình của mình một cách vĩnh viễn.
Để làm cho các quy tắc của bạn trở nên vĩnh viễn, hãy đưa các quy tắc vào một tập tin, chẳng hạn /etc/ipfw.conf, sau đó thêm dòng sau vào tập tin /etc/rc.conf:
firewall_enable="YES" firewall_type="/etc/ipfw.conf"
Ví dụ về /etc/ipfw.conf cho phép SSH và chặn tất cả các lưu lượng khác:
# ========================================== # IPFW Example - Allow SSH, deny all other # 192.0.2.123 is the example IP address # ========================================== # Allow anything outbound from this address. add allow all from 192.0.2.123 to any out # Deny anything outbound from other addresses. add deny log all from any to any out # Allow TCP through if setup succeeded. add allow tcp from any to any established # Allow IP fragments add allow all from any to any frag # Allow inbound ssh add allow tcp from any to 192.0.2.123 22 setup # Everything else is denied and logged. add deny log all from any to any
Thông Tin Thêm
Xem tài liệu của IPFW để biết thêm chi tiết.
Packet Filter (pf) Quickstart
OpenBSD Packet Filter (pf) là tường lửa có trạng thái (stateful packet filter) được phát triển cho OpenBSD, nhưng đã được chuyển thể sang nhiều hệ điều hành khác. Hướng dẫn nhanh này đưa ra một số lệnh và kỹ thuật hữu ích để hỗ trợ gỡ lỗi pf.
Kích hoạt và khởi động pf
Để kích hoạt pf khi khởi động, thêm dòng sau vào tập tin /etc/rc.conf:
# sysrc pf_enable=yes
Khởi động pf thủ công:
# pfctl -e
Xem bộ quy tắc pf
Hiển thị bộ quy tắc hiện tại:
# pfctl -sr
Hiển thị mọi thứ có thể:
# pfctl -sa
Dừng và vô hiệu hóa pf
Dừng pf:
# pfctl -d
Vô hiệu hóa pf khi khởi động:
# rcctl disable pf
Ví dụ: cho phép ssh và chặn tất cả các lưu lượng khác
Thêm các quy tắc sau vào tập tin /etc/pf.conf:
block all pass out proto tcp to any port 22 keep state
Thông tin thêm
Xem tài liệu pf để biết thêm chi tiết.
Hướng dẫn nhanh về ip Filter
IP Filter (thường được gọi là ipf) là một tường lửa mã nguồn mở có sẵn trên nhiều hệ điều hành, bao gồm FreeBSD, NetBSD, OpenBSD và Solaris. IPFILTER được tích hợp sẵn trong cài đặt cơ bản của FreeBSD dưới dạng mô-đun kernel loadable. Hướng dẫn nhanh này cung cấp một số lệnh và kỹ thuật hữu ích để hỗ trợ gỡ lỗi IPFilter.
Khởi động ipf
# service ipfilter start
Xem bộ quy tắc lọc gói đang hoạt động
ipfstat -io
Xóa tất cả các quy tắc lọc
ipf -F a
Dừng ipf
# service ipfilter stop
Ví dụ: cho phép ssh và chặn tất cả các lưu lượng khác
Thêm các quy tắc sau vào tập tin /etc/ipf.conf để tạo một tường lửa đơn giản chỉ cho phép SSH (cổng 22) cho IP ví dụ 192.0.2.123:
block in on any all pass in quick on any proto tcp from any to 192.0.2.123/32 port = 22 keep state
Thông tin thêm
Xem tài liệu ipf để biết thêm chi tiết.
Hướng dẫn nhanh về Tường lửa Uncomplicated (UFW)
UFW là công cụ cấu hình tường lửa mặc định cho Ubuntu. Hướng dẫn nhanh này đưa ra một số lệnh và kỹ thuật hữu ích để hỗ trợ gỡ lỗi UFW.
Kích hoạt UFW
Kích hoạt UFW với bộ quy tắc mặc định:
$ sudo ufw enable
Kiểm tra trạng thái
Kiểm tra trạng thái của tường lửa:
$ sudo ufw status ufw: command not found
Bạn có thể thấy một trong các kết quả sau:
UFW chưa được cài đặt
$ sudo ufw status ufw: command not found
UFW đã được cài đặt nhưng chưa được cấu hình
$ sudo ufw status Status: inactive
UFW đang chạy
Các quy tắc tường lửa hiện hành sẽ được hiển thị:
$ sudo ufw status verbose Status: active To Action From -- ------ ---- 22 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6)
Vô hiệu hóa UFW
$ sudo ufw disable
Đặt lại UFW về mặc định
$ sudo ufw reset
Ví Dụ
Cho phép ssh, chặn tất cả các lưu lượng khác
Một ví dụ chặn tất cả lưu lượng inbound ngoại trừ SSH (cổng 22):
$ sudo ufw default deny incoming $ sudo ufw default allow outgoing $ sudo ufw allow ssh $ sudo ufw enable $ sudo ufw reload
Cho phép cổng 80 (http) và 443 (https), chặn tất cả các lưu lượng khác
$ sudo ufw default deny incoming $ sudo ufw default allow outgoing $ sudo ufw allow ssh $ sudo ufw enable $ sudo ufw reload
Khởi động nhanh nftables
nftables cung cấp hỗ trợ tường lửa và NAT. Hướng dẫn nhanh này đưa ra một số lệnh và kỹ thuật hữu ích để hỗ trợ gỡ lỗi nftables.
Kích Hoạt và Khởi Động nftables
Các phiên bản gần đây của Debian đã cài đặt nftables theo mặc định.
Nếu cần cài đặt nftables:
# aptitude install nftables
Để kích hoạt nftables khi khởi động:
# systemctl enable nftables.service
Liệt kê bộ quy tắc hiện hành
# nft list ruleset
Xóa tất cả các quy tắc
Để ngừng nftables lọc lưu lượng, xóa tất cả các quy tắc:
nft flush ruleset
Vô hiệu hóa và dừng nftables
Để vô hiệu hóa nftables khi khởi động:
# systemctl mask nftables.service
Để gỡ cài đặt nftables:
# aptitude purge nftables
Ví dụ đơn giản cho ssh và web
Ví dụ đơn giản này cho phép SSH, HTTP, HTTPS và ICMP, đồng thời chặn tất cả các lưu lượng inbound khác. Chỉnh sửa tập tin /etc/nftables.conf:
sudo nano /etc/nftables.conf
Thay thế nội dung của /etc/nftables.conf bằng các quy tắc sau:
#!/usr/sbin/nft -f flush ruleset table inet filter { chain input { type filter hook input priority 0; policy drop; # accept any localhost traffic iif lo accept # accept traffic originated from us ct state established,related accept # drop invalid packets ct state invalid counter drop # accept ssh, http, and https tcp dport { 22, 80, 443 } accept # accept icmp ip protocol icmp accept # count and reject everything else counter reject with icmpx type admin-prohibited } chain forward { type filter hook forward priority 0; policy drop; } chain output { type filter hook output priority 0; policy accept; } }
Thông tin thêm
Xem thêm chi tiết tại wiki Debian về nftables.
Khởi động nhanh Windows Firewall
Windows Firewall with Advanced Security có thể được truy cập qua giao diện GUI, Command Prompt hoặc PowerShell. Hướng dẫn nhanh này đưa ra một số lệnh và kỹ thuật hữu ích để hỗ trợ gỡ lỗi Windows Firewall.
Chạy Windows Firewall từ GUI
Nếu sử dụng giao diện GUI, hãy dùng một trong các cách sau để khởi chạy Windows Firewall:
Từ Giao Diện Windows
- Nhấp vào Tìm kiếm.
- Gõ “Windows Firewall”.
- Chọn “Windows Firewall với Bảo mật Nâng cao”.
MMC
- Thêm snap-in cho “Windows Firewall với Bảo mật Nâng cao”.
- Từ dòng lệnh
- Gõ
wf.msc
.
Tắt giao diện Windows Firewall with Advanced Security
- Mở Server Manager.
- Chọn Windows Firewall với Bảo mật Nâng cao từ menu Tools.
- Trong khung giữa, nhấp vào Thuộc tính Windows Firewall.
- Có ba tab profile trong cửa sổ thuộc tính, tương ứng với ba profile của Windows Firewall (domain, private và public). Trong mỗi tab, chọn Off từ danh sách dropdown Firewall state.
- Nhấp OK để đóng cửa sổ thuộc tính.
Kích hoạt và vô hiệu hóa Windows Firewall từ dòng lệnh
Các lệnh dưới đây cần được chạy từ Command Prompt hoặc PowerShell với quyền quản trị.
Bật tường lửa sử dụng netsh:
netsh advfirewall set allprofiles state on
Tắt tường lửa sử dụng netsh:
netsh advfirewall set allprofiles state off
Bật tường lửa sử dụng Windows PowerShell:
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
Tắt tường lửa sử dụng Windows PowerShell:
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
Tài nguyên bổ sung
Đối với chi tiết về sử dụng Group Policy hoặc MMC snap-ins, hãy tham khảo tài liệu của Microsoft.
Khởi động nhanh iptables
iptables là một tiện ích ở không gian người dùng cho phép bạn cấu hình các quy tắc lọc gói IP của tường lửa kernel Linux.
Liệt kê tất cả các quy tắc đang chạy
Để xem các quy tắc tường lửa hiện hành:
# iptables -L -v
Vô hiệu hóa và xóa tất cả các quy tắc
Để tạm thời vô hiệu hóa tường lửa, xóa tất cả các quy tắc:
$ sudo iptables -P INPUT ACCEPT $ sudo iptables -P OUTPUT ACCEPT $ sudo iptables -P FORWARD ACCEPT $ sudo iptables -F
Chặn tất cả lưu lượng
Để chặn mọi thứ, đặt chính sách của tất cả các chain thành DROP:
$ sudo iptables -P INPUT DROP $ sudo iptables -P OUTPUT DROP $ sudo iptables -P FORWARD DROP
Ví dụ thông thường
Dưới đây là một ví dụ điển hình cho phép SSH, HTTP và HTTPS nhưng chặn mọi lưu lượng khác.
Bước 1
Thêm một quy tắc vào chain INPUT:
- Giao thức: TCP.
- Cổng đích: 22, 80 & 443.
- Với các gói này, nhảy đến ACCEPT.
$ 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
Bước 2
Thêm một quy tắc vào chain INPUT: Chặn tất cả mọi thứ khác.
$ sudo iptables -A INPUT -j DROP
Thông tin thêm
Để có cái nhìn sâu hơn về cách cấu hình và quản lý tường lửa với iptables, bạn có thể tham khảo thêm các hướng dẫn chi tiết cho các hệ điều hành khác nhau, chẳng hạn như Ubuntu và CentOS. Việc hiểu rõ cách sử dụng iptables sẽ giúp bạn tối ưu hóa khả năng bảo mật mạng và kiểm soát truy cập vào hệ thống của mình một cách hiệu quả hơn.
Ngoài ra, việc sử dụng iptables kết hợp với các công cụ quản lý tường lửa khác như UFW (Uncomplicated Firewall) sẽ mang lại sự linh hoạt và dễ dàng trong việc thiết lập các chính sách bảo mật, đặc biệt là đối với những người quản trị không chuyên sâu về các cấu hình phức tạp.
Để tối ưu chi phí khi cài đặt tường lửa, hãy cân nhắc thuê VPS giá rẻ từ DataOnline. Với mức giá phải chăng bạn vẫn sở hữu VPS hiệu năng cao, băng thông không giới hạn, lý tưởng cho mọi nhu cầu bảo mật và vận hành.
Chúng tôi khuyến khích bạn dành thời gian tìm hiểu thêm về các tùy chọn cấu hình của iptables, vì nó không chỉ giúp bảo vệ máy chủ mà còn tạo ra một hệ thống mạng ổn định và an toàn, đáp ứng được các yêu cầu ngày càng khắt khe trong bảo mật mạng.