SSH 버전 숨기기


0

ssh를 통해 서버에 연결할 때 tcpdump를 수행했습니다. 내가 볼 첫 번째 것은 :

SSH-2.0-OpenSSH_5.3

서버가 ssh 버전을 보내지 않도록 할 수 있습니까?

답변:


2

소스 코드를 다시 컴파일하지 않으면 안됩니다.

서버와 클라이언트 간의 호환성을 협상하는 데 사용됩니다.

여기 에 설명 되어 있고 완전성을 위해 재현 된 방법이 있지만 소프트웨어를 업데이트 할 때마다 반복해야하므로 권장하지 않습니다.

  • 파일 /usr/sbin/sshd을에 복사하십시오 /tmp.

    # cp /usr/sbin/sshd /tmp
    
  • strings명령을 사용하여 텍스트에서 OpenSSH의 위치를 ​​찾으십시오 . 출력에 SSH-2.0-OpenSSH_5.x표시된 버전이므로 텍스트를 찾으십시오 telnet.

    # cd /tmp
    # strings -t d -a -n 7 sshd | grep -i ssh-2
    521008 OpenSSH-2.0*,OpenSSH-2.1*,OpenSSH_2.1*,OpenSSH_2.2*
    
  • dd명령을 사용하여 위 출력에서 ​​521008 라인을 제거하십시오 .

    # dd if=./sshd bs=1 skip=521008 count=11 | od -A n -c
    11+0 records in
    11+0 records out
       O   p   e   n   S   S   H   -   2   .   0
    11 bytes (11 B) copied, 0.000208606 s, 52.7 kB/s
    
    # dd if=./sshd bs=1 count=521008 of=sshd.1
    521008+0 records in
    521008+0 records out
    521008 bytes (521 kB) copied, 1.46733 s, 355 kB/s
    
    # dd if=./sshd bs=1 skip=521008 count=11 of=sshd.2
    11+0 records in
    11+0 records out
    11 bytes (11 B) copied, 0.00032878 s, 33.5 kB/s
    
    # dd if=./sshd bs=1 skip=521008 count=999999999 of=sshd.3
    131808+0 records in
    131808+0 records out
    131808 bytes (132 kB) copied, 0.368016 s, 358 kB/s
    

    이제 OpenSSH_5.x가 잘리고 sshd.2 파일로 복사됩니다.

  • od 명령을 사용하여 sshd.2 파일의 내용을 확인하십시오.

    # od -A n -c sshd.2
    O   p   e   n   S   S   H   _   2   .   0
    
  • "ItsHidden"이라는 텍스트를 쓰고 sshd.2이전과 이후의 파일 크기 변경을 확인하십시오.

    # ls -l sshd.2 -rw-r--r-- 1 root root 11 May  6 14:11 sshd.2 
    # print -n ItsHidden > sshd.2 
    # ls -l sshd.2 -rw-r--r-- 1 root root 11 May  6 14:12 sshd.2
    
  • 위의 모든 sshd 파일을 sshd.new에 결합하십시오.

    # cat sshd.* > sshd.new
    
  • 실행 권한 sshd.new를 부여하고 sshd 바이너리를 sshd.new로 바꾸십시오.

    # chmod 755 ./sshd.new
    # cp /usr/sbin/sshd /usr/sbin/sshd.bak
    # rm /usr/sbin/sshd
    # cp /tmp/sshd.new /usr/sbin/sshd
    
  • sshd 서비스를 다시 시작하고 telnet 명령으로 결과를 테스트하십시오.

    # service sshd stop
    # ps aux | grep -i sshd
    # kill -9 <pid_sshd>
    # service sshd restart
    # telnet localhost 22
    

그러나 매우 우아하거나 유지 관리 가능한 솔루션은 아닙니다.


0

더 빠른 방법, 조심하면 ssh에서 작동합니다.

먼저 700 개의 루트 소유 실행 파일 bash 파일을 만듭니다. 나는 그것을 test.sh라고 불렀다. 내용:

#!/bin/bash
sleep 10
service sshd stop
sleep 10
sed -i.bak.$(date +%F.%s) 's/OpenSSH_5.3/Blocked_9.9/g' /usr/sbin/sshd
sleep 10
service sshd start

기본적으로 : 10 초 동안 잠자고 ssh 데몬을 중지하고 10 초 동안 닫고 sed를 사용하여 버전 문자열을 바꾸고 백업하는 동안 백업하십시오. 10 초 더 잠든 다음 sshd 서비스를 시작하십시오. service sshd stop 및 service sshd start 명령은 시스템에 대한 일부 사용자 정의가 필요할 수 있습니다 (예 : "service sshd stop"대신 "systemctrl stop sshd.service"일 수 있음). 원하는 버전 문자열을 지정해야합니다. 내 테스트는 OpenSSH 5.3을 사용하는 CentOS 6 상자를 사용했습니다. 이를 통해 ssh 세션에서 백그라운드 데몬으로 호출 할 수 있습니다. 즉각 종료해야합니다. 따라서 (루트처럼) 다음과 같이 호출하십시오.

nohup ./test.sh & exit 0

그리고 첨부 된 세션이 없는지 확인하십시오 (있는 경우 sshd 실행 파일이 사용 중이므로 편집하지 않습니다). 그런 다음 조금 기다렸다가 다시 연결해보십시오.

다음을 통해 작동하는지 테스트 할 수 있습니다.

 echo "Hello" | nc [Server IP here] 22

버전 문자열도 가져옵니다.

물론 스크립트로 업데이트 후 호출하여 신속하게 차단을 다시 수행 할 수 있습니다. 버전 문자열이 처음에있는 이유 때문에이 방법은 권장되지 않지만 작동해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.