Tùy thuộc vào những gì SSH cần cho, bạn có thể đạt được mục tiêu này (đối với các tệp không tầm thường) bằng cách sử dụng IPTables để chấm dứt các phiên nếu kích thước gói lớn hơn, ví dụ 1400 byte. Điều này có nghĩa là ssh tương tác sẽ hoạt động chủ yếu, nhưng ngay khi có thứ gì đó cố gửi gói 1500 byte - giống như scp đối với tệp lớn hơn 1499 byte giả sử MTU chuẩn là 1500, nó sẽ chấm dứt kết nối.
Điều này cũng sẽ ngăn chặn cuộc tấn công "catter" mà bạn đề cập.
Thật không may, điều này có nghĩa là bạn có thể gặp sự cố khi chỉnh sửa một số tệp bằng trình soạn thảo văn bản, nếu màn hình cần vẽ nhiều hơn 1400 ký tự hoặc nếu bạn cần gửi một tệp dài hoặc liệt kê một thư mục dài.
Trong trường hợp đơn giản nhất, một lệnh để làm điều này có thể trông giống như
iptables -I OUTPUT -p tcp --dport 22 -m length --length 1400:0xffff -j DROP
Chúng tôi có thể làm cho công việc này tốt hơn bằng cách kết hợp kiểm tra độ dài gói với ipt_recent, để bạn cho phép số lượng gói hạn chế lớn hơn 1400 byte trong một khung thời gian đã đặt (giả sử 8 gói trên 5 giây) - điều này sẽ cho phép các gói lên đến 12k bị trượt thông qua, nhưng có thể cung cấp cho bạn khả năng tương tác mà bạn sẽ cần để chỉnh sửa các tệp, v.v ... Tất nhiên, bạn có thể điều chỉnh số lượng gói.
Cái này có thể trông giống như
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
Các ví dụ quy tắc ở trên chỉ bảo vệ chống lại tải lên scp như scp myfile.data remote.host:~
. Để bảo vệ chống lại tải xuống scp, chẳng hạn như scp remote.host:~/myfile.data /local/path
, lặp lại các quy tắc trên nhưng thay thế --dport
bằng --sport
.
Một hacker thông minh có thể khắc phục những hạn chế này bằng cách đặt MTU dưới 1400 trên máy của anh ta (hoặc buộc mtu hoặc tương tự). Ngoài ra, trong khi bạn không thể giới hạn điều này với một số người dùng nhất định, bạn có thể giới hạn nó bằng IP bằng cách sửa đổi các dòng iptables cho phù hợp !!
Chúc mừng, David Go