No Image

Сервер на debian с нуля

СОДЕРЖАНИЕ
0 просмотров
11 марта 2020

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

Данная статья является частью единого цикла статьей про сервер Debian.

Введение

Любая работа с сервером после установки чаще всего начинается со стандартных обязательных действий, без которых либо не получится продвинуться дальше, либо будет неудобно работать. Например, вам в любом случае необходимо выполнить сетевые настройки, желательно обновить систему и установить часовой пояс. Рекомендуется сразу настроить автообновление времени, подрихтовать параметры sshd, установить midnight commander и выполнить другие настройки.

Об этом я хочу рассказать в статье. Я буду делиться своим реальным опытом работы. Это не значит, что нужно делать так, как я. Я могу в чем-то ошибаться, что-то делать не так удобно, как можно было бы сделать. Это просто советы, которые кому-то помогут узнать что-то новое, а кто-то возможно поделится со мной чем-то новым для меня, либо укажет на мои ошибки. Мне бы хотелось, чтобы это было так. Своими материалами я не только делюсь с вами знаниями, но и сам узнаю что-то новое в том числе и из комментариев и писем на почту.

Указываем сетевые параметры

Итак, у нас в наличии только что установленная система. Узнать или проверить ее версию можно командами:

Очень подробно про настройку сети в Debian я написал в отдельной статье. Рекомендую с ней ознакомиться. Здесь же кратко выполним основное. Для настройки сети, необходимо отредактировать файл /etc/network/interfaces. Сделаем это:

Для получения IP адреса по dhcp достаточно будет следующего содержания:

Если у вас статический адрес, то его настроить можно следующими параметрами в файле:

Сохраняем файл. Теперь нужно выполнить перезапуск сети. В Debian это делается командой:

В системном логе /var/log/syslog при этом будут записи:

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

К сетевым настройкам я отношу установку пакета net-tools, в состав которого входят старые и привычные утилиты для работы с сетью — ifconfig, netstat, route и другие. В современных дистрибутивах их заменили одной командой ip, но лично мне вывод некоторых старых команд, конкретно, netstat, нравится больше, поэтому я иногда ими тоже пользуюсь.

На этом настройка сети закончена.

Обновление системы, отличие apt upgrade от dist-upgrade и full-upgrade

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

Посмотреть список пакетов, готовых к обновлению, можно с помощью команды:

Теперь выполним простое обновление всех пакетов системы:

Ключ upgrade выполняет только обновление одной версии пакета на другую, более свежую. Он не будет устанавливать или удалять пакеты, даже если это необходимо для обновления других. Это наиболее безопасный и надежный вариант обновления, но он может обновить не все. Например, с ее помощью не обновить ядро до более свежей версии.

Ключ dist-upgrade или full-upgrade (это одно и то же) в дополнение к upgrade обрабатывает все изменения зависимостей для новых пакетов и во время работы может удалять ненужные и ставить необходимые пакеты для обновления. Вот выдержка из документации по поводу этих двух ключей.

Так что после обычного обновления, делаем еще full-upgrade.

Мне предлагается удалить старые пакеты, которые больше уже не нужны. Это зависимости от старых версий софта, который уже обновился и получил новые пакеты из зависимостей, а эти ему больше не нужны. Очистим их командой:

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

На этом обновление системы закончено. Если вы хотите обновить версию релиза, например Debian 9 обновить до Debian 10 Buster, то читайте отдельный материал.

Настройка ssh

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

Существует расхожее мнение, что менять порт ssh это наивность, а не защита. Надо просто настроить сертификаты, fail2ban или еще каким-то образом защитить ssh порт, к примеру, с помощью ограничений iptables, и т.д. Тем не менее, я все же рекомендую порт сменить на нестандартный. Даже если у вас все защищено от подбора паролей, так как вы используете сертификаты, лишние запросы к ssh порту тратят ресурсы сервера, хоть и не очень большие. Идет установка соединения, обмен рукопожатиями и т.д. Зачем вам это нужно?

По-умолчанию в Debian, впрочем как и в любом другом дистрибутиве Linux, ssh сервер работает на 22 порту. Изменим этот порт, к примеру, на 23331. Так же я еще изменяю конфигурацию для разрешения подключения по ssh пользователя root с использованием пароля. В Debian из коробки пользователь root по ssh паролем авторизовываться не может. Изменим и это. Открываем файл настроек:

И изменяем там следующие строки. Приводим их к виду:

Сохраняем изменения и перезапускаем сервер ssh следующей командой:

