Существует много способов устранения уязвимостей, однако первое, что вам следует знать, это то, что Linux не так подвержен вторжению, как другие операционные системы. В основном это связано с отсутствием вредоносного ПО, предназначенного для * NIX. Тем не менее, вы хотите знать о способах доступа к вашей системе.
Пароли
Во-первых, вы должны изменить пароли по умолчанию для всех пользователей, которые могут войти. Для Debian это просто пользователь по умолчанию Pi . Для Arch Linux это суперпользовательский рут . Пароли изменяются при входе в систему как пользователь, введя passwd
в командной строке.
Политика безопасных паролей приветствуется, поскольку было бы довольно просто выполнить атаки методом перебора словаря на пользователя по умолчанию. Выберите приличный пароль средней длины.
неясность
Удаленный доступ, вероятно, самая важная дыра в безопасности. То, что мы можем использовать здесь, называется безопасностью по неизвестности . Распространенным методом атаки является сканирование диапазона IP-адресов на наличие открытых портов. Поэтому одна из самых простых мер противодействия, которую мы можем предпринять, - это быть пользователем, который не использует порты по умолчанию .
Все, что нужно сделать здесь, это изменить порты по умолчанию для часто используемых протоколов. Например, порт SSH по умолчанию - 22, а FTP - 21. В моей системе SSH использует 222 и FTP 221, что должно скрывать эти протоколы от любой автоматической атаки.
Безопасность соединения
Во-первых, наиболее важной проблемой безопасности является то, что корневая учетная запись не должна иметь возможность войти в систему через SSH. Вы можете отключить root-логин в /etc/ssh/sshd_config
файле, комментируя или удаляя эту строку:
PermitRootLogin yes
По умолчанию он должен быть установлен в no, но лучше убедиться в этом.
Если вы часто используете SSH и беспокоитесь о человеке в середине атак, словарных атаках на ваш пароль, то вы можете использовать SSH Keys
.
Аутентификация на основе ключей имеет несколько преимуществ по сравнению с аутентификацией по паролю, например, значения ключей значительно сложнее, чем простые пароли.
Для настройки аутентификации по ключу SSH сначала необходимо создать пару ключей. Это проще всего сделать на вашем клиентском компьютере (на котором вы хотите получить доступ к Pi).
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/pi/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/pi/.ssh/id_rsa.
Your public key has been saved in /home/pi/.ssh/id_rsa.pub.
Как вы можете видеть, это создало два файла: закрытый ключ id_rsa
и открытый ключ id_rsa.pub
.
Секретный ключ известен только вам и должен быть надежно защищен . Напротив, открытый ключ может свободно использоваться любым сервером SSH, к которому вы хотите подключиться.
Поэтому мы хотели бы скопировать открытый ключ на Raspberry Pi. Мы можем сделать это очень легко:
ssh-copy-id pi@address
Где pi
находится имя пользователя Raspberry Pi и address
IP-адрес Pi.
Я повторюсь, мы распространяем открытый ключ. Закрытый ключ твой. Держите его крепко, чтобы отпустить этот ключ, нарушающий безопасность системы.
Вики Arch имеет превосходное описание того , как это работает:
Когда сервер SSH хранит ваш открытый ключ в файле и видит, что вы запрашиваете соединение, он использует ваш открытый ключ для создания и отправки вам запроса. Эта задача похожа на закодированное сообщение и должна быть удовлетворена соответствующим ответом, прежде чем сервер предоставит вам доступ. Что делает это закодированное сообщение особенно безопасным, так это то, что его может понять только кто-то с закрытым ключом. Хотя открытый ключ можно использовать для шифрования сообщения, его нельзя использовать для дешифрования того же самого сообщения. Только вы, владелец закрытого ключа, сможете правильно понять вызов и дать правильный ответ.
Для получения более подробной информации о безопасности аутентификации с открытым ключом, Википедия имеет полное объяснение .
Благодаря безопасности SSH вы можете выполнять огромное количество зашифрованных и защищенных передач данных. Практически любое другое соединение порта может быть направлено через SSH, если это необходимо. Вы даже можете переслать сеанс X через SSH, чтобы он отображался на другом компьютере.
Как интересный пример, вчера я запускал Eclipse на своем рабочем столе, просматривал его на своем Raspberry Pi и управлял мышью и клавиатурой с моего нетбука. Такова сила SSH.
права доступа
Права доступа к файлам являются сутью системы безопасности Linux. Они влияют на то, кто может видеть ваши файлы и папки, и могут быть очень важны для защиты ваших данных. Например, войдите в Raspberry Pi как обычный пользователь и запустите:
cat /etc/shadow
shadow
Файл содержит зашифрованные пароли для пользователей системы, поэтому мы не хотели бы только о тех , чтобы взглянуть на него! Итак, вы должны увидеть этот ответ:
cat: /etc/shadow: Permission denied
Мы можем понять, почему это происходит, взглянув на права доступа к файлу:
ls -l /etc/shadow
-rw------- 1 root root 821 Jun 11 22:13 /etc/shadow
Это говорит нам о том, что файл принадлежит пользователю root, и только владелец имеет права на чтение / запись. Давайте разберем этот вывод.
-rw-------
Это состояние разрешений. Первый бит сообщает нам тип файла ( -
означает обычный файл). Следующие три бита представляют действия, доступные владельцу файла. Вторые три бита представляют группу , а последние три - для других или для всех остальных. Таким образом, каталог с полными разрешениями будет выглядеть так:
drwxrwxrwx 10 root root 280 Jun 20 11:40 tmp/
Это права на чтение, запись и выполнение для владельца, группы и всех остальных.
Следующая важная часть - это два имени. В нашем случае root root
. Первый пользователь является владельцем файла. Вторая группа пользователей . Например, было бы обычно видеть:
drwxr-xr-x 10 pi users 280 Jun 20 11:40 home/pi
Это позволило бы получить доступ на чтение / запись для пользователя pi
в его домашнем каталоге и доступ на чтение для всех остальных пользователей.
Разрешения чаще всего упоминаются и контролируются с использованием восьмеричных значений. Например, если мы хотим установить rw только для владельца, мы набрали бы:
chmod 600 /path/to/file
Это базовый обзор, для более подробной информации о разрешениях для файлов Linux, вот хорошая статья.
Это понимание важно при защите файлов и папок. Например, скажем, мы только что настроили ключи SSH. Мы определенно не хотим, чтобы другие пользователи видели внутри нашего ~/.ssh
каталога, иначе они могли бы взять наш закрытый ключ. Таким образом мы удаляем их права на чтение:
chmod 700 ~/.ssh
ls -la ~/.ssh
drwx------ 2 james users 4096 Jun 18 03:05 .
Я надеюсь, что это прояснит некоторые ваши проблемы с безопасностью Linux. Из этого вы должны увидеть, что это довольно безопасная система, и если вы будете осторожны, у вас не должно быть проблем с безопасностью.
su
к ним.