[quote=Kettler]Тогда приходиться запускать снова firewall
И в чём проблема-то ещё раз говорю правил то не 10000.[/quote]
Для моих вещей это не подходит.
Да пару строк не особо много зато всё аккуратно. Чем делать это через полный firewall.
############## XHAMSTER.COM ################
iptables -A check_ip -d 88.208.24.47 -j DROP
iptables -A check_ip -d 88.208.24.43 -j DROP
iptables -A check_ip -d 88.208.24.44 -j DROP
iptables -A check_ip -d 88.208.24.45 -j DROP
############################################
############### VKONTAKTE.RU #################
iptables -A check_ip -d 87.240.188.253 -j DROP
iptables -A check_ip -d 87.240.188.248 -j DROP
iptables -A check_ip -d 93.186.224.242 -j DROP
iptables -A check_ip -d 93.186.224.243 -j DROP
iptables -A check_ip -d 87.240.188.249 -j DROP
iptables -A check_ip -d 87.240.188.250 -j DROP
iptables -A check_ip -d 87.240.188.252 -j DROP
iptables -A check_ip -d 87.240.188.254 -j DROP
iptables -A check_ip -d 93.186.224.240 -j DROP
iptables -A check_ip -d 93.186.224.241 -j DROP
##############################################
############## ODNOKLASSNIKI.RU ##############
iptables -A check_ip -d 217.20.144.66 -j DROP
iptables -A check_ip -d 217.20.144.146 -j DROP
iptables -A check_ip -d 217.20.144.162 -j DROP
iptables -A check_ip -d 217.20.144.178 -j DROP
iptables -A check_ip -d 217.20.144.194 -j DROP
iptables -A check_ip -d 217.20.144.210 -j DROP
iptables -A check_ip -d 217.20.144.226 -j DROP
iptables -A check_ip -d 217.20.144.242 -j DROP
iptables -A check_ip -d 217.20.145.36 -j DROP
iptables -A check_ip -d 217.20.145.50 -j DROP
iptables -A check_ip -d 217.20.145.66 -j DROP
iptables -A check_ip -d 217.20.145.98 -j DROP
iptables -A check_ip -d 217.20.145.158 -j DROP
iptables -A check_ip -d 217.20.145.206 -j DROP
iptables -A check_ip -d 217.20.149.164 -j DROP
iptables -A check_ip -d 217.20.149.179 -j DROP
iptables -A check_ip -d 217.20.144.2 -j DROP
iptables -A check_ip -d 217.20.144.19 -j DROP
iptables -A check_ip -d 217.20.144.34 -j DROP
iptables -A check_ip -d 217.20.144.50 -j DROP
##############################################
iptables -A check_ip -j RETURN[/console]
в firewall добавляем
iptables -N check_ip # Создаем цепь для соц сетей
# Здесь мы указываем что это первое правило в FORWARD если например зделать A то работать вообще не будет ибо обязательно как ниже!!!
#$lan ваша подсеть например 192.168.0.0/24
#$inet интерфейс в интернет
$lan=192.168.0.0/24
$inet=ppp999
iptables -I FORWARD 1 -s $lan -o $inet -j check_ip #отправляем на проверку на наличие запрещённых сетей
#Получаеться пакет попал в FORWARD и сразу на проверку в check_ip
Нижним скриптом берем айпи и загоем в таблицу check_ip
Скрипт будет таким.
#!/bin/bash
BLACKLIST="/var/blacklist.url"
n=1;
# Очищаем все старые на фиг ип
iptables -F check_ip
if [ -f $BLACKLIST ]; then
while read line
do
nslookup ${line} >> /tmp/nslookup.tmp;
done < $BLACKLIST
fi
if [ -f /var/blacklist.ip ] ;
then
cat /var/blacklist.ip | while read line
do
echo "${line}"
iptables -I check_ip $n -d ${line} -j DROP # дропаем
let n=n+1;
echo $n;
done
fi
# Тоже обязательно иначе нормалные пакеты не пойдут дальше
iptables -A check_ip -j RETURN #отправляем дальше на проверку
export BLACKLISTIP="/var/firewall/blacklist.ip"
# Проверка существования цепочки BLACKLIST_IP, если её нет - создаём.
# для удаления цепочки полностью iptables -X BLACKLIST_IP
if [ -z "`iptables -n -L | grep -i "chain BLACKLIST_IP"`" ]; then iptables -N BLACKLIST_IP; fi
# Сброс блокировок
iptables -F BLACKLIST_IP
# Погнали наши городских :)
if [ -f $BLACKLISTIP ] ;then cat $BLACKLISTIP | while read line; do echo -e "${line}";
iptables -A BLACKLIST_IP -d ${line} -m recent --set --name FUCKOFF -j DROP
iptables -A BLACKLIST_IP -j RETURN
Kettler, всё же советую преобразование url2ip сделать отдельным скриптом, то что у тебя - не годиться потому- что - выполняться может долго (из-за nslookup) - и в основной скрипт не запихнёшь.
Kettler, всё же советую преобразование url2ip сделать отдельным скриптом, то что у тебя - не годиться потому- что - выполняться может долго - и в основной скрипт не запихнёшь.
? разжуй
Точто моё это 2 скрипта 1 блок в основной firewall. А второй в cron
Источник пакета
Для фильтрации по источнику используется опция -s. Например запретим все входящие пакеты с узла 192.168.133.133:
text
iptables -A INPUT -s 192.168.133.133 -j DROP
Можно использовать доменное имя для указания адреса хоста. То есть:
text
iptables -A INPUT -s test.host.jp -j DROP
Также можно указать целую подсеть:
text
iptables -A INPUT -s 192.168.133.0/24 -j DROP
Также вы можете использовать отрицание (знак !). Например так - все пакеты с хостов отличных от 192.168.133.156 будут уничтожаться:
text
iptables -A INPUT ! -s 192.168.133.156 -j DROP
те. Не зря ли мы тут парсим nslookup? разве iptables по доменным именам сам этого не делает?
надо проверить вывод: iptables -L с доменным именем и с нашими выкрутасами сравнить.
# Очищаем все старые на фиг ип
if [ -f $BLACKLIST ]; then
while read line
do
nslookup ${line} >> /tmp/nslookup.tmp;
done < $BLACKLIST
fi
awk '/Address:/ {if($2=="192.168.1.77#53"){} else{print $2 > "/var/blacklist.ip" }}' /tmp/nslookup.tmp
if [ -f /var/blacklist.ip ] ; then
if [ ! -z "`iptables -n -L | grep -i "chain check_ip"`" ]; then
iptables -F check_ip;
echo "Цепочка создана"
iptables -I FORWARD 1 -s $lan -o $inet -j check_ip
cat /var/blacklist.ip | while read line
do
echo -e "${line}"
iptables -A check_ip -d "${line}" -j DROP
done
iptables -A check_ip -j RETURN
else
iptables -N check_ip
fi
fi[/console]