add iptables script
							parent
							
								
									3532f2dd28
								
							
						
					
					
						commit
						4029ee8175
					
				@ -0,0 +1,49 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BACKUP_FILE="/root/iptables-backup-$(date +%F-%H%M%S).rules"
 | 
				
			||||||
 | 
					echo "[*] Backing up current iptables rules to $BACKUP_FILE"
 | 
				
			||||||
 | 
					iptables-save > "$BACKUP_FILE"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TEMP_DIR=$(mktemp -d)
 | 
				
			||||||
 | 
					declare -A TABLE_RULES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo "[*] Extracting rules by table..."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					current_table=""
 | 
				
			||||||
 | 
					while IFS= read -r line; do
 | 
				
			||||||
 | 
					    if [[ "$line" =~ ^\* ]]; then
 | 
				
			||||||
 | 
					    current_table="${line:1}"
 | 
				
			||||||
 | 
					    TABLE_RULES["$current_table"]="$TEMP_DIR/$current_table.rules"
 | 
				
			||||||
 | 
					    > "${TABLE_RULES[$current_table]}"
 | 
				
			||||||
 | 
					    elif [[ "$line" =~ ^-A ]]; then
 | 
				
			||||||
 | 
					    echo "$line" >> "${TABLE_RULES[$current_table]}"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					done < "$BACKUP_FILE"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for table in "${!TABLE_RULES[@]}"; do
 | 
				
			||||||
 | 
					    echo "[*] Processing table: $table"
 | 
				
			||||||
 | 
					    RULE_FILE="${TABLE_RULES[$table]}"
 | 
				
			||||||
 | 
					    DEDUPED=$(sort "$RULE_FILE" | uniq)
 | 
				
			||||||
 | 
					    DUPS=$(sort "$RULE_FILE" | uniq -d)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [[ -n "$DUPS" ]]; then
 | 
				
			||||||
 | 
					    echo "[!] Duplicate rules in $table:"
 | 
				
			||||||
 | 
					    echo "$DUPS"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo "[*] Flushing $table rules..."
 | 
				
			||||||
 | 
					    iptables -t "$table" -F
 | 
				
			||||||
 | 
					    iptables -t "$table" -X
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo "[*] Rebuilding $table rules..."
 | 
				
			||||||
 | 
					    while IFS= read -r rule; do
 | 
				
			||||||
 | 
					    echo "    → $rule"
 | 
				
			||||||
 | 
					    if ! eval "iptables -t $table $rule"; then
 | 
				
			||||||
 | 
					        echo "[!] Failed to apply: $rule"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    done <<< "$DEDUPED"
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					rm -rf "$TEMP_DIR"
 | 
				
			||||||
 | 
					echo "[+] iptables cleanup complete. Backup saved at: $BACKUP_FILE"
 | 
				
			||||||
					Loading…
					
					
				
		Reference in New Issue