Как защитить домашний сервер на Linux

Существует множество причин для установки домашнего сервера. Вы можете использовать его как медиа-сервер, файловый сервер или даже локальный сервер резервного копирования. В общем, любые ваши файлы, которые не требуют онлайн-доступа, являются хорошими кандидатами для домашнего сервера. Установить домашний сервер на базе Linux относительно просто, особенно в наши дни. Однако поддержание безопасности этого сервера – это совершенно другая история. Безопасность может быть такой же сложной, как и важной.
Также читайте: Что такое Log4Shell и как защитить вашу систему Linux от него
Устанавливайте только то, что вам действительно нужно
Один из самых простых способов обеспечить безопасность вашего домашнего сервера – это учитывать безопасность с самого начала. Это начинается с установки. Не уверены, нужна ли вам приложение или сервис? Не устанавливайте его. Вы всегда можете установить его позже.
Если вы несколько раз устанавливали Linux, это еще проще. Вместо того чтобы придерживаться стандартных настроек, используйте режимы, которые предоставляют вам наибольший контроль над установкой. Иногда эти режимы называются «экспертным режимом» или как-то подобным.
Тщательное отслеживание параметров установки может сэкономить вам время на отключение служб по соображениям безопасности позже.
Настройка sudo
Перед тем как перейти к другим шагам, вам нужно настроить sudo. Почему? Потому что после завершения этого этапа вы будете заходить на сервер через SSH, и вы не сможете войти под учетной записью root. Чтобы вносить дальнейшие изменения в вашу систему, вам нужно будет использовать sudo.
Сначала проверьте, можете ли вы уже использовать sudo. Из вашей учетной записи выполните следующее с вашим именем пользователя вместо USERNAME:
sudo -lU USERNAMEЕсли вы видите сообщение, в котором говорится, что ваше имя пользователя может выполнять «(ALL) ALL» или что-то подобное, вы готовы продолжать.
Теперь, как учетная запись root на вашем сервере, выполните следующее для редактирования файла “/etc/sudoers”. Если вы предпочитаете другой редактор, используйте его вместо nano.
EDITOR=nano visudoОтредактируйте файл, чтобы он содержал следующее, с вашим именем пользователя вместо USERNAME:
USERNAME ALL=(ALL) ALLТакже читайте: Как использовать сканер уязвимостей Nessus на Linux
Настройка SSH

Вероятно, у вас уже есть включенный SSH на вашем домашнем сервере. Скорее всего, так оно и есть, так как это обычно способ взаимодействия с сервером.
Сначала убедитесь, что OpenSSH установлен. Если вы используете другую дистрибуцию, ваша команда может отличаться, но название пакета должно быть довольно стабильным. На Ubuntu выполните следующее:
sudo apt install openssh-serverИспользование аутентификации на основе ключей гораздо безопаснее, чем аутентификация по паролю, поэтому мы настроим SSH на работу таким образом. Для этого убедитесь, что вы работаете на клиенте, с которым планируете подключаться к серверу, а не на самом сервере. Сначала вы хотите убедиться, что у вас еще нет каких-либо SSH ключей:
ls ~/.ssh/Если вы видите «id_rsa» и «id_rsa.pub» среди перечисленных имен файлов, у вас уже есть SSH ключи. Пропустите следующий этап.
ssh-keygen -t rsa -b 4096 -C "[email protected]"Теперь вы скопируете SSH ключ на ваш сервер:
ssh-copy-id USERNAME@SERVERДля домашнего сервера вам, вероятно, нужно использовать IP-адрес вашего сервера вместо имени. Если вы не знаете имя вашего сервера, используйте свой IP-адрес вместо SERVER выше.
Теперь мы отредактируем ваши настройки SSH, чтобы обеспечить их безопасность. Войдите в свой сервер с клиента, на котором вы создали ключи. Это позволит вам снова войти после этого этапа. Выполните следующее, заменив nano редактором по вашему выбору.
sudo nano /etc/ssh/sshd_configОтредактируйте файл и добавьте следующие настройки. Эти настройки будут находиться в различных местах файла. Убедитесь, что нет дубликатов, так как только первый экземпляр настройки будет действовать.
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
PermitRootLogin noТеперь вам нужно перезапустить SSH сервер с помощью одной из следующих команд.
На Ubuntu выполните:
sudo systemctl restart sshТакже читайте: SELinux против AppArmor: в чем разница и что выбрать?
Настройка брандмауэра
В зависимости от служб, которые вы используете, и от того, как много ваш сервер подключается к Интернету, вы можете захотеть запустить брандмауэр. Для этого есть несколько вариантов, но проверенный и надёжный метод на Linux - это iptables.
Настройка iptables выходит за рамки этой статьи, но не беспокойтесь. У нас есть полное руководство по настройке iptables на вашем компьютере.
Другой способ настроить брандмауэр проще — использовать ufw. Вы можете установить его с помощью команды:
sudo apt install ufwПо умолчанию он будет блокировать все порты. Чтобы разрешить доступ в Интернет и SSH, выполните следующие команды ufw, чтобы открыть порты 80, 443 и 22:
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 22И, наконец, активируйте службу ufw:
sudo ufw enableПоддерживайте актуальность

Сервера могут легко быть забыты, если они просто работают, но это может быть опасно. Убедитесь, что ваше программное обеспечение обновляется. Вы можете использовать автоматические обновления, но они могут быть непредсказуемыми. Самый безопасный способ - планировать регулярное еженедельное или ежемесячное техническое обслуживание сервера, чтобы убедиться, что все в порядке.
Также читайте: Лучшие инструменты с открытым исходным кодом для защиты вашего сервера Linux
Куда двигаться дальше
Теперь у вас есть хорошее начало для защиты вашего сервера от внешних угроз. Но что, если вам нужно получить доступ к вашему серверу из дома? Каждая дверь, которую вы открываете, потенциально может быть использована злоумышленником, и каждый открытый порт увеличивает вашу уязвимость.
Один из самых простых способов получить доступ к вашей домашней сети извне - использовать VPN, что выходит за рамки этой статьи, но не беспокойтесь, мы вас обеспечим всевозможной информацией. Ознакомьтесь с нашим списком лучших безопасных VPN-сервисов, чтобы понять, какие у вас есть варианты.