The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Блокировка отброшенных SMTP сервером IP адресов/подсетей."
Отправлено auto_tips, 20-Дек-07 10:48 
#!/bin/sh
#
#REJECTSPAMMERS v0.1b Lev Zabudkin. zabudkin@mail.ru
#
#Описание:
#   Данный скрипт аккумулирует (создаёт/пополняет) уникальный список IP адресов,
#   которые были отброшены SMTP сервером.
#   Скрипт создан с той целью, чтобы REJECT'ить в дальнейшем все пакеты с таких адресов.
#
#Действие:
#   После выполнения будут созданы файлы в папке указанной в SCRIPTDIR (см. ниже):
#   rejectspammers.run.iptables.block.byip.add             - Блокировать IP адреса
#   rejectspammers.run.iptables.block.byip.delete          - Убрать прежнюю блокировку IP адресов
#   rejectspammers.run.iptables.block.byip.subnet24.add    - Блокировать всю подсеть 255.255.255.0 IP адресов
#   rejectspammers.run.iptables.block.byip.subnet24.delete - Убрать прежнюю блокировку подсети 255.255.0.0
#   rejectspammers.run.iptables.block.byip.subnet16.add    - Блокировать всю подсеть 255.255.0.0 IP адресов
#   rejectspammers.run.iptables.block.byip.subnet16.delete - Убрать прежнюю блокировку подсети 255.0.0.0
#   rejectspammers.run.iptables.block.byip.subnet8.add     - Блокировать всю подсеть 255.0.0.0 IP адресов
#   rejectspammers.run.iptables.block.byip.subnet8.delete  - Убрать прежнюю блокировку подсети 255.0.0.0
#
# Соответственно для нужной блокировки запустите нужный файл.
#

#Создавать ли файлы с цепочками DELETE
MAKEDELETEOLD=yes

#Файл с логами SMTP сервера
MAILLOG=/var/log/maillog

#Каталог, в котором создавать скрипты iptables
SCRIPTDIR=/

#Временный каталог
TEMPDIR=/tmp


cat $MAILLOG | grep rejected >$TEMPDIR/rejectedspammers
awk '{user[tolower($10)]=$10} END {for(i in user) {print i}}' $TEMPDIR/rejectedspammers >$TEMPDIR/rejectedspammers.list
cat $TEMPDIR/rejectedspammers.list |cut -d '[' -f2|cut -d ']' -f1 | uniq >$TEMPDIR/rejectspammers.ips
awk --field-separator=. '{print "iptables -A INPUT -s "$1"."$2"."$3"."$4" -p tcp --dport 25 -j REJECT";}' \
   $TEMPDIR/rejectspammers.ips>>$SCRIPTDIR/rejectspammers.run.iptables.block.byip.add
awk --field-separator=. '{print "iptables -A INPUT -s "$1"."$2"."$3".".0/24" -p tcp --dport 25 -j REJECT";}' \
   $TEMPDIR/rejectspammers.ips>>$SCRIPTDIR/rejectspammers.run.iptables.block.bysubnet24.add
awk --field-separator=. '{print "iptables -A INPUT -s "$1"."$2".".0/16" -p tcp --dport 25 -j REJECT";}' \
   $TEMPDIR/rejectspammers.ips>>$SCRIPTDIR/rejectspammers.run.iptables.block.bysubnet16.add
awk --field-separator=. '{print "iptables -A INPUT -s "$1".".0/8" -p tcp --dport 25 -j REJECT";}' \
   $TEMPDIR/rejectspammers.ips>>$SCRIPTDIR/rejectspammers.run.iptables.block.bysubnet8.add
cat $SCRIPTDIR/rejectspammers.run.iptables.block.byip.add | sort | uniq \
   >$TEMPDIR/rejectspammers.run.iptables.block.byip.add.temp
cat $TEMPDIR/rejectspammers.run.iptables.block.byip.add.temp >$SCRIPTDIR/rejectspammers.run.iptables.block.byip.add
cat $SCRIPTDIR/rejectspammers.run.iptables.block.bysubnet24.add | sort | uniq \
   >$TEMPDIR/rejectspammers.run.iptables.block.bysubnet24.add.temp
