Навіщо змінювати порт ssh за замовчуванням? [зачинено]


Відповіді:


65

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

Якщо ваш сервер буде якимсь спільним хостом, а не просто обслуговує потреби ваших проектів, використання нестандартного порту може бути болем, оскільки вам доведеться пояснювати це своїм користувачам знову і знову і знову і знову коли вони забувають, а їхні клієнтські програми не підключаються до порту 22!

Інша можлива проблема з SSH на нестандартному порту - це якщо ви стикаєтесь із клієнтом із обмежувальним набором фільтрів, який не може підключитися до вашого користувальницького порту, оскільки їх фільтр дозволяє лише, наприклад, порти 22, 53, 80 і 443 - це місце для нових вихідних з'єднань. Це нечасто, але, безумовно, нечувано. У подібному питанні деякі провайдери можуть бачити зашифрований трафік на порту, відмінному від тих, де зазвичай очікується (порт 443 або HTTPS, 22 для SSH тощо) як спроба приховати з'єднання P2P та дросель (або блок) з'єднання незручним чином.

Я особисто зберігаю SSH на стандартному порту для зручності. Поки вживаються звичайні заходи безпеки (чітка політика щодо паролів / ключів, обмеження кореневих логінів, ...), це не повинно турбуватися, і проблема росту файлів журналу, коли ви потрапили в грубу атаку, може бути зменшена за допомогою таких інструментів як fial2ban тимчасово блокувати хости, які надають занадто багато поганих наборів облікових даних автентифікації за певний проміжок часу.

Який би порт ви не вибрали, якщо ви відійдете від 22, переконайтеся, що він нижчий за 1024. У більшості налаштувань, подібних Unix у конфігурації за замовчуванням, лише порт (або користувачі кореневої групи) можуть слухати на портах нижче 1024, але будь-який користувач може слухати на вищих портах. Запуск SSH на більш високому порту збільшує ймовірність того, що шахрайський (або зламаний) користувач вдається зірвати ваш демон SSH та замінити його своїм або проксі-сервером.


Я єдиний користувач цього сервера. Дякуємо за роз’яснення проблеми 1024+. Я б використав порт 48xxx, якби обрав. У будь-якому випадку я все ще не розумію, корисно це чи ні = /
динамічний

16
+1 для> 1024 біт.
MattC

26

Це проста (але на диво ефективна) форма безпеки через неясність .

Якщо ваш SSH-сервер не знаходиться на порту 22, набагато рідше їх знайдуть ті, хто сканує весь Інтернет, шукаючи слабкі паролі в облікових записах за замовчуванням. Якщо ви скануєте всю мережу, ви не можете дозволити собі перевірити всі 64 000 можливих портів, щоб знайти SSH-сервер.

Однак якщо хтось активно націлює на вас конкретно, це не приносить користі, оскільки просте одноразове nmapсканування виявить порт, на якому він фактично працює.


3
"перевірити всі 64k можливі порти" ... Запуск SSH в будь-якому порту вище 1023 просто неправильно. Це робить систему більш вразливою, ніж залишає її в своєму порту за замовчуванням.
Джуліано

3
@Juliano - поясніть, будь ласка. Тільки тому, що ви повинні мати root для прослуховування на привілейованому порту, це не робить (AFAIK) небезпечним запуск на непривілейований порт.
Альнітак

4
До речі, це не безпека через незрозумілість, інакше вам також доведеться викликати автентифікацію паролів. Безпека через незрозумілість - це коли реалізація не розкривається. Тут реалізація чітко вказана (це "я змінив порт обслуговування"), а секрет ("який порт?") Все ще є секретним.
Джуліано

5
@John - насправді я бачу точку @ Juliano. Це не робить демона SSH по суті не менш захищеним, але в загальному випадку, що працює на непривілейованому порту, це анулює нормальне припущення, що root запустив демон. Отже, якщо ви зможете якось зупинити цей демон (наприклад, за допомогою DoSing it), ви можете створити власний фальшивий демон на його місці, не потребуючи кореневого подвигу. Цей підроблений демон може потім захопити достатню кількість деталей, щоб дозволити подальші подвиги.
Альнітак

2
@John, це правда - це все ще вимагає, щоб зловмисник мав достатній доступ, щоб самі почати новий демон. Ключовим моментом є те, що їм більше не потрібен кореневий доступ для його запуску.
Альнітак

21

Щоб справді уникнути грубих нападів, завжди важливо дотримуватися деяких кроків:

  • Встановіть denyhosts або fail2ban
  • Обмежте кількість з'єднань на секунду на ssh-порту
  • Змінити ssh-порт
  • Заборонено вхід у систему
  • Увімкніть автентифікацію за допомогою ключа замість пароля

