Залежно від того, для чого потрібен 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 remote.host:~/myfile.data /local/path
, повторіть наведені вище правила, але замініть --dport
на --sport
.
Хитрий хакер може обійти ці обмеження, встановивши MTU менше 1400 на своїй машині (або примушуючи mtu чи подібне). Крім того, хоча ви не можете обмежити це певними користувачами, ви можете обмежити його IP, змінивши рядки iptables відповідно до !!
Ура, Девід Гоу