Чи нормально отримувати сотні спроб прориву в день?


196

Я щойно перевірив сервер /var/log/auth.logі виявив, що я отримую понад 500 невдалих повідомлень про спробу пароля / пробивання в день! Мій сайт невеликий, а його URL-адреса неясна. Це нормально? Чи слід вживати якихось заходів?


2
Поки ми не заблокували всі непотрібні зовнішні порти, я пам’ятаю, що ми не тільки отримали багато спроб злому, але одного дня було так погано, що нас зламали з двох різних країн - одночасно! Так що так, 100-ти спроб вторгнення - цілком нормально.
Джанго Райнхардт

91
У нас є сервери, які випробовують нову "послідовність" атаки раз на 16 секунд. Одинична послідовність зазвичай - це партія, що становить близько 100 спроб у різних портах. Тільки для ударів одного дня я ввімкнув незапакований сервер поза нашим брандмауером; він також забирає менше 10 хвилин з часу, коли він був включений, щоб отримати pwnd. Точка - Інтернет справді є джунглями; намагайтеся не їсти.
NotMe

2
Я бачу, що я розмістив своє запитання на неправильному сайті: superuser.com/questions/200896/…
Джастін C

6
хоча я погоджуюся з іншими, це нормально для потрібних загальних портів (80, 443), я практично усунув ці спроби проти мого порту SSH, просто змінивши порт за замовчуванням з 22 на щось незрозуміле, наприклад 6022. Тільки зробивши це, поодинці майже ліквідували 99% нападу цього типу.
Кіло

2
Якщо ви збираєтеся змінити свій порт SSH, є причини безпеки тримати його нижче порту 1024 (лише корінь може відкривати порти <1024, тому він захищає вас від інших користувачів, які захоплюють SSH).
Брендан Довгий

Відповіді:


207

У сучасному Інтернеті це сумно. Існують орди ботнетів, які намагаються увійти на кожен сервер, який вони знаходять у цілих IP-мережах. Зазвичай вони використовують просту атаку словника на відомі облікові записи (наприклад, root або певні акаунти програм).

Цілі атаки не знаходяться через записи Google або DNS, але зловмисники просто випробовують кожну IP-адресу в певній підмережі (наприклад, відомих хостингових компаній root-сервера). Тож не має значення, що ваша URL-адреса (отже, запис DNS) досить неясна.

Ось чому так важливо:

  • заборонити root-вхід у SSH ( howto )
  • використовувати надійні паролі всюди (також у своїх веб-додатках)
  • для SSH використовуйте аутентифікацію відкритого ключа, якщо це можливо, і повністю відключіть авторизацію пароля ( howto )

Крім того, ви можете встановити fail2ban, який скануватиме authlog, і якщо він знайде певну кількість невдалих спроб входу з IP, він продовжить додавати цей IP до /etc/hosts.denyiptables / netfilter, щоб заблокувати атаку на кілька хвилин.

Окрім SSH-атак, також стає звичайним сканувати веб-сервер на наявність вразливих веб-додатків (деякі програми для блогів, CMS, phpmyadmin тощо). Тому не забудьте постійно підтримувати ці оновлення та безпечно налаштовувати їх!


21
Такі програми, як fail2ban, можуть дуже допомогти «тимчасово» зупинити ботів від удару вашого сервера в безглузді години ранку :-) У мене встановлено заборону 3 неправильних спроб протягом 24 годин.
emtunc

46
І перемістіть порт ssh з 22 на 222. Це працює досить добре.
Том О'Коннор

40
+1, лише автентифікація відкритого ключа :)
0xC0000022L

3
@STATUS_ACCESS_DENIED: дії fail2ban виконуються лише списки команд оболонки, які потрібно виконати. Так що це дійсно гнучка та проста робота з належним чином з будь-яким налаштованим налаштуванням. Найкраща посилання - це завантажити його і подивитися action.d/iptables.conf.
mattdm

4
Блокування таких нападників - це марна трата часу. Якщо ви відключите кореневий вхід, є хороший шанс, що ніхто ніколи навіть не вгадає ваше правильне ім’я для входу, не кажучи вже про пароль. Сам SSH вже обмежує запити паролів, тому навіть якщо вони знають ваше ім’я користувача (випадкові боти не будуть), якщо у вас гідний пароль, вони ніколи не вгадають.
Брендан Лонг

