Блокировка IP-адреса на определенный период времени
Я создал php-скрипт, который обычно подсчитывает, сколько раз IP-адрес заходил на наш сайт более x раз в течение 1 минуты.
После этого я создал сценарий оболочки, который запретил этим ip-адресам доступ к порту 80, число которых превысило x.
что следующим образом:
BLOCKDB=/tmp/ip.blocked
IPS=$(grep -Ev "^#" $BLOCKDB)
echo IPS
for i in $IPS
do
/sbin/iptables -A INPUT -p tcp --destination-port 80 -s $i -j DROP
/sbin/service iptables save
/sbin/service iptables restart
echo "Block ALL INPUT from " $i " net DROPPED."
done
Что требуется
- Я хотел бы запретить эти IP-адреса на определенный период времени, скажем, на 1 день (86400 секунд) или более, после этого он снова откроет 80 порт для них?
- Как я могу отправить письмо самому себе, т.е. количество ip-адресов, заблокированных для доступа к foo.com?
- Есть ли способ улучшить мой скрипт, чтобы он считывал только те ip-адреса из /tmp/ip.blocked, которые не запрещены с помощью скрипта (iptables)?
Пожалуйста, порекомендуйте.
1 ответ
Обычный ответ - fail2ban. Возможно, вам придется немного его настроить, чтобы читать логи веб-доступа.