Що потрібно зробити, щоб забезпечити Raspberry Pi?


82

Маючи десятки тисяч Raspberry Pi, підключених до Інтернету, врешті-решт буде викликати інтерес деяких людей, які хотіли б робити невеликі речі до маленьких комп’ютерів, особливо коли багато людей використовують їх Pi для роботи з мережевими серверами. Linux - це суцільна операційна система, яка не відповідає безпеці, але окрім простої зміни пароля, що потрібно зробити, щоб "загартувати" Raspberry Pi, якщо я маю намір розміщувати послуги інтернету на пристрої?

Тільки щоб підтримати мою розсилку "десятки тисяч", Ебен Upton сказав, що "Raspberry Pi продала понад 200 000 своїх базових комп'ютерних модулів і наразі доставляє 4000 одиниць на день" . Мабуть, безпечно припустити, що десятки тисяч з цих 200 000 були підключені до Інтернету. Менш безпечно припустити, що десятки тисяч тих, хто підключений до Інтернету Raspberry Pis, розміщують загальнодоступну веб-службу, але потенціал для хакерського ентузіазму все ще існує.


3
Майте на увазі, що хоча може бути підключено "десятки тисяч", на даний момент доступні 3 окремі дистрибутиви Linux (про що я знаю), і я думаю, що там є навіть кілька проектів, що не базуються на Linux. Це впливає на перспективу хакера. Однак якщо безпека важлива, оновлюйте дистрибутив і, якщо необхідно, тримайте пристрій за брандмауером.
RLH

Хороший момент RLH Я додам додаткову інформацію до питання, що підтримує кількість Raspberry Pis в дикій природі, щоб дати краще уявлення про атаку поверхні Raspberry Pi, Стів зазначив у своїй відповіді.
Dan B

Поверхня @DanB Attack - це не функція кількості Pi, а кількість систем та служб, доступних для атаки. en.wikipedia.org/wiki/Attack_surface
Стів Робіллард

@SteveRobillard Вибачте, якщо в коментарі мені було незрозуміло, але в редагуванні я поставив питання, що я намагався якісно збільшити кількість Pis, які розміщують загальнодоступні сервісні служби, і тому представлятимуть послугу, доступну для атаки .
Dan B

Я знайшов короткий підручник про те, як убезпечити свій малиновий пі при використанні SSH, здається, досить акуратним. -> підручник
Домінік Св.

Відповіді:


54

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

Оскільки ви не згадали, який дистрибутив використовуєте, я вважаю, що рекомендується Raspbian Distro.

  1. Змініть пароль за замовчуванням. Дистрибутив Raspbian включає це як опцію в початковий сценарій запуску. Якщо ви цього ще не зробили, ви можете скористатися командою passwd, щоб змінити його. Обов’язково виберіть надійний пароль .
  2. Вимкнути невикористані сервіси . Я побачив, що рекомендований дистрибутив Raspbian включає веб-сервер Apache і дозволяє його при запуску (може хтось це підтвердить) . Вам справді потрібен веб-сервер, що працює? Якщо не відключити його. Якщо вам потрібно запустити Apache, не забудьте захистити його та зробити так само для інших служб (наприклад, FTP, NGINX, MySQL тощо), пошук у Google має знайти кілька ресурсів.
  3. Встановлення та налаштування iptables .
  4. Постійно оновлюйте систему. Ви можете автоматизувати це за допомогою cron або за допомогою cron-apt .
  5. Налаштуйте журнал для контролю за входом та невдалими спробами входу. Якщо можливо, використовуйте зовнішній жорсткий диск для розміщення вашої / вашої секції, це дасть вам більше місця, щоб уникнути заповнення файлів журналів SD-карт та продовження терміну служби вашої SD-карти.

Деякі додаткові речі, які ви можете розглянути:

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

Це лише мінімальні кроки для забезпечення вашого Pi. Для отримання додаткової інформації ви можете прочитати Посібник із забезпечення безпеки .


