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

Безопасный домашний сервер 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

Безопасный сервер Linux Openssh

Вероятно, у вас уже есть включенный 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

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

Также читайте: Лучшие инструменты с открытым исходным кодом для защиты вашего сервера Linux

Куда двигаться дальше

Теперь у вас есть хорошее начало для защиты вашего сервера от внешних угроз. Но что, если вам нужно получить доступ к вашему серверу из дома? Каждая дверь, которую вы открываете, потенциально может быть использована злоумышленником, и каждый открытый порт увеличивает вашу уязвимость.

Один из самых простых способов получить доступ к вашей домашней сети извне - использовать VPN, что выходит за рамки этой статьи, но не беспокойтесь, мы вас обеспечим всевозможной информацией. Ознакомьтесь с нашим списком лучших безопасных VPN-сервисов, чтобы понять, какие у вас есть варианты.