# Kiểm tra Firewall đang cài đặt

#### 1. Kiểm tra UFW (Uncomplicated Firewall)

bash Copy

```bash
# Kiểm tra UFW đã cài chưa
dpkg -l | grep ufw

# Kiểm tra trạng thái UFW
sudo ufw status
sudo ufw status verbose
sudo ufw status numbered

# Kiểm tra cấu hình chi tiết
sudo ufw show raw
cat /etc/default/ufw
```

#### 2. Kiểm tra iptables

bash Copy

```bash
# Kiểm tra iptables đã cài chưa
dpkg -l | grep iptables

# Kiểm tra rules hiện tại
sudo iptables -L -v -n
sudo iptables -L -v -n --line-numbers

# Kiểm tra NAT table
sudo iptables -t nat -L -v -n

# Kiểm tra mangle table
sudo iptables -t mangle -L -v -n
```

#### 3. Kiểm tra nftables (thay thế iptables trên Ubuntu mới)

bash Copy

```bash
# Kiểm tra nftables
dpkg -l | grep nftables

# Kiểm tra rules
sudo nft list ruleset

# Kiểm tra tables
sudo nft list tables

# Kiểm tra chi tiết từng table
sudo nft list table inet filter
```

#### 4. Kiểm tra Firewalld

bash Copy

```bash
# Kiểm tra firewalld
dpkg -l | grep firewalld

# Kiểm tra trạng thái
sudo systemctl status firewalld

# Liệt kê zones và rules
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --list-all
sudo firewall-cmd --list-all-zones
```

### Script kiểm tra tổng hợp

bash Copy

```bash
#!/bin/bash
echo "=== KIỂM TRA FIREWALL TRÊN UBUNTU SERVER ==="
echo ""

echo "1. UFW (Uncomplicated Firewall):"
if dpkg -l | grep -q ufw; then
    echo "   ✅ Đã cài đặt"
    echo "   Trạng thái: $(sudo ufw status | head -1)"
    sudo ufw status | grep -E "(Status|ALLOW|DENY|REJECT)" | head -10
else
    echo "   ❌ Chưa cài đặt"
fi
echo ""

echo "2. iptables:"
if dpkg -l | grep -q iptables; then
    echo "   ✅ Đã cài đặt"
    echo "   Số rules: $(sudo iptables -L | grep -c "Chain")"
    sudo iptables -L INPUT -v -n | head -5
else
    echo "   ❌ Chưa cài đặt"
fi
echo ""

echo "3. nftables:"
if dpkg -l | grep -q nftables; then
    echo "   ✅ Đã cài đặt"
    sudo nft list tables 2>/dev/null || echo "   Không có tables"
else
    echo "   ❌ Chưa cài đặt"
fi
echo ""

echo "4. Firewalld:"
if dpkg -l | grep -q firewalld; then
    echo "   ✅ Đã cài đặt"
    sudo systemctl is-active firewalld 2>/dev/null || echo "   Không active"
else
    echo "   ❌ Chưa cài đặt"
fi
echo ""

echo "5. Các port đang mở (listening):"
sudo ss -tlnp | grep LISTEN
echo ""

echo "6. Kiểm tra xung đột:"
if systemctl is-active --quiet ufw && systemctl is-active --quiet firewalld 2>/dev/null; then
    echo "   ⚠️ CẢNH BÁO: Cả UFW và Firewalld đang chạy!"
elif systemctl is-active --quiet ufw; then
    echo "   ✓ Chỉ UFW đang chạy"
elif systemctl is-active --quiet firewalld 2>/dev/null; then
    echo "   ✓ Chỉ Firewalld đang chạy"
else
    echo "   ℹ️ Không có firewall nào đang chạy (chỉ có iptables/nftables kernel)"
fi
```

### Kiểm tra chi tiết cấu hình

#### Kiểm tra backend của UFW

bash Copy

```bash
# UFW sử dụng iptables hay nftables?
cat /etc/default/ufw | grep IPT_BACKEND

# Kiểm tra profile UFW
ls /etc/ufw/applications.d/
cat /etc/ufw/applications.d/openssh-server

# Kiểm tra before/after rules
cat /etc/ufw/before.rules
cat /etc/ufw/after.rules
```

#### Kiểm tra iptables persistent

bash Copy

```bash
# Kiểm tra iptables-persistent
dpkg -l | grep persistent

# Kiểm tra rules đã lưu
ls /etc/iptables/
cat /etc/iptables/rules.v4 2>/dev/null
cat /etc/iptables/rules.v6 2>/dev/null
```

#### Kiểm tra với netstat/ss

bash Copy

```bash
# Liệt kê tất cả kết nối
sudo ss -tulnp

# Chỉ xem port đang mở
sudo ss -tlnp | grep -v "127.0.0.1"

# Kiểm tra theo protocol
sudo ss -tlnp  # TCP
sudo ss -ulnp  # UDP
```

### Kiểm tra xung đột và vấn đề

bash Copy

```bash
# Kiểm tra nhiều firewall cùng chạy
sudo systemctl list-units --type=service | grep -E "(ufw|firewalld|nftables|iptables)"

# Kiểm tra log firewall
sudo dmesg | grep -i firewall
sudo tail -f /var/log/ufw.log

# Kiểm tra policy mặc định
sudo iptables -L | grep -i policy
```

### Bảng so sánh Firewall trên Ubuntu

Table

| Firewall      | Mức độ     | Mặc định Ubuntu | Giao diện    |
| ------------- | ---------- | --------------- | ------------ |
| **UFW**       | Đơn giản   | ✅ Có            | CLI đơn giản |
| **iptables**  | Trung bình | Kernel built-in | CLI phức tạp |
| **nftables**  | Trung bình | Ubuntu 22.04+   | CLI mới      |
| **Firewalld** | Nâng cao   | ❌ Không         | CLI + GUI    |

### Lệnh kiểm tra nhanh

bash Copy

```bash
# Tóm tắt trong 1 lệnh
echo "=== FIREWALL STATUS ===" && \
sudo ufw status 2>/dev/null && \
echo "" && echo "=== IPTABLES RULES ===" && \
sudo iptables -L -n | head -10 && \
echo "" && echo "=== OPEN PORTS ===" && \
sudo ss -tlnp
```

Kết quả kiểm tra cho thấy firewall nào đang hoạt động trên server của bạn?
