Использование одной команды awk
:
awk -F' - |\"' 'tolower($7) ~ /bot|crawler/ && tolower($7) !~ /google|yahoo|bing|msn|ask|aol|duckduckgo/{system("sudo ufw deny from "$1" to any")}' access.log
Это отфильтрует только те записи, которые имеют bot
или crawler
в 7-м столбце (, что делает ваша первая команда grep
. Только если 7-й столбец не содержитgoogle|yahoo|bing|msn|ask|aol|duckduckgo
(то, что делает ваша вторая grep
команда ). В любой соответствующей строке будет выполнено sudo ufw deny from "$1" to any
в первом столбце. (Что делает ваша последняя awk
команда ).
Найден обходной путь с помощью IPTables
sudo iptables -I INPUT -d 192.168.100.0/24 -s 192.168.0.0/16 -j DROP
sudo iptables -I INPUT -s 192.168.100.0/24 -d 192.168.0.0/16 -j DROP
sudo iptables -I OUTPUT -d 192.168.100.0/24 -s 192.168.0.0/16 -j DROP
sudo iptables -I OUTPUT -s 192.168.100.0/24 -d 192.168.0.0/16 -j DROP
sudo iptables -I FORWARD -d 192.168.100.0/24 -s 192.168.0.0/16 -j DROP
sudo iptables -I FORWARD -s 192.168.100.0/24 -d 192.168.0.0/16 -j DROP
где 192.168.100.0/24 — это диапазон IP-адресов, которым вы хотите заблокировать доступ к локальной сети, в данном случае это те, которые назначены виртуальной машине. Обратите внимание, :они не сохраняются после перезагрузки, убедитесь, что вы сделали их постоянными.