Все в порядке, сервер слушает 23331 порт. Теперь новое подключение будет осуществлено только по порту 23331. При этом, после перезапуска ssh, старое подключение не будет разорвано.

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

Отдельно тему подключения к серверу под root я рассмотрел в статье про sudo. Кому интересно, переходите в нее и делитесь своим мнением на этот счет.

Установка утилит mc, htop, iftop

Следующим шагом я настраиваю некоторые полезные утилиты, которыми регулярно пользуюсь в повседневной работе. Первая из них это всем известный двухпанельный файловый менеджер Midnight Commander. Установим mc на наш сервер:

И сразу же для него включаю подсветку синтаксиса всех файлов, которые не обозначены явно в файле /usr/share/mc/syntax/Syntax синтаксисом для sh и bash скриптов. Этот универсальный синтаксис нормально подходит для конфигурационных файлов, с которыми чаще всего приходится работать на сервере. Перезаписываем файл unknown.syntax. Именно этот шаблон будет применяться к .conf и .cf файлам, так как к ним явно не привязано никакого синтаксиса.

Я сразу же ставлю редактором по-умолчанию mcedit. Для этого просто выбираю его из меню при первом редактировании какого-нибудь файла. Если у вас такое меню не появляется, можете вызвать его сами и выбрать необходимый редактор по-умолчанию:

Так же я рекомендую очень удобный диспетчер задач — htop. Мне он помог, к примеру, решить проблему Взлома сервера CentOS. Ставим его на сервер:

Полезной утилитой, позволяющей смотреть сетевую загрузку в режиме реального времени, является iftop. Очень рекомендую. Более простого и удобного инструмента мне не попадалось, хотя я много перепробовал подобных вещей. Устанавливаем iftop на сервер:

Настройка и обновление времени в Debian

Теперь проверим установленный часовой пояс, время и включим автоматическую синхронизацию времени с удаленного сервера. Очень подробно этот вопрос я рассмотрел в отдельной статье — настройка времени в Debian.

Узнать дату, время, часовой пояс можно командой date:

Если все указано верно, то менять ничего не нужно. Если же у вас неправильное время или указан часовой пояс не соответствующий вашему, то настроить это можно следующим образом. Сначала обновим часовые пояса:

Теперь выберем правильный часовой пояс с помощью команды:

Выбирая соответствующие пункты визарда, указываете свой часовой пояс.

Дальше синхронизируем время с сервером времени в интернете. Для разовой или ручной синхронизации понадобится отдельная утилита. Установим ntpdate на сервер:

И синхронизируем время:

Если получаете ошибку:

Значит у вас уже работает служба ntp. Ее нужно остановить и обновить время вручную. Хотя если она работает, то у вас и так должно быть все в порядке.

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

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

Настройка firewall (iptables) в Debian

В качестве firewall в Debian по-умолчанию используется iptables, его и будем настраивать. Изначально фаервол полностью открыт и пропускает весь трафик. Проверить список правил iptables можно следующей командой:

Читайте также:  Тормозит дота 2 на виндовс 10

Создадим файл с правилами iptables:

Очень подробно вопрос настройки iptables я рассмотрел отдельно, рекомендую ознакомиться. Хотя в примере другая ОС linux, принципиальной разницы нет, настройки iptables абсолютно одинаковые, так как правила одни и те же.

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

Даем файлу права на запуск:

Проверяем, что правила записались в файл /etc/iptables_rules. Если их там нет, то записываем их вручную.

Правила применились и произошла их запись в файл /etc/iptables_rules. Теперь нужно сделать так, чтобы они применялись при загрузке сервера. Для этого делаем следующее. Открываем файл /etc/network/interfaces и добавляем в него строку pre-up iptables-restore Настройка логов cron

По-умолчанию, в Debian нет отдельного лог файла для событий cron, они все сыпятся в общий лог /var/log/syslog. Лично мне это не очень нравится, я предпочитаю выводить эти события в отдельный файл. Об этом я написал отдельно — вывести логи cron в отдельный файл. Рекомендую пройти по ссылке и настроить, если вам это необходимо. Там очень кратко и только по делу, не буду сюда копировать эту информацию.

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

Я привык в своей работе пользоваться консольной утилитой screen. Изначально она задумывалась как инструмент, который позволяет запустить что-то удаленно в консоли, отключиться от сервера и при этом все, что выполняется в консоли продолжит свою работу. Вы сможете спокойно вернуться в ту же сессию и продолжить работу.

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

Позже я решил подробнее ознакомиться с этим инструментом и обнаружил, что там есть несколько удобных моментов, которые можно использовать в ежедневной работе. Вот как использую утилиту screen я. При подключении к серверу у меня запускается screen с тремя окнами 1, 2, 3. Первое окно автоматически переходит в каталог /, второе в /etc, третье в /var/log. Я осмысленно назвал эти окна: Main, etc, logs соответственно. Внизу находится строка состояния, в которой отображен список всех открытых окон и подсвечено активное окно.

С помощью горячих клавиш я очень быстро переключаюсь между окнами в случае необходимости. Вот как выглядит мое рабочее окно ssh подключения:

Переключаюсь между окнами с помощью стандартных горячих клавиш screen: ctrl+a 1, ctrl+a 2, ctrl+a 3. Я специально изменил нумерацию, чтобы она начиналась не с 0 по-дефолту, а с 1. Так удобнее на клавиатуре переключать окна. Кнопка 0 находится слишком далеко от 1 и 2.

Чтобы настроить такую же работу screen, как у меня, достаточно выполнить несколько простых действий. Сначала устанавливаем screen:

Создаем в каталоге /root конфигурационный файл .screenrc следующего содержания:

Для знакомства с настройками, горячими клавишами и вариантами применения утилиты screen можно по адресу http://itman.in/ssh-screen/ Мне помог этот материал. Написано кратко, по делу и доходчиво.

Заключение

Теперь можно перезагрузить сервер и проверить, все ли в порядке. У меня все в порядке, проверил 🙂 На этом базовая настройка сервера debian окончена. Можно приступать к конфигурации различных сервисов, под которые он настраивался. Об этом я рассказываю в отдельных статьях.

Напоминаю, что данная статья является частью единого цикла статьей про сервер Debian.

Материал из Xgu.ru

Статья описывает настройку семейства самых популярных и важных дистрибутивов GNU/Linux

Содержание

[править] Введение

Эта статья описывает установку «с нуля» сервера на linux, предназначенного, к примеру, для размещения сайтов.

Статья может пригодиться в качестве:

  • Шпаргалки/контрольного списка (чтобы не забыть что-либо);
  • Инструкции для начинающих;
  • Источника чужого опыта продвинутому администратору. Рассмотрим полезные штатные утилиты, о которых возможно вы не знали.

Все команды в этой статье выполняются от суперпользователя root, если не написано иное. Чтобы стать суперпользователем, необходимо набрать или В этом режиме надо быть предельно осторожным — например, если перепутать /dev/sda с /dev/sdb, то операция будет произведена с другим жёстким диском.

Команды в статье начинаются с символа «#» ­— его вводить не надо, это приветствие терминала, нужно чтобы в статье отличить вводимую команду от вывода.

[править] Работа в терминале

Если вы раньше не работали в консоли Linux, запомните несколько правил:

  • Прочтите статьи для начинающих, например http://help.ubuntu.ru/manual/терминал;
  • Регистр букв имеет значение. Чаще всего, команды пишутся с маленькой буквы. Если написать команду с большой буквы, система сообщит вам, что команда не найдена;
  • Удобно пользоваться автодополнением, чтобы не ошибаться при наборе команды. Когда наберёте первые символы, просто нажмите TAB один-два раза;

[править] Выбор сервера

Если у вас ещё нет своего сервера — не беда, можно взять его в аренду, например (в алфавитном порядке):

[править] Выбор операционной системы

Debian 7 или Ubuntu 14.04 — на ваш выбор, для новичка разницы нет. Если Ubuntu, то только LTS (14.04, например). На виртуальный сервер с менее 4 ГБ оперативной памяти устанавливаем 32-разрядную систему, на «железный» сервер — 64-разрядную. Устанавливаем в минимальном виде, без графики и дополнительных пакетов.

[править] editor

Если вам нравится стиль встроенных редакторов Far manager / Norton commander, то вам, наверное, понравится редактор mcedit. Установите Midnigth commander:

В статье везде для редактирования используется команда editor — она является ссылкой на ваш любимый консольный редактор. Поменять его можно командой:

[править] sudo

Если у нас Debian, то лучше сразу установить sudo:

и добавить себя в группу sudo:

(если вы забыли, как назвали своего пользователя при установке системы, посмотрите вывод команды getent passwd, он скорее всего последний в списке).

[править] Базовые настройки

В файле /etc/default/rcS прописываем «FSCKFIX=yes», чтобы в случае аварийной перезагрузки ошибки были по-возможности исправлены автоматически.

[править] Пользователи

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

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

заменяем «DIR_MODE=0755» на «DIR_MODE=0750».

Добавлять пользователей в систему можно командой

Если пользователь будет подключаться только удалённо, создаём его без пароля (см. раздел #SSH):

Если нужно предоставить пользователю права суперпользователя (через sudo), добавляем его в группу sudo:

[править] Локальный сервер

Пара советов ниже важны, если сервер у вас не удалённый, а находится в локальной сети.

[править] Именование сетевых интерфейсов

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

Настройки применятся после перезагрузки.

[править] arpwatch

Полезен, чтобы узнавать о новых устройствах в локальной сети (и конфликтах адресов, если они у вас бывают). В /etc/default/arpwatch правим ARGS="-N -p -i eth0", чтобы он слушал только на интерфейсе локальной сети, а не пытался отслеживать сеть провайдера.

Письма будет присылать на root, так что обязательно читаем ниже про почту.

Если точно не надо отправлять почту от arpwatch, добавьте "-Q" к опциям.

[править] IP-адресация

Эти темы не раскрыты:

[править] Репозитории

Репозитории — это специальные серверы-хранилища, с которых скачиваются deb-пакеты с программами для установки. Скорее всего, у вас уже указаны все необходимые репозитории, но можете проверить:

[править] Ubuntu

Пример файла /etc/apt/sources.list для Ubuntu 14.04:

[править] Debian

Пример файла /etc/apt/sources.list для Debian 7:

[править] Точное время

Время на сервере должно быть точным.

Просто установите службу ntp:

Протестировать можно через несколько минут:

Если у одного из ip-адресов слева стоит символ «*», значит всё в порядке.

[править] Часовой пояс

Выбираем то, что вам удобнее, например, Азия → Екатеринбург.

[править] Имя сервера

Имя сервера должно быть «полным» ­— например, srv01.example.com. Команда «host srv01.example.com», выполненная на другом компьютере, должна выдавать ip-адрес сервера, а команда «host ip-адрес_сервера» должна выдавать его полное имя.

Это имя прописываем в /etc/hosts напротив ip-адреса сервера, после полного имени через пробел пишем сокращённое имя, например:

Применить полное имя на ходу можно командой hostname, например

В файл /etc/hostname прописываем сокращённое имя (см. man 1 hostname).

[править] У меня нет своего домена

Если у вас не куплено своё уникальное внешнее имя (например, example.com), то можно использовать выдуманное имя, но тогда сервер будет доступен по имени только в локальной сети. Для вымышленного имени не рекомендуется использовать .local, т.к. этот домен зарезервирован для служебных целей. Выберите другое имя, например .zone. Если же вам нужен доступ к серверу по имени из интернета, или купите свой домен, или возьмите у знакомых поддомен бесплатно.

[править] У меня есть свой домен

Добавьте к вашему домену произвольное имя, например srv01, и назовите ваш сервер полученным «srv01.example.com». Не называйте сервер «example.com», чтобы не путать его с вашим сайтом (которых потом может стать несколько). К тому же, сайт через какое-то время вы можете перенести на другой сервер (например, srv02.example.com), и настройки для srv01 не придётся менять.

Читайте также:  Средство отладки microsoft для windows 7

[править] Локализация

[править] Ubuntu

В Ubuntu предварительно установить пакет language-pack-ru (он потянет за собой лишний firefox-locale-ru, ну и ладно):

[править] Debian

ставим пробелом галочки на en_US.utf8 и ru_RU.utf8, жмём «Ok», в следующем окне по-умолчанию рекомендую выбрать en_US.utf8.

Также в Debian можно добавить строку в файл:

[править] Почтовая система

Почтовая система нужна на сервере, чтобы получать различные отчёты о его работе.

Проверяем, что команда «hostname -f» выдаёт полное имя сервера.

В Debian будет предложено удалить Exim, это нормально. В начальной конфигурации выбираем «Internet Site», дальше со всем соглашаемся.

В конфигурации Postfix оставляем 25-й порт открытым только для локальных сервисов, иначе нас быстро завалит спамом:

Перезапускаем почтовый сервер:

Большинство программ отправляют отчёты о своей работе и ошибки в локальный ящик суперпользователю root. Настроим почтовую систему, чтобы она отправляла копии этих писем на удалённый ящик:

правим строку, начинающуюся с «root:»

Для теста, отправим письмо на свой внешний почтовый ящик:

Далее вводим текст письма, затем [Enter], точка и ещё раз [Enter], например:

Если будет запрос «Cc:» — просто нажимаем [Enter]. Если письмо не пришло, следует изучить содержимое файла /var/log/mail.log

[править] SSH

Очень важно правильно настроить на сервере удалённый доступ, чтобы боты не подобрали пароль.

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

Приводим соответствующие строки примерно к такому виду, номер порта выбираем случайный от 1024 до 65535:

Теперь проверьте из отдельного терминала (этот не закрывайте!), что SSH-доступ работает. Подробнее про SSH здесь: https://vazhnov.dreamwidth.org/10833.html.

[править] MySQL

Если нужен SQL сервер, то для примера установим MySQL. Надо заранее подготовить хороший пароль, сохраним его в вашу базу паролей (я генерирую и храню пароли в KeePassX) и пропишем в /root/.my.cnf:

При установке будет просьба ввести новый пароль для администрирования MySQL — вводите заранее подготовленный.

Немного обезопасим БД:

  • Change the root password? [Y/n] n
  • Remove anonymous users? [Y/n] y
  • Disallow root login remotely? [Y/n] y
  • Remove test database and access to it? [Y/n] y
  • Reload privilege tables now? [Y/n] y

[править] Тюнинг

Скорее всего, ничего настраивать не нужно. Если же сильно нужно поковырять MySQL на предмет тонкой настройки, стоит попробовать https://github.com/rackerhacker/MySQLTuner-perl

[править] Web-сервер

Принимать подключения и распределять их будем с помощью быстрого Nginx, а «за ним» можно будет ставить каждому сайту своё, здесь рассмотрим Apache.

[править] Nginx

Защитим конфигурацию и файлы журналов от просмотра любыми пользователями:

[править] Apache

Разделять пользователей сайтов будем с помощью mpm-itk. Перед установкой остановим Nginx, иначе установка Apache завершиться ошибкой из-за занятого http-порта 80.

Отключаем опасный в неумелых руках модуль:

Эти темы не раскрыты:

Редактируем файлы /mods-available/status.conf /mods-available/info.conf

Так как у нас соединения на 80 порту принимает Nginx, то Apache не может занимать 80 порт. Пропишем ему, например, порт 8080, да ещё и чтобы не был доступен удалённо:

приводим строку к следующему виду:

Устанавливаем libapache2-mod-rpaf, он нужен чтобы в журналах Apache были ip-адреса клиентов, а не проксирующего Nginx:

Убедимся, что Apache принимает соединения только на локальном 8080:

[править] phpMyAdmin

Перед добавлением сайтов, установим phpMyAdmin, чтобы удобно было администрировать базу данных. Вам понадобится пароль, который мы задавали при установке MySQL!

От автоматического конфигурирования Apache/Lighttpd отказываемся. Соглашаемся с «Configure database for phpmyadmin with dbconfig-common». На первый запрос пароля вводим пароль для администрирования MySQL, на второй запрос ничего не вводим — пароль для БД phpmyadmin будет сгенерирован автоматически, он нам не нужен.

Файл конфигурации для Apache /etc/apache2/sites-available/phpmyadmin.example.com сделан на основе файла /etc/apache2/conf.d/phpmyadmin.conf из комплекта поставки в Debian:

С помощью phpMyAdmin добавим SQL-пользователя и пустую базу данных для будущего сайта. Заходим в браузере по адресу: http://example.com/phpmyadmin/ Вводим доступы к базе данных:

  • Пользователь: root
  • Пароль: c8M2oWUJSrYrc2kiqQ
  • Привилегии → Добавить нового пользователя
  • Имя пользователя: example
  • Хост: Локальный
  • Пароль: придумываем новый хороший пароль, или генерируем, например, такой: cehckfv#vOFaSQdeQI
  • Внизу обязательно ставим галочку «Создать базу данных с именем пользователя в названии и предоставить на нее полные привилегии».
  • Нажимаем на ОК в самом низу.

[править] Добавляем сайт

Для примера, запустим сайт на WordPress. Добавляем в систему отдельного пользователя example, от которого будут запускаться процессы этого сайта:

Создаём директорию для будущего сайта:

Создаём конфигурацию нашего сайта в Nginx:

Конфигурация будет примерно такой (позаимствовано отсюда http://wiki.nginx.org/Wordpress + http://kbeezie.com/apache-with-nginx/ + дополнил для /wp-admin):

Здесь limit_req не даёт обращаться к php-скриптам с одного ip-адреса чаще 3 раз в секунду, при этом не затрагивая выдачу статики. Таким образом, мы защищаем наш сайт от простейших DoS-атак.

Панель администрирования дополнительно защищена http-авторизацией, параметры которой берутся из файла /home/example/www/htpasswd. Заведём в нём пользователя:

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

Проверяем, что в конфигурации Nginx нет ошибок:

Дальше часть команд мы будем делать от нового пользователя example, чтобы по неосторожности не испортить что-нибудь в системе (у этого пользователя просто нет прав на такое). Становимся им:

Приглашение в терминале должно было смениться с «#» на «$» — это значит, что теперь мы не обладаем правами суперпользователя. Установим свежий WordPress (кто-нибудь знает ссылку на всегда свежий WordPress?):

В результате у нас получится директория

/www/example.com/wordpress, а нам надо

/www/example.com. Переместим файлы:

Выходим из-под пользователя example:

Создаём место для журналов:

Создаём конфигурацию Apache.

с подобным содержимым:

Проверяем, что в конфигурации Apache нет ошибок:

Заходим в своём браузере на свой сайт: http://example.com/

Выбираем в полученном окне:

  • Создать файл настроек
  • Имя базы данных: example
  • Имя пользователя: example
  • Пароль: cehckfv#vOFaSQdeQI
  • Сервер базы данных: localhost
  • Префикс таблиц: wp_

[править] Добавляем второй сайт

Добавляем системного пользователя, SQL базу данных и пользователя, настраиваем Nginx, Apache.

[править] Резервное копирование

Эти темы не раскрыты:

Информацию с сервера необходимо периодически копировать куда-либо, чтобы в случае потери сервера (отказ оборудования, ошибка в работе администратора) было из чего восстанавливать его настройки и сохранённые на сервере данные. Если есть отдельный сервер, на нём можно запустить BackupPC. (rdiff-backup? rsnapshot?)

К базовым бэкапам (файлы, БД) хорошо бы добавить резервное копирование информации о разделах и загрузочную область (может, использовать для этого vbackup?). Сделать это можно так:

[править] Резервное копирование MySQL

Просто устанавливаем AutoMySQLBackup:

Можно ничего не настраивать, если вы хотите хранить дампы базы MySQL на том же сервере (что небезопасно) в каталоге /var/lib/automysqlbackup/.

Структура папок, создаваемая AutoMySQLBackup:

Таким образом, ротация резервных копий происходит в рамках каталогов с ежедневными, еженедельными и ежемесячными архивами. Для более точной настройки см. файл конфигурации /etc/automysqlbackup/myserver.conf

[править] Резервное копирование PostgreSQL

Есть скрипт autopostgresqlbackup, установим его:

Он будет автоматически каждый день делать резервную копию всех баз данных PostgreSQL в /var/lib/autopostgresqlbackup.

[править] BackupPC

Если есть другой сервер, на котором есть много свободного места, можно установить на него BackupPC и настроить.

[править] Обновления

Установите пакет apticron, чтобы получать на почту информацию о необходимых обновлениях. Чтобы автоматически устанавливать обновления, связанные с безопасностью, установите unattended-upgrades:

Выберем режим обновления:

В пределах выбранного вам релиза (например, Debian 7 или Ubuntu 12.04) при обновлении ничего не должно ломаться, можете смело обновляться. А вот при переходе между релизами могут возникать проблемы.

[править] Защита

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

[править] Межсетевой экран

Чтобы правила межсетевого экрана автоматически загружались при загрузке системы, установим специальный пакет:

Прописываем правила, не забывая менять 22222 на ваш SSH-порт:

В первый раз применяем правила командой iptables-apply — она после применения спросит, стоит ли их оставить. Если вы сможете ответить «y» — значит, удалённый доступ у вас остался. Если же ответа некоторое время не будет, правила будут откачены.

[править] Защита от ошибочного выключения

Когда много сидишь в консоли, есть риск вместо своего компьютера выключить удалённый сервер. Чтобы избежать этого, просто установим на сервер molly-guard. С ним, при попытке выключить/перезагрузить сервер по SSH, будет выдан запрос имени сервера.

[править] Ведение истории изменений конфигурации

Просто устанавливаем etckeeper, в файле /etc/etckeeper/etckeeper.conf комментируем все «VCS=», кроме «VCS="git"», потом:

Теперь когда что-нибудь меняем в директории /etc, то вносим изменения в систему контроля версий:

[править] Ротация журналов

Эти темы не раскрыты:

[править] Наблюдение

[править] logwatch

Чтобы получать на почту ежедневные отчёты о работе системы, установите пакет logwatch. Он объединяет информацию полученную от других служб — к примеру, если в системе установлена и запущена служба smartd (см. ниже), то в ежедневном отчёте будет информация об изменении состояния жёстких дисков (например, температуры).

Читайте также:  Как запустить адобе флеш плеер в яндексе

[править] logcheck

Эти темы не раскрыты: Отличие от logwatch

[править] atop/sysstat

Также можно установить пакеты atop и sysstat, чтобы можно было посмотреть, к примеру, какой процесс вызвал нагрузку 2 часа назад, или сколько вчера было свободной памяти на сервере. В файле /etc/default/atop можно увеличить частоту записи информации о текущих процессах, например, до 1 раза в минуту: INTERVAL=60

Смотрим историю так (перемотка вперёд-назад клавишами t и T, выход по q): atop -r /var/log/atop/atop_20131118

[править] smokeping

Если у вас есть постоянно включенный другой компьютер, можно установить на него SmokePing. Он строит симпатичные графики, показывающие основные параметры сетевых соединений. Удобен для быстрого определения проблем с сетью. Желательно добавить в наблюдение цепочку узлов, идущих в Интернет, чтобы было видно, на каком из них возникают проблемы: ближайший маршрутизатор (выясняем с помощью traceroute), сайт провайдера, какой-нибудь сервер из точки обмена трафиком (ntp.ix.ru), rr0.mtu.ru и 4.2.2.2.

[править] Monit

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

Настройка Monit: TODO.

[править] nagios/zabbix

Для более серъёзного наблюдения за параметрами системы и для оперативного уведомления о проблемах, необходимо разбираться с такими системами, как например Nagios или Zabbix, здесь они рассмотрены не будут.

[править] Оборудование

[править] Жёсткие диски

Для получения уведомлений о состоянии жёстких дисков, просто установите smartmontools и разрешите запуск его службы в файле /etc/default/smartmontools, убрав символ комментария «#» из строки:

В ежедневных отчётах не стоит обращать внимание на небольшие колебания «Raw_Read_Error_Rate».

[править] Система охлаждения

Чтобы посмотреть температуру системных компонентов и скорости вращения вентиляторов, установите lm-sensors:

После чего запускаем процесс поиска (иногда и без него всё работает — попробуйте перейти сразу к следующему пункту):

[править] Что дальше?

Теперь, когда сервер настроен, остаётся:

  • Читать почту — отчёты от LogWatch, apticron и, в худшем случае, от smartd;
  • своевременно обновлять пакеты сервере;
  • при изменениях настроек, вносить их в etckeeper;

[править] Ссылки

Использованы материалы статей, также распространяющихся по лицензии CC-BY-SA:

[править] См. также

[править] Лицензия на текст

Текст доступен на условиях лицензии Creative Commons Attribution/Share-Alike версии 3.0 или более новой.

Установка debian на живой сервер или на виртуалку Virtual Box, настройка сети

Начнём с VirtualBox. Установка виртуальной машины стандартная, о ней уже рассказывалось в статье Установка Debian 9.3 — пошаговая инструкция

При установке имеется небольшая разница относительно того, какая операционная система установлена — Windows или unix системы.

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

Указываем имя Debian сервер, virtualbox сам выбирает операционную систему Linux Debian (он по названию определит).

Заходим в настройки и загружаем образ предварительно скачанные с сайта — www.debian.org/distrb/

Скачивать нужно дистрибутив net Install, что означает установка по сети, дистрибутив весит около 250 МБ, он достаточно быстро скачивается. Пакеты и программное обеспечение будет доустанавливаться по сети. Т.е. если у вас нет интернета, дистрибутив net Install вам не подойдёт, и нужно скачивать полную версию.

Заходим в настройке, выбираем накопители, и в контроллере IDE 10 монтируется образ ISO. Далее стартуем сервер. В открывшемся меня нажимаем Install. Подробная установка Debian рассмотрена здесь. После завершения установки перезагружаем сервер.

Установка SSH

SSH (от англ. Secure Shell «безопасная оболочка») представляет собой сетевой протокол для соединения по сети Internet, который позволяет выполнять удалённое управление системой. Имеется бесплатная модификация SSH, которая именуется OpenSSH и включена в пакет ssh Debian.

Подключиться к серверу через ssh (с компьютера под управлением unix подобной операционной системы)

Знакомство с командной строкой и протоколом ssh, sftp, настройка доступов по ключам (вместо паролей), root доступ

Базовые утилиты: su ls pwd cp scp locate updatedb which

Команда cd означает change directory (сменить директорию)

su – Superuser (суперпользователь).

Если мы находимся под логином текущего пользователя, то прописав su + имя пользователя, можно зайти в систему с правами root. Root имеет доступ ко всем папкам, может запускать и удалять всё что угодно, поэтому от имени суперпользователя необходимо работать внимательно и осторожно.

ls – показывает содержимое папки.

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

Сочетание клавиш

Ctrl+c отменяет запущенный процесс

Настройка сети

Для того, чтобы наш сервер стал доступен из нашей операционной системы, например, для того, чтобы из Windows зайти на свой сервер, через пути или просто пинговать его, или просто зайти в браузер. Выключаем сервер правильным способом (команда halt). Включаем питание в виртуально машине, идем в настройки – сеть — включаем режим моста, выбираем подключение.

Сейчас IP адрес у сервера будет такой же, как и у компьютера.

Вводим ip a — посмотреть все интерфейсы и их IP адреса.

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

Потребуется отредактировать следующий файл:

Пример config для ручной настройки IP:

iface lo inet loopback

# The primary network interface

iface eth0 inet static

# dns-* options are implemented by the resolvconf package, if installed

Публичные ключи

Для начала нам нужно сгенерировать ключ уже на нашем же сервере с помощью утилиты ssh-keygen. Ключи нужны чтобы каждый раз не вводить пароль.

На сервер нужно загрузить публичный ключ (приватный ключ хранится только у нас на компьютере).

Если ключ, который вы желаете использовать, уже имеется перейдите к разделу «Копирование публичного ключа».

Для создания пары (pair) ключей, пропишите команду в терминале вашего компьютера:

Ключ будет сгенерирован в текущем каталоге пользователя в папке …/.ssh/id_rsa.

Этот файл необходимо держать у себя на компьютере.

Чтобы зайти на аккаунт под публичным ключом нужно создать файл .ssh/authorized_keys

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

Закрываем файл сочетанием клавиш ctrl+x. Сохраняем – y.

Теперь попробуем зайти на сервер:

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

Псевдонимы в Unix ssh/config

Это относится опять же к операционным системам на базе unix. К Windows это никакого отношения не имеет. Но если вы будете с одного Debian сервера заходить на другой Debian сервер, тогда это вам пригодится или если ваш домашний компьютер будет Debian и вы будете администрировать удаленный компьютер Debian, то вам это в принципе поможет.

В папке ssh создается файл config, в нем прописывается хост, придумывается псевдоним. Теперь можно сразу заходить с помощью псевдонима под логином и паролем.

Знакомство с менеджером пакетов apt и принципом установки приложений

Что такое .deb пакеты в Debian?

Это файлы, подобные MSI файлам в Windows. То есть это набор файлов и мета-данных для установки того или иного определённого приложения. Там хранится скомпилированный бинарник уже сразу под вашу операционную систему. Например, если установлена 64 битная Debian версия 9.3, то значит в этом в пакете будет именно этот бинарный файл для установленной системы.

Вся установка deb пакетов означает скопировать бинарник в одну папку, config в другую папку, ну и попросить какие-то зависимости, без которых эта программа не запустится.

В Debian по умолчанию установлена системная программа dpkg, которая при установке системы ставит приложения. Существует принципиальное отличие dpkg и apt.

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

Утилита apt автоматически всё продумывает, необходимые зависимости она установит.

apt-get – это менеджер пакетов, который устанавливает deb пакеты и автоматически устанавливает все нужные зависимости. То есть если нужен, к примеру, PHP с поддержкой xml или ещё с чем-то, то apt-get автоматически устанавливает целый комплект нужных программ (это своего рода как AppStore для для iOS).

Установка утилит mc

Попробуем установить полезную утилиту mc, она часто используется для работы сервера. Она представляет собой популярный 2х-панельный файловый менеджер Midnight Commander.

Установка mc на сервер:

Добавляем пользователя в группу root

Выполнение команд от суперпользователя:

Установка и настройка окружения nginx, php-fpm, mysql;

Устанавливаем nginx php5 и mysql-server:

sudo apt-get install php5-fpm php5-mysql

Настройка nginx

sudo cp /etc/nginx/sites-available/default

Комментировать
0 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
Adblock detector