Я нашел способ сделать это:
iptables -A INPUT -p tcp -i eth0 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp -i eth0 -m state --state NEW -m recent --update --seconds 30 --hitcount 20 -m limit --limit 1/m --limit-burst 1 -j LOG --log-prefix "Port Scan on INPUT: "
iptables -A FORWARD -p tcp -i eth0 -m state --state NEW -m recent --set
iptables -A FORWARD -p tcp -i eth0 -m state --state NEW -m recent --update --seconds 30 --hitcount 20 -m limit --limit 1/m --limit-burst 1 -j LOG --log-prefix "Port Scan on FORWARD: "
В основном я установил предел 1 минута после первого попадания по правилу.
cat *.sh > all.sh
объединит все файлы в один. Это немного нечисто, поскольку *.sh
также будет соответствовать all.sh
, если он уже существует, но перенаправление очистит all.sh
до того, как здесь запустится cat
.
Вы также можете просто написать один скрипт для получения всех остальных (вызовите егоincludeall.sh
):
for f in *.sh; do
if [ "$f" != "includeall.sh" ]; then
. "$f"
fi
done
Затем источник, который с . includeall.sh
. if
существует, чтобы избежать повторного -включения самого includeall
. Хотя было бы неплохо поместить скрипты a.sh
... z.sh
в отдельный каталог. Это сделало бы структуру каталогов чище и затруднило бы случайное получение неверных скриптов. for f in dir/*.sh; do. "$f"; done
в таком случае.