58

Кілька 100 - це просто чудово ... Минулого місяця я виявив, що на одному з моїх серверів було 40 тис. Спроб. Я перейшов через проблему їх побудови: Карта

Як тільки я змінив ssh-порт і застосував Port Knocking, кількість знизилася до 0 :-)


2
Гарна карта. Я хотів би знати, як це зробити!
jftuga

9
@jftuga Спочатку я отримав усі IP-адреси з журналів. grep 'Failed password' /var/log/secure* | grep sshd | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort | uniq(видаліть | uniq наприкінці, якщо ви хочете дозволити копії). Потім ви можете помістити їх у CSV і завантажити його на zeemaps.com. Я бачив кращі карти, ніж мої, де вони будуть використовувати кількість для фарбування карти (зелена в червона для кількості спроб на округ), але я не подумав, що це виходить
Барт Де Вос

3
Що ви маєте на увазі під "реалізованим портом стуканням"? Чи є програма, яку я можу встановити через apt-get, щоб зробити це? Число, яке

18
Безпека через невідомість стає поганою. Це абсолютно добре, якщо це частина загальної стратегії, а не всієї стратегії. Зрештою, що ще є паролем, крім неясного рядка?
Джоел Коель

5
@Joel Coel, це таємний рядок, на відміну від більшості безпеки через проблеми невідомості - незрозумілий, але не обов'язково секретний процес.
tobyodavies

29

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

В netfilterє recentмодуль, який можна використовувати з ( INPUTланцюга):

iptables -A INPUT -i if0 -p tcp --dport 22 -m state --state NEW -m recent --set --name tarpit --rsource
iptables -A INPUT -i if0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 6 --name tarpit --rsource -j DROP
iptables -A INPUT -i if0 -p tcp --dport 22 -j ACCEPT

Це означає, що кожна спроба підключитися до порту 22 перерахована recentмодулем з IP та деякими іншими речами під назвою "tarpit" (якщо вам цікаво, дивіться /proc/net/xt_recent/tarpit). Очевидно, ви можете використовувати й інші імена.

Для списку чи виключення списку IP використовуйте:

echo "+123.123.123.123" > /proc/net/xt_recent/tarpit
echo "-123.123.123.123" > /proc/net/xt_recent/tarpit

Ця швидкість обмежує спроби 5 на 300 секунд. Зауважте, що користувачів із наявним підключенням не турбує цей ліміт, оскільки вони вже мають встановлене з'єднання і їм дозволено створювати більше (навіть вище межі швидкості).

Пристосуйте правила за своїм смаком, але переконайтесь, що вони додані в такому порядку (тобто при додаванні потім використовуйте їх у цьому порядку, при вставлянні потім у зворотному порядку).

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

Ви все ще можете поєднувати це з fail2ban, хоча я без нього працював чудово і тільки вищевказані правила.

Редагувати:

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

iptables -A INPUT -i if0 -p tcp --dport <knockport> -m state --state NEW -m recent --name tarpit --remove

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

@benlumley: хороший момент. Стукіт порту може бути подібним чином корисним для зміни порту за замовчуванням - або навіть обох у поєднанні ...
0xC0000022L

@benlumley: побачив ваш коментар (зараз його видалив Сем). Я абсолютно не проти, якщо відповідь буде відредагована / покращена;)
0xC0000022L

15

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


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

12

Так . Сьогодні це цілком нормально.

Будь ласка, використовуйте лише автентифікацію відкритого ключа для адміністративних цілей, якщо це можливо. Створіть приватний ключ на робочій станції:

$ ssh-keygen -t dsa

Скопіюйте вміст ~ / .ssh / id_dsa.pub на ваші сервери ~ / .ssh / санкціоновані_keys (та /root/.ssh/authorized_keys, якщо вам потрібен прямий вхід у систему root).

Налаштуйте ваші сервери / etc / ssh / sshd_config, щоб вони приймали лише автентифікацію відкритого ключа:

PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin without-password

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

Подивіться на Denyhosts і fail2ban, щоб заблокувати повторні спроби входу в SSH, і перегляньте Snort, якщо вам потрібен повний IDS / IPS.


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

