wordpress brute force protection
New Wordpress auth protection View larger

Wordpress wp-login.php brute force protection

Wordpress auth protection

Wordpress wp-login.php brute force protection

More details

More info

De multe ori se intampla ca un adolescent mai rebel sau mai tampicutz de fel , in loc sa se duca la munca sa-si castige existenta, cauta pe net tot felul de programe gen brute force si incepe sa lovesca in site-uri pe platforma gen wordpress , prestashop , joomla , etc.

Sunt multe pluginuri pentru asa ceva , dar pentru cei care detin serverul personal pot scrie un guardian care sa urmareasca in jurnale in tim real acest comportament , si sa baneze ip direct in iptables dupa 3 incercari de login in interval de 1 minut, sau dupa caz

In situatia mea jurnalele se duc in other_hosts , dupa caz se poate altera.

Detectia se face pe criteriul ca un ip nu are de ce sa acceseze cu GET sau POST fisierul /wp-login.php de 3 ori intr-un minut decat daca nu stie password sau incearca brute force.

se poate scrie si un fisier de exceptii pe care sa le ignore cum ar fi  (192.168.5.20.   127.0.0.1)  samd

la linia grep "GET /wp-login.php" se poate adauga orice login din alte platforme , bineinteles cu oarece modificari suplimentare , si atunci poate deveni o platforma universala anti brute force

Din pacate , scriptul  citeste cam des jurnalul ceea ce implica o oarece caldura suplimentara , pe viitor voi utiliza inotify

pentru citirea other_hosts.

Ca acest script sa functioneze , trebuie creat la start un chain si un jump in iptables

Eu prefer sa nu fac iptables-save , ci sa reload tabela mea personala la fiecare reboot si anume

in /etc/rc.local scriem inainte de exit 0

sudo iptables -N wpress_login;sudo iptables -t filter -A INPUT -j wpress_login
cd /path_to_script/  ; ./guard.sh & # start script backgrounded

#!/bin/bash
# Creation by gabriel@linux-romania.com

if [ "$(ls firewalled)" == "" ] ;then echo "" >firewalled
fi

sudo ./rebuild_firewall.sh

function flush_da_shit
{
bann=$(echo $ip | sed 's/.* //g')
echo "banned "$bann
sudo iptables -A wpress_login  -s $bann -j DROP
echo "Subject: "$(date '+%Y_%m_%d') WPress Server Guardian > warn.mail
echo "" >>warn.mail
echo "WordPress Guardian by linux-romania.com" >> warn.mail
echo "WP guardian has banned  "$bann" for a very long time" >> warn.mail
/usr/sbin/sendmail  -v address@domain.com < warn.mail
}

while true
do
grep "GET /wp-login.php" /var/log/apache2/other_vhosts_access.log | tail -n 50 > /dev/shm/last_apache
grep "POST /wp-login.php" /var/log/apache2/other_vhosts_access.log | tail -n 50 >> /dev/shm/last_apache
cut  -d ' ' -f1-3 /dev/shm/last_apache | sed 's/:/xxx/3;s/xxx.*]//1;s/\[//g' |sort > /dev/shm/wp-admin.list
for x in $(seq 1 $(cat /dev/shm/wp-admin.list | wc -l))
do
ip=$(sed ''$x'!d' /dev/shm/wp-admin.list )
if  [ "$(cat firewalled | grep "$(echo $ip | sed 's/.* //g')")" == "" ] && [ "$(grep "$ip" /dev/shm/wp-admin.list | wc -l)" -gt "3" ] ;then echo $ip >> firewalled ;flush_da_shit
fi
sleep 0.1
done

sleep 0.1
done

Reviews

Write a review

Wordpress auth protection

Wordpress auth protection

Wordpress wp-login.php brute force protection

Write a review