Мій сервер постійно атакується [закрито]


32

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

Feb 14 04:07:20 foodwiz3 sshd[1264]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Feb 14 04:07:21 foodwiz3 sshd[1264]: reverse mapping checking getaddrinfo for coenamor.columbiansabbatical.com [23.249.167.223] failed - POSSIBLE BREAK-IN ATTEMPT!
Feb 14 04:07:21 foodwiz3 sshd[1264]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=23.249.167.223  user=root
Feb 14 04:07:23 foodwiz3 sshd[1264]: Failed password for root from 23.249.167.223 port 32997 ssh2
Feb 14 04:07:23 foodwiz3 sshd[1264]: Received disconnect from 23.249.167.223: 11: Bye Bye [preauth]
Feb 14 04:13:04 foodwiz3 sshd[1289]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Feb 14 04:13:05 foodwiz3 sshd[1289]: reverse mapping checking getaddrinfo for coenamor.columbiansabbatical.com [23.249.167.223] failed - POSSIBLE BREAK-IN ATTEMPT!
Feb 14 04:13:05 foodwiz3 sshd[1289]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=23.249.167.223  user=root
Feb 14 04:13:07 foodwiz3 sshd[1289]: Failed password for root from 23.249.167.223 port 41562 ssh2

Це щось досить нормальне, чи я повинен переживати / робити щось з цього приводу?


3
Спробуйте змінити номер порту і побачити, чи зберігається він. Якщо вони конкретно не націлені на вас, це, ймовірно, не буде.
goldilocks

13
Найкраще рішення - відключити автентифікацію пароля на SSH, оскільки це, безумовно, зупинить грубі атаки!
Віллем


3
@Willem - ні, відключення автентифікації пароля НЕ зупинить атаки. Це лише зробить їх невдалими (зловмисники не зрозуміють, що автентифікацію пароля було вимкнено, і продовжуватимуть спроби).
Мартін Вегтер

Відповіді:


59

Ласкаво просимо у чудовий світ Інтернету ... Чи маєте ви:

Але справжня відповідь така: Так, це нормально : BotNet Maffia завжди може використовувати кілька додаткових погано захищених серверів ...


1
Я вважаю за краще не мати SSH в дикому, дикому Інтернеті. +1
Rui F Ribeiro

2
Окрім зміни порту за замовчуванням для ssh, ми також маємо порт .
Пабло А

15

Досить нормально мати спроби входу, щоб зробити журнал затоплення.

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

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

PermitRootLogin no

Також fail2banслідкуйте за тим, щоб монітори sshd-журналів для повторних порушників. Наприклад, 5 невдалих входів за 3 хвилини від певного IP отримають, що IP блокується протягом 10 хвилин. Я збільшив час заборони до 24 годин, щоб ще більше зменшити спам журналу - успішно. :)


1
apt-get install fail2ban дозволить вам в основному охопитись
Віллем,

7
"Я збільшив час заборони до 24 годин, щоб ще більше зменшити спам журналу" Довіртеся. Якщо у вас немає фізичного доступу до сервера, одного дня ви глибоко пошкодуєте про це. ;)
Даніель

8

Я б запропонував вам зробити кілька речей:

  1. Змініть порт ssh, який слухає (на щось набагато вище 1024), і переконайтеся, що ви не використовуєте версію 1 протоколу:

/ etc / ssh / sshd_config

# What ports, IPs and protocols we listen for
Port 50022
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
  1. Установити fail2ban- він відстежує файли журналів і тимчасово або наполегливо забороняє адреси, не схильні до відмов, оновленням існуючих правил брандмауера ( iptables).

  2. Переконайтеся, що ви довірені місця розміщуєте в білому списку.


7

Так, хвилюйтеся . Ви ніколи не можете згоріти, але вам слід дотримуватися найкращих практик ІТ. Краще перестрахуватися, ніж потім шкодувати.

Я адміністратор мережі в лікарні. Завжди погана ідея підключати коробку безпосередньо до Інтернету. Що ви бачите, це всі тисячі автоматизованих сканерів, які сканують на вразливість в Інтернеті. Я бачу, що ці всі речі (сканування портів, різні відомі тести на вразливість) для будь-якого програмного забезпечення (ssh, telnet, ftp тощо) відображаються у вікні ids.
Ваша машина повинна знаходитися за брандмауером / NAT-рішенням, і вам слід лише переадресація потрібних портів до Інтернету (80, 443 тощо). Це зробити досить просто.
Мати щось, що ви можете використовувати для managemnt (SSH telnet) - погана ідея зіткнутися з Інтернетом, тому що якщо - з будь-якої причини - на цьому сервері є помилка в програмному забезпеченні SSH / telnet, автоматизований бот виявить це в серцебитті і ти будеш накручений. Помилки в програмному забезпеченні трапляються постійно, і це може зайняти деякий час, щоб випустити патч або вам запам'ятати його.