6
Не забудьте створити власні ключі ssh. Я думаю, що на деяких зображеннях вже були ключі.
Джон Ла Рой

2
Apache не встановлений у raspbian за замовчуванням (користувач встановив щось на зразок php5-mysql IIRC). Для фільтра пакетів, який трохи привітніший, ніж голі iptables, можливо, ми повинні рекомендувати ufw і, можливо, навіть його GUI frontend gufw?
elmicha

1
Чи є сенс встановлювати iptables, навіть якщо ви стоїте за маршрутизатором?
keiki

2
@ otakun85 Так, це називається обороною в глибині. Повністю покладаючись на свій маршрутизатор, якщо хтось пройде повз ваш маршрутизатор, коли iptables працює і працює, подальше використання буде складніше.
Стів Робіллард

2
Вимкнення невикористаних служб також допомагає при запуску та економить (невеликий) об'єм пам'яті та процесора.
TomG

11

Подивившись на RPi, здається, що це досить безпечний пристрій з коробки, поки ви зробите пару речей.

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

Сканування RPi повертає лише один відкритий порт, 22, який є з'єднанням SSH, і навіть це потрібно ввімкнути до того, як воно з’явиться (хоча, більшість людей використовуватиме його замість монітора, клавіатури та миші, я думаю, особливо на {web} сервер)

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

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

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

Якщо у вас є брандмауер або маршрутизатор, ви можете змінити порти RPi і змусити маршрутизатор направляти трафік з одного порту на інший. Наприклад, трафік порту 80 в маршрутизатор перенаправляється на порт 75 на RPi, а SSH на 22 перенаправляється на порт 72. Це додало б ще один рівень захисту, але трохи складніше.

Очевидно, тримати все оновлене та виправлене.

Це не захистить вас від атак, які експлуатують Java, Flash, SQL-сервери тощо, які ви, можливо, зможете додати пізніше, але це справді для основ.

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

Ще одне, що ви можете додати - це fail2ban ( http://www.fail2ban.org/wiki/index.php/Main_Page ), який додає правило брандмауера для блокування декількох спроб входу, запобігаючи атакам словників. Хоча вони не можуть працювати у вашій системі, якщо ви дотримувалися вищезазначеного, якщо вам з якихось причин потрібно залишити пароль лише авторизацією SSH (наприклад, ви віддалене вхід з багатьох машин), це запобіжить атаці словника. з роботи. Після вказаної кількості спроб вона на час заблокує більше спроб із цієї IP-адреси. (Будьте обережні, щоб він не бачив маршрутизатора / локальної IP-адреси, і заборонити це занадто рано чи занадто довго!)

Відредаговано, щоб додати: Після того, як у вас все налаштовано гарненько, скористайтеся таким інструментом, як dd або Win32DiskImager, щоб зробити повне розрядне резервне копіювання SD-карти. Таким чином, якщо щось піде не так, ви можете відновити його на тій же карті або написати на новій картці та продовжувати роботу незалежно. (Але якщо їх зламали, ви хочете розробити, яку дірку було знайдено, і, можливо, закрийте цю першу, можливо!)


1
Чи можете ви пояснити, як зміна портів RPi на маршрутизаторі додає ще один рівень захисту?
Андрій


-1

Окрім загартовування ОС, ви також можете скористатися хмарною службою моніторингу безпеки для моніторингу активності до / з / на пристрої та отримання сповіщень, якщо виявлено щось незрозуміле. На сьогоднішній день існує декілька хмарних інструментів SIEM, і деякі (на зразок siemless) користуються моделлю freemium, тому домашні користувачі не повинні платити ні копійки. Щоб користуватися такою сервісною службою, вам потрібно ознайомитися з такими речами, як rsyslog / syslog, що є стандартною частиною всіх дистрибутивів ОС Linux.


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