Использование linux lastb
я обнаружил, что мой сервер атакован грубой силой с разных IP-адресов по всему миру! Я разработал сценарий для обнаружения злоумышленников методом перебора. lastb
и заблокировать их iptables
. Вот сценарий:
#!/bin/bash
cd /root/
windowSize=100
tresh=10
lastb | head -n $windowSize | awk '{print $3}' | uniq -c > .ips
nlines=`wc .ips -l | awk '{print $1}'`
END=`expr $nlines - 1 `
for i in `seq 0 $END`;
do
range=`expr $nlines - $i`
count=`tail .ips -n $range | head -n 1 | awk '{print $1}'`
if [ $count -gt $tresh ] ; then
IP=`tail .ips -n $range | head -n 1 | awk '{print $2}'`
if [ ! -z .blips ] ; then
touch .blips
fi ;
blocked=`cat .blips | grep $IP -c`
if [ $blocked = '0' ] ; then
echo blocking $IP
iptables -A INPUT -s $IP -j DROP
echo $IP >> .blips
fi ;
fi;
done
rm .ips
Может ли это вызвать какие-либо проблемы, если я буду запускать этот скрипт с помощью crond каждый час?
Да, вы не принимаете никаких мер для исключения IP-адресов, с которых вы подключаетесь к системе, чтобы вы могли заблокировать себя из системы.
Лучшее решение - установить fail2ban который широко используется для того, что вы пытаетесь сделать.
Предлагаемое решение отсутствует (или разумно) в том смысле, что оно не сохраняет IPTABLES, поэтому изменения, внесенные в IPTABLES, будут потеряны при следующей загрузке.
Вы должны сохранить свои заблокированные IP-адреса, зафиксировав их: / sbin / service iptables save
ИЗМЕНЕНИЕ выполнено / sbin / service iptables сохранить rm .ips
С другой стороны, поскольку система является автоматизированной, возможно, имеет смысл выполнить фиксацию вручную только после того, как вы увидите изменения в .blips.
DenyHosts или Fail2ban будут работать лучше, чем большинство самодельных пользовательских скриптов.