Якщо вам потрібно віддалено керувати, погляньте на налаштування чогось на зразок рішення VPN або якщо ви використовуєте Windows, налаштуйте шлюз служб терміналів для віддаленого робочого столу. Я знаю, що ви можете використовувати окремий вікно Linux або Windows з двома NIC для налаштування маршрутизації та віддаленого доступу для VPN та NAT, якщо ви просто невеликий магазин. В іншому випадку такі постачальники, як Cisco, мають апаратні брандмауері / NAT-рішення (Cisco ASA).

Підсумовуючи, поставте свою машину позаду NAT. Тільки переадресовуйте порти, необхідні для запуску мети послуги. Не переносьте послуги переадресації, які використовуються для управління до Інтернету, замість цього шукайте VPN для дистанційного управління.

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


7
Насправді рішення VPN не є більш-менш безпечним, ніж SSH-сервер. Вони обидва покладаються на правильне впровадження криптографічних протоколів та належну настройку служб. За допомогою різних засобів я б сказав, що вони забезпечують абсолютно однаковий рівень безпеки. Тоді, якщо я вас добре зрозумів, ви ставите SSH за VPN, тоді так, це на один рівень більш безпечно.
lgeorget

Так, ви правильні, це те, що я мав на увазі, використовуйте vpn, щоб пройти брандмауер / nat, а потім ssh на сервер
особа

1
Якщо більшість налаштувань VPN проходять через кілька шарів аутентифікації клієнтів, а також забезпечують, що зовнішній трафік єдиної точки може досягати внутрішньої мережі. У порівнянні з багатьма вузлами. Концентратори VPN також зазвичай не є цікавими цілями самі по собі, порівняно з сервером, який, ймовірно, містить sshdпримірник. Ssh jumpbox може бути настільки ж безпечним, як і більшість конфігурацій VPN, але загалом це не так працює.
Братчлі

5

Ви можете налаштувати внутрішній брандмауер ядра за допомогою iptables . Так що лише декілька машин могли б сш на ваш сервер і не пустили інших IP-пакетів. Див. Для man iptablesотримання додаткової інформації.

Наприклад, якщо 192.168.1.67 - хост, з якого ви сш, то на сервері:

sudo iptables -A INPUT -p tcp --dport ssh -s 192.168.1.67 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport ssh -j DROP
sudo iptables-save

2
Зверніть увагу, ви будете сильно накручені, якщо віддалене управління - ваш єдиний варіант. Більшість IP є лише напівпостійними. Замініть апаратуру, і ви згорієте.
Щогла

3

Вам справді потрібен ваш сервер в Інтернеті? Якщо ви дійсно хочете мати його в Інтернеті, то переконайтесь, що він надійний, перш ніж помістити його туди.

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

Кілька згаданих речей, які я також рекомендую:

  1. Я погоджуюся з Fail2Ban, і належним чином налаштований буде тримати сценарії та найскладніші хакери.
  2. Встановлення PermitRootLogin не є обов'язковим.
  3. Налаштуйте брандмауер. Я зазвичай просто редагую правила iptables, але щось на кшталт UFW або firehol теж працюватиме.

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

  • У налаштуваннях брандмауера блокуйте / відключіть абсолютно все, що не є повністю необхідним. Перш ніж відкрити будь-які порти, запитайте себе: "Чи справді мені потрібна ця послуга з Інтернету?" Кожен порт, який ви відкриваєте, стає ще одним потенційним вектором, який хтось може використати. Якщо в цій службі є помилка, яка дозволяє їм отримати root-доступ до сервера, вони можуть отримати доступ до всього, що знаходиться на ньому. Ваша безпека настільки ж сильна, як і найслабша ланка.
  • Тепер для останнього і, мабуть, найголовнішого. Сценарії, які ви бачили, намагаючись отримати доступ до ssh, можуть з часом вгадати ваш пароль. Fail2Ban дуже сповільнить їх, але вони все ще можуть потенційно здогадатися. Якщо вони є, вам потрібно встановити двофакторну автентифікацію на доступних сервісах. Для цього я рекомендую безкоштовний рахунок в Duo Security. https://www.duosecurity.com/docs/duounix

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

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

2

Ще один приклад відповіді @cff, якщо ви збираєтесь заборонити будь-які послідовні "спроби" на вашому сервері SSH:

sudo iptables -A INPUT -p tcp -m tcp --dport ssh -m state --state NEW -m recent --update --seconds 600 --hitcount 4 --name DEFAULT --mask 255.255.255.255 --rsource -j DROP
sudo iptables -A INPUT -p tcp -m tcp --dport ssh -m state --state NEW -m recent --set --name DEFAULT --mask 255.255.255.255 --rsource
sudo iptables-save

Ця спроба підключення до «тегів», і якщо більше 600 трапляється за 600 (10 мільйонів), походження заборонено. Використовуйте це замість рішення @cff, оскільки це більш безпечно (якщо ви заблокували себе, зачекайте 10 мільйонів і повторіть спробу).

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