사용중인 서버는 Ubuntu 10.10입니다. 보안을 유지하기 위해 서버가 클라이언트에 보내는 배너를 편집하려고합니다.
포트 22에서 호스트로 텔넷으로 연결하면 실행중인 SSH의 정확한 버전 (SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu4)을 알려줍니다. 상황은 MySQL 및 Cyrus와 동일합니다.
어떤 제안? 적어도 SSH의 경우?
감사
사용중인 서버는 Ubuntu 10.10입니다. 보안을 유지하기 위해 서버가 클라이언트에 보내는 배너를 편집하려고합니다.
포트 22에서 호스트로 텔넷으로 연결하면 실행중인 SSH의 정확한 버전 (SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu4)을 알려줍니다. 상황은 MySQL 및 Cyrus와 동일합니다.
어떤 제안? 적어도 SSH의 경우?
감사
답변:
거의 보편적으로 식별 배너는 컴파일 된 코드의 일부이며이를 변경하거나 억제하는 구성 옵션이 없습니다. 해당 소프트웨어를 다시 컴파일해야합니다.
SSH 데몬의 버전 번호를 숨기는 것은 엄청나게 어려운 일이지만 Linux 버전을 쉽게 숨길 수 있습니다 (Debian-3ubuntu4)
다음 줄을 추가하십시오 /etc/ssh/sshd_config
DebianBanner no
SSH 데몬을 다시 시작하십시오. /etc/init.d/ssh restart
또는service ssh restart
그것들을 숨기면 서버가 보안되지 않습니다. 시스템에서 실행중인 것을 지문으로 인식하는 더 많은 방법이 있습니다. 특히 SSH의 경우 버전 알림은 프로토콜의 일부이며 필수입니다.
실제로 버전 알림을 변경할 수 없다고 확신합니다.
sshd를 보호하는 가장 좋은 방법은 다음과 같습니다.
처음 세 개는 / etc / sshd_config를 수정하여 수행 할 수 있습니다.
네 번째는 사용중인 방화벽 소프트웨어에 따라 다릅니다.
위에서 말했듯이 버전 번호 변경은
내가 제안하는 것은 Port Knocking을 구현하는 것입니다. 서버에서 실행중인 모든 것을 숨기는 것은 매우 간단한 기술입니다.
다음은 좋은 구현입니다. http://www.zeroflux.org/projects/knock
이것은 '비밀 노크'를 아는 사람들에게만 SSH를 열기 위해 서버 (다른 번호)에서 구현 한 방법입니다.
[openSSH]
sequence = 300,4000,32
seq_timeout = 5
command = /opencloseport.sh %IP% 2305
tcpflags = syn
이렇게하면 3 개의 SYN 패킷이 올바른 순서로 수신되어야하는 5 초의 창이 나타납니다. 서로 멀고 순차적이지 않은 포트를 선택하십시오. 그렇게하면 포트 캐너가 우연히 포트를 열 수 없습니다. 이러한 포트는 iptables로 열 필요가 없습니다.
내가 부르는 스크립트는 이것입니다. IP가 SYN- 패킷을 전송하기 위해 5 초 동안 특정 포트를 엽니 다.
#!/bin/bash
/sbin/iptables -I INPUT -s $1 -p tcp --dport $2 -j ACCEPT
sleep 5
/sbin/iptables -D INPUT -s $1 -p tcp --dport $2 -j ACCEPT
SYN- 패킷을 전송하는 것은 정말 어려울 수 있으므로 스크립트를 사용하여 서버의 SSH에 연결합니다.
#!/bin/bash
knock $1 $2
knock $1 $3
knock $1 $4
ssh $5@$1 -p $6
(여기서 무슨 일이 일어나고 있는지는 분명합니다 ...)
연결이 완료되면 포트를 닫을 수 있습니다. 힌트 : 키 인증을 사용하십시오. 그렇지 않으면 비밀번호를 빠르게 입력해야합니다.