Теперь поднимем тему защиты нашего сервера со стороны машины, на которой он стоит. Как обычно начнем с оглавления
⦁ Пункт 0 - оглавление
Тут отмечены пункты гайда по важности.
Алый - самое важное.
Красный - обязательный пункт.
Оранжевый - скорее обязательный
* 1 пункт - порты и еще раз порты
* 2 пункт - смена порта SSH
* 3 пункт - правильная работа со сторонними средствами защитами
* 4 пункт - о запуске не от root
* заключение
⦁ Пункт 1 - порты и еще раз порты
При работе с выделенным сервером у вас есть огромное преимущество перед панельными хостингами - возможность закрывать порты. Это так сказать база.
Закрывать их надо затем, чтобы на ваш сервер не прошли на прямую, в обход авторизации. Каждый ваш сервер, запущенный на дедике имеет свой порт. Не закроете - на него смогут зайти по пути айпи:порт.
Для зарытия портов своих серверов советую UFW. Он очень прост в понимании и не сбрасывает установленные правила, после перезагрузки дедика/вдс.
Установка осуществляется следующей командой:
apt install ufw
Настройка портов выглядит следующим образом:
ufw allow 22/tcp - разрешает порт SSH (если конечно, ваш порт SSH это 22. об этом обмолвимся ниже)
ufw allow *порт вашей банжи/велосити* - думаю понятно
ufw status - просмотр статуса UFW и установленных правил
ufw enable - включает UFW (пишем после того, как всё настроили)
ufw logging off - отключает логи от UFW (полезно, чтобы не загрязнить лог)
ufw disable - отключает UFW
Обязательно проверяйте установленные правила, перед включением UFW. Закроете себе доступ - восстановить никак не выйдет.
⦁ Пункт 2 - смена порта SSH
Когда речь заходила про UFW, я говорил как раз про это.
Зачем же нам менять порт SSH? Ну разумеется для защиты от брутфорса. Конечно, мы уже могли установить сильный пароль, но неужели вы хотите, чтобы тысячи и тысячи ботов на автомате пытались проникнуть в вашу машину? Пусть вероятность пробиться у них не большая, но мы же тут хотим обезопасить себя по полной.
Для смены порта SSH вам нужно будет зайти в файл конфигурации SSH
nano /etc/ssh/sshd_config
и изменить порт, в графе порт. (нужно будет также убрать # перед этой графой)
Должно быть как-то так:
Код:
Port 2022
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
Можете выставить какой хотите. После того как выставили, сохраните файл комбинацией клавиш ctrl+s и выйдите при помощи crtl+x
Теперь перезапустите сервис, отвечающий за SSH командой
systemctl restart sshd
Если всё сделано правильно, теперь вы сможете подключиться к SSH только через установленный вами порт. Для проверки также можно использовать команду
netstat -tupln | grep ssh
Строка
tcp 0.0.0.0:*порт* LISTEN покажет, что для SSH используется значение *порт*. Если там ваше значение - всё работает.
Теперь не забудьте об этом, а особенно не забудьте открыть его через ваш файрволл!
⦁ Пункт 3 - Правильная работа со сторонними средствами защиты
Под данными средствами защиты я имею в виду в первую очередь такие сервисы, как TCPShield или NeoProtect для защиты своего игрового сервера от DDoS, а также Cloudflare для защиты от всё того-то доса уже сайтов или панелей. Однако аналогичные действия, которые будут описаны тут необходимо будет делать со всеми сервисами, работающими по данному принципу.
В целом - это вновь сказ о портах, однако с нюансами.
Если вы работаете с сервисом, который выполняет роль прокси сервера между вашим сервером и юзером - вы должны (и даже обязаны) защитить себя от прямых подключений к вашему IP со сторонних IP-адресов, оставив только те, которые используются вашем прокси сервисом.
Это делается для того, чтобы скрыть IP своего VDS/dedicated сервера от возможного пробива через сторонние сервисы, чтобы его не смогли атаковать в обход имеющегося прокси.
Для того, чтобы это сделать сначала вам необходимо узнать список IP адресов вашего сервиса, которые используются для проксирования.
Вот базовые списки, которые вам могут пригодиться:
TCPShield
NeoProtect
Cloudflare
Теперь, когда эти IP у вас - необходимо ограничить доступ на определённые порты только с данных адресов.
Сперва убедитесь, что порт, который вы хотите защитить не открыт публично через
ufw status
Если он открыт - удалите данное правило из списка ufw. Для этого используйте
ufw status numered
И потом
ufw delete *номер-правила*
И наконец для открытия данного порта только для определённого IP используйте команду
ufw allow from *айпи* to any port *порт*
Айпи можно указать в диапазоне, как указано на сайтах.
⦁ Пункт 4 - О запуске не от root
Все действия до этого вы делали от пользователя root. Теперь же мы от него откажемся, а запускать сам наш майнкрафт сервер будем с другого юзера. Это даже не просто обязательно, а сверхъобязательно.
Но зачем это нужно? Это вам нужно для того, чтобы обезопасить себя, а точнее, ради ограничения прав пользователя. В плагины кто угодно может вшить что угодно (к примеру вирусы), по этому ограничение прав для своего юзера необходимо, чтобы через него злоумышленники не смогли проникнуть к вам на машину.
Создаем пользователя minecraft. /bin/bash позволяем ему использовать терминал и заходить в putty. -m создает папку пользователя в каталоге /home
useradd -m -s /bin/bash minecraft
Меняем пароль для пользователя minecraft
passwd minecraft
Заходим под новым пользователем и загружаем сборку. Загружать - в /home/minecraft
Устанавливаем права на папку пользователя. 700 = полный доступ к папке.
У других пользователей кроме root, доступа нет
chmod 700 /home/minecraft
Меняем права у всех папок и файлов в директории /home/minecraft
chmod -R 700 /home/minecraft/
Устанавливаем всем файлам и папкам владельца и группу.
chown -R minecraft:minecraft /home/minecraft/
Теперь действия по серверу делаем от этого юзера! Спасибо за этот гайд славику.
В качестве дополнительной меры защиты вы также можете ограничить работу root пользователя, чтобы в него нельзя было авторизоваться.
Однако перед тем как будете это делать - убедитесь, что точно имеете возможность зайти на свою машину иным путём! Если вы отключите рут без возможности зайти в него с альтернативных пользователей - доступ восстановить вам уже не удастся!
Вновь заходим в
nano /etc/ssh/sshd_config
И ищем ставим строчку PermitRootLogin, откуда убираем # и ставим на no
Чтобы оно выглядело так:
Код:
#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
Перезагружаем ssh при помощи всё того же
systemctl restart sshd
И после этого в рут пользователя более невозможно войти просто так.
Вместо прямого подключения вы можете войти в него через пользователя, которого создали ранее.
Введите от него команду
su - root
После чего авторизуйтесь через пароль как обычно.
Так вы попадёте в рут, от которого уже сможете делать то, что вам необходимо.
⦁ Заключение.
Теперь, помимо стандартной работы с вашим VDS/Dedicated сервером вы научились основам защиты при работе с ним! Желаю удачи, админы всех мастей. Оставайтесь защищенными и помните - я могу - вы можете![/CODE]