Computer >> Hướng Dẫn Máy Tính >  >> Điện Thoại Thông Minh >> Linux

Cách chặn địa chỉ IP trong iptables trên Linux

Hướng dẫn chặn IP truy cập vào máy chủ Linux bằng tường lửa iptables – biện pháp cơ bản chống brute-force, DDoS, bot quét lỗ hổng.

Chặn 1 IP đơn lẻ

# iptables -I INPUT -s 122.174.12.228 -j DROP
  • -I INPUT: Chèn (Insert) vào đầu chain INPUT (ưu tiên cao nhất).
  • -s 122.174.12.228: IP nguồn cần chặn.
  • -j DROP: Hành động DROP (thả rác im lặng – không phản hồi). Thay bằng REJECT để gửi ICMP port unreachable.

Lưu ý bài gốc có lỗi in IP: 122.172.9.222 vs 122.174.12.228.

Chặn dải IP (CIDR)

# iptables -I INPUT -s 192.168.1.0/24 -j DROP

Chặn IP trên interface cụ thể

# iptables -I INPUT -i eth1 -s 122.174.12.228 -j DROP

Chặn IP cho port cụ thể (ví dụ: SSH port 22)

# iptables -I INPUT -p tcp --dport 22 -s 122.174.12.228 -j DROP

Tự động chặn nhiều IP từ file danh sách

Tạo file banned_IPs.cfg (mỗi dòng 1 IP/CIDR):

122.174.12.228
129.122.10.23
111.154.84.130
192.168.1.0/24

Script banned_IPs.sh:

#!/bin/bash
# Đọc từng dòng từ file, bỏ qua dòng trống và comment
while IFS= read -r ip || [[ -n "$ip" ]]; do
  [[ -z "$ip" || "$ip" =~ ^# ]] && continue
  iptables -I INPUT -s "$ip" -j DROP
done < banned_IPs.cfg

Cấp quyền và chạy:

# chmod +x banned_IPs.sh
# ./banned_IPs.sh

Xem danh sách rule đã chặn

# iptables -L INPUT -n -v --line-numbers | grep DROP

Xóa rule chặn (unban)

# iptables -D INPUT -s 122.174.12.228 -j DROP
# Hoặc xóa theo số dòng:
# iptables -L INPUT --line-numbers
# iptables -D INPUT 5

Lưu rule vĩnh viễn

# Debian/Ubuntu: iptables-save > /etc/iptables/rules.v4  (cần iptables-persistent)
# RHEL/CentOS: service iptables save  hoặc iptables-save > /etc/sysconfig/iptables

Giải pháp tự động hóa hiện đại (Khuyến khích)

  • fail2ban: Tự đọc log (SSH, Apache, Nginx, Postfix...), chặn IP vi phạm qua iptables/nftables. Cài: sudo apt install fail2ban.
  • CrowdSec: Threat intelligence cộng đồng, agent nhẹ, quyết định chặn tập trung.
  • UFW (Uncomplicated Firewall): Frontend dễ dùng cho iptables: ufw deny from 1.2.3.4.
  • nftables: Thay thế iptables (Linux 3.13+), cú pháp thống nhất, hiệu năng tốt hơn.