Sử dụng Python chặn tự động IP độc hại bằng UFW (Uncomplicated Firewall)

UFW (Uncomplicated Firewall) là một giao diện người dùng dễ sử dụng cho hệ thống tường lửa iptables, giúp quản lý các quy tắc tường lửa trên hệ điều hành Linux trở nên đơn giản hơn. Được phát triển bởi Canonical, UFW chủ yếu được thiết kế để cung cấp một cách quản lý tường lửa dễ hiểu và thân thiện hơn, đặc biệt cho người dùng Ubuntu.

ASVASV
Jul 22, 2024 - 18:43
 97
Sử dụng Python chặn tự động IP độc hại bằng UFW (Uncomplicated Firewall)

Các tính năng chính của UFW

  1. Dễ sử dụng: UFW cung cấp các lệnh đơn giản để thêm, xóa và liệt kê các quy tắc tường lửa. Điều này giúp người dùng dễ dàng kiểm soát luồng dữ liệu mạng mà không cần phải làm việc trực tiếp với iptables, vốn phức tạp hơn.
  2. Quản lý quy tắc đơn giản: Người dùng có thể dễ dàng thiết lập các quy tắc chặn hoặc cho phép lưu lượng mạng dựa trên địa chỉ IP, dải IP, cổng và giao thức.
  3. Tích hợp tốt với hệ thống: UFW được tích hợp chặt chẽ với hệ điều hành, cho phép tự động tải lại các quy tắc tường lửa khi hệ thống khởi động.
  4. Tính năng log: UFW hỗ trợ ghi nhật ký (log) cho phép người quản trị mạng theo dõi và phân tích lưu lượng mạng bị chặn hoặc cho phép.

Các lệnh cơ bản của UFW

  • Kích hoạt UFW:

    sudo ufw enable
    
  • Vô hiệu hóa UFW:

    sudo ufw disable
    
  • Thêm quy tắc cho phép lưu lượng:Ví dụ:

    sudo ufw allow [port]/[protocol]
    
    sudo ufw allow 22/tcp
    
  • Thêm quy tắc chặn lưu lượng:

    sudo ufw deny [port]/[protocol]
    
  • Xóa quy tắc:

    sudo ufw delete allow [port]/[protocol]
    
  • Hiển thị trạng thái UFW:

    sudo ufw status
    
  • Đặt chính sách mặc định:

    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    

Lợi ích của UFW

  • Đơn giản hóa quản lý tường lửa: UFW giúp người dùng dễ dàng thiết lập và quản lý tường lửa mà không cần hiểu biết sâu về iptables.
  • Tiết kiệm thời gian: Các lệnh đơn giản của UFW giúp quản trị viên mạng nhanh chóng thiết lập các quy tắc bảo mật cần thiết.
  • Phù hợp cho người mới bắt đầu: UFW là công cụ lý tưởng cho những người mới bắt đầu học cách quản lý tường lửa trên Linux.

Dưới đây là đoạn mã Python hoàn chỉnh để tải danh sách IP từ Spamhaus, xóa bỏ các quy tắc chặn trước đó và chặn các IP mới bằng ufw trên Linux.

import requests
import subprocess

def download_ip_list(url):
    response = requests.get(url)
    response.raise_for_status()
    ip_list = [line.split(';')[0].strip() for line in response.text.splitlines() if line and not line.startswith(';')]
    return ip_list

def clear_ufw_rules():
    # Reset ufw rules to default
    subprocess.run(["sudo", "ufw", "reset"])
    print("Cleared all ufw rules.")

def block_ips_ufw(blocked_ips):
    for ip in blocked_ips:
        subprocess.run(["sudo", "ufw", "deny", "from", ip])
    subprocess.run(["sudo", "ufw", "reload"])
    print("Blocked IPs using ufw.")

# URLs to download IP lists
drop_url = "https://www.spamhaus.org/drop/drop.txt"
edrop_url = "https://www.spamhaus.org/drop/edrop.txt"

# Download IP lists
drop_ips = download_ip_list(drop_url)
edrop_ips = download_ip_list(edrop_url)

# Combine the lists
blocked_ips = drop_ips + edrop_ips
print(f"Downloaded {len(blocked_ips)} IPs to block.")

# Clear previous ufw rules
clear_ufw_rules()

# Apply new blocking rules
block_ips_ufw(blocked_ips)

Giải thích:

  1. download_ip_list(url): Tải xuống danh sách IP từ URL cung cấp và phân tích cú pháp để lấy riêng IP và dải IP.
  2. clear_ufw_rules(): Xóa bỏ tất cả các quy tắc ufw hiện tại bằng cách reset ufw.
  3. block_ips_ufw(blocked_ips): Thêm các quy tắc mới từ danh sách IP cập nhật vào ufw để chặn các IP và dải IP.

Chạy mã:

  • Đảm bảo rằng bạn có quyền root hoặc sử dụng sudo để chạy các lệnh ufw.
  • Kiểm tra lại danh sách IP và các lệnh ufw trước khi áp dụng trên môi trường thực tế để đảm bảo không chặn nhầm các IP hợp lệ.

Cảm xúc của bạn?

like

dislike

love

funny

angry

sad

wow

ASV QR DONATE: Anh em cảm thấy hữu ích hãy ủng hộ mình một ly cafe để có nhiều bài viết giá trị hơn nữa. Cần hỗ trợ tư vấn dịch vụ, vui lòng liên hệ mình. Xin cảm ơn./.