11
Здається, хороший список, за винятком частини зміни порту, з якою я дійсно не згоден, це занадто багато незрозумілості. Сучасний сканер портів все одно знайде його протягом кількох секунд? (і багато мереж не дозволяють
вивільнити

1
Обмеження порту обмежує обмеження грубої сили, що перевіряє наявність ssh на порту за замовчуванням, добре, якщо атака є більш серйозною, лише в цьому випадку зловмисник може здійснити сканування портів дір у вашій мережі / хостах.
Алі Мезгані

1
Насправді, я думаю, що за гарним брандмауером, якщо ви постійно оновлюватимете свої послуги та зміните налаштування за замовчуванням, ви можете бути захищеними від атак зловмисних людей. і може бути не від подвигів 0
днів

2
Використання denyhosts / fail2ban пом'якшує необхідність перемикання портів або необхідності використання ключів. Якщо ви не дозволяєте паролі, тоді немає сенсу використовувати denyhosts / fail2ban або змінювати порти.
Джеремі L

1
Використання denyhosts / fail2ban не обов'язково пом'якшує необхідність додаткових заходів безпеки. Сенс безпеки полягає у створенні якомога більшої кількості дорожніх блоків для користувачів, які намагаються обійти безпеку. Звичайно, вам, мабуть, не потрібно міняти порт з 22 на 2222, але, скажімо, приходить інший адміністратор і знову вмикає пароль ... у вас все ще буде кілька інших невдач швидкості. Кожен перелічений вище крок отримує адмін відсотків, близький до неможливості 100% безпеки.
Патрік Р

12

Так, це корисно, оскільки це просто допомагає уникнути всіх грубих атак та допомагає зберігати журнали чіткими :)

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

Не дозволяючи входити в корінь ssh та змінювати номер порту, можливо, щось на кшталт fail2ban, і ви повинні бути золотими. додайте iptables для гарної міри та постійно інформуйте вас, і у вас не повинно виникнути жодних проблем.


2
+1 за "збереження журналів ясними"
Lekensteyn

3
Але подивіться на відповідь Девіда Спіллета, щоб знати, чому порт 1291 (більший за 1024) може бути небезпечним.
Конерак

Якщо ви збираєтесь порадити використовувати непривілейований порт через 2 роки після багатьох інших, кращих відповідей - можливо, підготуйте кращу причину, ніж «Я бачив, як це роблять компанії». Я бачив, як компанії роблять багато речей. Мені рідко хочеться наслідувати їхній приклад.
підкреслити_29

11

Використання нестандартного порту ssh вимагатиме більше пояснень та документації та відповіді на електронні листи "я не можу ввійти".

Я вважаю наступні переваги запуску sshd на нестандартному порту важливішими, ніж проблеми, які він створює:

  • 99,9999% жорстоких атак виконуються ботами, які шукають лише порт 22 і ніколи не витрачають часу на пошук нестандартного порту. Брутальні атаки та контрзаходи, такі як denyhosts або fail2ban, споживають ресурси, які ви заощадите, просто запустивши ssh-сервер на нестандартному порту.
  • Ви позбудетесь усіх марних звітів про ботів, які намагаються проникнути у вашу систему. Якщо в звіті про невдалий вхід відображається будь-який IP, швидше за все, це людина.

Більше того, якщо ви хочете бути справді неприємними, ви завжди можете запустити підроблений sshd (з DenyUsers * ) на стандартному порту 22, тоді як ваш звичайний sshd працює на порту 54321. Це запевнить вас, що всі боти та зловмисники бажають назавжди спробуйте увійти в службу, яка заперечує всі входи, оскільки ніхто ніколи не задумається намагатися знайти вашу справжню службу sshd.

Мої 2 копійки.


1
Це може призвести до ще більше дзвінків за підтримку.
Бред Гілберт

3
Це правда, але підвищена безпека виходить ціною. :)
Народжений, щоб їхати

11

Робити це з будь-якої причини "безпеки" - неправдиво. Це найкращий приклад безпеки через невідомість, яка не є безпекою.

Якщо ви хочете, щоб ваші журнали були трохи світлішими та чистішими, то так, це корисно, оскільки у вас не вийде стільки спроб збивання портів / скрипт-kiddy bruteforce.


