Что нужно сделать, чтобы обезопасить Raspberry Pi?

82

Наличие десятков тысяч Raspberry Pi, подключенных к Интернету, в конечном итоге привлечет интерес некоторых людей, которые хотели бы делать неприятные вещи с маленькими компьютерами, особенно когда многие люди используют свои Pi для сетевых серверов. Linux - это надежная операционная система с точки зрения безопасности, но кроме просто изменения пароля, что нужно сделать, чтобы «укрепить» Raspberry Pi, если я собираюсь разместить на устройстве службы, обращенные к Интернету?

Эбен Аптон (Eben Upton) сказал, что просто для того, чтобы поддержать мои «десятки тысяч», «Raspberry Pi продал более 200 000 своих базовых компьютерных модулей и в настоящее время отправляет 4000 единиц в день» . Вероятно, можно предположить, что десятки тысяч из этих 200 000 были подключены к Интернету. Менее безопасно предположить, что десятки тысяч подключенных к Интернету Raspberry Pis имеют общедоступный веб-сервис, но потенциал для хакерского энтузиазма все еще существует.

Дэн Б
источник
3
Имейте в виду, что, хотя могут быть подключены «десятки тысяч», (в настоящее время) доступны 3 отдельных дистрибутива Linux (о которых я знаю), и я думаю, что есть даже несколько проектов, не основанных на Linux. Это влияет на перспективу хакера. Тем не менее, если безопасность важна, обновляйте свой дистрибутив и, при необходимости, держите устройство за брандмауэром.
RLH
Хороший вопрос RLH Я добавлю некоторую дополнительную информацию к вопросу, который поддерживает количество Raspberry Pis в дикой природе, чтобы дать лучшее представление о поверхности атаки Raspberry Pi, которую Стив упомянул в своем ответе.
Дан Б
@DanB Поверхность атаки - это не функция числа Пи, а количество систем и служб, доступных для атаки. en.wikipedia.org/wiki/Attack_surface
Стив Робиллард,
@SteveRobillard Извините, если я был неясен в комментарии, но в редактировании, которое я сделал к вопросу, я попытался качественным образом сократить количество Pis, которые размещают общедоступные службы и поэтому представили бы службу, доступную для атаки. ,
Дан Б
Я нашел короткий учебник о том, как защитить ваш Raspberry Pi при использовании SSH, кажется довольно аккуратным. -> учебное пособие
ул. Доминик

Ответы:

54

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

Поскольку вы не упомянули, какой дистрибутив вы используете, я приму рекомендуемый дистрибутив Raspbian.

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

Некоторые дополнительные вещи, которые вы можете рассмотреть:

Вам также следует прочитать этот связанный вопрос. Как я могу защитить себя от вторжений и вредоносных программ, прежде чем подключать их к Интернету (особенно на общедоступных IP-адресах)? ,

Это только минимальные шаги для защиты вашего Пи. Для получения дополнительной информации вы можете прочитать Руководство по безопасности Debian .

Стив Робиллард
источник
6
Убедитесь, что сгенерировали ваши собственные ключи ssh. Я думаю, что на некоторых изображениях уже были ключи.
Джон Ла Рой
2
Apache по умолчанию не установлен в raspbian (пользователь установил что-то вроде php5-mysql IIRC). Для фильтра пакетов, который немного более дружественен, чем голый iptables, может быть, мы должны порекомендовать ufw и, возможно, даже его интерфейс GUFW?
elmicha
1
Имеет ли смысл устанавливать iptables, даже если вы находитесь за маршрутизатором?
Кейки
2
@ otakun85 Да, это называется глубокая защита. Полностью полагаясь на ваш маршрутизатор, если кто-то пройдет через ваш маршрутизатор, если iptables запущен и работает, дальнейшие эксплойты станут более трудными.
Стив Робиллард
2
Отключение неиспользуемых служб также помогает при запуске и экономит (небольшой) объем памяти и ЦП.
TomG
11

Посмотрев на RPi, он выглядит как довольно безопасное устройство из коробки, если вы делаете несколько вещей.

Пользователь / пароль по умолчанию изменен. Как минимум, смените пароль. Для большей безопасности снова измените имя пользователя. (Добавьте нового пользователя, затем отключите PI. Убедитесь, что ROOT также отключен при входе через SSH, хотя я все равно думаю, что это по умолчанию.)

Сканирование RPi возвращает только один открытый порт, 22, который является SSH-соединением, и даже его нужно включить, прежде чем он покажет (хотя большинство людей будут использовать его вместо монитора, клавиатуры и мыши, я ожидаю, особенно на {веб} сервер)

Вы можете изменить номер порта 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.

SPID,
источник
1
Облачные инструменты увеличивают поверхность атаки, локальный мониторинг безопасности (logwarn / check) - хорошие инструменты, но этот ответ неполон и является скорее комментарием.
user1133275