W zależności od tego, do czego potrzebny jest SSH, możesz być w stanie osiągnąć ten cel (w przypadku nietrywialnych) plików, używając IPTables do zakończenia sesji, jeśli rozmiar pakietu jest większy niż, powiedzmy 1400 bajtów. Oznacza to, że interaktywny ssh będzie w większości działał, ale jak tylko coś spróbuje wysłać pakiet 1500 bajtów - podobnie jak scp powinien dla pliku większego niż 1499 bajtów przy założeniu standardowej MTU 1500, przerwie połączenie.
Zapobiegnie to także wspomnianemu atakowi „catting”.
Niestety oznacza to, że możesz mieć problemy z edycją niektórych plików za pomocą edytora tekstu, jeśli ekran musi narysować więcej niż 1400 znaków, lub jeśli chcesz zakotwiczyć długi plik lub zrobić długą listę katalogów.
W najprostszym przypadku polecenie to może wyglądać podobnie
iptables -I OUTPUT -p tcp --dport 22 -m length --length 1400:0xffff -j DROP
Możemy usprawnić to działanie, łącząc sprawdzanie długości pakietów z ipt_recent, aby umożliwić ograniczoną liczbę pakietów większych niż 1400 bajtów w ustalonym czasie (powiedzmy 8 pakietów na 5 sekund) - to pozwoliłoby na przeskakiwanie pakietów do 12k przez, ale może zapewnić interaktywność potrzebną do edycji plików itp. Możesz oczywiście dostosować liczbę pakietów.
To może wyglądać mniej więcej tak
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
Powyższe przykłady reguł chronią tylko przed przesłaniem scp, takim jak scp myfile.data remote.host:~
. Aby dodatkowo zabezpieczyć się przed pobraniem SCP, np. scp remote.host:~/myfile.data /local/path
Powtórz powyższe zasady, ale zastąp --dport
je --sport
.
Klarowny haker może obejść te ograniczenia, ustawiając na swoim komputerze MTU na poziomie mniejszym niż 1400 (lub wymusza mtu lub podobny). Ponadto, chociaż nie możesz tego ograniczyć do niektórych użytkowników, możesz ograniczyć to przez IP, odpowiednio modyfikując linie iptables !!
Pozdrawiam, David Go