v2.3
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo "=========================================================="
|
||||
echo " TEST SCRIPT: KIỂM TRA LỖI FIREWALL DEFAULT DENY "
|
||||
echo "=========================================================="
|
||||
|
||||
echo "[1] Trạng thái của firewalld theo systemctl:"
|
||||
raw_status=$(systemctl is-active firewalld 2>&1)
|
||||
echo " -> Output trả về: [$raw_status]"
|
||||
|
||||
FIREWALLD_ACTIVE=0
|
||||
if echo "$raw_status" | grep -q "^active"; then
|
||||
FIREWALLD_ACTIVE=1
|
||||
echo " -> Đánh giá: FIREWALLD_ACTIVE = 1 (Đã nhận diện đang chạy)"
|
||||
else
|
||||
echo " -> Đánh giá: FIREWALLD_ACTIVE = 0 (Không nhận diện được firewalld qua systemctl)"
|
||||
fi
|
||||
echo "----------------------------------------------------------"
|
||||
|
||||
echo "[2] Đọc các active zone từ firewall-cmd:"
|
||||
active_zones=$(firewall-cmd --list-all-zones 2>/dev/null | grep "active")
|
||||
if [ -z "$active_zones" ]; then
|
||||
echo " -> KHÔNG TÌM THẤY BẤT KỲ ACTIVE ZONE NÀO! (Hoặc firewall-cmd bị lỗi)"
|
||||
else
|
||||
echo " -> Các zone đang active tìm thấy:"
|
||||
echo "$active_zones" | while read -r line; do
|
||||
echo " - $line"
|
||||
done
|
||||
fi
|
||||
echo "----------------------------------------------------------"
|
||||
|
||||
echo "[3] Phân tích chi tiết qua awk (chế độ DEBUG):"
|
||||
fw_default_deny=$(firewall-cmd --list-all-zones 2>/dev/null | awk '
|
||||
BEGIN {
|
||||
print " [AWK] Bắt đầu đọc output từ firewall-cmd..." > "/dev/stderr"
|
||||
bad=0
|
||||
}
|
||||
/\(active\)/ {
|
||||
in_active=1;
|
||||
print " [AWK] >> Vào active zone: " $0 > "/dev/stderr"
|
||||
next
|
||||
}
|
||||
/^[^ \t\r\n]/ && !/\(active\)/ {
|
||||
if (in_active == 1) {
|
||||
print " [AWK] << Thoát active zone vì gặp dòng: " $0 > "/dev/stderr"
|
||||
}
|
||||
in_active=0
|
||||
}
|
||||
in_active && /target:/ {
|
||||
t = $2
|
||||
gsub(/%%/, "", t)
|
||||
print " [AWK] -- Bắt được target: [" t "]" > "/dev/stderr"
|
||||
if (t != "DROP" && t != "REJECT") {
|
||||
print " [AWK] -- [!] PHÁT HIỆN VI PHẠM: [" t "] không phải là DROP hay REJECT" > "/dev/stderr"
|
||||
bad=1
|
||||
} else {
|
||||
print " [AWK] -- [v] ĐẠT: [" t "] hợp lệ" > "/dev/stderr"
|
||||
}
|
||||
}
|
||||
END {
|
||||
print " [AWK] Kết thúc phân tích. Giá trị biến bad = " bad > "/dev/stderr"
|
||||
print (bad ? "0" : "1")
|
||||
}
|
||||
')
|
||||
|
||||
echo "----------------------------------------------------------"
|
||||
echo "[4] TỔNG HỢP KẾT QUẢ:"
|
||||
echo " -> Giá trị biến fw_default_deny: [$fw_default_deny]"
|
||||
|
||||
if [ "$FIREWALLD_ACTIVE" -eq 1 ]; then
|
||||
if [ "$fw_default_deny" = "1" ]; then
|
||||
echo " -> KẾT QUẢ CUỐI CÙNG: PASSED (Đạt chuẩn)"
|
||||
else
|
||||
echo " -> KẾT QUẢ CUỐI CÙNG: FAILED (Vi phạm)"
|
||||
fi
|
||||
else
|
||||
echo " -> KẾT QUẢ CUỐI CÙNG: FAILED (Bị fail ngay từ bước check firewalld active)"
|
||||
fi
|
||||
echo "=========================================================="
|
||||
Reference in New Issue
Block a user