SSH가 버전 번호를 알리지 못하도록 방지


13

사용중인 서버는 Ubuntu 10.10입니다. 보안을 유지하기 위해 서버가 클라이언트에 보내는 배너를 편집하려고합니다.

포트 22에서 호스트로 텔넷으로 연결하면 실행중인 SSH의 정확한 버전 (SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu4)을 알려줍니다. 상황은 MySQL 및 Cyrus와 동일합니다.

어떤 제안? 적어도 SSH의 경우?

감사


5
서버 보안을 위해 이러한 배너를 제거하는 것 이상의 작업이 필요하다는 점도 알고 싶습니다.
Ben Pilbrow

10
이 정보는 크게 관련이 없으며, 봇은 서버가 제공하는 버전 정보에 관계없이 이전 버전에서 작동하는 해킹을 시도합니다. 서버를 악의적으로 공격하는 악의적 인 사용자는 걱정할 필요가 없습니다. 부주의 한 사용자는 대개 훨씬 더 위험합니다.
Chris S

벤, 나는 내가 무엇을 요구하는지 알고 있다고 생각합니다. 그리고 NIX-Server 감사를 보호하는 방법을 알고 있습니다. 크리스, 어둠 속을 움켜 쥐는 것도 좋습니다.
코골이에

당신이 이것을 아는 한, 이것은 많은 일 중 하나입니다. 나는 당신의 시스템이 매우 안전하다고 생각한 것을 끝내고 싶지 않았습니다.
Ben Pilbrow

Auticracy가 지적했듯이 나는 적어도 "Debian-3ubuntu4"를 숨기고 싶다.
Lerikun

답변:


17

거의 보편적으로 식별 배너는 컴파일 된 코드의 일부이며이를 변경하거나 억제하는 구성 옵션이 없습니다. 해당 소프트웨어를 다시 컴파일해야합니다.


감사. 여기서 유일하게 유용한 답변입니다. TCP 래퍼는 배너를 추가하지만 실제 정보는 숨기지 않는 것은 무엇입니까?
Lerikun

6
이 파일은 컴파일 될뿐만 아니라 클라이언트가 호환 연결 레벨을 결정하는 데 사용됩니다.
Jeremy Bouse

32

SSH 데몬의 버전 번호를 숨기는 것은 엄청나게 어려운 일이지만 Linux 버전을 쉽게 숨길 수 있습니다 (Debian-3ubuntu4)

다음 줄을 추가하십시오 /etc/ssh/sshd_config

DebianBanner no

SSH 데몬을 다시 시작하십시오. /etc/init.d/ssh restart또는service ssh restart


7
고마워, 이것은 완벽하게 작동합니다! 버전 정보를 제거하면 모호한 부분이 보안이며 더 많은 문제가 발생할 수 있음에 동의합니다. 그러나 데비안에서는 OpenSSH가 자체 버전뿐만 아니라 운영 체제의 버전 및 특정 특징 (예 : "SSH-2.0-OpenSSH_6.7p1 Raspbian-5 + deb8u3")도 발표합니다. 어떤 종류의 인증도없이 축하합니다. 이제 Raspbian을 실행하는 RaspberryPi와 대화하고 있음을 알게되었으며 다음 단계는 기본 암호를 사용하여 "pi"로 연결하는 것입니다. IMHO 이것은 첫 데이트에서 많은 정보를 제공합니다.
Saustrup

여기에서 발견 된 최고의 숨겨진 보석 중 하나 인 Brilliant.
Rui F Ribeiro

19

그것들을 숨기면 서버가 보안되지 않습니다. 시스템에서 실행중인 것을 지문으로 인식하는 더 많은 방법이 있습니다. 특히 SSH의 경우 버전 알림은 프로토콜의 일부이며 필수입니다.

http://www.snailbook.com/faq/version-string.auto.html


더 적은 사람들이 당신의 시스템에 대해 알게됩니다 ... 당신은 동의하지 않을 수 있습니다. 다른 서비스는 어떻습니까? Cyrus (IMAP / POP3)와 MySQL 및 기타에 대해 일반적으로 이야기하고 있습니다. 그리고 두 명의 관리자가 있다면 프로토콜에 충실 할 필요가 없습니까?!
Lerikun

3
@lerikun : 무서운 해커와 공유하는 것이 아닙니다. 사용할 프로토콜을 모르기 때문에 SSH에 연결할 수 없습니다. SSHD가 발표해야합니다.
Satanicpuppy

9
"사람들이 시스템에 대해 더 잘 알지 못한다". 그렇습니다. "추첨에서 이길 경우 ..."와 같이 말이 좋지만 많이하지는 않는 말입니다. 모호성을 통한 보안은 최상의 보안입니다.
Rob Moir

1
로버트, 그것은 많은 것을 의미하는 진술입니다. 아무도 볼 수없는 어두운 방에 금고가있는 이유는 무엇입니까? ... 신경 쓰지 마. 서버 보안 방법을 묻지 않습니다. 내 질문이 분명하다고 생각합니다. 예 독재 정권 나는 적어도 그것들을 제거하고 싶습니다.
Lerikun

2
그 가치에 대해, 로버트 모아레는 완전히 옳습니다.
Sirex

8

실제로 버전 알림을 변경할 수 없다고 확신합니다.

sshd를 보호하는 가장 좋은 방법은 다음과 같습니다.

  1. 기본 포트 번호를 변경하십시오.
  2. 루트 로그온을 금지하십시오.
  3. 프로토콜 2를 강제 실행합니다 (기본적으로 수행되지 않은 것으로 가정).
  4. SSH가 허용 된 서버를 허용합니다.

처음 세 개는 / etc / sshd_config를 수정하여 수행 할 수 있습니다.

네 번째는 사용중인 방화벽 소프트웨어에 따라 다릅니다.


1/2/3 이미 완료되었습니다. 인증서를 사용하지 않습니다. Fail2ban (IMAP, POP, SMTP, VPN, WEB) 및 거부 호스트 (SSH) 다른 서비스의 버전 발표에 대한 질문입니다.
Lerikun

6

위에서 말했듯이 버전 번호 변경은

  1. 하기 어려운
  2. 모호함을 통한 보안
  3. 유연하지 않음

내가 제안하는 것은 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

(여기서 무슨 일이 일어나고 있는지는 분명합니다 ...)

연결이 완료되면 포트를 닫을 수 있습니다. 힌트 : 키 인증을 사용하십시오. 그렇지 않으면 비밀번호를 빠르게 입력해야합니다.

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