1
Так. Коли я мав ssh на порт 22, у мене було> 20000 невдалих спроб пароля, що відображаються в моїх журналах на день. Що означало, що я отримую електронний лист із попередженням про безпеку щодня. У мене вимкнено автентифікацію пароля - у вас повинен був бути власний приватний ключ для входу, - тому я не хвилювався за те, щоб хтось потрапив, але я скоріше отримав би повідомлення з попередженнями про безпеку лише тоді, коли щось справжнє відбувається.
jdege

10

Я б запустив ssh на стандартний порт і використовував щось на кшталт fail2ban або denyhosts, щоб обмежити кількість атак на словник.

Інший варіант - відключити вхід із паролем altogheter і дозволити входити в систему лише за допомогою ssh-ключів.


8

Тому що там багато поганих людей, які сканують усі IP-адреси сервера на наявність відкритих портів, намагаючись використати. У мене протягом усього дня були атаки молотом на мій порт SSH, поки я не перемістив його на інший порт і на IP-адресу, яка більше не була пов'язана з жодним із моїх веб-сайтів.


7

Це корисно тим, що скрипт-боти, які намагаються атакувати жорстокі дії пароля, зазвичай зосереджуються на порту 22, тому зміна портів зазвичай відкидає їх. Вам потрібно буде врівноважувати значення пом'якшення цього ризику з болем налаштування ssh-клієнтів для підключення до нестандартного порту (правда, не дуже багато, якщо у вас не так багато користувачів, що підключаються).

Крім того, ви можете пом'якшити грубу силу ризику, вимкнувши аутентифікацію пароля та вимагаючи автентифікації ключа RSA.

Зазвичай я не змінюю порт на SSHD, тому не можу запропонувати інше число, але перевірте загальновживаний список портів, щоб знайти інше число (тобто той, який не використовується чимось іншим, і таким чином може бути сканований) .


6

Я завжди міняю свій SSHd, щоб використовувати порт 2222, кожен, кому потрібно буде потрапити на мої сервери, знає це, і це не секрет. Здійснюючи це, немає абсолютно ніякого приросту безпеки (якщо тільки хакер не є абсолютним дебілом).

Єдину користь, яку я отримую від цього, є те, що в журналі auth немає мільйона невдалих спроб входу для 'root', 'alice', 'bob', 'sally', 'admin' тощо.


5

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

На додаток до цього, я завжди відключаю кореневу реєстрацію та автентифікацію пароля, і як останній крок, я використовую fail2ban, щоб позбутися цих дратівливих повідомлень у syslog. У Debian / Ubuntu це так само просто, як і введення тексту aptitude install fail2ban. Конфігурація за замовчуванням працює досить добре, але я зазвичай налаштовую деякі параметри на більш обмежувальні, маючи більший час заборони (принаймні один день) і лише 2 невдалі спроби аутентифікації як тригер для заборони.


4

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


не кажучи вже про те, що сканер портів спробує і інші порти.
Джим Девіл

4

Якщо ви відключите вхід пароля на свій сервер (що настійно рекомендується), то міняти порт SSH абсолютно марно. Відключивши вхід до пароля (і вимагаючи автентифікації на основі ключа), ви виключаєте можливість грубої спроби пароля, тому нічого не отримуєте, вдаючись до номерів портів.

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


Якщо ви / абсолютно марний / абсолютно марний для безпеки /, я погодився б. Однак зміна порту корисна для того, щоб не вносити шум в журнал аутентифікації.
Chris S

"та потребує автентифікації на основі ключа"? що це
динамічний

1
@ yes123, SSH може використовувати пари публічно-приватних ключів для автентифікації користувача замість пароля. Вони також можуть бути захищені паролем, і, таким чином, пропонується двофакторна автентифікація (щось ви знаєте = пароль; щось у вас = файл ключа). Якщо ви реалізуєте це, ви можете відключити вхід із паролем (таким чином, хто знає ваш локальний пароль, не може увійти з файлом ключа та паролем ключового файлу). Паролі відносно небезпечні порівняно з клавішами, в мільйони разів простішою грубою силою, ніж пари клавіш (хоча все ще важко). Ознайомтеся man ssh-keygenз великою кількістю інформації.
Chris S

@ yes123, різні сторінки, пов’язані з ssh (sshd, sshd_config, ssh, ssh_config) корисні для читання. Цей документ виглядає як хороший підручник з аутентифікації відкритого ключа з ssh.
larsks

2

Незважаючи на те, що виглядає як типовий "захист від незрозумілості", я вважаю, що це має сенс, оскільки сканування всіх можливих портів (~ 64k) - це значно затратний час, ніж лише один із них.

Але можу додати, що «стукання порту» набагато краще.


1

