Intro:
Náhodou mám několik útoků od konkrétních hostitelů, kterým jsem se rozhodl zablokovat přístup na server. Zde je návod, jak jsem to udělal pomocí skriptu, který smaže a znovu načte celý řetězec iptables CHAIN na základě souboru obsahujícího seznam IP/rozsahů.
POSTUP:
Vytvořte soubor s názvem blacklist.txt s jednou IP/rozsahem na řádek ve stejném adresáři jako skript.
např.14.141.107.206
23.180.0.0/14
37.59.34.120
46.140.157.157
46.218.35.59
47.74.0.40
51.15.56.170
59.62.0.0/15
59.63.188.3
61.177.172.60
Skript, který se má spustit při spouštění#!/bin/bash
# Tiny firewall protecting rpcbind (port 111)
scriptdir=$(dirname $(readlink -f $0))
blacklist="$scriptdir/blacklist.txt"
# Load the blacklists
HOSTS="$(cat $blacklist | egrep -v '^$|#')"
# Delete the existing custom chain
/sbin/iptables --flush BLACKLIST
/sbin/iptables -X BLACKLIST
/sbin/iptables -t filter -D INPUT -j BLACKLIST
# Create the BLACKLIST Chain and jump
/sbin/iptables -N BLACKLIST
/sbin/iptables -t filter -I INPUT -j BLACKLIST
# Fill-in the BLACKLIST Chain with rejected hosts list
for host in $HOSTS ; do
/sbin/iptables -A BLACKLIST -s $host -p tcp -j DROP
done
# Return from Blacklist
/sbin/iptables -A BLACKLIST -j RETURN
#eof
Poznámka: iptables si bude stěžovat na následující chyby. Nebojte se, stále bude dělat správnou práci.iptables: Too many links.
iptables: Chain already exists.