В зависимости от того, для чего нужен SSH, вы можете достичь этой цели (для нетривиальных) файлов, используя IPTables для завершения сеансов, если размер пакета больше, например, 1400 байт. Это означает, что интерактивный ssh в основном будет работать, но как только что-то попытается отправить 1500-байтовый пакет - как scp должен для файла, превышающего 1499 байт, при условии стандартного MTU 1500, он прервет соединение.
Это также предотвратит упомянутую вами атаку «кошачья».
К сожалению, это означает, что у вас могут возникнуть проблемы при редактировании некоторых файлов с помощью текстового редактора, если на экране нужно нарисовать более 1400 символов, или если вам нужно отследить длинный файл или сделать длинный список каталогов.
В простейшем случае команда для этого может выглядеть примерно так:
iptables -I OUTPUT -p tcp --dport 22 -m length --length 1400:0xffff -j DROP
Мы можем сделать эту работу лучше, комбинируя проверки длины пакета с ipt_recent, так что вы разрешаете ограниченное количество пакетов, превышающее 1400 байт в течение установленного периода времени (скажем, 8 пакетов за 5 секунд) - это позволит пакетам до 12 КБ проскальзывать через, но может дать вам интерактивность, которая вам понадобится для редактирования файлов и т. д. Вы, конечно, можете настроить количество пакетов.
Это может выглядеть примерно так
iptables -I OUTPUT -p tcp --dport 22 -m length --length 1400:0xffff \
-m recent --name noscp --rdest --set
iptables -I OUTPUT -p tcp --dport 22 -m length --length 1400:0xffff \
-m recent --name noscp --rdest --update --seconds 5 --hitcount 8 \
-j REJECT --reject-with tcp-reset
Приведенные выше примеры правил защищают только от scp-загрузок, таких как scp myfile.data remote.host:~
. Для дополнительной защиты от таких загрузок, как Scp scp remote.host:~/myfile.data /local/path
, повторите приведенные выше правила, но замените их --dport
на--sport
.
Хитрый хакер может обойти эти ограничения, установив MTU менее 1400 на своем компьютере (или принудительно установив mtu или подобное). Кроме того, хотя вы не можете ограничить это для определенных пользователей, вы можете ограничить это по IP, изменив соответствующие строки iptables !!
Ура, Дэвид Го