Это - округляющаяся проблема. Например, на одной из моих машин:
devtest:~# free -m
total used free shared buffers cached
Mem: 7881 2780 5100 0 26 2417
-/+ buffers/cache: 336 7545
Swap: 7632 0 7632
devtest:~# free -g
total used free shared buffers cached
Mem: 7 2 4 0 0 2
-/+ buffers/cache: 0 7
Swap: 7 0 7
7 881 мебибайт - на самом деле ~7.70 гибибайт, но free -g
округляет в меньшую сторону до 7, а не до 8. Аналогично существует ~4.98 гибибайта свободной памяти, но free -g
округляет это в меньшую сторону до 4 не до 5.
Общая память, о которой сообщают free
не включает память, к которой не может получить доступ ядро (в случае сервера выше должного к ограничениям чипсета, не позволяющим последнему блоку 8 ГБ, имеет использоваться, в некоторых случаях видеокарта машины может требовать некоторой RAM, если это не имеет своего собственного), и при этом это не сообщает о маленьком блоке RAM, в которую распаковано ядро при начальной загрузке (так на одном из меньших VMs на хосте, выше которого имеет 128M выделенный, свободный только сообщает о 126,616 K, 123 М (где это на самом деле больше похоже на 123,6 М), или 0 G) - таким образом, Вы никогда не будете рассматривать то же значение как свою физическую общую RAM в free -g
.
В Вашем случае free
видит 1 982,7 М или 1.94 G, которые это округляет в меньшую сторону до 1.
Просто добавьте следующее:
-A INPUT -p tcp --dport 2020 -m state --state NEW -j ACCEPT
... прямо после этих двух строк:
-A INPUT -p tcp --dport 2020 -m state --state NEW -m recent --set --name SSH
-A INPUT -p tcp --dport 2020 -m state --state NEW -m recent --update --seconds 120 --hitcount 8 --rttl --name SSH -j DROP
Кроме того, необходимо думать о задаче крона, которая уберет/proc/net/ipt_recent/SSH (ipt_recent может быть xt_recent на более новых платформах), время от времени, в случае, если Вы заблокированы.
Править: Ваше правило, заказывая взгляды, немного нечетные мне, на вашем месте, я пошел бы с чем-то вроде этого:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
# Loopback interface
-A INPUT -i lo -j ACCEPT
# ICMP traffic
-A INPUT -p icmp --icmp-type any -j ACCEPT
# Already established connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# SSH
-A INPUT -p tcp --dport 2020 -m state --state NEW -m recent --set --name SSH
-A INPUT -p tcp --dport 2020 -m state --state NEW -m recent --update --seconds 120 --hitcount 8 --rttl --name SSH -j DROP
-A INPUT -p tcp --dport 2020 -m state --state NEW -j ACCEPT
# Web services
-A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
-A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT
-A INPUT -p tcp --dport 8088 -m state --state NEW -j ACCEPT
# Reject everything else
-A INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT