Как правильно настроить Linux сервер: Базовая настройка системы

Серия статей по настройке сервера Linux с Apache/Nginx, MySQL и PHP будет состоять из нескольких частей для более удобного описания и лучшего понимания:

  1. Базовая настройка системы
  2. Установка и настройка MySQL
  3. Установка и настройка Apache2
  4. Одновременная установка PHP5 и PHP7 на сервере
  5. Установка Nginx в качестве Frontend к Apache2
  6. Настройка связки Nginx + php-fpm
  7. Настройка Git сервера

Введение

Все приведенные ниже действия актуальны для дистрибутовов на основе Debian (Debian, Ubuntu). При написании данного мануала использовалась операционная система Debian 8.5 Jessie ветки stable.

terminal1

По умолчанию всё ПО устанавливается из официальных репозиториев Debian ветки Stable.

terminal2

Команды, вводимые в консоли, будут выделяться.

Базовая настройка системы.

Обновить систему до актуального состояния. Выполним в консоли следующие команды:

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-ключ представляет из себя пару файлов – публичный и персональный. Публичный ключ находится на стороне сервера. Персональный – это секретный файл, доступ к которому должен иметь только пользователь с правом на вход на сервер. В процессе авторизации серверу предоставляется персональный ключ, на стороне сервера происходит сверка пары публичный-персональный ключи, и если она проходит успешно – пользователь авторизуется на сервере.

Смотрите так же   Настраиваем Pump.io у себя на сервере

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

Отредактируем файл настроек ssh-сервера:

sudo nano /etc/ssh/sshd_config

Необходимо изменить следующие строки в данном конфиге:

PermitRootLogin without-password # запрет авторизации от имени root без пароля

AuthorizedKeysFile %h/.ssh/authorized_keys # указание на расположение файла с публичными ключами

Сохраняем и выходим. Теперь необходимо сгенерировать пару ключей «публичный-приватный». Для этого воспользуемся программой PuttyGen

После генерации необходимо сохранить приватный и публичный ключи

puttygen_config

Файл без расширения – это публичный ключ. Его можно дублировать на различных серверах. Файл с расширением .ppk – это ваш приватный ключ. Его необходимо хранить вне доступа 3х лиц – он используется для доступа к серверу.

Скопируем содержимое публичного ключа в файл /home/alex/.ssh/authorized_keys

(вместо alex может быть любой пользователь, которому необходим предоставить доступ по ssh-ключу).

Puttygen генерирует ключи немного в неверном формате. Прописывать нужно в следующем

putty_terminal

После этого необходимо перечитать настройки ssh-сервера

service ssh reload

При подключении необходимо указать putty приватный ключ

putty_key_auth_conf

1.3. Настройка Firewall

В качестве файрволла будем использовать ufw. Ufw – надстройка над стандартным iptables с простым синтаксисом.

Установим ufw

apt-get install ufw

Настроим ufw – откроем 22 порт и закроем все остальные порты по умолчанию. Будем открывать по необходимости

ufw allow 22 
ufw default deny  
ufw enable

Может быть интересно:

Добавьте комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *