Рубрики
Uncategorized

Сделайте ваш сервер Ubuntu VPS более безопасным от несанкционированного доступа

При создании нового VPS необходимо убедиться, что вы защитите свой сервер из страшного Интернета. … Теги с Ubuntu, Security, DevOps, учебником.

При создании нового VPS необходимо убедиться, что вы защитите свой сервер из страшного Интернета. Единственный, который должен быть в состоянии администрировать сервер, должен быть вы и Только ты!

Есть несколько (простых) шагов, участвующих в том, как вы можете защитить свой сервер и хорошо выспаться ночью, не опасаясь, что кто-то может взломать ваш сервер.

Предварительные условия

У вас должен быть существующий или недавно установленный сервер, работающий на Ubuntu 20.08 VPS, доступный и в состоянии войти в систему.

Создайте свой первый VPS на Vultt

Флориан Капфенбергер · 12 февраля · 4 мин прочитаны

Если вы не знаете, как вы можете создать свой собственный сервер, ознакомьтесь с моим постом блога Создайте свой первый VPS на Vultr Развернуть ваш самый первый VPS, используя Vult * Отказ

Vult — это просто мой выбор для хостинга серверов в Интернете, но вы можете использовать другие поставщики, такие как Линоума или Digitalocean * слишком. Вы не можете ошибоваться, выбирая любой из упомянутых поставщиков.

Отказ от ответственности: Ссылки, содержащие a * в конце, являются партнерскими ссылками, что означает, что если вы зарегистрируетесь, используя эту ссылку, я бы получил небольшую комиссию, и это поможет мне!

Создание нового пользователя для администрирования сервера

Когда вы создаете новый VPS, вы обычно получаете доступ к root пользователь с паролем. По соображениям безопасности мы создаем новый пользователь, который будет использоваться для администрирования сервера. Это хорошая практика, чтобы работать только с наименьшим количеством привилегий, которые вам нужны и используются Sudo Когда вам нужно больше разрешений.

Мы отключим возможность войти в систему как root Пользователь, использующий пароль, но мы позвольте ему войти в систему, используя аутентификацию открытого ключа.

Чтобы добавить нового пользователя, вы можете использовать AddUser команда.

adduser phiilu

Вам будет задано несколько вопросов, включая какой пароль, который вы хотите использовать. Убедитесь, что пароль безопасен, и в лучшем случае, сгенерированный и хранится в диспетчере паролей, как 1Password или LastPass Отказ

Adding user `phiilu' ...
Adding new group `phiilu' (1000) ...
Adding new user `phiilu' (1000) with group `phiilu' ...
Creating home directory `/home/phiilu' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for phiilu
Enter the new value, or press ENTER for the default
    Full Name []: Florian
    Room Number []:
    Work Phone []:
    Home Phone []:
    Other []:
Is the information correct? [Y/n]

Теперь у нас есть новый пользователь, который мы можем использовать для входа в систему. Если вы корень Пользователь Вы можете просто ввести

su phiilu

И вы будете войти в систему как пользователь без запроса пароля. Вы также можете использовать войти с Вход команда.

login phiilu

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

Вы можете подтвердить это при попытке обновить пакеты:

sudo apt install
[sudo] password for phiilu:
phiilu is not in the sudoers file.  This incident will be reported.

Как видите, нам нужно добавить новый пользователь в файл sudoers, чтобы иметь возможность выполнять команды в качестве суперпользователя.

Нам нужно выйти из нашей текущей сессии с Выход Отказ Теперь вы должны войти в систему как root Пользователь.

Если вы root Вы можете ввести Visudo Чтобы проверить текущие файл sudoers.

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

Вы можете увидеть, что если пользователь находится в Sudo Группа, он должен иметь возможность выполнять команды как корень . Есть также Админ Группа в моем Sudoers Файл, который позволит пользователю в этой группе выполнить некоторые команды как корень . Мы хотим иметь возможность сделать то же самое, что пользователь root может сделать, поэтому мы выберем Sudo группа.

Чтобы добавить пользователя в группу, вы можете использовать УМИНМОД Команда с использованием параметров - для добавления и -G Для альтернативных групп, а затем имя группы и пользователь, который вы хотите изменить.

usermod -a -G sudo phiilu

С ID Вы можете проверить группы (и IDS) пользователя и можете подтвердить, что пользователь теперь является частью Sudo группа.

id phiilu
uid=1000(phiilu) gid=1000(phiilu) groups=1000(phiilu),27(sudo)

Теперь, когда наш пользователь находится в Sudo Группа, вы можете войти в систему, как этот пользователь и попытаться обновить пакеты снова и на этот раз он должен работать!

Обеспечение SSH.

Теперь, когда у нас есть новый пользователь, который может выполнять команды как корень мы можем идти вперед и укрепить наш сервер еще больше, изменив некоторые настройки для SSH Отказ

Прежде чем делать то, что мы хотим настроить аутентификацию ключей для наших пользователей корень И тот, который мы создали раньше.

Использование аутентификации открытого ключа

Это рекомендация «пропустить пароли с публичным ключом аутентификации» моего использования Visual Studio Code Remote для редактирования файлов на почте серверов.

Используйте Remote Remote Code Studio Code для редактирования файлов на серверах

Флориан Капфенбергер · Июль 12 · 6 мин прочитан

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

Если вы используете Windows, вы должны иметь Git для Windows Установлено и используйте следующие команды внутри Git Bash .

Следующие команды должны быть одинаковыми для Windows и MacO, за исключением того, что вам может придеться закончить команды в Windows с .EXE .

Создание ключа SSH

Если у вас уже есть ключ SSH, который вы можете уже использовать с портить Вы можете пропустить этот шаг.

ssh-keygen -b 4096

Который приводит к следующему выходу.

Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/flori/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/flori/.ssh/id_rsa.
Your public key has been saved in /c/Users/flori/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx flori@Windows

Вы можете установить пароль для ключа, если хотите, но затем вы должны ввести пароль для журнала, в котором мы хотим избежать.

Скопируйте открытый ключ на сервер

Вы можете либо вручную вставить ключ на сервер, либо можно использовать программу, называемую SSH-COPY-ID который я предпочитаю.

На MacOS вы должны установить SSH-COPY-ID Использование заваривать На окнах он должен быть уже присутствует в Git Bash.

brew install ssh-copy-id

Чтобы скопировать ключ на сервер, вам просто нужно войти на сервер, используя SSH-COPY-ID полезность. Делайте этот шаг дважды для обоих пользователей.

Замените VPS_IP с реальным IP вашего VPS

ssh-copy-id root@VPS_IP
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/florian/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@VPS_IP's password:

Number of key(s) added:        1

Now try logging into the machine, with:   "ssh 'root@VPS_IP'"
and check to make sure that only the key(s) you wanted were added.

Проверка аутентификации открытого ключа

Теперь, если вы попытаетесь войти в систему с SSH. Вам не следует просить пароль.

Если вы все еще просят пароль, проверьте, если разрешения на autorized_keys. Файл на сервере правильно:

ls -la ~/.ssh
drwx------ 2 root root 4096 Sep 18 17:23 .
drwx------ 7 root root 4096 Sep 21 14:48 ..
-rw------- 1 root root  416 Sep 18 17:23 authorized_keys

Если ваши разрешения разные, вам, возможно, придется их изменить:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Более безопасный SSH Config

Чтобы изменить конфигурацию для SSH Открыть /etc/ssh/sshd_config Файл с вашим любимым текстовым редактором или вы можете проверить мое сообщение в блоге Используйте RUB CODE STUDIO CODE для редактирования файлов на серверах Чтобы использовать редактор GUI для изменения файлов серверов.

Прежде всего, я хочу изменить это root Пользователь не может войти в систему с паролем, но должен быть в состоянии использовать аутентификацию открытого ключа для входа.

Найдите линию, которая говорит: PermitrootLogin. Да и изменить его в Permitrootlogin без пароля Отказ

Если вы хотите, чтобы вы могли только аутентификацию ключей, найдите следующие ключи конфигурации и измените их:

PubkeyAuthentication yes
PasswordAuthentication no

Последнее, но не менее важное, разрешайте пользователям, которые вы явно определены для входа на свой сервер. Перейдите в конец файла и добавьте следующую строку:

AllowUsers phiilu root dokku

Здесь вы должны добавлять имена пользователей, разделенные пространством. В моем случае я позволяю пользователям Phiilu. root и Докку войти на мой сервер, используя SSH.

После изменения конфигурации вы должны перезапустить SSHD сервер.

sudo service sshd restart

Запретить плохие люди с Fail2ban

Интернет — это страшное место И вам нужно знать, что все там хотят захватить свой сервер. Очень важно убедиться, что плохие люди или в этом случае плохие IP-адреса отправляются в тюрьму и никогда не будут беспокоить наш сервер снова.

Вот почему мы установим Fail4ban Отказ Fail2Ban — это небольшой сервис, который будет работать на вашем сервере и будет прочитать ваши файлы журналов и обязательно запрещает IP-адреса, которые пытаются войти на свой сервер.

В этом посте я только покажу вам, как вы настраиваете Fail4ban Чтобы проверить только журналы SSH Сервис, но Fail4ban Также можно использовать для проверки других файлов журналов, таких как nginx или Почта .

Установка и настройка

Установка очень проста и только одна команда.

sudo apt install fail2ban

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

Если вы хотите внести изменения в файл конфигурации, вы должны скопировать оригинал /etc/fail2ban/jail.conf Файл и создать /etc/fail2ban/jail.local файл

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Теперь вы могли бы внести изменения в Jail.Local и отрегулируйте запрет времени или повторы, но я думаю, что по умолчанию уже довольно хорошо.

Ubanan IP-адрес

Иногда вы можете захотеть разблокировать IP-адрес, потому что вы как-то заблокировали себя, но у вас все еще есть доступ, используя веб-консоль VPS поставщиков.

К счастью Fail4ban Давайте легко не разблокировать IP-адреса с помощью включенного клиента:

sudo fail2ban-client set sshd unbanip IP

Здесь вы можете увидеть пример того, как я не передумал IP.

root@dokku:~# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed: 1114
|  `- File list:    /var/log/auth.log
`- Actions
   |- Currently banned: 2
   |- Total banned: 241
   `- Banned IP list:   199.38.121.35 49.88.112.112
root@dokku:~# fail2ban-client set sshd unbanip 199.38.121.35
1
root@dokku:~# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed: 1114
|  `- File list:    /var/log/auth.log
`- Actions
   |- Currently banned: 1
   |- Total banned: 241
   `- Banned IP list:   49.88.112.112

Проверьте, сколько IPS уже запрещено

Fail4ban поставляется с легким в использовании клиента, где вы можете проверить статус определенного сервиса и увидеть Сколько IPS уже запрещено

fail2ban-client status sshd

Это мой сервер после того, как он в сети около недели. Вы можете увидеть и подтвердить, что Интернет — это страшное место, и все хотят взять на себя ваш сервер!

Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed: 663
|  `- File list:    /var/log/auth.log
`- Actions
   |- Currently banned: 1
   |- Total banned: 129
   `- Banned IP list:   49.88.112.76

Межсетевой экран

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

Многие поставщики VPS позволяют вам настроить брандмауэр внутри своей приборной панели, но для тех из вас, которые не могут сделать это, вы все еще можете использовать программный брандмауэр, такой как UFW Отказ UFW — это программный брандмауэр, и мы можем защитить наш сервер с четырьмя командами!

ufw default deny incoming
ufw default allow outgoing
ufw allow ssh
ufw enable

Теперь ваш сервер разрешено отвечать только на запросы, которые разговаривают по порту 22 (SSH), и каждый другой сервис отключен.

UFW Разрешить SSH просто простой способ написать UFW Разрешить 22/TCP . Известно, что некоторые услуги работают на конкретном порту Итак, UFW. Уже знает много из них!

Если у вас тоже есть веб-сервер, вы, вероятно, хотите включить http и HTTPS. . Так что просто введите UFW Разрешить http и UFW Разрешить HTTPS И ваш сервер теперь разрешено отвечать на http и https Запросы!

Для дополнительных услуг вы можете запустить на своем сервере, вы в конечном итоге откроете больше портов.

Заключение

Хостинг вашего сервера может быть немного страшно, но если вы внимательно следили по почте, вы должны быть в порядке. Конечно, вы все равно должны войти в сервер, время от времени в Tome и запустите обновления с Sudo APT Update && Sudo APT обновление Чтобы убедиться, что вы получите последние патчи безопасности.

Дайте мне знать в комментариях, если это было полезно, и если бы я мог пропустить то, что каждый сервер должен настроить, чтобы быть более безопасным!

Оригинал: «https://dev.to/phiilu/make-your-ubuntu-server-vps-more-secure-against-unauthorized-access-1e7c»