Автор оригинала: Andrew Judd.
Начиная, я знаю, что там будет куча альтернатива, и они все, вероятно, также хорошо, но есть определенные вещи, которые вам нужно заботиться о, поэтому, если они не сделают это, по крайней мере, спросите Вопрос: «Почему».
Это руководство не предназначено для тех, кто использует управляемый хостинг. Управляемый хостинг — это быстрый и простой способ получить сервер, установленный для вас (обычно используя CPanel, DirectAdmin и т. Д.) Тем не менее, вы платите за это удобство. Хорошая вещь в этом, вы можете доверять, чтобы веб-хост знал, что они делают, и им нужно держать закрытый глаз, так что вам не нужно.
Тем не менее, с таким количеством сайтов построены в наши дни, есть нажатие на ваш собственный виртуальный частный сервер (VPS), который можно разместить в целом в любом месте. Вы платите меньше, потому что вы берете нагрузку на поддержание и закрепление сервера. Некоторые примеры этих вариантов хостинга ниже:
В любом случае, обратно в бизнес, при настройке веб-сервера есть несколько вещей, которые вам нужно принять во внимание. Прежде всего, доступ к серверу. Учитывая, что он должен быть доступен в Интернете, нормальный способ подключения к этому будет через SSH (Secure Shell). К сожалению, ваш и хороший кусок других серверов в Интернете использует SSH, поэтому, хотя он отлично, если вы не установите его правильно, вы уязвимы для атаки.
Пожалуйста, обратите внимание на : Я буду проходить через процесс, который я использую для сервера Ubuntu/Debian. Существуют подобные варианты для CentOS и каждого другого вкуса.
Чтобы исправить эту проблему, я делаю следующее:
1. Отключить логин «root» через SSH
Системные учетные записи по умолчанию (I.E. root, Ubuntu и т. Д.) Хорошо известны потенциальным злоумышленникам, они снимают все IP-адреса в Интернете, который хочет видеть, могут ли они использовать аутентификацию пароля, чтобы подключиться к вашему серверу. Грустная вещь, эта грубая сила нападает на работу! Существует множество серверов там, которые были затронуты им, которые были затронуты, и затем используются в качестве рабочей силы, чтобы помочь грубой силы других серверов (а также других злонамеренных дел).
В качестве предварительного условия для этого вам нужно будет создать еще один счет на вашем сервере, который был предоставлен права администратора.
Установите «sudo». Эта программа позволяет вам запустить команду как другой пользователь, то есть. Вы подключаетесь к вашему серверу в качестве учетной записи пользователя, а затем запускаете что-то в качестве основной учетной записи root. Для этого вам нужно будет выполнить следующее в качестве пользователя «root»:
apt-get update # Updates the software libraries which are available apt-get upgrade # Make sure you have the latest and greatest versions apt-get install sudo -y # Install the "sudo" application
Теперь, когда Sudo установлен, нам нужно создать другую учетную запись пользователя:
adduser site # You will be prompted for information, just fill it in (site is the username)
Теперь, когда пользователь «Сайт» был создан, давайте предоставим им доступ к группе «Sudoers» (специальная группа, сделанная для предоставления людям доступ к команде «Sudo»).
usermod -a -G sudo site # Adds the user to the group
Теперь проверьте, что вы можете использовать «sudo»
su site # Change your current account to the "site" account sudo bash # Attempt to run bash as root
Если это все работает, вы сейчас находитесь в месте, где вы можете отключить корневой доступ. И это действие удивительно просто! Как root, вам нужно будет изменить следующий файл: /etc/ssh/sshd_config . Для этого вам нужно будет сделать следующее:
nano /etc/ssh/sshd_config # This will open a text editor
В этом файле ищите следующую строку:
PermitRootLogin yes
Или:
PermitRootLogin prohibit-password
И измените его к следующему (там может быть знак «#» перед этой строкой, если это так, то удалите этот символ):
PermitRootLogin no
Это удалит возможность кого-то для входа в систему как «root» после перезагрузки конфигурации. Итак, чтобы сделать это, вам нужно будет сделать следующее:
/etc/init.d/ssh restart # Restart the SSH service
Большой! Последнее, что нужно сделать, это убедитесь, что изменения, которые вы сделали, сделали. Хорошая новость в том, что этот тест действительно легко сделать! Поскольку вы уже подключены с учетной записью «root», просто повторите тот же метод, который вы сделали первый раз, чтобы подключиться, и он должен потерпеть неудачу! Если это не так, то один из настроек может быть не установлен правильно.
Пожалуйста, обратите внимание на : В то время как на этом шаге я обычно держу свой оригинальный SSH-соединение открытым и проверим в последний раз, когда я могу SSH в качестве другого пользователя (I.E. сайта), а затем запустить команды sudo. Если я не так, я фактически запер из сервера, который поражает целью того, что мы пытаемся сделать!
2. Отключить пароль Войти через SSH
Ждать! Вы хотите, чтобы я отключил пароль входа? Как я смогу подключиться к серверу и делать вещи?
Вот где находится вещь, называемая «ключами SSH». Это способ, которым вы можете генерировать «замок», с которым можно войти только ваша клавиша. Действительно аккуратно об этих ключах, вы можете использовать его для аутентификации на любом из ваших серверов (если вы устанавливаете его правильно), но это также приходит на риск. Если ваш ключ скомпрометируется, ваш злоумышленник имеет доступ ко всем вашим серверам. Лично я думаю, что этот компромисс приемлема до тех пор, пока вы держите его в безопасном месте.
Так , SSH на сервер как пользователь «сайта» (или пользователь, который вы настроили во время прогулки по этому поводу), и введите следующее:
ssh-keygen # A tool to generate SSH keys
Когда вы вводите это, вы будете предложены следующим образом:
Generating public/private rsa key pair. Enter file in which to save the key (/home/site/.ssh/id_rsa):
Вы в порядке с простым ударом в этот момент. Тогда вас будет предложено для паронной фразы. Это еще одна защита, которую вы можете предпринять, чтобы убедиться, что даже если ваш закрытый ключ находится в руках нематериального человека, вы все еще в безопасности. Это добавляет пароль к нему, так что добавьте один.
Большой! Теперь у вас появляется клавиша SSH! Этот процесс создал два файла:
- id_rsa — Ваш закрытый ключ, держите это в безопасном месте
- id_rsa.pub — Ваш открытый ключ, это используется на стороне аутентификации для предоставления доступа
Итак, сначала первое, давайте сделаем это так, чтобы вы могли войти в систему, используя этот ключ. Для этого вы можете сделать следующее:
cd ~/.ssh # Change into the ".ssh" folder cat id_rsa.pub >> authorized_keys # Appends the contents of the file into an "authorized_keys" file which the SSH server will use to authenticate chmod 700 authorized_keys # Restrict access to the file
Потрясающие! Теперь сервер устанавливается для аутентификации клавиш SSH, теперь вам нужно сделать ее, чтобы ваш локальный компьютер мог использовать эту клавишу для подключения.
Для начала нам нужно получить копию ключевого файла. Для этого вы можете сделать следующее:
cat id_rsa
Это распечатает содержимое файла на ваш экран, просто скопируйте вывод и сохраните его на своем компьютере.
На системе * NIX (Linux или Mac) вы можете поместить этот файл в папку «~/.ssh/» на вашем компьютере, и она автоматически заберет его, когда вы пытаетесь войти в систему. Итак, все, что вам нужно сделать, есть файл «ID_RSA» и сохранить там файл. Если вы находитесь в Windows, вы можете использовать PUTTY, чтобы обработать это.
Теперь, следующий шаг, как всегда, прежде чем мы на самом деле отключаем что-либо на сервере, это убедиться, что вы можете SSH на сервер с вновь созданным ключом. На системе * NIX вы сможете выполнить следующее:
ssh site@domain.com # If you named it id_rsa
Если вы переименули файл (или поместите его в другую папку), вы можете использовать флаг «-i», чтобы указать, где можно прочитать файл идентификации.
ssh -i ~/.ssh/id_rsa site@domain.com # Same as above
Если установлено правильно, вы теперь должны быть автоматически войти в сервер (при условии, что вы набрали пароль правильно). Если это не работает, то у вас есть проблема, которая должна быть разрешена, прежде чем двигаться дальше.
Теперь, когда мы успешно проверенные с помощью этого ключа, мы теперь можем сделать его, поэтому мы не позволяем использовать пароли для входа в него. Вы можете сделать это, выполнив следующее (из окна SSH).
sudo bash # Elevate your account to root nano /etc/ssh/sshd_config
Теперь вы снова в текстовом редакторе, вам нужно будет изменить следующее:
PasswordAuthentication yes
Измените это (линия может быть прокомментирована) к:
PasswordAuthentication no
А затем выйдите из редактора, как раньше, и снова перезапустите SSH Service:
/etc/init.d/ssh restart
Теперь пришло время проверить новую конфигурацию (прежде чем убить свою сессию SSH). В новом окне попробуйте подключиться к клавише SSH, которую вы ранее сделали, это все равно будет работать. Следующее, что вам нужно попробовать, это подключиться без клавиши SSH, чтобы убедиться, что никто не сможет. Простой способ сделать это следующим образом:
ssh -i /dev/null site@domain.com
Это, вероятно, даст вам ошибку, что ключ находится в недопустимом формате, но это нормально, потому что он пытался загрузить ключ не по умолчанию, и обычно отступит к использованию логин пароля. Если он работал запланированным, вы должны увидеть следующее сообщение об ошибке:
site@domain.com: Permission denied (publickey).
Если вы получили это, то здорово! Ваш сервер доступен только по SSH Key!
Пожалуйста, обратите внимание на : Если у вас есть другие люди, которым нужно подключиться к вашему серверу через SSH/SFTP (то есть разработчики, сделайте их собственную учетную запись и повторить первую группу шагов, которые, если вам нужно отозвать их доступ, вы можете сделать это, просто удалив их учетная запись пользователя!).
3. Включите отказ мониторинга, чтобы поймать потенциальных злоумышленников
Теперь, когда вы можете войти только с ключами SSH, и root больше не разрешается вообще войти вообще, вы можете думать: «Эй, я должен быть в безопасности». Технически вы правы, но в то же время вы пошли ко всему этому, почему бы не добавить несколько других вещей в список?
Атаки грубой силы все еще могут быть направлены на ваш сервер, они менее склонны к тому, чтобы попасть в куда угодно, потому что они почти не получают отзывов о своей аутентификации (а не «Пароль недействительна» без ключа). Но почему бы не установить свой сервер вверх, чтобы следить за подозрительными попытками входа в систему и остановить их на месте без того, что вы даже не знаете?
Это то, что « Fail4ban » сделает для вас.
sudo apt-get install fail2ban -y
Однако конфигурация по умолчанию работает, если вы хотите настроить некоторые настройки, доступно отличное руководство от цифрового океана здесь Отказ
4. Держите свой сервер в современном
Все программное обеспечение написано людьми, каждый день есть обновления, выходящие в разные пакеты. К ним относятся обновления функций, а также исправления ошибок и безопасности. Итак, лучший способ убедиться, что вы в безопасности, это поддерживая обновление вашего сервера!
sudo apt-get update sudo apt-get upgrade -y # Update software
Также как у вашего персонального компьютера, время от времени на операционной системе также есть патчи и обновления для операционной системы, поэтому вы захотите сохранить эти актуальные. Это, как говорят, существует небольшой риск, который обновления заставляют забрать вещи на несколько, так что сделайте это с небольшим количеством ухода.
sudo apt-get dist-upgrade -y # Update operating system
5. Необязательно: ограничить доступ SSH к определенным IP-адресам
Если вы уверены, что ваш IP-адрес никогда не меняется, то вы можете заблокировать свой сервер также к своему IP-адресу. Как правило, я избегаю этого только потому, что время от времени я использую публичный WiFi и хотел бы подключиться к моим серверам.
Для этого вы можете использовать iptables (встроенный брандмауэр), чтобы ограничить доступ на ваш порт SSH. Все, что вам нужно сделать для этого следующим образом:
sudo bash # Login as admin iptables -A INPUT -p tcp --dport 22 --source 192.168.0.0/24 -j ACCEPT # Change 192.168.0.0 to your IP address/range iptables -A INPUT -p tcp --dport 22 -j DROP # Ignore all other requests
По умолчанию эти правила не сохраняются и перезагружаются при перезагрузке сервера. Для того, чтобы сделать это, вам нужно будет установить другую программу и запустить ее как услугу.
sudo apt-get install iptables-persistent # Installs persistent rules sudo service iptables-persistent start # Start the service
Теперь, несмотря ни на что, ваши настройки брандмауэра должны оставаться на месте.
6. По желанию: Измените порт по умолчанию для запуска SSH на
Большинство серверов SSH работают на одном порту, 22. Из-за этого, если вы хотите сделать свой сервер сложнее найти, вы всегда можете изменить порт, на котором вы подключаетесь. Это также доступно через файл конфигурации.
Вы можете сделать это, выполнив следующее:
sudo bash # Elevate your account to root nano /etc/ssh/sshd_config
Ищите линию, которая говорит:
#Port 22
И изменить его на следующее:
Port 1000 # 1000 is the port it would be connected to so change this however you would like
После выполнения, выйдите, сохраните и перезапустите SSH-сервер, и вы должны быть хороши, чтобы пойти!
/etc/init.d/ssh restart
Поздравляю!
Ваш сайт должен быть относительно защищен от злоумышленников мира!
Оригинальный пост : TheGamingList
Оригинал: «https://www.codementor.io/@andrewjudd/how-do-i-secure-a-server-1ked455sm8»