5
@Deleted Account: Ви можете встановити пароль для приватного ключа SSH.
Філ Коен

2
Коментар "Зареєстрованого користувача" є помилковим. Просто для уточнення: Завжди встановлюйте хороший пароль у своєму приватному ключі, а не зберігайте приватний ключ на жодних серверах. Зберігайте приватний ключ на власній робочій станції. Після того, як ви додасте ключ до програми ssh-agent і введете свій пароль, ви зможете увійти в кожну систему, на якій встановлений відкритий ключ, без необхідності повторного введення пароля. Увімкніть переадресацію агента у своєму ssh-клієнті, щоб ви могли увійти з сервера на сервер. Отримати вкрадений приватний ключ - це погано, але з пристойним паролем на ньому це не так погано, як вкрадений пароль.
Martijn Heemels

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

8

використовувати http://denyhosts.sourceforge.net/

і так, слід використовувати аутентифікацію відкритого ключа та відключити автентифікацію пароля.


Вимкнення автентифікації паролів не завжди є прийнятним рішенням.
Publiccert

6

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


6

Я б сказав, що отримати лише 500 - це дуже низько.

У попереднього роботодавця один із дослідників комп'ютерної безпеки назвав постійний потік спроб вривання "Інтернет-еквівалентом космічного шуму ". Він описав це як нормальний безперервний потік шкідливого трафіку, який шукав системи в Інтернеті і автоматично використовував сценарії для спроби викрадення системи. Бот-мережі та інші шкідливі системи постійно будуть сканувати та переглядати Інтернет для вразливих систем, на зразок SETI.


6

так,

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

Уникайте IP-адрес, пов’язаних з DNS

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

Використовуйте VPN для доступу до SSH

Якщо ви перебуваєте в середовищі, в якому можете реалізувати IPsec / VPN до приватної мережі у вашому серверному середовищі, це ідеально. Вимкніть увесь доступ до Інтернету SSH, переконайтеся, що у вас є інтегроване рішення для освітлення. Налаштуйте VPN і дозвольте SSH отримати доступ лише з VPN.

Реалізуйте правила IP-адреси для доступу до SSH

Якщо VLAN не є параметром, налаштуйте ваш маршрутизатор або правила брандмауера, щоб дозволити з'єднання SSH лише з відомого діапазону IP-адрес.

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


5

Цілком нормально бачити сотні невдалих SSH-з'єднань.

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


5

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

Щоб знайти адресу зловживання, почніть з arin.net та знайдіть IP-адресу, використовуючи whois. Ви можете бути перенаправлені до іншого регіонального реєстру, але врешті ви зможете знайти відповідального провайдера IP-блоку, який містить адресу. Шукайте адресу зловживання @ або просто надішліть технічний контакт.

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


4
Ми звикли це робити. Однак кількість витраченого часу порівняно з отриманою вигодою була настільки невеликою, що не має значення.
NotMe

1
Варіант цієї тактики, який є більш ефективним, але набагато більш ризиковим, полягає в повідомленні провайдера проміжного вузла. Але ви ОБОВ'ЯЗКОВО маєте підтвердження ваших звітів твердими. Одного разу я отримав цілий Інтернет-провайдер у великій неприємності, оскільки ігнорував їхні повідомлення про зловживання.
статистика

1
Одного разу я це зробив, повідомлення про зловживання дійшло до хакера замість того, щоб хтось відповідав за сервери. Відтоді я більше не турбуюсь, просто занадто багато проблем.
wump

Це дійсно не допоможе в більшості випадків і може зайняти багато часу
RichVel

4

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

Помилкові входи в нестандартні порти будуть нечисленні і далеко між собою, а також можуть вказувати на більш націлені атаки.

Ви можете навіть піти на крок далі встановити медовий горщик SSH, такий як Kippo, щоб «пустити» грубих сил і подивитися, що вони зроблять, даючи шанс.


Ха-ха, Кіппо виглядає дуже приємно. Я збираюся встановити його на сервер просто, щоб побачити, що вони намагаються зробити.
wump

4

Так, це нормально. Що я розповідаю клієнтам у вашій ситуації з невеликими веб-сайтами.

Завжди будьте готові до злому.

Майте копію свого веб-сайту на сервері розробок. Це може бути ваш робочий стіл Windows за допомогою XAMPP, який ви можете отримати безкоштовно.

