Блокировка ip из файла

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Вован
проходил мимо

Блокировка ip из файла

Непрочитанное сообщение Вован » 2011-10-07 14:23:59

Всем привет, требуется помощь в вопросе. Есть список ip который дополняется и хочется что бы при перезагрузке ipfw или шлюза в ipfw сразу добавлялось правило что бы из файла эти ip блочились.

Нашел в инете этот скрипт но он не отрабатывает ((((
PS Freebsd 7.4 + ipfw

ipfw table 1 flush
cat /etc/block1.txt | while read ip; do
# echo ipfw table 1 add $ip 1
ipfw table 1 add $ip 1
done

Привязка таблицы к правилу блокировки:
ipfw add 100 deny ip from "table(1)" to any via em1

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Re: Блокировка ip из файла

Непрочитанное сообщение Bayerische » 2011-10-07 14:28:30

Код: Выделить всё

cat /etc/ipfw/table_1.txt | { while read ip;
do
/sbin/ipfw table 1 add $ip;
done;
 }
cat /etc/ipfw/table_2.txt | { while read ip;
do
/sbin/ipfw table 2 add $ip;
done;
 }
cat /etc/ipfw/table_3.txt | { while read ip;
do
/sbin/ipfw table 3 add $ip;
done;
 }
У меня так. 3 таблицы, с разными категориями "засранцев". Заполняются тоже скриптами.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Блокировка ip из файла

Непрочитанное сообщение Alex Keda » 2011-10-07 14:55:43

Код: Выделить всё

srv0# cat /root/scripts/ipfw/ipfw.sh 
#!/bin/sh

# path
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
# бинариник файрволла
FwCMD="/sbin/ipfw -q"
# директория где живём
basedir="/root/scripts/ipfw"
# файлы локальных таблиц
basedir_local="/root/scripts/db"
# tmp file
tmp="/tmp/$$"

# файлы таблиц
table_list="`ls $basedir | grep table`"
table_list_local="`ls $basedir_local | grep table`"

# список портов
port_list="`ls $basedir | grep table | awk -F '.' '{print $2}'`"
port_list_local="`ls $basedir_local | grep table | awk -F '.' '{print $2}'`"

#echo $table_list


# отключаем файрволл
#${FwCMD} disable firewall

# скидываем правила
${FwCMD} flush

# разрешаем ходить самому на себя
${FwCMD} add allow all from me to me

# Запрещаем заблокированным хостам указанные порты - глобально
for port in $port_list
do
        # строим временный файл для загрузки парвил
        echo -n > $tmp.$port.global
        for ip in `cat $basedir/table.$port.txt | grep -v ^# | grep -v ^\$ | sort | uniq`
        do
                echo "table $port add $ip" >> $tmp.$port.global
        done
        # очищаем таблицу
        ${FwCMD} table $port flush
        # добавляем правило в файрволл
        ${FwCMD} add deny ip from "table($port)" to me $port
        # заполняем таблицу из временного файла
        ${FwCMD} $tmp.$port.global &
done

# Запрещаем заблокированным хостам указанные порты - локально
for port in $port_list_local
do
        # добавляем правило в файрволл - если такой таблицы нет локально
        if test -f $basedir/table.$port.txt
        then
                # есть
        else
                ${FwCMD} table $port flush
                ${FwCMD} add deny ip from "table($port)" to me $port
        fi
        # строим временный файл для загрузки прaвил
        echo -n > $tmp.$port.local
        for ip in `cat $basedir_local/table.$port.txt | grep -v ^# | grep -v ^\$ | sort | uniq`
        do
                echo "table $port add $ip" >> $tmp.$port.local
        done
        # заполняем таблицу из временного файла
        ${FwCMD} $tmp.$port.local &
done


# Запрет X-сканирования:
${FwCMD} add reject log tcp from any to any tcpflags fin, syn, rst, psh, ack, urg
# Запрет N-сканирования:
${FwCMD} add reject log tcp from any to any tcpflags !fin, !syn, !rst, !psh, !ack, !urg
# Запрет FIN-сканирования:
${FwCMD} add reject log tcp from any to any not established tcpflags fin
# Защита от спуфинга
${FwCMD} add deny log ip from any to any not verrevpath in

# прикрываем memcached снаружи
${FwCMD} add deny tcp from not me to me 11211
${FwCMD} add deny udp from not me to me 11211

# temporary - because change IP
#if [ `hostname -s` = "srv7" ]
#then
#       ${FwCMD} add fwd 91.227.16.17,80 tcp from any to 77.73.29.17 80
#fi
#if [ `hostname -s` = "srv9" ]
#then
#       ${FwCMD} add fwd 91.227.16.19,80 tcp from any to 77.73.29.19 80
#fi
#if [ `hostname -s` = "srv2" ]
#then
#       ${FwCMD} add fwd 91.227.16.12,80 tcp from any to 77.73.29.12 80
#fi
#if [ `hostname -s` = "srv8" ]
#then
#       ${FwCMD} add fwd 91.227.16.18,80 tcp from any to 77.73.29.18 80
#fi
#if [ `hostname -s` = "srv1" ]
#then
#       ${FwCMD} add fwd 91.227.16.11,80 tcp from any to 77.73.29.11 80
#fi

# Ограничиваем кол-во подключений с одного IP
${FwCMD} add allow tcp from any to me 21 setup limit src-addr 8
${FwCMD} add allow tcp from any to me 80 setup limit src-addr 32
${FwCMD} add allow tcp from any to me 443 setup limit src-addr 16

if [ "`hostname -s`" != "srv0" ]
then
        # limit all ports
        ${FwCMD} add allow tcp from any to me setup limit src-addr 32
        # ограничиваем число одновременных соединений наружу с сервера на 25 порт других
        # серверов, для всех кроме юзера mailnull
        ${FwCMD} add allow log logamount 100000 tcp from me to not me 25 not uid mailnull setup limit src-addr 1
else
        # unlimit connects to mysql
        ${FwCMD} add allow tcp from any to me not 3306 setup limit src-addr 32
        ${FwCMD} add allow tcp from any to me 3306 setup limit src-addr 50
fi

# added by lissyara 2009-10-04 in 01:44
${FwCMD} add allow tcp from any to any
${FwCMD} add allow udp from any to any
${FwCMD} add allow all from any to any

# включаем файрволл
${FwCMD} enable firewall
/sbin/sysctl net.inet.ip.fw.enable=1

# удаляем врменный файл
sleep 5 && rm -f $tmp.* &
# удаляем кору, если она есть
rm -f ipfw.core
очень сожалею что максимальный номер таблицы ограничен 127 =((
было бы колоссально удобно....
а так - подумываю что надо писать файлс соответсвиями, если понадобится номер порта больше 127
Убей их всех! Бог потом рассортирует...

Вован
проходил мимо

Re: Блокировка ip из файла

Непрочитанное сообщение Вован » 2011-10-07 15:14:58

Bayerische
что то не катит твой вариант, я добавляю ip потом запускаю скрипт но с того ip я все равно могу пинговать свой сервак что считаю скрипт не отработал

Вован
проходил мимо

Re: Блокировка ip из файла

Непрочитанное сообщение Вован » 2011-10-07 18:38:34

Ау, люди, неужели все так плохо???? :sorry: :sorry: :sorry: :sorry:

Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Re: Блокировка ip из файла

Непрочитанное сообщение Bayerische » 2011-10-07 20:18:41

Вован
Отрывок скрипта, что я привёл, лишь заполняет таблицу нужными значениями из файла. По поводу правил фаервола вопрос должен быть совсем в другом ключе, я его даже не касался.

Вован
проходил мимо

Re: Блокировка ip из файла

Непрочитанное сообщение Вован » 2011-10-07 22:16:02

Bayerische
Расскажи пожалуйста подробно что нужно сделать. Потому как я еще пока нуб в этих вопросах и только всему учусь ((((

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Блокировка ip из файла

Непрочитанное сообщение Alex Keda » 2011-10-07 22:49:53

изучение, чтоит начать с хандбука, мануалов, изучения чужих скриптов

а ждать пока вам всё разжуют - можно бесконечно
Убей их всех! Бог потом рассортирует...