Не дозволяйте SSH рекламувати свій номер версії


13

Сервер, яким я користуюся, є Ubuntu 10.10. Для забезпечення безпеки я хочу відредагувати банер, який сервер надсилає клієнту.

Якщо я звертаюся по телефону до свого хоста на порт 22, він повідомляє мені точну версію SSH, яку я запускаю (SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu4). Така ж ситуація і з MySQL та Cyrus.

Будь-які пропозиції? Принаймні для SSH?

Дякую


5
Я сподіваюся, що ви також усвідомлюєте, що потрібно більше, ніж просто видалити ці банери, щоб забезпечити безпеку вашого сервера.
Бен Пілбров

10
Ця інформація значною мірою не має значення, боти спробують хаки, які працюють на більш старій версії незалежно від того, яку інформацію про версію надає ваш сервер. Ворожі користувачі, які зловмисно атакують ваш сервер, - це найменша стурбованість; недбалі користувачі, як правило, набагато небезпечніші.
Chris S

Бен, я думаю, я знаю, про що я прошу. І я знаю, як захистити сервер NIX-сервера. Кріс, ридання в темряві теж добре. Незалежно від фронт, iptables fail2bans тощо
Lerikun

поки ви знаєте, що це одна з багатьох речей, це добре. Я не хотів, щоб ти пішов, зробивши це, думаючи, що твоя система надто безпечна, ось і все.
Бен Пілбров

Як підкреслив Auticracy, я хочу принаймні приховати "Debian-3ubuntu4".
Лерикун

Відповіді:


17

Практично повсюдно ідентифікаційні банери є частиною складеного коду і не мають параметрів конфігурації для їх зміни чи придушення. Вам доведеться перекомпілювати ці програми.


Дякую. Тут єдина реальна корисна відповідь. Що з TCP Wrapper вони просто додають банер, але не приховують фактичної інформації?
Лерикун

6
Він не тільки складається, він також використовується клієнтами для визначення сумісних рівнів з'єднання.
Джеремі Бууз

32

Хоча приховано важко приховати номер версії вашого демона SSH, ви можете легко приховати версію Linux (Debian-3ubuntu4)

Додайте наступний рядок до /etc/ssh/sshd_config

DebianBanner no

І перезапустіть свій демон SSH: /etc/init.d/ssh restartабоservice ssh restart


7
Дякую, це прекрасно працює! Я погоджуюся, що видалення інформації про версію - це безпека через невідомість, і це може створити більше проблем, які вона вирішує. З Debian, однак, OpenSSH оголошує не тільки власну версію, але і версію та специфічний аромат операційної системи - тобто "SSH-2.0-OpenSSH_6.7p1 Raspbian-5 + deb8u3". Вітаємо, без будь-якої автентифікації ви тепер знаєте, що ви розмовляєте з RaspberryPi під керуванням Raspbian, і ваш наступний очевидний крок - це спробувати підключитися як "pi" з паролем за замовчуванням. ІМХО, це дає ШЛЯХУ багато інформації на першому побаченні.
Саустроп

Блискучий, один з найкращих прихованих дорогоцінних каменів, знайдених тут.
Rui F Ribeiro

19

Приховування тих не захистить ваш сервер. Існує ще багато способів відбитків пальців того, що працює у вашій системі. Зокрема, для SSH оголошення про версію є частиною протоколу та є обов'язковим.

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


Чим менше людей дізнаються про вашу систему ... Ви можете не погодитися. Що з іншими послугами? Я взагалі кажу про Cyrus (IMAP / POP3) та MySQL та інші. І якщо є два адміністратори - мені не потрібно дотримуватися протоколу ?!
Лерикун

3
@lerikun: Справа не в тому, щоб поділитися цим зі страшними хакерами. Йдеться про неможливість підключення SSH, оскільки він не знає, який протокол використовувати. SSHD має оголосити.
Satanicpuppy

9
"чим менше людей знає про вашу систему, тим краще". Так, звичайно, це твердження, яке звучить добре, але не робить багато, наприклад, "Якщо я виграю в лотерею, я збираюся ...". Безпека через невідомість є в кращому випадку безпекою.
Роб Моїр

1
Роберт, це твердження, яке дуже багато означає. Чому сейф знаходиться в темній кімнаті, де його ніхто не може побачити? ... Не зважай. Я не запитую, як захистити свій сервер. Я думаю, моє питання було зрозумілим. Так, Автократія, я хочу хоча б позбутися їх.
Лерикун

2
Що варто, Роберт Муар абсолютно правий.
Сірекс

8

Я впевнений, що ви фактично не можете змінити оголошення про версію.

Найкращі способи захистити sshd - це:

  1. Змініть номер порту за замовчуванням.
  2. Заборонити кореневі логотипи.
  3. Примусовий протокол 2 (якщо припустити, що це не робиться за замовчуванням).
  4. Білий список серверів, до яких дозволено SSH.

Перші три можна зробити, змінивши / etc / sshd_config

Четверта залежить від того, яке програмне забезпечення брандмауера ви використовуєте.


1/2/3 вже зроблено. з використанням сертифікатів без passowrds. Fail2ban (IMAP, POP, SMTP, VPN, WEB) та denyhosts (SSH) Питання стосується анонсів версій для інших служб.
Лерикун

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

Це дасть вікно на 5 секунд, в якому 3 SYN-пакети потрібно приймати в потрібному порядку. Вибирайте порти, які знаходяться далеко один від одного і не є послідовними. Таким чином, портал-сканер не може відкрити порт випадково. Ці порти не потрібно відкривати iptables.

Сценарій, який я називаю, саме цей. Він відкриває певний порт на 5 секунд для передачі IP-пакетів 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

Відправити SYN-пакети може бути справжнім болем, тому я використовую сценарій для підключення до SSH моїх серверів:

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

(Цілком очевидно, що тут відбувається ...)

Після встановлення з'єднання порт можна закрити. Підказка: Використовуйте аутентифікацію ключа. Інакше вам потрібно дуже швидко ввести свій пароль.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.