Борьба со спамом средствами IPFW

 

Пришла мне тут идея отправлять все левые, по мнению мэйлера, айпишнеги прямиком в IPFW, чтобы как-то
уменьшить (платный) трафик почтового канала. То есть, файрвол получает списаг леваков и режет их уже
на первом пакете, не подпуская к мэйлеру и вообще никуда.
Решение:

 

# touch /usr/local/etc/postfix/bad-smtp.sh

# chmod 777 /usr/local/etc/postfix/bad-smtp.sh

# ee /usr/local/etc/postfix/bad-smtp.sh

 

#!/bin/sh

#

 

/bin/rm /tmp/bad-smtp

/usr/bin/touch /tmp/bad-smtp

nn=$(/sbin/ipfw table 20 list | /usr/bin/grep -c ".*")

dt=$(date "+%d/%m/%Y %H:%M:%S")

/usr/bin/touch /var/log/bad-ipfw.log

/bin/echo $dt $nn >>/var/log/bad-ipfw.log # это просто лог, для первичного анализа

if (/bin/test $nn -gt 16384) # не знаю, каков лимит таблицы IPFW, но думаю так нормально

then # если превысили 16384 то чистим таблицу и юзаем плюсом вчерашний лог

    /sbin/ipfw table 20 flush

    /usr/bin/grep -J -o -s "NOQUEUE: reject:.*\[...*\]:" /var/log/maillog.0.bz2 |

        /usr/bin/grep -o -s -E  "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" >>/tmp/bad-smtp

fi # выделяем отброшенные мейлером IP из его лога

/usr/bin/grep -o -s "NOQUEUE: reject:.*\[...*\]:" /var/log/maillog |

    /usr/bin/grep -o -s -E "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" >>/tmp/bad-smtp

/usr/bin/sort -u /tmp/bad-smtp >/tmp/bad-smtp-sorted # исключаем дубликаты

/bin/echo "#!/bin/sh" >/usr/local/etc/postfix/bad-ipfw.sh # создаем временный командный файл

/bin/echo "#" >>/usr/local/etc/postfix/bad-ipfw.sh

/bin/echo "" >>/usr/local/etc/postfix/bad-ipfw.sh

/usr/bin/sed '/192\.168\.0\.*/d' /tmp/bad-smtp-sorted >/tmp/bad-smtp-sorted2 # локальных не трогаем

/usr/bin/sed 's/^/\/sbin\/ipfw table 20 add /' /tmp/bad-smtp-sorted2   

    >>/usr/local/etc/postfix/bad-ipfw.sh

/bin/chmod 777 /usr/local/etc/postfix/bad-ipfw.sh

/bin/sh /usr/local/etc/postfix/bad-ipfw.sh # и запускаем его. IPFW сам отсеит дубликаты

 

Поставил это дело в крон.

 

# ee /etc/crontab

 

...

#minute hour mday month wday who  command

*/10    *    *    *     *    root /usr/local/etc/postfix/bad-smtp.sh

...

 


В начало

Сайт управляется системой uCoz