Bash скрипт для запрета IP-адресов из файла доступа - PullRequest
0 голосов
/ 27 марта 2020

Я пишу сценарий bash для сбора IP-адресов из файла apache2 access.log, сохранения их в массиве и проверки, существуют ли эти IP-адреса в iptable или нет, чтобы запретить их.

Я возобновляю что бан не идет хорошо, из-за IP не собраны хорошо:

 #/bin/bash/

BADWORDS=( '/etc/passwd' 'file' 'w00tw00t' 'fckeditor' 'ifconfig' )
# Store IPs
storeIPs=()
entries=${#BADWORDS[@]}

elements=$(($entries - 1))

for ((i=0; i<=$elements; i++))
do
setBadWord=${BADWORDS[$i]}

ch=$( cat /var/log/apache2/access.log | awk -F\" ' { print $1,$2 } ' | grep "$setBadWords" )
echo $ch >> spam.log

getIPs=$( cat spam.log | awk '{print $1}' )
echo "IP is $getIPs"

# Check if IP exists in he array
FOUND=`echo ${storeIPs[*]} | grep "$getIPs"`
returnElems=$?

if [ $returnElems  == "0" ]
then
echo "$getIPs exists"
else
echo "$getIPs NOT exists"
    storeIPs+=($getIPs)
fi

countIPs=${#storeIPs[@]}
echo "count stored $countIPs"

if [[ "$countIPs" -gt "0" ]]
then
    echo "Yes"
    chkIP=$( iptables -L --line | grep "$getIPs" )
    ipExists=$?

    if [[ $ipExists == "0" ]]
        then
iptables -I INPUT -s "$getIPs" -j DROP
    fi # end if [[ $ipExists == "0" ]]

fi # end if [[ "$countIPs" -gt "0" ]]

done # end for

Большое спасибо

...