cat $TEMPDIR/rejectspammers.run.iptables.block.bysubnet24.add.temp >$SCRIPTDIR/rejectspammers.run.iptables.block.bysubnet24.add
cat $SCRIPTDIR/rejectspammers.run.iptables.block.bysubnet16.add | sort | uniq \
   >$TEMPDIR/rejectspammers.run.iptables.block.bysubnet16.add.temp
cat $TEMPDIR/rejectspammers.run.iptables.block.bysubnet16.add.temp >$SCRIPTDIR/rejectspammers.run.iptables.block.bysubnet16.add
cat $SCRIPTDIR/rejectspammers.run.iptables.block.bysubnet8.add | sort | uniq \
   >$TEMPDIR/rejectspammers.run.iptables.block.bysubnet8.add.temp
cat $TEMPDIR/rejectspammers.run.iptables.block.bysubnet8.add.temp >$SCRIPTDIR/rejectspammers.run.iptables.block.bysubnet8.add


if [ "$MAKEDELETEOLD" == "yes" ]; then
awk --field-separator=. '{print "iptables -D INPUT -s "$1"."$2"."$3"."$4" -p tcp --dport 25 -j REJECT";}' \
   $TEMPDIR/rejectspammers.ips>>$SCRIPTDIR/rejectspammers.run.iptables.block.byip.delete
awk --field-separator=. '{print "iptables -D INPUT -s "$1"."$2"."$3".".0/24" -p tcp --dport 25 -j REJECT";}' \
   $TEMPDIR/rejectspammers.ips>>$SCRIPTDIR/rejectspammers.run.iptables.block.bysubnet24.delete
awk --field-separator=. '{print "iptables -D INPUT -s "$1"."$2".".0/16" -p tcp --dport 25 -j REJECT";}' \
   $TEMPDIR/rejectspammers.ips>>$SCRIPTDIR/rejectspammers.run.iptables.block.bysubnet16.delete
awk --field-separator=. '{print "iptables -D INPUT -s "$1".".0/8" -p tcp --dport 25 -j REJECT";}' \
   $TEMPDIR/rejectspammers.ips>>$SCRIPTDIR/rejectspammers.run.iptables.block.bysubnet8.delete
cat $SCRIPTDIR/rejectspammers.run.iptables.block.byip.delete | sort | uniq \
   >$TEMPDIR/rejectspammers.run.iptables.block.byip.delete.temp
cat $TEMPDIR/rejectspammers.run.iptables.block.byip.delete.temp >$SCRIPTDIR/rejectspammers.run.iptables.block.byip.delete
cat $SCRIPTDIR/rejectspammers.run.iptables.block.bysubnet24.delete | sort | uniq \
   >$TEMPDIR/rejectspammers.run.iptables.block.bysubnet24.delete.temp
cat $TEMPDIR/rejectspammers.run.iptables.block.bysubnet24.delete.temp >$SCRIPTDIR/rejectspammers.run.iptables.block.bysubnet24.delete
cat $SCRIPTDIR/rejectspammers.run.iptables.block.bysubnet16.delete | sort | uniq \
   >$TEMPDIR/rejectspammers.run.iptables.block.bysubnet16.delete.temp
cat $TEMPDIR/rejectspammers.run.iptables.block.bysubnet16.delete.temp >$SCRIPTDIR/rejectspammers.run.iptables.block.bysubnet16.delete
cat $SCRIPTDIR/rejectspammers.run.iptables.block.bysubnet8.delete | sort | uniq \
   >$TEMPDIR/rejectspammers.run.iptables.block.bysubnet8.delete.temp
cat $TEMPDIR/rejectspammers.run.iptables.block.bysubnet8.delete.temp >$SCRIPTDIR/rejectspammers.run.iptables.block.bysubnet8.delete
fi

chmod +0755 $SCRIPTDIR/rejectspammers.run.iptables.block.*


URL:
Обсуждается: https://www.opennet.ru/tips/info/1525.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру