Cegah SSH agar tidak mengiklankan nomor versinya


13

Server yang saya gunakan adalah Ubuntu 10.10. Untuk memastikan keamanan, saya ingin mengedit spanduk yang dikirim server ke klien.

Jika saya telnet ke host saya di port 22, ia memberi tahu saya versi SSH yang tepat yang saya jalankan (SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu4). Situasinya sama dengan MySQL dan Cyrus.

Ada saran? Setidaknya untuk SSH?

Terima kasih


5
Saya harap Anda juga menyadari bahwa lebih dari sekadar menghapus spanduk ini untuk memastikan server Anda aman.
Ben Pilbrow

10
Informasi itu sebagian besar tidak relevan, bot akan mencoba peretasan yang bekerja pada versi yang lebih lama terlepas dari informasi versi apa yang disediakan server Anda. Pengguna yang bermusuhan menyerang server Anda adalah yang paling tidak Anda khawatirkan; pengguna yang ceroboh biasanya jauh lebih berbahaya.
Chris S

Ben, saya pikir saya tahu apa yang saya minta. Dan saya tahu bagaimana melindungi NIX-Server terima kasih. Chris, meraba-raba dalam gelap juga bagus. Terlepas dari dengusan, iptables fail2bans dll.
Lerikun

selama Anda tahu ini adalah salah satu dari banyak hal yang harus dilakukan, tidak apa-apa. Saya tidak ingin Anda pergi karena berpikir bahwa sistem Anda sangat aman, itu saja.
Ben Pilbrow

Seperti yang ditunjukkan Auticracy, saya ingin setidaknya menyembunyikan "Debian-3ubuntu4".
Lerikun

Jawaban:


17

Hampir secara universal, mengidentifikasi spanduk adalah bagian dari kode yang dikompilasi dan tidak memiliki opsi konfigurasi untuk mengubah atau menekannya. Anda harus mengkompilasi ulang perangkat lunak tersebut.


Terima kasih. Satu-satunya jawaban yang sangat berguna di sini. Bagaimana dengan TCP Wrapper yang baru saja mereka tambahkan spanduk tetapi tidak menyembunyikan informasi aktual?
Lerikun

6
Tidak hanya dikompilasi, tetapi juga digunakan oleh klien untuk menentukan tingkat koneksi yang kompatibel.
Jeremy Bouse

32

Meskipun sangat sulit untuk menyembunyikan nomor versi daemon SSH Anda, Anda dapat dengan mudah menyembunyikan versi linux (Debian-3ubuntu4)

Tambahkan baris berikut ke /etc/ssh/sshd_config

DebianBanner no

Dan restart daemon SSH Anda: /etc/init.d/ssh restartatauservice ssh restart


7
Terima kasih, ini bekerja dengan sempurna! Saya setuju bahwa menghapus info versi adalah keamanan karena ketidakjelasan, dan mungkin menimbulkan lebih banyak masalah yang dipecahkan. Dengan Debian, OpenSSH tidak hanya mengumumkan versi sendiri, tetapi versi dan citarasa spesifik dari sistem operasi - yaitu "SSH-2.0-OpenSSH_6.7p1 Raspbian-5 + deb8u3". Selamat, tanpa otentikasi apa pun, Anda sekarang sadar bahwa Anda sedang berbicara dengan RaspberryPi yang menjalankan Raspbian, dan langkah Anda berikutnya yang jelas adalah mencoba terhubung sebagai "pi" dengan kata sandi default. IMHO ini memberikan WAY ke banyak info di kencan pertama.
Saustrup

Brilliant, salah satu permata tersembunyi terbaik yang ditemukan di sini.
Rui F Ribeiro

19

Menyembunyikan itu tidak akan mengamankan server Anda. Ada banyak lagi cara untuk sidik jari apa sistem Anda berjalan. Untuk SSH khususnya, pengumuman versi merupakan bagian dari protokol dan diperlukan.

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


Semakin sedikit orang yang mengetahui tentang sistem Anda ... Anda dapat tidak setuju. Bagaimana dengan layanan lain? Saya berbicara secara umum tentang Cyrus (IMAP / POP3) dan MySQL dan lainnya. Dan jika ada dua Admin - saya tidak perlu mematuhi protokol ?!
Lerikun

3
@lerikun: Ini bukan tentang berbagi dengan peretas yang menakutkan. Ini tentang SSH yang tidak dapat terhubung karena tidak tahu protokol apa yang digunakan. SSHD harus mengumumkan.
Satanicpuppy

9
"semakin sedikit orang yang tahu tentang sistem Anda, semakin baik". Ya tentu, itu pernyataan yang kedengarannya bagus tetapi tidak banyak membantu, seperti "Jika saya memenangkan lotre saya akan ...". Keamanan melalui ketidakjelasan adalah keamanan yang buruk.
Rob Moir

1
Robert, itu pernyataan yang sangat berarti. Mengapa brankas ada di ruangan gelap di mana tidak ada yang bisa melihatnya? ... Lupakan. Saya tidak bertanya bagaimana cara mengamankan server saya. Saya pikir pertanyaan saya jelas. Ya Autokrasi Saya ingin setidaknya menyingkirkan itu.
Lerikun

2
Untuk apa nilainya, robert moir sepenuhnya benar.
Sirex

8

Saya cukup yakin Anda tidak dapat benar-benar mengubah pengumuman versi.

Cara terbaik untuk mengamankan sshd adalah:

  1. Ubah nomor port default.
  2. Dilarang login root.
  3. Protokol paksa 2 (dengan anggapan bahwa itu tidak dilakukan secara default).
  4. Daftar putih server yang diizinkan masuk SSH.

Tiga yang pertama dapat dilakukan dengan memodifikasi /etc/sshd_config

Yang keempat tergantung pada perangkat lunak firewall mana yang Anda gunakan.


1/2/3 sudah selesai. menggunakan sertifikat no passowrds. Fail2ban (IMAP, POP, SMTP, VPN, WEB) dan denyhosts (SSH) Pertanyaannya adalah tentang pengumuman versi untuk layanan lain.
Lerikun

6

Seperti dikatakan di atas, mengubah nomor versi adalah

  1. Sulit dilakukan
  2. Keamanan melalui ketidakjelasan
  3. Tidak fleksibel

Apa yang saya sarankan adalah mengimplementasikan Port Knocking. Ini adalah teknik yang cukup sederhana untuk menyembunyikan apa pun yang berjalan di server Anda.

Berikut ini adalah implementasi yang baik: http://www.zeroflux.org/projects/knock

Ini adalah bagaimana saya menerapkannya di server saya (nomor lain) untuk membuka SSH hanya untuk orang-orang yang tahu 'ketukan rahasia':

[openSSH]
    sequence = 300,4000,32
    seq_timeout = 5
    command = /opencloseport.sh %IP% 2305
    tcpflags = syn

Ini akan memberikan jendela 5 detik di mana 3 paket SYN perlu diterima dalam urutan yang benar. Pilih port yang jauh dari satu sama lain dan tidak berurutan. Dengan begitu, portscanner tidak dapat membuka port secara tidak sengaja. Port-port ini tidak perlu dibuka oleh iptables.

Script yang saya panggil adalah yang ini. Ini membuka port tertentu selama 5 detik untuk IP yang mengirim paket-SYN.

#!/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

Sungguh susah sekali mengirim paket-paket SYN jadi saya menggunakan skrip untuk terhubung ke SSH server saya:

#!/bin/bash
knock $1 $2
knock $1 $3
knock $1 $4
ssh $5@$1 -p $6

(Cukup jelas apa yang terjadi di sini ...)

Setelah koneksi terjalin, port dapat ditutup. Petunjuk: Gunakan otentikasi-Kunci. Kalau tidak, Anda harus sangat cepat mengetikkan kata sandi.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.