Thiết lập tường lửa cơ bản Lọc Egress với EBPF

 Giải quyết DNS động: Liên tục theo dõi giải quyết DNS của miền được chỉ định và cập nhật các quy tắc tường lửa cho phù hợp, vì địa chỉ IP có thể thay đổi.

Tính bền vững của quy tắc: Đảm bảo các quy tắc vẫn tồn tại trong suốt quá trình khởi động lại.
Ghi nhật ký: Ghi nhật ký các nỗ lực gửi đi bị từ chối để kiểm tra và phân tích.
Cải tiến bảo mật: Giảm thiểu bộ quy tắc để giảm các bề mặt tấn công tiềm ẩn. Tính
linh hoạt: Cho phép tùy chỉnh dễ dàng và thêm các quy tắc mới.
Tập lệnh này sẽ được cấu trúc như sau,

Một tập lệnh chính để thiết lập các quy tắc tường lửa bền vững cơ bản và sắp xếp các thành phần khác.
Một tập lệnh phụ hoặc quy trình nền để cập nhật DNS động.
Sử dụng iptables-persistent hoặc cơ chế tương tự để duy trì tính bền vững của quy tắc.
1. Tập lệnh thiết lập tường lửa chính
Tập lệnh này khởi tạo các quy tắc tường lửa, đảm bảo kết nối và bảo mật cơ bản. Nó cũng sẽ quản lý tính bền vững và gọi trình cập nhật DNS động.

Mã số
#!/bin/bash

# Define constants
DOMAIN="example.com"
DYNAMIC_UPDATER_PATH="/usr/local/bin/firewall-dynamic-updater.sh"

# Function to set up basic firewall rules
setup_basic_rules() {
    # Allow established connections
    iptables -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    
    # Allow loopback
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT
    
    # Log and drop outbound traffic by default (with limit to avoid log spam)
    iptables -A OUTPUT -m limit --limit 12/hour -j LOG --log-prefix "iptables denied: " --log-level 7
    iptables -P OUTPUT DROP
}

# Save the current rules to be persistent across reboots
save_rules_persistent() {
    if command -v netfilter-persistent save >/dev/null 2>&1; then
        netfilter-persistent save
    elif command -v iptables-save > /etc/iptables/rules.v4; then
        echo "iptables rules saved to /etc/iptables/rules.v4"
    else
        echo "Error: Could not find a way to save iptables rules persistently."
        exit 1
    fi
}

# Setup basic rules
setup_basic_rules

# Save rules
save_rules_persistent

# Deploy the dynamic DNS updater script
if [[ ! -f "$DYNAMIC_UPDATER_PATH" ]]; then
    echo "Dynamic DNS updater script not found. Please ensure it's correctly deployed at $DYNAMIC_UPDATER_PATH"
    exit 1
else
    bash "$DYNAMIC_UPDATER_PATH" "$DOMAIN" &
    echo "Dynamic DNS updater script deployed and running in background."
fi


2. Tập lệnh cập nhật DNS động
Tập lệnh này (firewall-dynamic-updater.sh) sẽ kiểm tra định kỳ độ phân giải DNS của tên miền được chỉ định và cập nhật các quy tắc tường lửa nếu địa chỉ IP đã thay đổi. Nó phải được triển khai đến đường dẫn được chỉ định trong tập lệnh chính.

Mã số
#!/bin/bash

DOMAIN=$1
PREV_IPS=""

while truedo
    # Resolve current IPs
    CURRENT_IPS=$(dig +short $DOMAIN | sort | tr '\n' ' ')
    
    # Check if the IPs have changed
    if [[ "$CURRENT_IPS" != "$PREV_IPS" ]]; then
        echo "Updating firewall rules for $DOMAIN$CURRENT_IPS"
        
        # Flush previous rules for this domain
        iptables -D OUTPUT -p tcp -d $PREV_IPS -j ACCEPT 2>/dev/null
        
        # Apply new rules
        for ip in $CURRENT_IPSdo
            iptables -I OUTPUT -p tcp -d $ip -j ACCEPT
        done
        
        PREV_IPS=$CURRENT_IPS
    fi
    
    # Wait for a specified interval before checking again
    sleep 300 # Check every 5 minutes
done


Triển khai và cân nhắc
Tính bền bỉ: Phương pháp này sử dụng iptables-persistent hoặc lưu thủ công vào /etc/iptables/rules.v4 để tính bền bỉ của quy tắc. Đảm bảo iptables-persistent được cài đặt và cấu hình đúng trên hệ thống của bạn.
Ghi nhật ký và kiểm tra: Tập lệnh chính thiết lập ghi nhật ký cho các gói bị loại bỏ. Đảm bảo daemon ghi nhật ký của hệ thống của bạn (ví dụ: rsyslog) được cấu hình để xử lý các nhật ký này một cách thích hợp, có thể chuyển hướng chúng đến một tệp riêng để phân tích.
Bảo mật: Trình cập nhật động sử dụng phương pháp đơn giản để xóa và áp dụng lại các quy tắc. Trong môi trường sản xuất, hãy cân nhắc các cơ chế tinh vi hơn để điều chỉnh các quy tắc một cách nguyên tử và an toàn, giảm thời gian cho bất kỳ lỗ hổng bảo mật tiềm ẩn nào.
Tính linh hoạt: Phương pháp này cho phép mở rộng dễ dàng. Ví dụ: có thể thêm các tham số bổ sung vào tập lệnh để xử lý nhiều miền, giao thức khác nhau hoặc cổng cụ thể.

Đăng nhận xét

Mới hơn Cũ hơn