Как правильно настроить Linux сервер: Базовая настройка системы
|Серия статей по настройке сервера Linux с Apache/Nginx, MySQL и PHP будет состоять из нескольких частей для более удобного описания и лучшего понимания:
- Базовая настройка системы
- Установка и настройка MySQL
- Установка и настройка Apache2
- Одновременная установка PHP5 и PHP7 на сервере
- Установка Nginx в качестве Frontend к Apache2
- Настройка связки Nginx + php-fpm
- Настройка Git сервера
Введение
Все приведенные ниже действия актуальны для дистрибутовов на основе Debian (Debian, Ubuntu). При написании данного мануала использовалась операционная система Debian 8.5 Jessie ветки stable.
По умолчанию всё ПО устанавливается из официальных репозиториев Debian ветки Stable.
Команды, вводимые в консоли, будут выделяться.
Базовая настройка системы.
Обновить систему до актуального состояния. Выполним в консоли следующие команды:
apt-get update apt-get upgrade
1.1. Настройка пользователей
Установим на сервер sudo:
apt-get install sudo
Необходимо убедиться, что в файле /etc/sudoers присутствует следующая строка:
%sudo ALL=(ALL:ALL) ALL
Данная строка предоставляет повышенные привилегии пользователям, находящимся в группе sudo.
Пользоваться пользователем root не самая лучшая практика. Добавим нового пользователя, выполнив следующую команду:
useradd alex -m -s /bin/bash
Где alex – имя нового пользователя.
Ключ –m указывает на то, что необходимо создать домашнюю папку для пользователя (по умолчанию будет /home/alex)
Ключ –s указывает шелл доступа по умолчанию.
С дополнительными ключами можно посмотреть, выполнив в консоли man useradd
Сменим пользователю alex пароль на вход, выполнив команду:
passwd alex
Добавим пользователя alex в группу sudo для возможности выполнять системные команды от данного пользователя:
usermod -a -G sudo alex
1.2. Настройка авторизации ssh по ключам
ssh-ключ представляет из себя пару файлов – публичный и персональный. Публичный ключ находится на стороне сервера. Персональный – это секретный файл, доступ к которому должен иметь только пользователь с правом на вход на сервер. В процессе авторизации серверу предоставляется персональный ключ, на стороне сервера происходит сверка пары публичный-персональный ключи, и если она проходит успешно – пользователь авторизуется на сервере.
Зайдем на сервер от имени пользователя, которого создали в п 1.1 данного мануала с паролем, который создали ему.
Отредактируем файл настроек ssh-сервера:
sudo nano /etc/ssh/sshd_config
Необходимо изменить следующие строки в данном конфиге:
PermitRootLogin without-password # запрет авторизации от имени root без пароля AuthorizedKeysFile %h/.ssh/authorized_keys # указание на расположение файла с публичными ключами
Сохраняем и выходим. Теперь необходимо сгенерировать пару ключей «публичный-приватный». Для этого воспользуемся программой PuttyGen
После генерации необходимо сохранить приватный и публичный ключи
Файл без расширения – это публичный ключ. Его можно дублировать на различных серверах. Файл с расширением .ppk – это ваш приватный ключ. Его необходимо хранить вне доступа 3х лиц – он используется для доступа к серверу.
Скопируем содержимое публичного ключа в файл /home/alex/.ssh/authorized_keys
(вместо alex может быть любой пользователь, которому необходим предоставить доступ по ssh-ключу).
Puttygen генерирует ключи немного в неверном формате. Прописывать нужно в следующем
После этого необходимо перечитать настройки ssh-сервера
service ssh reload
При подключении необходимо указать putty приватный ключ
1.3. Настройка Firewall
В качестве файрволла будем использовать ufw. Ufw – надстройка над стандартным iptables с простым синтаксисом.
Установим ufw
apt-get install ufw
Настроим ufw – откроем 22 порт и закроем все остальные порты по умолчанию. Будем открывать по необходимости
ufw allow 22 ufw default deny ufw enable
Может быть интересно: