Меню Рубрики

Установка виртуального сервера на debian

Базовая настройка сервера Debian после установки

После установки нового сервера приходится выполнять один и тот же набор стандартных настроек. Сегодня мы займемся базовой настройкой сервера под управлением операционной системы 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 можно следующей командой:

Создадим файл с правилами 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.

источник

Установка и настройка домашнего сервера на Debian

Когда домашний «зоопарк» электронных девайсов разрастается от простого десктопа до ноутбука, десктопа, планшета, смартфона, телевизора с поддержкой SmartTV и т.д., появляется желание не просто объединить их в одну локальную сеть, а и иметь доступ к необходимым файлам с любого устройства, плюс, возможность администрировать каждое (ну почти) устройство сети, находясь в любой точке мира. В таком случае в сети нужно выделить главный ПК, который и будет заведовать всеми остальными. О том, как установить и настроить домашний сервер на Debian, вы узнаете из этого материала.

Зачастую, подобные домашние сервера собираются из устаревшего железа, которое либо стало не нужным после апгрейда основного ПК, либо уже давно просто пылится на полке. Да и в такой области применения не нужны разнообразные серверные навороты вроде контроллера домена, Active Directory, управления лесом и т.д. А потому сразу же, как операционная система, отпадает Windows Server ввиду прожорливости и перегруженности (как для нас) разнообразными функциями. И остается только один вариант – Debian. Для тех, кто еще не знаком с миром Linux, загляните в Википедию (https://ru.wikipedia.org/wiki/Linux), ознакомьтесь с историей, а также базовыми принципами работы в linux-системах.

Почему не Ubuntu Server, спросите вы? А потому что, первое – Debian это синоним слова «стабильность», и второе – в репозиториях Debian лежит более 43000 пакетов ПО. Из этих двух причин появляется третья – гиперпопулярность Debian-а, огромное комьюнити и неисчерпаемое количество информации по ОС.

Идем на https://www.debian.org/, и на странице «Где взять Debian» выбираем, что хотим скачать: маленький установочный образ netinst (для установки по сети), или же полные образы для CD или DVD. В первом случае получаем iso размером примерно в 300 МБ, во втором же – все торренты суммарно потянут на 12.5 ГБ. Я выбрал первый.

С помощью Win32DiskImager (http://sourceforge.net/projects/win32diskimager/) или другой аналогичной утилиты для записи образов на USB-диски, закидываем Debian на флешку (в той же Win32DiskImager это делается очень просто – выбираем диск, месторасположение образа, жмем «Write», соглашаемся на запись и ждем).

Для верности съемный диск стоит предварительно отформатировать в FAT32, потому что некоторые старые материнские платы не умеют загружаться с NTFS-флешек.

Небольшой совет: что бы не перетыкать флешку по несколько раз из одного ПК в другой, для проверки корректности записи образа можно воспользоваться улиткой Xboot (http://www.pendrivelinux.com/xboot-multiboot-iso-usb-creator/), в которую встроен эмулятор QEMU.

Итак, вставляем «прожжённую» флешку в будущий сервер и включаем его. Но предварительно зайдем в BIOS, выставим порядок загрузки, переместив съемные диски на первое место. Сохраняем изменения, перезагружаемся. В появившемся меню жмем «Install».

Сразу выбираем язык, страну и раскладку клавиатуры. Когда загрузятся необходимые компоненты, нам будет предложено ввести сетевое имя ПК и имя домена, которое мы оставим пустым.

Следующим пунктом будет ввод пароля для суперпользователя (root). Из соображений безопасности стоит придумать достаточно сложный пароль (kv_by_forever_2015, например). Подтверждаем, введя его еще раз.

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

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

Далее выбираем диск для разметки (скришоты делались в виртуальной машине с одним жестким диском).

В следующем окне предстоит выбор: сложить все фалы в один раздел, установить систему в /boot, а пользовательские файлы в /home, или то же, но еще с /var и /tmp. Выберем второе, так как пока что var и tmp нам не нужны, а в первом случае, при возможной переустановке системы, мы потеряем все свои файлы. А если отвести под наши нужды отдельный раздел home, то при переустановке или установке любого другого дистрибутива, достаточно будет просто подмонтировать /home, и все файлы снова будут доступны. Соглашаемся на внесение изменений, смотрим, что и как будет размечено, соглашаемся, и еще раз соглашаемся.

Пока устанавливается базовая система, приведу конфигурацию моего тестового сервера:

  • Процессор AMD Sempron 3000+@1.81 GHz
  • Материнская плата Foxconn 6100K8MB
  • 1.5 GB RAM (одна планка Samsung M3 68L6523CUS-CCC 512 MB DDR, вторая – Hexon неопределенной модели 1 GB DDR)
  • Жесткий диск Samsung 040GJ на 40 GB SATA 2
  • Интегрированная видеокарта NV >«Динозавр классический» получился .

Базовая система установлена, нам предлагают настроить менеджер пакетов apt. Указываем страну, в которой размещено зеркало, с которого мы хотим качать пакеты, собственно само зеркало, и, при необходимости, вводим адрес используемого прокси-сервера. Ждем пока закачается еще одна порция пакетов.

После нам предложат поучаствовать в программе сбора статистики использования пакетов . Тут выбираем по собственному желанию. Я ответил «нет».

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

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

После перезагрузки первое, что мы увидим – это менеджер загрузки GRUB.

Первый пункт меню «Debian GNU/Linux» загрузится автоматически через 2 секунды, потому просто ждем. И видим приветствие. Входим, введя свой логин и, по запросу, пароль. Далее делать скриншоты бессмысленно, потому я ограничусь вводом и выводом терминала.

Что бы иметь возможность запускать программы от имени администратора, необходимо установить утилиту под названием sudo. Выполняем в терминале:

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

Когда sudo установится, добавим нашего пользователя в группу sudo:

Перед дальнейшей настройкой примем за данность, что в интернет все наши устройства ходят через роутер. В моем случае это Huawei HG532e.

Для удобства в дальнейшем, присвоим MAC-адресам наших устройств статические ip-адреса. MAC-адрес можно узнать в свойствах сетевого адаптера в Windows, или выполнив (в Debian):

MAC-адрес будет отбражен в поле HWaddr.

По идее, сервер должен тихо и неприметно выполнять свою работу, стоя, например, в кладовке или подвале (если частный дом). Но сервером все так же нужно управлять. Лучший и общепринятый способ – это терминал через сетевой протокол SSH. Для этого нам понадобится SSH-сервер. Выполняем:

И соглашаемся на установку. Теперь надо правильно настроить сервер SSH. Открываем файл настроек во встроенном редакторе nano:

sudo nano /etc/ssh/sshd_config

И начинаем с самого начала. Поскольку планируется, что мы сможем получить доступ к системе из любого места на планете, сразу сменим стандартный 22-й порт, к примеру, на 2020:

Поскольку на пост-советском пространстве с IPv6 все еще плохо, ограничим подключения только протоколом IPv4. Сразу после порта вставляем новую строку:

Возвращаемся в начало. Поскольку мы уже настроили sudo, запретим вход через SSH под root-ом. Правим строку:

Идем дальше. Поскольку мы не будем использовать графическую среду, отключим форвардинг сервера окон X11 через ssh:

По умолчанию, аутентификация по паре логин/пароль отключена, и это правильное решение. Гораздо безопаснее входить по RSA-ключу. Для этого сначала на клиентских машинах нужно сгенерировать по паре ключей (приватный и публичный), а потом скопировать публичный на сервер. Для Windows существует просто отличный клиент для работы с SSH под названием PuTTY. Скачиваем zip-файл (http://www.chiark.greenend.org.uk/

sgtatham/putty/download.html) со всеми необходимыми утилитами сразу, распаковываем и запускаем PuTTYgen. Жмем «Generate», и хаотично «мотыляем» мышкой по окну, пока процесс генерации не закончится. После, жмем «Save public key» и «Save private key», и сохраняем куда-нибудь.

Однако, чтобы скопировать свой публичный ключ на сервер, войти один раз по логину/паролю все же придется. Для этого удаляем # перед строкой:

Снимаем комментарий и правим строку на:

Жмем Ctrl+O, Enter и Ctrl+X. Перезапускаем сервис ssh:

sudo systemctl restart ssh

Запускаем PuTTY, в поле «Host» пишем ip-адрес сервера, указываем порт, в поле «Saved Sessions» вводим имя подключения, жмем «Save» и «Open». Соглашаемся с предупреждением, вводим по предложению логин и пароль.

Теперь надо завести файл с публичными ключами. Создаем в каталоге профиля папку .ssh:

Переходим в нее, потом на нашем ПК открываем блокнотом файл с публичным ключом и копируем собственно сам ключ (строки между «comment…» и «—-end—-»), создаем файл authorized_keys и вписываем в него (последовательность команд сохранена):

ssh-rsa AAAAA…..(key)…..== username@server

Примечание: когда вставите в окно PuTTY с открытым файлом authorized_keys, ключ (просто жмите ПКМ) нужно удалить переходы на новую строку (чтобы весь ключ был в одну строчку).

Жмем Ctrl+O, Enter и Ctrl+X. Перезапускаем сервис ssh:

sudo systemctl restart ssh

Возвращаемся в окно новой сессии PuTTY, выбираем сохраненную сессию, нажимаем «Load», слева в панели с деревом настроек выбираем «SSH», а в нем подпункт «Auth». Жмем «Browse», указываем файл с приватным ключом (с расширением .ppk), возвращаемся в сайдбаре в пункт «Session», клацаем «Save» и «Open». Вводим логин, если все хорошо, нас авторизуют. Снова открываем /etc/ssh/sshd_config и отключаем вход по паролю:

sudo nano /etc/ssh/sshd_config

Жмем Ctrl+O, Enter и Ctrl+X. Перезапускаем сервис ssh:

sudo systemctl restart ssh

С ssh разобрались, едем дальше.

Самое первое, что нам нужно – это возможность расшаривания файлов в нашей локальной сети. Для этой цели идеально подходит протокол Samba. В репозиториях восьмого Debian-а уже лежит новая Samba 4, потому просто устанавливаем (соглашаемся на установку всех дополнительных пакетов):

sudo apt-get install samba

Теперь настраиваем Samba. Открываем файл конфигурации:

sudo nano /etc/samba/smb.conf

Итак, значение параметра workgroup определяет название рабочей группы, в которую входит наш сервер. Имя должно быть одинаковое на ВСЕХ ПК нашей сети. Я оставил WORKGROUP. Поскольку наш «парк» состоит и из windows-ПК, нужно поднять WINS-сервер для того, что бы все компьютеры нормально работали через NetBIOS-имена (папка Сеть в Windows 7/8/10), а не только через «голые» ip-адреса. Для этого раскомментируем и поправим строку:

И сразу под ней укажем приоритет нашего сервера (99 будет достаточно, максимально 255):

Далее перемещаемся почти в самый конец конфига, в раздел «Share Definitions». Именно тут нужно указать все папки и принтеры, которыми мы хотим поделиться в локальной сети. А потому, например, после подсекции [printers], вписываем примерно такие строки:

Параметров общих ресурсов в Samba на самом деле гораздо больше, потому и на этих я не буду детально останавливаться, все это отлично описано в документации (https://www.samba.org/samba/docs/). Как обычно, сохраняем, выходим. Теперь главное не забыть создать ту папку, которую мы прописали в конфигурационном файле. А потому:

Стоит сказать пару слов касательно поддержки Samba в Windows 7/8/8.1 и, возможно, 10. Их тоже можно сделать серверами Samba, выполнив пару скриптов в PowerShell-е. Но нам нужно активировать только клиент для Samba. Запускаем командную строку от имени администратора и выполняем по очереди:

sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi

sc.exe config mrxsmb20 start= auto

Без этого вы с большой долей вероятности получите ошибку 0x80070035. Также может потребоваться выход всех ПК из Домашней группы Windows. Вообще сеть в Windows 8 это повод для отдельного материала, потому просто загляните сюда https://support.microsoft.com/en-us/kb/2696547. После всех манипуляций, не забудьте перезапустить Samba:

sudo systemctl restart smbd

Следующей областью применения для домашнего сервера, которая приходит в голову – это сервер печати. Для этого установим CUPS:

Ждем, когда все притянется из сети. По умолчанию веб-интерфейс CUPS доступен по адресу http://localhost:631. Но у нас не localhost, потому придется подправить файлик с конфигом. Открываем:

sudo nano /etc/cups/cupsd.conf

Поскольку в роутере мы задали привязку MAC-адресов к ip-адресам почти в самом начале, там, где Listen-ы, вписываем

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

Тем самым разрешив доступ ко всем трем пунктам только из нашей локальной сети.

sudo systemctl restart cups

Теперь открываем браузер, переходим по адресу https://server_ip:631, «Администрирование», «добавить принтер». По запросу вводим логин root и пароль суперпользователя (это конечно не хорошо, что от имени рута, но поскольку заглянем мы сюда всего пару раз, это не стоит того времени, которое мы потратим на ковыряние в конфиге попытках сделать нашего пользователя администратором), и следуем инструкции, не забыв поставить галочку «общий доступ». После этого на всякий случай перезапускаем:

sudo systemctl restart cups

Там же, в админке, можно напечатать тестовую страницу. Теперь общей папке на сервере должен появиться только-что подключенный принтер. Можно присоединять его к Windows и работать.

LAMP, он же Linux Apache MySQL/MariaDB Perl/PHP/Python – это одна из вариаций комплекта программного обеспечения для организации собственного сервера веб (https://ru.wikipedia.org/wiki/LAMP). Состоит из собственно из веб-сервера Apache, системы управления базами данных MySQL или MariaDB, интерпретатора PHP, Perl или Python-а. Понадобится эта связка не всем желающим построить свой первый сервер, а только тем, кто захочет поднять на «своем железе» собственный сайт (или веб-интерфейс для управления системой «умного» дома). Я же предлагаю установить LAMP с последующим «поднятием» веб-панели управления сервером Webmin (что бы хоть чуть-чуть графического интерфейса для поклонников Windows ). Итак, первым делом тянем из репозитория Apache:

sudo apt-get install apache2

И сразу из любого браузера набираем ip-адрес нашего сервера (локальный). Если видим тестовую страницу – все хорошо. Если нет – смотрим лог установки на предмет ошибок. Настраивать конфигурационные файлы будем потом, сейчас же установим следующий компонент – MySQL:

sudo apt-get install mysql-server mysql-client

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

sudo systemctl mysql status

В выводе должна быть зеленая строка «Active» сообщающая нам о том, что демон MySQL работает. Пришла очередь интерпретатора языка PHP:

По умолчанию, файлы сайтов, которыми управляет Apache, лежат в директории /var/www/html. А потому создадим там тестовый php-файл и выведем с его помощью сервисную информацию об нашей установке php:

sudo nano /var/www/html/test.php

И открываем в браузере адрес http://server-ip/test.php. Если перед нами длинная страница с заголовком типа «PHP Version 5.6.9-0+deb8u1» и множеством разнообразной информации, все работает.

Для администрирования СУБД MySQL создан прекрасный веб-интерфейс phpMyAdmin. А потому давайте его тоже установим:

sudo apt-get install phpmyadmin

По запросу, выбираем сервер apache для автоматической настройки. Далее нам придется настроить phpMyAdmin. Это можно сделать как правкой конфигурационных файлов, так и через псевдографический интерфейс. Соглашаемся на последний вариант, вводим пароль суперпользователя MySQL, который мы использовали во время установки СУБД. Задаем пароль для регистрации phpMyAdmin на сервере баз данных, и когда конфигурирование закончится, переходим по ссылке http://server-ip/phpmyadmin и видим окно входа phpMyAdmin. Войти можно по логину root и соответствующему паролю. Однако, настройка phpMyAdmin и сервера MySQL выходит за рамки этой статьи, так что перейдем к одной небольшой доводке apache.

В целях обеспечения безопасности и хоть минимальной защиты от DOS-атак, рекомендуется перебросить входящий 80-й порт на 8080-й. В настройках роутера это делается в пункте «Port Mapping», а в apache, в свою очередь – в файле ports.conf:

sudo nano /etc/apache2/ports.conf

sudo systemctl restart apache2

Если вы занимаетесь веб-разработкой на другом ПК, можно копировать файлы на сервер с помощью Samba. Для этого расшарим /var/www/html, но с авторизацией по логину/паролю. Для этого создадим группу пользователей smbgroup и сразу занесем себя туда:

sudo usermod –a –G smbgroup username

Теперь нужно завести учетную запись пользователя Samba, которому мы предоставим право оперирования файлами внутри /var/www/html:

sudo smbpasswd –a username

Вводим дважды пароль и устанавливаем владельца и права на /var/www/html:

sudo chown username:smbgroup -R /var/www/html

Небольшая ремарка: если вы планируете предоставить доступ к каталогу нескольким пользователям, права необходимо сменить на 0775 и каждого отдельного юзера добавить в группу smbgroup, а также «включить» через smbpasswd. Плюс, каждая директория должна иметь права 0755 (или 0775), а файлы – 0644. Относительно файлом, права могут быть и 0755, но 0644 безопаснее.

Sudo nano /etc/samba/smb.conf

#что бы разрешить сразу целую группу, замените на val >

sudo systemctl restart smbd

Теперь в пункте «Сеть» Windows, на нашем сервере доступна папка mysite. Осталось только ввести логин и пароль.

Альтернативным, а некоторым и более удобным средством администрирования сервера, станет Webmin. Это веб панель с поддержкой большого количества разнообразного софта, плюс, расширяемая за счет модулей. Для каждого настроек просто тьма, а на крайний случай есть прямое редактирование конфигурационных файлов.

Когда скачается, распаковываем загруженный пакет:

sudo dpkg —install webmin_1.760_all.deb

Скорее всего, apt-get сообщит нам об конфликте в зависимостях. А потому предоставим ему свободу действий:

Ключ –f заставит apt-get найти решение конфликта. Вообще, нужно обязательно смотреть, что он предлагает, но в этом случае просто соглашаемся (проверено дважды). Когда все установится, открываем в браузере адрес https://server_ip:10000. По приглашению логинимся, и, если у вас Firefox, создаем исключения для нашего сертификата SSL, и видим перед собой меню Webmin-а и общую информацию по серверу. Для того, чтобы иметь доступ извне, на роутере пробрасываем 10000-й порт.

В определенных ситуациях может понадобиться загрузить (или наоборот, скачать) файл на наш сервер. Для таких целей нет лучшего решения, чем протокол FTP. В нашем случае мы установим его реализацию в виде сервера vsftpd (very secure FTP daemon):

sudo apt-get install vsftpd

Все настройки vsftpd лежат в файле /etc/vsftpd.conf:

Итак, в зависимости от того, хотите ли вы, что бы к вашему FTP-серверу можно было подключиться анонимно, мы либо оставляем строку anonymous_enable, либо переправляем на

Я оставил запрет. Далее, оставляем значение yes у параметра local_enable, что бы мы могли логиниться от имени локальных пользователей, и снимаем комментарий с опции write_enable, что бы иметь возможность «писать» на сервер, а также с chroot_local_user, что бы пользователи не могли ходить дальше своей домашней директории. Также, для того, что бы последняя опция работала корректно, сразу после нее вставляем строчку:

Таким образом, пользователь и выше /home/username не выйдет, и писать в нее может. В принципе, параметров конфигурации vsftpd очень много, и никто не запрещает установить chroot-ом, например, /var/www/uploads.

На данном этапе мы уже можем оперировать файлами по FTP (с помощью FileZilla, например). Но если понадобиться дать доступ стороннему человеку, заведем на всякий случай пользователя guest:

После ответов на вопросы создадим группу ftpgroup и внесем в нее guest-а:

sudo usermod –G ftpgroup guest

Желающие могут установить дополнительные параметры вроде приветственного сообщения, таймаута сессии, таймаута передачи данных, сообщения о смене директории и т.д. соответственно:

ftpd_banner=»This is yet another FTP server»

sudo systemctl restart vsftpd

Можно подключаться. Файлы, которые загрузит guest, будут лежать в /home/guest.

На этом минимальная настройка ftp окончена, более детальную можете найти в сети. Не забудьте пробросить 21 и 20-й порты на роутере.

По идее, поднимая домашний сервер, мы принимаем за должное то, что он будет работать круглосуточно (что, в случае, если в качестве железа выступает Raspberry Pi, вообще беспроблемно). А потому, что бы он не простаивал ночью, мы заставим его качать торренты. Самый функциональный торрент-клиент для Linux – это rTorrent. К тому же, он консольный. И третье – для него написано несколько отличных веб-интерфейсов. Установим его:

sudo apt-get install rtorrent

Свою конфигурацию rTorrent ищет по адресу

/.rtorrent.rc. Создадим и заполним этот файл:

#ограничение скорости закачки

#разрешаем использовать udp

#указываем предпочтительным шифрованный протокол

#и устанавливаем конкретный диапазон

#необязательный параметр, еще раз укажем, где rtorrent слушает веб-интерфейс

#куда будут сохранятся скачанные файлы

#и где будет лежать сессия

#проверяем хэш после окончания закачки

#и самая классная опция – устанавливаем планировщик, который проверяет #директорию каждые 5 секунд, и если там лежит торрент – ставит его на закачку

#останавливаем закачки, если на диске меньше 100Мб

Теперь нужно прицепить к rTorrent веб-интерфейс. Для начала добавим к Apache модуль scgi и утилиту screen, что бы rTorrent висел в фоне:

sudo apt-get install libapache2-mod-scgi screen

Открываем apache2.conf и дописываем:

sudo nano /etc/apache2/apache2.conf

SCGIMount /RPC2 127.0.0.1:5000

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

sudo systemctl restart apache2

Отличный веб-интерфейс ruTorrent, плюс, он поддерживает плагины. Его и установим:

sudo apt-get install subversion

sudo svn checkout http://rutorrent.googlecode.com/svn/trunk/rutorrent

sudo chown -R www-data:www-data ./rutorrent/

Теперь ruTorrent доступен по адресу http://server-ip/rutorrent. Им уже можно пользоваться, только не забудьте пробросить порты, которые мы прописали в конфигурации. По поводу настройки rTorrent отлично написано в ArchWiki https://wiki.archlinux.org/index.php/RTorrent_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29. Что бы мы могли бросать торрент-файлы на автоматическую закачку в /home/username/torrents, поправим доступ к домашней директории в Samba:

sudo nano /etc/samba/smb.conf

В разделе Share Definitions, у ресурса Homes ставим read only = no. Перезапускаем самбу. Готово.

К сожалению, на этапе резервного копирования у меня произошел небольшой казус. Как система для бекапа была выбрана Bacula. Для домашнего использования она несколько избыточна, но тем не менее, настроить ее и забекапить как Windows так и Linux-пк мне удалось. Но вот восстановиться – только на линукс. На windows файлы упорно не возвращаются. А держать Bacula ради одной системы – это как из пушки по воробьям. В результате усилия трех дней пропали зря. Потому я не придумал ничего лучше, чем сделать на сервере папку backup:

sudo chown username:smbgroup /var/backup

и добавить ее в список ресурсов Samba с доступом по паролю. В таком случае можно воспользоваться любой утилитой для бекапа из-под Windows (хоть стандартной Архивацией), а на linux-системе сделать скрипт, который rsync-ом копирует файлы на сервер, и запускать при помощи cron. В плюсы данного решения также можно занести то, что Bacula не умеет (либо я не дочитал документацию) делать бекап при старте клиента, а только по расписанию. Плюс, бакула хранит резервные копии в томах собственного формата, что для новичков будет немного сбивающим с толку.

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

Как вариант последующего развития сервера, на него можно перенести с роутера функцию DHCP и NAT. Также установить прокси-сервер и каждый день с помощью cron в его исключения вносить обновленные списки AdBlock, например, что избавит от необходимости ставить его на все устройства, что актуально для Android- и iOS-девайсов. Возможно, почтовый сервер. А если перенести сервер на какой-либо высокопроизводительный аналог Raspberry Pi, типа Cubieboard, то его можно будет подключить к телевизору через HDMI, попутно установив медиацентр, вроде XBMC.

источник

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