ЗАВЖДИ вносите зміни на сервер розробників, а потім завантажуйте їх на свій веб-сайт, що живе Якщо це такий CMS, як Wordpress, робіть свої публікації на сервері розробок, а потім скопіюйте та вставіть їх на живий сервер.

НІКОЛИ не завантажуйте нічого зі свого веб-сайту, що живе в реальному часі, на сервер розробників

Регулярно слідкуйте за своїми веб-сторінками, щоб не було змін. Зокрема, приховані посилання на наркотики або продукти, що сприяють покращенню. Ви можете знайти велику кількість додавань до браузера та програм, які зроблять це за вас.

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

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

Сподіваюся, це допомагає.


2
+1 для "Завжди будьте готові до злому".
користувач78940

3

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

Записи WHOIS локальних провайдерів допомогли мені зменшити атаки до 1-2 спроб входу в місяць (тоді це було близько 1 к / день). Я виявив їх, все ще використовуючи затримки .


3

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

Приклад:

AllowUsers admin jsmith jdoe

Опція AllowUsers вказує та контролює, яким користувачам можна отримати доступ до служб ssh. Кілька користувачів можуть бути вказані, розділені пробілами.


3

Так, це нормально. Ти можеш :

  • Зменшіть можливість атаки за допомогою fwknop

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

  • Ви можете змінити порт, який використовує Openssh, але ви не дуже покращуєте безпеку.

  • Підтвердьте аутентифікацію ssh за допомогою Google-автентифікатора чи wikid

Це захистить атаки, засновані на паролі, та можливість визначеної атаки / націленої атаки компрометують вашу адміністраторну машину та вкрадуть комбінацію ssh-ключа та пароля.

Просто перегляньте останній комп’ютер pwn2own, щоб побачити, наскільки кваліфікованому зловмисникові легко компрометувати ваше повністю виправлене вікно адміністратора.


1

На жаль, це цілком нормально. Вам слід подумати про те, щоб додати щось подібне до fail2ban до вашої системи, щоб автоматично виявляти та забороняти нападників. Якщо ви цього ще не зробите, вам слід також розглянути можливість використання лише ssh з відкритими ключами та не дозволяти кореневому входу через ssh. Якщо ви використовуєте ftp для передачі файлів у систему, розгляньте замість цього використання scp / sftp.


1

Я реалізував стукіт портів і маю кілька зондів на день. Вони не мають зв'язку, тому вони йдуть геть. Я реєструю та повідомляю про весь доступ до залучених портів.

Я також запустив fail2ban разом із Shorewall як брандмауер, щоб тимчасово набити чорний список стійких нападників.

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

Обмеження доступу до авторизованих ключів також може бути корисним.


0

Я використовую pam_ablдля тимчасового чорного списку грубих форсажів, і це чудово працює. Я думаю, що краще мати авторизацію в PAM, використовуючи власну базу даних, а не залежати від hosts.denyабо iptables.

Ще одним плюсом є те, pam_ablщо не залежить від сканування файлів журналів.


0

Це цілком нормально в ці дні.
Ви можете встановити ліміт "прориву" на брандмауері для вхідних нових з'єднань на порту SSH,
або встановити один з багатьох аналізаторів журналу a'la fail2ban або змінити порт SSH;).

Останній - найпростіший. На важко завантажених машинах такі спроби взлому можуть дуже сильно впливати на всю систему.

-
З повагою,
Роберт


0

Так, це нормально.

Я щойно змінив ssh-порт від стандартного 22. Мій сервер, мої правила :) просто відредагуйте / etc / ssh / sshd_config, змініть порт і перезапустіть послугу. Єдиний нижній бік полягає в тому, що ви повинні пам'ятати, щоб додати цей порт до конфігурації до кожного клієнта ssh, який ви використовуєте.


0
  • Вимкнути вхід у систему root (У кожного користувача кореневої системи Linux, тому боти можуть легко вгадати ім’я користувача). Після входу в систему як звичайний користувач, ви можете перейти на root або через su, або sudo.

  • змінити порт за замовчуванням на 22

  • Дозволити доступ до ssh лише з відомих ip-файлів

  • Використовуйте сильний альфа-числовий пароль для користувача, що має доступ до ssh

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