Защищаем SSH

Идея проста: имеется 4 таблицы. 3 промежуточных и одна в которой хранятся заблокированные адреса. Все таблицы динамические. Адрес по мере подключения добавляется в каждую таблицу по очереди. У нас 3 промежуточных таблицы, адреса в которых хранятся по одной минуте. Таким образом получается, что если в течение одной минуты с одного и того же адреса будут произведены более 3-х попыток подключения, адрес попадает в самую главную таблицу, 4-ю. Адреса там в моем случае хранятся 30 минут. Если кому не хватает - можно больше :)

На мой взгляд это элегантно и красиво! Жаль, не моя идея :)

add action=drop chain=input dst-port=22 protocol=tcp src-address-list=ssh_blacklist
 
add action=add-src-to-address-list address-list=ssh_blacklist address-list-timeout=30m chain=input \
    connection-state=new dst-port=22 protocol=tcp src-address-list=ssh_stage3
 
add action=add-src-to-address-list address-list=ssh_stage3 address-list-timeout=1m chain=input \
    connection-state=new dst-port=22 protocol=tcp src-address-list=ssh_stage2
 
add action=add-src-to-address-list address-list=ssh_stage2 address-list-timeout=1m chain=input \
    connection-state=new dst-port=22 protocol=tcp src-address-list=ssh_stage1
 
add action=add-src-to-address-list address-list=ssh_stage1 address-list-timeout=1m chain=input \
    connection-state=new dst-port=22 protocol=tcp
 
add action=accept chain=input connection-state=new dst-port=22 protocol=tcp