Quay lại

Lab: Firewall Rules với UFW trên Ubuntu Server

Linux Ubuntu UFW 1-2 giờ

Mục tiêu

  • Hiểu nguyên lý hoạt động của firewall UFW
  • Cấu hình rule cho phép/không cho phép dịch vụ
  • Giới hạn IP truy cập vào server
  • Kiểm thử firewall rules
  • Ghi chép và quản lý rules

Môi trường lab

Ubuntu Server

Ubuntu 22.04 LTS

Client PC

Windows/Linux để test

Network

Mạng LAN hoặc VM

Cài đặt và khởi tạo UFW

1. Cài đặt UFW (nếu chưa có):

sudo apt update
sudo apt install ufw
                                

2. Kiểm tra trạng thái UFW:

sudo ufw status verbose
sudo ufw status numbered
                                

3. Reset UFW về trạng thái mặc định:

sudo ufw --force reset
sudo ufw default deny incoming
sudo ufw default allow outgoing
                                

Cấu hình cơ bản

1. Cho phép SSH (quan trọng!):

sudo ufw allow ssh
# hoặc
sudo ufw allow 22/tcp
                                

2. Cho phép HTTP/HTTPS:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# hoặc
sudo ufw allow 'Nginx Full'
                                

3. Cho phép DNS (nếu cần):

sudo ufw allow 53/tcp
sudo ufw allow 53/udp
                                

Cấu hình nâng cao

1. Giới hạn IP truy cập SSH:

# Chỉ cho phép IP cụ thể truy cập SSH
sudo ufw delete allow ssh
sudo ufw allow from 192.168.1.100 to any port 22
sudo ufw allow from 192.168.1.0/24 to any port 22

# Hoặc giới hạn theo interface
sudo ufw allow in on eth0 to any port 22
                                

2. Tạo rule cho ứng dụng cụ thể:

# Cho phép MySQL từ mạng nội bộ
sudo ufw allow from 192.168.1.0/24 to any port 3306

# Cho phép Redis từ localhost
sudo ufw allow from 127.0.0.1 to any port 6379

# Cho phép MongoDB từ IP cụ thể
sudo ufw allow from 192.168.1.50 to any port 27017
                                

3. Tạo rule với comment:

sudo ufw allow 8080/tcp comment 'Tomcat Application'
sudo ufw allow 5432/tcp comment 'PostgreSQL Database'
                                

Kiểm thử firewall

1. Kiểm tra trạng thái UFW:

sudo ufw status verbose
sudo ufw status numbered
sudo ufw show added
                                

2. Test kết nối từ client:

# Test SSH
ssh username@server_ip

# Test HTTP
curl http://server_ip
telnet server_ip 80

# Test port bị chặn
telnet server_ip 22  # Nếu bị chặn
                                

3. Kiểm tra log UFW:

sudo tail -f /var/log/ufw.log
sudo ufw logging on
sudo ufw logging high
                                

Quản lý rules

1. Xem rules theo số thứ tự:

sudo ufw status numbered
                                

2. Xóa rule theo số:

sudo ufw delete 3  # Xóa rule số 3
sudo ufw delete allow 80/tcp  # Xóa rule cụ thể
                                

3. Reload UFW:

sudo ufw reload
sudo ufw disable
sudo ufw enable
                                

Kết quả mong đợi

✅ Kết nối thành công:

  • SSH từ IP được phép
  • HTTP/HTTPS từ mọi IP
  • DNS từ mạng nội bộ

❌ Kết nối bị chặn:

  • SSH từ IP không được phép
  • Port không được định nghĩa
  • Dịch vụ không cần thiết

Troubleshooting

Vấn đề thường gặp:

  • Không SSH được: Kiểm tra rule SSH và IP được phép
  • Web không load: Kiểm tra rule HTTP/HTTPS
  • Rule không áp dụng: Reload UFW sau khi thay đổi
  • Log không hiển thị: Bật logging và kiểm tra level

Best Practices bảo mật

  • Principle of Least Privilege: Chỉ mở port cần thiết
  • IP Whitelisting: Giới hạn IP truy cập SSH
  • Regular Review: Kiểm tra rules định kỳ
  • Logging: Bật log để monitor
  • Default Deny: Chặn tất cả, chỉ cho phép cần thiết

Tài liệu tham khảo

  • Ubuntu UFW Documentation
  • UFW Man Pages: man ufw
  • Ubuntu Security Guide
  • Linux Firewall Best Practices