Не відповідь, але занадто довго для коментаря, тому я зроблю це CW.

Я деякий час думав над цим і прийшов до висновку, що багато правди в тому, що говорить Джуліано в коментарях до відповіді Альнітака. Тим не менш, я вважаю, що запуск SSH на порт 22 просто надто легко запускати проти нього будь-які атаки.

Щоб вирішити цю проблему, я запускаю свої внутрішні SSH-сервери на порт 22 і використовую брандмауер, щоб перенести високий порт до 22 на цільових машинах. Це дає певну безпеку через неясність, зберігаючи безпеку низького порту, як зазначав Джуліано.

Безпека через невідомість - це не принцип, на який я зазвичай підписуюся, і часто вказується, що просте сканування портів дозволить виявити цільовий порт, що зробить незрозумілість нікчемною. Щоб вирішити цю проблему, мої брандмауэры (Smoothwall Express), як на роботі, так і вдома, використовуйте сценарій під назвою Guardian Active Response, який викликається сповіщеннями Snort. Зі спостереження я можу вам сказати, що коли ви потрапляєте на більше ніж 3 різні порти з одного джерела, ваші пакети падають до заданого часу скидання. Це робить досить важким і надзвичайно трудомістким запуск сканування портів, що робить незрозумілість насправді щось варте. Це насправді змусило мене закрити стільки разів у минулому, що я встановив виключення для моєї джерельної (домашньої чи офісної) IP-адреси.


Гарна ідея з портом вперед, Джон! Я думаю, ми обоє чомусь навчились :)
Альнітак

1

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

Тут я думаю про дві речі. Зміна порту захищає від автоматизованих атак. Це про це, але це велика частина середнього трафіку атаки там ... автоматизовані сценарії сканування мереж. Якщо ви зміните порт за замовчуванням, ці атаки повинні відпасти нанівець. Тож це має сенс у цьому плані. Але це не робить нічого проти направленої атаки, оскільки зловмисник може просто сканувати з Nessus або NMAP, щоб визначити, який порт (и) ви використовуєте, якщо у вас є спеціальний маленький друг, який вас досить ненавидить.

По-друге, якщо ви використовуєте схожі на UNIX сервери, ви можете встановити утиліту типу Denyhosts для припинення атак. Якщо ви встановите denyhosts, він відстежує наявність помилкових спроб входу, а після спроб (якщо ви визначите кількість) невдалих спроб заборонить IP протягом періоду часу, який ви вказали. Denyhosts також може поспілкуватися з іншими хостами denyhost та передавати списки заборон, тому якщо зловмисник заблокується із системи Linux Fred Fred в Монтані, ваша система також отримає цей IP для заборони. Дуже корисно, поки ваші користувачі пам’ятають свої паролі.

Все залежить від сценаріїв використання. Скільки у вас програм, які є "болем у дупі" щодо зміни порту підключення для SSH / SCP (і якщо вони цього не дозволяють або не заподіюють біль, вам дійсно потрібно розглянути можливість зміни постачальників). Якщо це просто потенційний страх, я б сказав, що це не проблема. І це ваш начальник, просячи щось не зовсім дурне, оскільки багато сисадмінів перевертають порт SSH (дещо лунає від людей, які ненавидять все, що пахне навіть безпекою через незрозумілість ... але це насправді скорочує чіткий фоновий шум від автоматизованого сканування.)

Зникла - зміна порту блокує автоматизовані сценарії та більшість поганого трафіку. Не зупинять спрямованих нападників. Спробуйте також встановити автоматизовану утиліту для заборони. Безпека в шарах не зашкодить вам при правильному виконанні та зміні портів допомагає більше, ніж шкодить у більшості ситуацій.


1

Я працюю SSH на порту> 1024 вже більше 5 років. З тих пір я не бачу жодної спроби портатичного сканування у своєму журналі журналу (крім мого власного). Є мої сервери, які я адмініструю, які працюють за допомогою порту> 1024.

Багато серверів SSH, які працюють на порту> 1024, мають власні веб-сайти, які є досить популярними.

Якщо сервер SSH працює в моїй власній компанії, можливо, я вже розмістив тут IP-адресу цього сервера, щоб ви, хлопці, могли спробувати зламати сервер. На жаль, сервер SSH не є моїм власним. ;-)

Але є й інші речі, які вам доведеться налаштувати, щоб зробити це безпечним. SSH> 1024 одних було б недостатньо. Номер порту не повинен бути в / etc / services, повинен використовувати переадресацію портів (наприклад, порт 1124-> 22), прямий доступ до Root повинен бути відключений та інше.

