Похоже, вы хотите, чтобы он просто запускался с помощью Cron. Взгляните на Каковы права выполнения задания cron? но по сути просто скопируйте скрипт в одну из папок cron, например /etc/cron.daily
Я бы также рекомендовал удалить sudo как избыточный. Cron запустит его как root.
recent
Основываясь на идее @Tomasz, я создал правило в ufw и проверил результат в iptables. Кажется, ufw использует расширение recent
:
:LOG_REJECT - [0:0]
-A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -m recent --set
-A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -m recent --update --seconds 30 --hitcount 6 -j LOG_REJECT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A LOG_REJECT -m limit --limit 3/min -j LOG --log-prefix "[LIMITED SSH]"
-A LOG_REJECT -j REJECT --reject-with icmp-port-unreachable
limit
Что немного аккуратнее/проще:
:LOG_REJECT - [0:0]
-A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -m limit --limit 12/minute -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j LOG_REJECT
-A LOG_REJECT -m limit --limit 3/minute -j LOG --log-prefix "[LIMITED SSH]" --log-level 7
-A LOG_REJECT -j REJECT --reject-with icmp-port-unreachable
(Хотя я не уверен, что icmp-port-unreachable
является правильным сообщением об отклонении в данном случае.)
connlimit
...может быть, кто-нибудь еще добавит.:)
ufw
манипулирует iptables, поэтому, поскольку вы переходите с ufw, я думаю, вы можете захватить свои iptables и посмотреть, что там делает ufw.