Отже, якщо ви хочете сперечатися, краще запустити SSH на порт> 1024 протягом декількох років.

p / s: 1124 - це не мій порт SSH. Ха-ха.


0

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


0

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


0

Зміна вашого порту ssh - безглузда вправа, яка купує вам лише обмежену безпеку. Вам краще просто відключити автентифікацію пароля, що виключає ризик спроб пароля з грубою силою і покладатися виключно на аутентифікацію на основі ключа ssh. Якщо ваше середовище вимагає автентифікації пароля, прийміть якийсь двофакторний механізм, наприклад, SecurID або Wikid.

І те, і інше дає вам реальне підвищення безпеки, тоді як зміна ssh-порта створює лише ілюзію безпеки.


0

Це практично POV: я працював відкрито видимими приватними серверами ssh більше чотирьох років зі зміненим портом SSH і в мене не було жодної спроби сканування паролем. Заради цього QA я щойно включив 22 на один з них на один день. Як результат, мене сканували приблизно кожні 10 хвилин із частотою спроби пароля близько 5 в секунду. Більше того, "сканувати дітей" також шукають сервери з певними вразливими можливостями OpenSSH.

Напевно, це безпека через невідомість, яка не допомагає, якщо у вас є ворог.


-3

Це чудово працює, незалежно від скуголення натовпу "безпека через неясність".

Нерозумні кролики, ВСЕ безпека - це безпека через неясність. Тільки тому, що ви вважаєте, що незрозумілий криптопротокол Z [вимагає комбінації зразків ДНК, спільних ключів та неможливого фактичного введення людьми паролів] насправді безпечний, це не робить цього так. Правда полягає в тому, що будь-який захід безпеки покладається на ймовірності та припущення з боку користувачів. Шкода для вас, якщо я знаю, як використати це припущення, але це так.

У будь-якому випадку,

Ми робимо це роками, поряд з a) обмеженням швидкості спроб з'єднання (однак, я не знаю, як ми це встановили, щось у ssh config), і b) скриптом, який забороняє будь-якому хосту виконувати атаку словника з більш ніж X неправильних здогадів за Y хвилини. Ми забороняємо хосту здійснювати з'єднання протягом певного часу, і це полегшує адаптацію до топології мінливих мереж.

Якщо ваші паролі досить складні, і вони можуть зробити лише 3 спроби за 15 хвилин, боятися не багато. Не так вже й важко стежити за розподіленими атаками - ми зазвичай порівнюємо по підмережі та ip, щоб виключати подібні речі.

Нарешті, все, що вам потрібно, - це секретний метод білки, щоб дозволити з'єднання з вашим портом, змінивши правила f / w. Це може бути все, що завгодно ... smtp, web, магічні запити dns. Такі речі, як SecurID або Wikid, просто передають більше інформації третім особам. І не запускайте мене на захищені сертифікати через третіх осіб.


2
-1, ти, здається, не розумієш, що таке незрозумілість ... Зробити щось не очевидне - це не те саме, що поставити замок на нього. Хоча це правда, що жодна безпека не є абсолютною, але існують певні відмінності, і накопичена трифакторна автентифікація з незрозумілістю нікому не допомагає.
Chris S

1
Вибач, Кріс, це вантажна культова релігія. Можливо, ви не можете вибрати замок, і, таким чином, думаєте, що наявність одного з них робить вас безпечним, але всі замки можна вибрати. Подумайте поза межами: У багатьох випадках зробити щось "не очевидне" може бути кращим за використання блокування. Ваша модель / уявлення про безпеку схожі на те, щоб залишити ваш ноутбук у заблокованому автомобілі із встановленим сигналом тривоги - один твікер зі скелею, а ваш ноутбук вже немає. Але, можливо, це не твікер, а хтось із 0-денним подвигом і часом на вбивство ... О, дивіться! У Кріса є "безпечна" і цілком видима ціль! Непрозорість - ДУЖЕ важлива частина безпеки.
випадковий джой

Вибачте, але ваші порівняння та логіка просто не витримують. Я знаю, як підібрати замки, швидше їх зрізати, розбити вікно, обійти. Кожен захід безпеки потребує певного часу та зусиль, необхідних для його подолання; незрозумілість займає невелику кількість часу та зусиль у порядку хвилин до години. Справжня безпека, як-от спроби паролів з обмеженням швидкості, вимагає, щоб отримання пароля забирала значну кількість часу. Ця значна невідповідність у часі полягає в різниці між "підробленою" безпекою та "реальною"; незрозумілість падає в першу.
Chris S
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.