Рассмотрим основные моменты по работе с замечательной программой Conky которая позволяет выводить на рабочий стол любые параметры вашей системы показывая все процессы компьютера в реальном времени. Универсальная настройка для любой OC Linux.
Вступление
Удобное и информативное отображение параметров системы и особенно отображение тех параметров которые мне хочется видеть была одной из моих главных пожеланий при настройке любой системы. Первое время я пытался добавлять на панели разные аплеты с выводом информации, но все это не совсем удобно. Когда первый раз познакомился с Сonky мне было не удобно настраивать его и каждый раз при переустановке системы лезть в настройки и настраивать. К моей радости один из пользователей Calculate Linux, который регулярно выкладывает свои сборки, в сборку добавляет свой подход к настройкам Conky его то я и взял за основу.
Установка Conky
Пакет присутствует во всех дистрибутивах и называется conky. Назову лишь команды установки в некоторых системах.
Calculate Linux или Gentoo:
emerge conky
Debian
apt-get install conky
CentOS
yum install conky
Управление Conky
Для запуска достаточно запустить в консоли из под пользователя команду и на рабочем столе появится базовая версия отображения параметров:
conky
Все параметры берутся и файла настроек по умолчанию и вряд ли кого устроят. Вот так выглядят базовые настройки на моем рабочем столе:
Вся настройка производится редактирование одного файла conkyrc который в разных версиях может быть в разных местах.
Остановить можно командой из под пользователя:
killall conky
Удобный подход к работе с Conky
Самый удобный для меня подход оказался когда в папке лежит и файл настройки и шрифты что используются а так же скрипт запуска программы который я просто добавляю в автозагрузку системы.
Вот то что я делаю при установке новой системы для удобной работы с Conky:
Ложу папку my_conky туда куда мне удобно,
Папку со шрифтами копирую в папку /usr/share/fonts/,
Добавляю в автозагрузку файл start-conky.sh в котором прописаны параметры запуска.
Файл необходимо сделать запускаемым. В консоли команда: chmod +x /путь до/start-conky.sh
Настройка сводится к тому что я открываю файл conkyrc в текстовом редакторе и редактирую его. После сохранения файла вы сразу уведите результат своих настроек без перезагрузки сервиса.
Мой далеко не идеальный вариант настройки вы можете скачать по ссылке и отредактировать параметры под все свои требования.
Файл настроек Conky
Варианты и команды настроек я не буду указывать их вы всегда сможете найти в интернете с избытком как в примерах кода так и в разных инструкциях. Для работы с настройкой отображения картинок необходимо открывать шрифт и посмотреть необходимый код нужного элемента. Для работы с графическими шрифтами я использую программу FontForge.
Вот мой файл настроек который вы можете увидеть в скаченном архиве:
###############################
# Настройки Алексея Долотова #
# для сайта sevo44.ru #
###############################
update_interval 1
total_run_times 0
net_avg_samples 1
cpu_avg_samples 1
if_up_strictness link
# imlib_cache_size 0
double_buffer yes
no_buffers yes
format_human_readable
#######################
# Текстовые настройки #
#######################
use_xft yes
xftfont Ubuntu:size=8
override_utf8_locale yes
text_buffer_size 2048
#####################
# Оконная специфика #
#####################
own_window_class Conky
own_window yes
#own_window_type conky
own_window_argb_visual yes
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
border_inner_margin 4
border_outer_margin 1
alignment top_right
gap_x 15
gap_y 15
minimum_size 182 700
maximum_width 182
default_bar_size 60 8
# use_xft yes
# xftfont caviar dreams:size=8
# xftalpha 0.5
# uppercase no
#########################
# Графические настройки #
#########################
# draw_outline no
draw_borders no
draw_graph_borders no
draw_shades yes
default_color cccccc
color0 D3D2D5
color1 77507b
color2 F2F2F2
color3 5C3566
######################################
# Начало кода вывода после кода TEXT #
######################################
TEXT
###########
# Система #
###########
!!! Часть кода скрыл. Все увидите в скаченном архиве my_conky !!!
#########
# Конец #
#########
Вот так выглядят мои настройки на рабочем столе:
Под моим контролем всегда:
Состояние работы процессора,
Загруженность памяти и какие ресурсы кушают больше всего,
Какие приложения занимают ресурсы процессора,
Информация о свободном месте на диске,
Результат работа обоих сетевых карт, проводной и wi-fi,
Информация о назначенных IP адресах.
Результат
При таком варианте работы с пакетом Conky все становится понятно и просто как в работе так и в настройках программы. Иметь на рабочем столе все необходимые вам параметры самый удобный способ быть в курсе что происходит в реальном времени с вашим компьютером.
Установим и настроим 1С:Предприятие 8.3 на OC Debian. Работать программа будет на свободном терминальном сервере XRDP для удобного подключения с любой системы. Прощай популярный нелегальный перевод систем Windows в терминальный сервер.
Введение
Произведем установку и настройку программы «1С:Предприятие 8.3» c конфигурацией «Бухгалтерия предприятия (базовая)» с программной и аппаратной лицензией. Установка будет производится на подготовленный сервер терминалов работающий под управлением XRDP в операционной системе Debian 8.
В системе Debian 9 все настраивается аналогичным образом. Единственное что необходимо это выбрать правильный пакет для HASP.
Многие конторы занимающиеся 1С будут советовать вам приобретать для работы в системе именно систему Windows обосновывая это большей надежностью и удобством. Имейте в виду что при продаже Windows продавец, согласно политике компании, получает приличное вознаграждение что вызывает у многих буйное желание продать побольше товаров МайкраСофака. Вам ведь никто не скажет что в системе Linux люди не используют антивирусы 🙂 там вирусы не живут.
Все действия производятся с учетом настройки сервера терминалов рассмотренной в статье «XRDP терминальный сервер Linux«.
Платформа и конфигурация 1С:Предприятие для Linux
В документах, которые вы получили после приобретения программного продукта семейства 1С, вы найдете регистрационные данные которые необходимы для регистрации на портале поддержки 1C:Портал поддержки. После регистрации и активирования своего продукта вы получите доступ для скачивания всего необходимого.
Иногда компании, в которых вы приобретаете продукт, может зарегистрировать продукт за вас. Уточните этот момент перед тем как регистрироваться самим.
Различие Базовой и Проф конфигурации
К выборе версии надо подходить очень аккуратно и не идти на развод торгующих компаний на подписку ИТС.
Компании обслуживающие 1С заинтересованы склонить вас на подписку и получать ежемесячный доход ничего не делая.
Рассмотрим кратко основные отличия:
Базовая версия — при этом выборе вы можете вести только одну организацию в одной базе. Можно таких баз вести сколько угодно но для каждой организации будет своя база. Плюс в том что вы всегда сможете сами обновляться с официального сайта поддержки не прибегая к помощи сторонних специалистов.
Если вы не планируйте вносить изменения в конфигурацию и пользоваться проверенной и стабильно работающей версией то это именно то что вам надо.
ПРОФ версия — как только вы перешли на эту версию про обновления можете забыть так как они будут доступны только при подписке ИТС. Появится возможность вносить изменения в конфигурацию и вести несколько фирм в одной базе но надо ли вам это решайте сами.
Самое главное имейте в виду что при переходе на ПРОФ вы полностью зависите от той компании в которой оформили подписку ИТС и от тех специалистов которые будут работать с вашей программой. Компаний много и тут важно выбрать хорошую. Лучше если это будет по рекомендации людей которым вы доверяете.
Вот вопрос-ответ службы поддержки 1С на два моих вопроса.
Версию ПРОФ в отличии от БАЗОВОЙ можно обновлять только при активной подписке на ИТС? — Да.
В моем случае для тестирования без приобретения подписки ИТС я не смогу обновлять верию ПРОФ легальными способами? — Да.
В практике сталкивался с тем что иногда компания сидит в старой версии программы (например 8.1) и хотят перейти и обновится до новой версии 8.3 но продавец у которого они приобретали продукт говорит что надо покупать новую версию. Какое было у них удивление когда я обновлял и ставил им последнюю версию и показывал как надо обновляться. Конечно я не затрагиваю момент обновление конфигурации с обновлением всех данных хотя и это при грамотном подходе возможно сделать с сохранением всех основных данных.
Программная и аппаратная лицензия 1С:Предприятие
Это пожалуй один из важных моментов которые нужно учесть сразу. Программная лицензия стоит дешевле но вызывает кучу проблем при смене оборудования. Не скрою что отдел лицензирование всегда идёт на встречу и может предоставить даже большее количество активаций при определенных условиях, но это не всегда удобно. Использование USB ключей всё упрощает и развязывает руки при обновлении оборудования или оптимизации работы с 1С.
В практике был случай когда компания приобрела программную лицензию на 5 пользователей и активировало её не для сервера а для каждого пользовательского компьютера. По началу все было нормально но когда база увеличилась начались проблемы со скоростью работы и даже использование скоростного диска SSD и перевода сети на 1 Gbit не сильно улучшило ситуацию.
Варианты разворачивания сети 1С:Предприятие
Все хотят работать в программе 1С быстро как на предприятии так и дома. Все это можно оптимально настроить разными способами с учетом требований эксплуатирующей организации.
Существует два вида работы базы данных:
Файловая база данных — самый простой вариант и подходит идеально для небольших организаций. Этот вариант мы и рассмотрим в этой статье.
База данных SQL — более сложный вариант и ориентирован на большое количество пользователей. При небольшом количестве пользователей нет смысла использовать такой вариант. Для работы будет нужна серверная лицензия которая стоит в районе 80 000 рублей.
Внимание!
Сервер 1С:Предприятия 8. под Linux может запуститься и без лицензии, при этом он позволяет иметь в кластере только один рабочий процесс, который допускает не более 12 клиентских соединений. Однако, такая работа сервера не дает права использования программного обеспечения сервера 1С:Предприятия без покупки продукта «1С:Предприятие 8. Лицензия на сервер». Об этом сказано в лицензионном соглашении любой основной поставки 1С:Предприятия.
Оптимальное использование файловой базы данных 1C:Предприятие
Когда вы используйте файловую базу данных расположенную в локальной сети и клиенты подключаются скорость работы в программе зависит от скорости локальной сети и от мощности самого компьютера. Для небольших баз этот вариант приемлем но очень быстро базы увеличиваются и работа в программе становится все медленней и медленней за исключением компьютера на котором расположена сама база.
Существует два варианта улучшения скорости работы в файловой базе данных:
Использование локальной сети 1 Gbit и диска SSD для базы данных — на какой то момент это улучшит положение но как показала практика не на долго. Очень быстро пользователи привыкают к улучшению скорости и начинаются опять жалобы на зависания в работе.
Использование терминального сервера — при этом варианте в организацию приобретается один мощный компьютер на котором устанавливается программа и все пользователи удалено подключаются к компьютеру использую свой профиль. Получится что на одном компьютере будет одновременно сидеть несколько пользователей не видя друг друга. По сети передается только картинка а вся работа производится на сервере. Возможно настроить удаленный доступ из интернета и тогда избранные пользователи смогут используя медленный интернет спокойно работать в программе с домашнего компьютера.
Конечно вы можете приобрести серверную версию Windows так как только там легально можно использовать терминальный режим. Некоторые по многочисленным советам в сети переводят обычные версии Windows в терминальный режим используя нелегальные варианты. Мой выбор пал но терминальный сервер Linux который удовлетворил все мои пожелания и требования.
Установка 1С Предприятие 8.3 на Linux
Пошагово пройдем путь установки программы на систему Debian 8.
Предварительная подготовка
Создадим папки на сервере куда разместим все необходимые файлы для установки платформы,программного обеспечения для работы с Hasp ключами USB и для баз данных программы:
Изменим файл /etc/hosts для правильной работы с базами PostgreSQL если нам потребуется:
mcedit /etc/hosts
= вывод команды с необходимыми изменениями =
127.0.0.1 localhost
127.0.1.1 xrdp1c.sevo44.loc xrdp1c
# без этой строки базы в PostgreSQL из шаблона создаваться не будут
192.168.0.105 xrdp1c.sevo44.loc xrdp1c
# The following lines are desirable for IPv6 capable hosts
#::1 localhost ip6-localhost ip6-loopback
#ff02::1 ip6-allnodes
#ff02::2 ip6-allrouters
Установка 1С:Предприятие 8.3
Скачиваем с сайта поддержки 1С два необходимых архива:
Cервер 1С:Предприятия (64-bit) для DEB-based Linux-систем
Клиент 1С:Предприятия (64-bit) для DEB-based Linux-систем
Распаковываем архивы и кладём всё что там есть в папку /root/1c/deb:
Пакеты с thin — это тонкий клиент. Нам он не нужен и можно удалить эти пакеты. Пакеты nls нужно использовать в случае использования языков кроме русского.
Удалив всё лишнее, запустим установку:
dpkg -i *.deb
= вывод команды =
Выбор ранее не выбранного пакета 1c-enterprise83-client.
(Чтение базы данных … на данный момент установлено 89244 файла и каталога.)
Подготовка к распаковке 1c-enterprise83-client_8.3.10-2252_amd64.deb …
Распаковывается 1c-enterprise83-client (8.3.10-2252) …
Выбор ранее не выбранного пакета 1c-enterprise83-common.
Подготовка к распаковке 1c-enterprise83-common_8.3.10-2252_amd64.deb …
Распаковывается 1c-enterprise83-common (8.3.10-2252) …
Выбор ранее не выбранного пакета 1c-enterprise83-server.
Подготовка к распаковке 1c-enterprise83-server_8.3.10-2252_amd64.deb …
Распаковывается 1c-enterprise83-server (8.3.10-2252) …
Выбор ранее не выбранного пакета 1c-enterprise83-ws.
Подготовка к распаковке 1c-enterprise83-ws_8.3.10-2252_amd64.deb …
Распаковывается 1c-enterprise83-ws (8.3.10-2252) …
Настраивается пакет 1c-enterprise83-common (8.3.10-2252) …
Настраивается пакет 1c-enterprise83-server (8.3.10-2252) …
Настраивается пакет 1c-enterprise83-ws (8.3.10-2252) …
Настраивается пакет 1c-enterprise83-client (8.3.10-2252) …
Обрабатываются триггеры для desktop-file-utils (0.22-1) …
Обрабатываются триггеры для mime-support (3.58) …
Обрабатываются триггеры для hicolor-icon-theme (0.13-1) …
Обрабатываются триггеры для systemd (215-17+deb8u7) …
Работа с сервером 1С:Предприятие в системе Linux
Программа установлена осталось проверить некоторые моменты.
Все стартовало и работает как надо. Команды управления сервером 1С:Предприятие:
service srv1cv83 start
service srv1cv83 stop
service srv1cv83 restart
service srv1cv83 status
Создание файловой базы данных 1C:Предприятие
При первом запуске вылезет сообщение о необходимости установки шрифтов. В моем случае все шрифты были и отображаются корректно.
В Linux для создания баз из шаблона вначале необходимо установить шаблон в необходимую папку а потом указать в настройке откуда брать шаблоны.
Для этих действий необходимо чтобы в системе была установлена Wine. К сожалению без этого нельзя запустить файлы exe. Других способов установки базы из шаблона в системе Linux я не нашел.
В моем случае я скопировал папку с базой в нужное место и дал необходимые права:
chmod -R 777 /base1c
Права надо давать только после того как копируйте все необходимые базы 1С!
Активирование программной лицензии 1С:Предприятие
В активировании программной лицензии есть один нюанс. Если вы запустите программу она напишет что необходимо активировать и вы начнете вводить пин код то он окажется на 1 знак больше чем требуемое количество.
Для активации обнопользовательской программной лицензии необходимо запустить программу 1С:Предприятие под пользователем root и только тогда при активации появится необходимое поле.
Установка HASP для работы с USB ключом
Программное обеспечение для работы с USB ключом будем использовать от компании Etersoft. Посмотрим какие последние версии для Debiam 8 есть на сайте перейдя по ссылке ftp://ftp.etersoft.ru/pub/Etersoft/HASP/stable/x86_64/Debian/8/ В моем случае последняя версия haspd_7.40-eter10debian_amd64.deb.
Для Debian 9 выберите пакет для этой системы.
Перейдем в папку, скачаем туда пакет:
cd /root/1c/hasp
wget ftp://ftp.etersoft.ru/pub/Etersoft/HASP/stable/x86_64/Debian/8/haspd_7.40-eter10debian_amd64.deb
= часть вывода команды =
2017-06-01 17:04:10 (2,25 MB/s) - «haspd_7.40-eter10debian_amd64.deb» сохранён [3261640]
Установим:
dpkg -i haspd_7.40-eter10debian_amd64.deb
= вывод команды =
Выбор ранее не выбранного пакета haspd.
(Чтение базы данных … на данный момент установлено 41583 файла и каталога.)
Подготовка к распаковке haspd_7.40-eter8debian_amd64.deb …
Распаковывается haspd (7.40-eter8debian) …
Настраивается пакет haspd (7.40-eter8debian) …
insserv: warning: script 'haspd.outformat' missing LSB tags and overrides
Обрабатываются триггеры для systemd (215-17+deb8u3) …
Обрабатываются триггеры для man-db (2.7.0.2-5) …
Запустим и проверим статус:
service haspd start
service haspd status
= вывод команды =
● haspd.service - LSB: Hasp keys support
Loaded: loaded (/etc/init.d/haspd)
Active: active (running) since Вт 2016-03-29 16:22:46 MSK; 1s ago
Process: 6521 ExecStart=/etc/init.d/haspd start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/haspd.service
├─6557 aksusbd
├─6568 winehasp
├─6577 hasplm -c /etc/haspd/hasplm.conf
└─6586 hasplmd -s
мар 29 16:22:46 vm008srv1c8 haspd[6521]: Enable workaround for /proc/bus/usb (bind from /dev/bus/usb)[ DONE ]
мар 29 16:22:46 vm008srv1c8 haspd[6521]: [ DONE ]
мар 29 16:22:46 vm008srv1c8 aksusbd[6557]: loaded, daemon version: 7.40.1.50292, key API (USB) version: 3.88 (parallel driver not available)
мар 29 16:22:46 vm008srv1c8 haspd[6521]: Running aksusbd... [ DONE ]
мар 29 16:22:46 vm008srv1c8 winehasp[6568]: winehasp 2.00 loaded
мар 29 16:22:46 vm008srv1c8 haspd[6521]: Running winehasp... [ DONE ]
мар 29 16:22:46 vm008srv1c8 hasplm[6577]: HASP LM v8.30 loaded
мар 29 16:22:46 vm008srv1c8 haspd[6521]: Running hasplm... [ DONE ]
мар 29 16:22:46 vm008srv1c8 hasplmd[6586]: HASP LM v18.0.1.55506 loaded
мар 29 16:22:46 vm008srv1c8 haspd[6521]: Running hasplmd... [ DONE ]
Все хорошо. Осталось подключить USB ключ или как в нашем случае пробросить его в системе Proxmox до нужной виртуальной машины.
Проброс USB устройства в системе виртуализации Proxmox
Рассказано для 4 версии Proxmox в 5 всё делается в веб интерфейсе!
Более подробно о вариантах проброса USB устройств в системе Proxmox вы можете узнать из статьи «USB проброс в Proxmox«.
Выполним проброс USB устройства с ключом от 1С:Предприятие 8, согласно статьи указанной выше.
Все действия на сервере Proxmox!
lsusb
= вывод команды с пояснениями =
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
# Вот наш ключBus 002 Device 003: ID 0529:0001 Aladdin Knowledge Systems HASP v0.06
Bus 002 Device 004: ID 0665:5161 Cypress Semiconductor USB to Serial
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
lsusb -t
/: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
|__ Port 1: Dev 4, If 0, Class=Human Interface Device, Driver=usbfs, 1.5M
|__ Port 2: Dev 3, If 0, Class=Vendor Specific Class, Driver=usbfs, 12M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/8p, 480M
Видим что шина 2 и порт 2. Пропишем в параметры виртуальной машины:
mcedit /etc/pve/qemu-server/ID виртуальной машины.conf
= необходимое дополнение =
# Добавляем в конце строку. При изменении параметров vm эта строка останется!
usb0: 2-2
После перезагрузки сервера виртуализации Proxmox устройство будет работать в нужной виртуальной системе.
Проблемы со шрифтами
Сразу не заметил проблему со шрифтами при экспорте в pdf файл. Часть текста обрезалась и информация была не полной. Можно ставить пакеты со шрифтами но я вычислил, что достаточно иметь шрифты по пути /usr/share/fonts/msttcorefonts.
Очень рекомендую сразу отключить проверку на обновление системы в настройках программы. Отключить можно в разделе Администрирование — Интернет-поддержка пользователей. Обновлять спокойней и удобней через конфигуратор.
Обновление платформы 1С:Предприятие в Linux
Обновление производится по принципу установки программы пройденной в статье выше. Скачиваем новые пакеты и заново устанавливаем.
Обновление базовой конфигурации 1C:Предприятие в Linux
Обновление для ПРОФ это совсем другая песня.
Обновлять конфигурацию можно двумя способами:
Автоматическое обновление — в режиме конфигуратора базы. Конфигурация — Обновить конфигурацию.. — Поиск доступных обновлений указываем наш логин и пароль от личного кабинета пользователя и обновляемся.
Ручное обновление — вначале скачиваем все необходимые обновления в зависимости от версий обновления в личном кабинете и дальше в конфигураторе базы. Конфигурация — Обновить конфигурацию.. — Выбор файла обновление
Результат
После всех выполненных действий у нас будет работать терминальный сервер в котором удобно и конформно работать с программным комплексом 1С:Предприятие 8 для пользователей и администраторов. Лично для меня это развязало руки от привязки к компьютеру куда я установил программу и активировал программный ключ. В следующих статьях на тему 1С расскажу как я настроил резервное копирование файловых баз даныx и произведу установку базы на PostgreSQL c публикацией на Web сервере.
Установим терминальный сервер XRDP на OC Debian. Настроим все основные требования для удобной работы с сервером для пользователей и администраторов. В последствии рассмотрим установку на сервер программу из семейства 1С Предприятие 8.
Введение
Из статьи вы узнаете о том как настроить терминальный сервер на базе операционной системы Linux. Настраивать будем используя дистрибутив Debian 10 Buster.
Ранее в этой статье я расказывал как производится настройка на Debian 8 и 9 версии и какие нюансы настройки. В новой версии большенсово проблем прошлых версий исправлено, но появились новые с решением которых я с вами и поделюсь.
Совершенно нет желания захломлять ресурс старыми не актуальными статьями. XRDP он всегда один и лучше использовать его на новых стабильных версиях. При желании всегда можно мигрировать со старой версии Debian на новую. Например, я вполне успешно делаю обновления начиная с 7 версии.
Вариант с нелегальным переводом системы Windows в терминальный сервер используя патчи я сразу отбросил в сторону. Не занимаюсь воровством программ и не буду.
Требования для терминального сервера:
Работа буфера обмена в обоих направлениях,
Переключение раскладки клавиатуры на русский язык,
Работа пользователей по сертификату,
Монтирование сетевых ресурсов,
Подключение локальной папки на сервер,
Создание одной сессии для пользователя,
Подключение принтеров.
Главная задача чтобы сессия пользователя оставалась на сервере и можно было к ней подключиться с любого места.
Графическую оболочку лучше использовать легковесную. Например, LXDE или XFCE. В моем примере рассматривается использование XFCE.
Все дальнейшие действия описаны с учетом стандартной усатновки сервера с выбором окружения XFCE и установкой ssh сервера.
Если вам хочется почитать «Как скачать и установить Debian 10 Buster» вы можете это сделать на сайте который стал для меня отправной точкой в изучении Linux. Все статьи на этом ресурсе написаны понятным языком и проверены автором перед тем как выкладывать в сеть.
Неудачная попытка настройки XRDP на CentOS 7
В репозитории Epel присутствует свежая версия xrdp.x86_64 1:0.9.2-10.el7 что сразу порадовало. Установка проходит без проблем и все сразу работает после старта службы.
В CentOS, как я понял, работают в основном над своим рабочим окружением Gnomе и стараются поддерживать KDE. Для терминального сервера окружение Gnome и KDE тяжеловаты. Можно установить XFCE, LXDE или MATE но они в урезанном виде и пришлось поковыряться, чтобы настроить нужные элементы на панели не говоря уже о других неудобных моментах в настройке.
Дальше я мучатся с настройкой этой системы не стал, так как в Debian все для меня настроилось гораздо проще и удобней.
Предварительна подготовка
Для своего удобства я всегда устанавливаю файловый редактор vim и файловый менеджер mc. Установим выполнив команду:
apt install vim mc
В статье в командах будут использоваться именно эти программы.
По умолчанию считается что действия в консоли выполняются из под пользователя root.
Установка XRDP на Debian 10
К сожалению вы не сможете впоследствии установить на эту систему 1C:Предприятие по причине долгой задержки в поддержке этой версии от разработчиков. Команды и действия полностью эдентичны для установки на Debian 9.
Настройка произведена и можно подключатся по протоколу RDP.
Для запуска X сервера (отображение экрана) существуют разные права доступа. По умолчанию запуск разрешен всем пользователям с доступом к консоли.
Для изменения прав доступа к запуску X сервера необходимо выполнить следующую команду:
dpkg-reconfigure xserver-xorg-legacy
Перезагружаем сервис:
service xrdp restart
Настройка новых правил применнена и можно подключатся по протоколу RDP используя новые параметры.
Настройка XRDP
Вначале настроим пользователя которого создали при установке и на основе этих настроек создадим в последствии шаблон (скелет) для добавления новых пользователей.
Скелет (Skel) позволит при добавлении нового пользователя скопировать все параметры настроенного пользователя.
Двухсторонний буфер обмена XRDP
Буфер сразу работает и не требует настроек. Все проблемы могут быть связанны с раскладкой клавиатуры которые мы решим дальше.
Перезагрузка системы пользователем XRDP
Остановился на варианте когда простому пользователю для выполнения перезагрузки не надо указывать пароль root.
Будем использовать сервис PolicyKit. Все параметры разбиты на секции где есть описание на английском языке. Для применения политик в нужных параметрах указывается необходимое значение.
Откроем нужный файл и сделаем необходимые изминения:
vim /usr/share/polkit-1/actions/org.freedesktop.login1.policy
= часть вывода команды и необходимые изменения =
= вместо auth_admin_keep указываем yes =
<action id="org.freedesktop.login1.reboot">
<description gettext-domain="systemd">Reboot the system</description>
<message gettext-domain="systemd">Authentication is required for rebooting the system.</message>
<defaults>
<allow_any>yes</allow_any>
<allow_inactive>yes</allow_inactive>
<allow_active>yes</allow_active>
</defaults>
<annotate key="org.freedesktop.policykit.imply">org.freedesktop.login1.set-wall-message</annotate>
</action>
Теперь при перезагрузке система не будет запрашивать пароль root.
Одна сессия для пользователя XRDP
Мне было необходимо сделать чтобы у пользователя при подключении создавалась только одна сессия и чтобы она сохранялась на сервере. Всегда удобно уйдя с работы и закрыв терминал придти домой подключиться по RDP и увидеть свой рабочий стол со всеми открытыми документами и программами.
Для настройки нам необходимо открыть файл и сделать там необходимые изменения:
vim /etc/xrdp/sesman.ini
= вывод части команды с необходимыми настройками =
[Sessions]
;; X11DisplayOffset - x11 display number offset
; Type: integer
; Default: 10
X11DisplayOffset=10
;; MaxSessions - maximum number of connections to an xrdp server
; Type: integer
; Default: 0
# Выставляем количество пользователей для одновременной работе на сервере MaxSessions=3
;; KillDisconnected - kill disconnected sessions
; Type: boolean
; Default: false
; if 1, true, or yes, kill session after 60 seconds
# Не разрываем сеанс при отключении пользователя чтобы потом попасть в туже сессиюKillDisconnected=false
Запрет авторизации ROOT
По умолчанию разрешен вход под пользователем root. В целях безопасности отключим такую возможность:
vim /etc/xrdp/sesman.ini
= необходимое изменение =
[Security]
# Авторизация root. true - разрешено false - запрещено
AllowRootLogin=false
Название подключенной локальной папки
Изменим название подключаемой локальной папки при подключению к серверу терминалов на свое имя:
vim /etc/xrdp/sesman.ini
= необходимое изменение =
[Chansrv]
; drive redirection, defaults to xrdp_client if not set
# Название монтируемой папки
FuseMountName=Mount_FOLDER
Сертификат при работе сервера XRDP
По умолчанию система работает с сертификатами созданными при установке о чем свидетельствует информация в логе xrdp:
cat /var/log/xrdp.log
= необходимая информация =
[INFO ] Using default X.509 certificate: /etc/xrdp/cert.pem
[INFO ] Using default X.509 key file: /etc/xrdp/key.pem
[ERROR] Cannot read private key file /etc/xrdp/key.pem: Permission denied
К сожалению мы видим ошибку доступа к файлу, хотя подключиться и работать мы сможем.
Для исправления ошибки выполним команду которая добавит учетную запись пользователя с именем xrdp в группу с именем ssl-cert.
adduser xrdp ssl-cert
После перезагрузки системы и подключившись по rdp вы не увидите информации в логе про ошибку. Информация о том что вы используйте сертификаты по умолчанию будет показана как прежде.
Выпуск собственого сертификата для XRDP
Выпустим свой сертификат по команде указанном в файле настройки xrdp. Изменим только действие сертификата с 1 года до 10 лет. Создадим папку, перейдем туда и запустим команду генерации ключа:
mkdir /etc/xrdp/certificate/
cd /etc/xrdp/certificate/
openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 3650
= будут заданы вопросы на которые ответьте по аналогии =
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Kostroma
Locality Name (eg, city) []:Kostroma
Organization Name (eg, company) [Internet Widgits Pty Ltd]:sevo44
Organizational Unit Name (eg, section) []:sevo44
Common Name (e.g. server FQDN or YOUR name) []:Administrator
Email Address []:info@sevo44.ru
Отредактируем файл настройки:
vim /etc/xrdp/xrdp.ini
= часть кода с необходимые изменениями =
; security layer can be 'tls', 'rdp' or 'negotiate'
; for client compatible layer
security_layer=negotiate
; minimum security level allowed for client
; can be 'none', 'low', 'medium', 'high', 'fips'
crypt_level=high
; X.509 certificate and private key
; openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365
certificate=/etc/xrdp/certificate/cert.pem key_file=/etc/xrdp/certificate/key.pem
; set SSL protocols
; can be comma separated list of 'SSLv3', 'TLSv1', 'TLSv1.1', 'TLSv1.2', 'TLSv1.3'
ssl_protocols=TLSv1.2, TLSv1.3
; set TLS cipher suites
#tls_ciphers=HIGH
Дадим необходимые права для файлов созданного сертификата выполнив команду:
chown -R xrdp:xrdp /etc/xrdp/certificate/
После перезагрузки сервера и подключения к нему по XRDP cообщений больше в логе об использовании сертификатов по умолчанию нет и сервис работает с нашим сертификатом.
Настройка вида окна авторизации XRDP
Отредактируем параметры отвечающие за отображение формы авторизации пользователей. Отредактируем параметры в файле:
vim /etc/xrdp/xrdp.ini
= часть кода с необходимыми изменениями =
; Login Screen Window Title
ls_title=XRDP server 1C
; top level window background color in RGB format
# Фонls_top_window_bg_color=000000
; width and height of login screen
ls_width=350
ls_height=430
; login screen background color in RGB format
ls_bg_color=dedede
; optional background image filename (bmp format).
#ls_background_image=
; logo
; full path to bmp-file or file in shared folder
# Свой логотип в формате bmp размера 240х140
ls_logo_filename=/etc/xrdp/logo_xrdp.bmp
ls_logo_x_pos=55
ls_logo_y_pos=50
; for positioning labels such as username, password etc
ls_label_x_pos=30
ls_label_width=60
; for positioning text and combo boxes next to above labels
ls_input_x_pos=110
ls_input_width=210
; y pos for first label and combo box
ls_input_y_pos=220
; OK button
ls_btn_ok_x_pos=142
ls_btn_ok_y_pos=370
ls_btn_ok_width=85
ls_btn_ok_height=30
; Cancel button
ls_btn_cancel_x_pos=237
ls_btn_cancel_y_pos=370
ls_btn_cancel_width=85
ls_btn_cancel_height=30
= Оставляю сессию только Xorg а остальные коментирую =
;
; Session types
;
; Some session types such as Xorg, X11rdp and Xvnc start a display server.
; Startup command-line parameters for the display server are configured
; in sesman.ini. See and configure also sesman.ini.
[Xorg]name=Xorglib=libxup.sousername=askpassword=askip=127.0.0.1port=-1code=20
Результат моих изменений.
Перезагрузим сервис xrdp для применения всех сделанных настроек:
service xrdp restart
Отключение screensaver
Вначале хотел отключать его у пользователей но подумав решил удалить:
apt-get remove xscreensaver
В системе Debian 10 после базовой установки я не обнаружил пакета xscreensaver.
Для того чтобы к системе всегда можно было подключиться в менеджере питания настройте необходимые параметры.
Настройка базового пользователя
Будем использовать пользователя что создавали при установке как базового пользователя из настроек которого будем делать скелет. Настраивайте как вам угодно. Вся настройка зависит только от требований и пожеланий конечных пользователей. Устанавливаем необходимые программы, монтируем сетевые ресурсы, устанавливаем принтеры, модернизируем панели и тд. и тп.
Раскладка клавиатуры в XFCE
С раскладками в XRDP приходилось возится больше всего. После добавления нового элемента «Раскладка клавиатуры» на панель и его настройки все работает как положено.
Проблема с отсутствием русской раскладки возникает только в том случае если пользователь не закрывает свой сеанс на сервера а просто закрывает программу подключения и при повторном заходе русская раскладка отсутствует. Невозможно добиться того чтобы пользователи всегда закрывали сеанс да и к тому же это не удобно в работе.
Что я только не перепробовал, куда только не писал рекомендованный код, по рекомендациям с разных статей но проблема эта никуда не уходила. Показать пользователю как каждый раз настраивать «Раскладка клавиатуры» не серьезно. Вариант есть дубовый но рабочий на 100 % и при любых обстоятельствах.
Добавил элемент на панель «Запуск приложения» указал там «Терминал Xfce» и внёс туда код:
Разместил рядом с флагами поменяв иконку на понравившуюся мне.
Теперь если переключение не работает тыкаем по кнопке и раскладка снова работает.
Решение проблемы с раскладкой клавиатуры
Мне на почту прислал решение Михаил с сайта admin1c.ru
Посл проверки с радостью делись с вами этим решением!
Необходимо в файле /etc/xrdp/xrdp_keyboard.ini добавить необходимый код и переключение работает прекрасна при любых вариантах работы с системой.
vim /etc/xrdp/xrdp_keyboard.ini
= необходимые проверки и дополнения =
В моем случае эти коды были, но лучше проверить их наличие
[default_rdp_layouts]
rdp_layout_us=0x00000409
rdp_layout_ru=0x00000419Всё что ниже добавляем в конце не забывая что переключение происходит сочетанием клавиш alt+shift
[layouts_map_ru]
rdp_layout_us=ru,us
rdp_layout_ru=ru,us
[rdp_keyboard_ru]
keyboard_type=4
keyboard_type=7
keyboard_subtype=1
; model=pc105 при необходимости
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru
После перезагрузки XRDP проверяем результат.
service xrdp restart
Блокировка настроек XFCE пользователям
В статье выше мы разрешили простым пользователям перезагружать сервер без ввода пароля root. Cделаем запрет на редактирование системных настроек. В папке /etc/xdg/xfce4/xfconf лежат базовые настройки и по умолчанию они не работают так как работают настройки самого пользователя. Добавив параметр в эти файлы пользователь будет использовать именно их.
Вначале настроим вид панели и все настройки что нам необходимо и перенесем их в нужное место с внесением необходимых изменений.
Cделаем запрет на редактирование панели. Скопируем параметры настроенного пользователя:
Откроем и отредактируем файл указав запрет на изменения всем кроме пользователя local:
mcedit /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml
= вывод команды с необходимыми изменениями =
<channel name="xfce4-panel" version="1.0" locked="*" unlocked="local">
После закрытия с сохранением все пользователи кроме local не смогут изменять настройки панели о чем им оповестит окно предупреждения при попытке сделать изменения.
Запрет на изменения настрое XFCE делается редактированием файла:
mcedit /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml
= вывод команды с необходимыми изменениями =
<channel name="xsettings" version="1.0" locked="*" unlocked="local">
Настройки XFCE сделанные пользователем не будут применяться но никаких предупреждающих сообщений пользователь не увидит!
Мы настроили запрет на выключение пользователю но значки показываются и можно выполнить действие указав пароль root. Такой вариант решает проблему но захотелось сделать эти кнопки не активными.
Изменим вид панели пользователя. Создадим папку и необходимый файл с параметрами:
mkdir /etc/xdg/xfce4/kiosk
mcedit /etc/xdg/xfce4/kiosk/kioskrc
= вывод команды с необходимыми изменениями =
[xfce4-session]
# Указываем пользователей кто может перегрузить сервер или разрешение группе %root
Shutdown=root,sevo44
Обычно я в панели вывожу элемент «Системные действия» и там выбираю только «Перезагрузка» и «Завершение сеанса».
В итоге мы даём возможность всем пользователям выходить из сеанса а перезагрузку разрешаем только избранным пользователям.
Для применения всех параметров перезагрузим сервер:
reboot
Так выглядит выход из системы у пользователей с разрешением.
У всех остальных будет такой вид.
Создание skel (скелета) для новых пользователей
Еще раз все проверив и убедившись в правильности всех настроек настала пора создать шаблон настроек который будет применяться на всех вновь создаваемых пользователей.
Я использую настройки самой XFCE, рабочего стола и списка баз 1С:Предприятие. Выполним действия:
cd /home/Базовый пользователь
cp -R -f -b .config/ /etc/skel/
cp -R -f -b Рабочий\ стол/ /etc/skel/
# В случае использования 1С:Предприятие
cp -R -f -b .1C/ /etc/skel/
Последняя строка кода скопирует настройку окна «Запуск 1С:Предприятие» в которой указываются параметры всех баз.
Теперь все новые пользователи при авторизации будут иметь те же настройки и информацию на рабочем столе что и базовый пользователь.
В последствии по этой схеме можно менять настройки любого пользователя перенося необходимое с папки настроенного пользователя в папку необходимого. Для большого количества пользователей можно написать несложный скрипт который автоматизирует этот процесс.
Для доступа будем использовать обычных пользователей которых создадим на сервере. Можно конечно настроить авторизацию по доменным пользователям, но мне такие сложности пока не требовались к тому же это приведет к необходимости настраивать VPN для пользователей которым необходимо работать удалённо.
Добавление новых пользователей
Добавление производится командой:
adduser user007
= вывод команды с информацией для заполнения =
Добавляется пользователь «user007» ...
Добавляется новая группа «user007» (1007) ...
Добавляется новый пользователь «user007» (1006) в группу «user007» ...
Создаётся домашний каталог «/home/user007» ...
Копирование файлов из «/etc/skel» ...
Введите новый пароль UNIX: Повторите ввод нового пароля UNIX:
passwd: пароль успешно обновлён
Изменение информации о пользователе user007
Введите новое значение или нажмите ENTER для выбора значения по умолчанию
Полное имя []: user007
Номер комнаты []:
Рабочий телефон []:
Домашний телефон []:
Другое []:
Данная информация корректна? [Y/n] y
Изменении пароля пользователя
passwd user007
= вывод команды =
Введите новый пароль UNIX:
Повторите ввод нового пароля UNIX:
passwd: пароль успешно обновлён
Удаление пользователя
При удалении укажем необходимость удалять файлы пользователя и домашнюю директорию:
deluser --remove-home user007
= вывод команды =
Идёт поиск файлов для сохранения/удаления ...
Удаляются файлы ...
Удаляется пользователь «user007» ...
Предупреждение: в группе «user007» нет больше членов.
Готово.
Список пользователей
Посмотреть всех пользователей и их параметры можно посмотрев необходимый файл:
cat /etc/passwd
= часть вывода команды =
test:x:1001:1001:test,,,:/home/test:/bin/bash
sevo44:x:1002:1002:sevo44,,,:/home/sevo44:/bin/bash
usr1cv8:x:999:1003:1C Enterprise 8 server launcher:/home/usr1cv8:/bin/sh
geoclue:x:119:127::/var/lib/geoclue:/bin/false
davfs2:x:120:128::/var/cache/davfs2:/bin/false
В файле указаны все основные параметры пользователя и вы можете их редактировать в случае необходимости.
Подключение локального диска на сервер терминалов
Подключение было проверено на стандартном клиенте Windows и программах LInux Remmina и KRDC. Монтирование и работа с локальным диском подключаемого клиента происходит без проблем.
В случае проблем с подключением дисков необходимо в настройках подключения в локальных ресурсах отключать галочку “Принтеры»
Подключение с Windows
При подключении c систем Windows на странице авторизации не получится переключить раскладку клавиатуры для требуемого языка ввода. В большинстве случаев по умолчанию стоит Русская раскладка а вводит надо на Английском.
Перед подключением с Windows необходимо вначале перейти на раскладку в которой вводится логин и пароль, как правило это EN.
Добавление принтеров
К принтерам у меня особое отношение. Эти аппараты вечно приносят кучу проблем и слава богу что все больше и больше их делают сетевыми что облегчает настройку. Настроить сетевой принтер не вызовет проблем даже у начинающего администратора. С usb принтерами придется повозится до получения бубна мастера по подключению принтера в системах Linux. Подключение локального принтера используя программу RDP клиента у меня никогда не получалось а по словам опытных программистов работает коряво и не стабильно. Ладно еще если в одном офисе всё а если разные или вообще с дома хотят подключить принтер вообще жжжж….
Для меня есть два варианта решения проблемы для удаленных от офиса пользователей:
В случаях когда принтере не требуется я в семействе бухгалтерских программ 1С настраиваю нормальное сохранения в PDF и все это сохраняется в локальную папку которая без проблем подключается к серверу терминалов во всех популярных клиентах.
Если нужен принтере в работе то необходимо настраивать VPN чтобы удавленный клиент попал в туже сеть.
Управление XRDP
Управление службой стандартное для систем Debian.
service xrdp restart
service xrdp start
service xrdp stop
service xrdp status
Так выглядит статус после старта службы:
service xrdp status
● xrdp.service - xrdp daemon
Loaded: loaded (/lib/systemd/system/xrdp.service; enabled)
Active: active (running) since Вт 2017-05-23 15:05:32 MSK; 32s ago
Docs: man:xrdp(8)
man:xrdp.ini(5)
Process: 759 ExecStart=/usr/sbin/xrdp $XRDP_OPTIONS (code=exited, status=0/SUCCESS)
Process: 730 ExecStartPre=/bin/sh /usr/share/xrdp/socksetup (code=exited, status=0/SUCCESS)
Main PID: 949 (xrdp)
CGroup: /system.slice/хrdp.service
└─949 /usr/sbin/хrdp
май 23 15:05:31 хrdp systemd[1]: PID file /run/xrdp/xrdp.pid not readable (yet?) after start.
май 23 15:05:32 хrdp systemd[1]: Started xrdp daemon.
май 23 15:05:33 хrdp xrdp[949]: (949)(140156439295744)[INFO ] starting хrdp with pid 949
май 23 15:05:45 хrdp xrdp[949]: (949)(140156439295744)[INFO ] listening to port 3389 on 0.0.0.0
Просмотр активных пользователей XRDP
У каждого подключенного пользователя создается одна сессия, их то нам и надо посмотреть выполнив необходимую команду:
Теперь мы можем отключить пользователя указав команду, которая завершит все процессы пользователя:
pkill -9 -u local
Ротация логов xrdp
По умолчанию логи не ротируются и мы изменим это недоразумение. Можно создать свой файл ротации но мне это не надо и я добавлю параметры в один из стандартных файлов.
Все требуемые мной параметры получились. Дальнейшее использование покажет какие проблемы могут быть в работе, но это обыденно и любая система требует вмешательства администратора. Все проблемы и их решения будут тут отражены. Радует что с каждой новой версией идут улучшения а значит проект живой и активно развивающийся.
Вся эта статья была лишь прелюдия для того чтобы рассказать как можно используя Linux настроить легально и надежно стабильную работу сервера «1С:Предприятие 8.3 на Linux» работающего с файловой базой. Минимальные вложения и максимальная производительность.
Установим одну из самых стабильных операционных систем linux Debian 8. Настроим учитывая основные требования системного администратора. Нужна стабильность в работе? Выбирайте этот дистрибутив OC Linux. Самая большая база программ и огромное сообщество.
Предисловие
Операционная система Debian является основоположником целого семейства OC Linux и зарекомендовала себя как одна из самых надежных и стабильных систем. На рабочем компьютере устаревшие но проверенные версии программного обеспечения могут вызвать неудобство в работе но для сервера надежность прежде всего. Каждый выбирает сам, что он хочет получить, стабильность или современность. Для серверов мой выбор однозначно падает на стабильность.
В скриншотах показана пошаговая установка с указанием всех необходимых параметров.
Для установки системы на RAID1 можете воспользоваться информацией из статьи «Установка на RAID1«.
Настройка Debian 8
Подключение по ssh
Откроем консоль и определим ip адрес:
local@xrdp:~$ ip addr
= вывод команды =
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 02:74:8a:ed:a9:d3 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.150/24 brd 192.168.0.255 scope global dynamic eth0
valid_lft 31965sec preferred_lft 31965sec
inet6 fe80::74:8aff:feed:a9d3/64 scope link
valid_lft forever preferred_lft forever
Подключимся по ssh под простым пользователем:
ssh local@192.168.0.150
= вывод команды =
Warning: Permanently added '192.168.0.150' (ECDSA) to the list of known hosts.
local@192.168.0.150's password:
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
local@xrdp:~$
По умолчанию к системе Debian 8 нельзя подключится сразу под суперпользователем root!
Переключится на пользователя root:
local@xrdp:~$ su -
= вывод команды =
Пароль:
root@xrdp:~#
Обновление
Обновим индекс пакетов в Debian 8 до актуального состояния:
apt-get update
Выполним обновление всех пакетов системы:
apt-get upgrade
Необходимые пакеты для работы
Установим без вопросов пакеты которые обычно используются в работе c Debian 8:
apt-get -y install mc htop iftop cifs-utils davfs2
mc — консольный редактор,
htop — консольный монитор просмотра состояния сервера,
cifs-utils — пакет необходимый для монтирование сетевых ресурсов,
davfs2 — пакет для подключения по протоколу WebDav
Определим редактор mc в системе по умолчанию:
select-editor
= вывод команды с необходимым параметром =
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/mcedit
3. /usr/bin/vim.tiny
Choose 1-3 [1]: 2
Разрешим подключение root по ssh
Произведем изменения в файле конфигурации ssh:
mcedit /etc/ssh/sshd_config
= необходимые изменения =
# Можно поменять на другой порт при желании
Port 22
# Разрешение подключаться под root
PermitRootLogin yes
Перезагрузим сервис ssh:
service sshd restart
Проверим правильность изменения порта (если это делали):
После установки наша система получает ip адрес используя DHCP.
При установке после определения сетевых параметров по DHCP вы можете сделать шаг назад и сразу настроить статический ip адрес.
Для назначения статического адреса вы можете использовать два варианты:
Привязать mac адрес на DHCP сервере и закрепить нужный ip,
Назначить сетевые параметры изменив настройки.
Обычно я использую первый вариант, но это не всегда разумно.
Изменим сетевые параметры (обратите внимание на название сетевой карты у нас она eth0):
mcedit /etc/network/interfaces
=вывод команды с необходимыми изменениями=
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
# Запускать автоматически при загрузке системы
auto eth0
# Интерфейс eth0 в диапазоне IPv4 со статическим адресом
iface eth0 inet static
# IP адрес
address 192.168.0.107
# Шлюз по умолчанию
gateway 192.168.0.106
# Маска сети
netmask 255.255.255.0
# DNS
dns-nameservers 8.8.8.8
Выполним перезапуск сети командой:
/etc/init.d/networking restart
= вывод команды =
[ ok ] Restarting networking (via systemctl): networking.service.
Проверим правильность изменений:
ip addr
= вывод команды =
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 02:74:8a:ed:a9:d3 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.150/24 brd 192.168.0.255 scope global dynamic eth0
valid_lft 29523sec preferred_lft 29523sec
inet 192.168.0.107/24 brd 192.168.0.255 scope global secondary eth0
valid_lft forever preferred_lft forever
inet6 fe80::74:8aff:feed:a9d3/64 scope link
valid_lft forever preferred_lft forever
После перезагрузки системы отображение inet 192.168.0.150/24 пропадет!
Проверим соединение с интернетом отправив 4 пакета на ya.ru:
ping -c 4 ya.ru
= вывод команды =
PING ya.ru (87.250.250.242) 56(84) bytes of data.
64 bytes from ya.ru (87.250.250.242): icmp_seq=1 ttl=54 time=15.2 ms
64 bytes from ya.ru (87.250.250.242): icmp_seq=2 ttl=54 time=15.1 ms
64 bytes from ya.ru (87.250.250.242): icmp_seq=3 ttl=54 time=16.0 ms
64 bytes from ya.ru (87.250.250.242): icmp_seq=4 ttl=54 time=18.4 ms
--- ya.ru ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 15.186/16.235/18.422/1.310 ms
Настройка iptables
Изначально фаервол в Debian 8 полностью открыт. Проверим это:
iptables -L -v -n
= вывод команды =
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Всё пропускает.
Самое удобное для работой с iptables это создать скрипт и при необходимости его редактировать указывая нужные параметры и применять.
Создадим скрипт настройки iptables:
mcedit /etc/iptables.sh
= вывод команды с необходимой информацией =
#!/bin/bash
#
# Объявление переменных
export IPT="iptables"
# Сетевой интерфейс
export WAN=eth0
export WAN_IP=192.168.0.107
# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
# Политики для трафика, не соответствующего ни одному правил у
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
# Локальный трафик для loopback
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
# Ping
$IPT -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# Исходящие и Входящие соединения
$IPT -A OUTPUT -o $WAN -j ACCEPT
#$IPT -A INPUT -i $WAN -j ACCEPT
# Доступ к web серверу
#$IPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
#$IPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
# Доступ к Samba
#$IPT -A INPUT -p tcp -m tcp --dport 137 -j ACCEPT
#$IPT -A INPUT -p tcp -m tcp --dport 138 -j ACCEPT
#$IPT -A INPUT -p tcp -m tcp --dport 139 -j ACCEPT
#$IPT -A INPUT -p tcp -m tcp --dport 445 -j ACCEPT
#$IPT -A INPUT -p tcp -m tcp --dport 901 -j ACCEPT
# Состояние ESTABLISHED говорит что это не первый пакет в соединении
# Пропускать все уже инициированные соединения, а также дочерние от них
$IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Пропускать новые, а так же уже инициированные и их дочерние соединения
$IPT -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Форвардинг для уже инициированных и их дочерних соединений
$IPT -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Включаем фрагментацию пакетов. Необходимо из за разных значений MTU
$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
# Отбрасывать все пакеты, которые не могут быть идентифицированы
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP
# Приводит к связыванию системных ресурсов, так что реальный
# обмен данными становится не возможным, обрубаем
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
# Открываем порт для ssh
$IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT
# Открываем порт для DNS
$IPT -A INPUT -i $WAN -p udp --dport 53 -j ACCEPT
# Открываем порт для NTP
$IPT -A INPUT -i $WAN -p udp --dport 123 -j ACCEPT
# Открываем порт для RDP
#$IPT -A INPUT -i $WAN -p tcp --dport 3389 -j ACCEPT
# Логирование
$IPT -N block_in
$IPT -N block_out
$IPT -N block_fw
$IPT -A INPUT -j block_in
$IPT -A OUTPUT -j block_out
$IPT -A FORWARD -j block_fw
$IPT -A block_in -j LOG --log-level info --log-prefix "--IN--BLOCK"
$IPT -A block_in -j DROP
$IPT -A block_out -j LOG --log-level info --log-prefix "--OUT--BLOCK"
$IPT -A block_out -j DROP
$IPT -A block_fw -j LOG --log-level info --log-prefix "--FW--BLOCK"
$IPT -A block_fw -j DROP
# Сохраняем правила
/sbin/iptables-save > /etc/iptables_rules
Даем файлу права на запуск:
chmod +x /etc/iptables.sh
Всегда очень внимательно настраивайте правила! В случае неправильной настройки вы можете потерять доступ к серверу!
Запускаем скрипт:
sh /etc/iptables.sh
Проверяем правила:
iptables -L -v -n
= вывод команды =
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 0
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 3
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 11
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8
5 356 ACCEPT all -- eth0 * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW
0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT udp -- eth0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
0 0 ACCEPT udp -- eth0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:123
0 0 block_in all -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 TCPMSS tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
0 0 block_fw all -- * * 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
3 308 ACCEPT all -- * eth0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW
0 0 block_out all -- * * 0.0.0.0/0 0.0.0.0/0
Chain block_fw (1 references)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 6 prefix "--FW--BLOCK"
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
Chain block_in (1 references)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 6 prefix "--IN--BLOCK"
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
Chain block_out (1 references)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 6 prefix "--OUT--BLOCK"
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
Настроим применение правил при загрузке сервера. Добавляем необходимую строку в файл сетевых настроек:
mcedit /etc/network/interfaces
= необходимое дополнение =
# Загрузка правил iptables при старте машины
pre-up iptables-restore < /etc/iptables_rules
Применим изменения командой:
/etc/init.d/networking restart
= вывод команды =
[ ok ] Restarting networking (via systemctl): networking.service.
Логирование Cron
В Debian нет отдельного файла логов cron. Исправим это недоразумение.
Строка присутствует значит все будет ротироваться как надо.
Результат
Сервер готов к дальнейшей настройке под необходимые требования. Конечно, это не самые идеальные параметры настройки, но для меня такая базовая настройка оказалась самой удобной.
Настроим резервное копирование сервера VDS с помощью утилиты duplicity на операционной системе CentOS 7. Для хранения резервных копий будем использовать Yandex Disk. Бэкапы защитим с помощью надежного шифрования OpenPGP. Возможность автоматического создания архивов.
Введение
В статье «Backup надежный и безопасный» в примере мы рассмотрели как настроить резервное копирование файлов и базы данных сайтов, но для полного спокойствия этого мало. Как правило, ресурсы предоставляющие VDS не делают резервных копий и заботится о безопасности приходится самим владельцам VDS. Мне гораздо спокойней перед любыми действиями с сервером создать полную резервную копию. Сюрпризы после обновления или настройкой могут вывести сервер из работы. Без резервной копии придется потратить много времени и нервов для восстановления работы сервера.
Установим репозиторий Epel без вопросов, если он не был установлен ранее:
yum -y install epel-release
Установим Duplicity без вопросов:
yum -y install duplicity
Создания ключа OpenPGP
Можно хранить резервные копии без шифрования, но мы рассмотрим вариант с защитой. Duplicity использует OpenPGP для шифрования.
Создадим необходимый ключ выполнив команду:
gpg --gen-key
= вывод команды с пояснениями. Часть информации удалена. =
Выберите требуемый тип ключа:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (только для подписи)
(4) RSA (только для подписи)
Ваш выбор (?-подробнее)? 1
ключи RSA могут иметь длину от 1024 до 4096 бит.
Какой размер ключа необходим? (2048)
Запрашиваемый размер ключа 2048 бит
Выберите срок действия ключа.
0 = без ограничения срока действительности
<n> = срок действительности n дней
<n>w = срок действительности n недель
<n>m = срок действительности n месяцев
<n>y = срок действительности n лет
Ключ действителен до? (0)
Ключ не имеет ограничения срока действительности
Все верно? (y/N) y
GnuPG необходимо составить UserID в качестве идентификатора ключа.
Ваше настоящее имя: sevo44
Email-адрес: test@sevo44.ru
Комментарий: duplicity-backup
Вы выбрали следующий User ID:
"sevo44 (duplicity-backup) <test@sevo44.ru>"
Сменить (N)Имя, (C)Комментарий, (E)email-адрес или (O)Принять/(Q)Выход? o
Для защиты секретного ключа необходима фраза-пароль.
!!! Ввводим пароль 2 раза и не забываем его !!!
gpg: ключ 37D34631 помечен как абсолютно доверяемый.
открытый и закрытый ключи созданы и подписаны.
pub 2048R/37D34631 2017-05-08
Отпечаток ключа = 0AFF 9E2E 52DB 7ED2 480D 5DE2 971F 83F8 37D3 4631
uid sevo44 (duplicity-backup) <info@sevo44.ru>
sub 2048R/C5730EC9 2017-05-08
Для создания ключа откройте новый терминал и делайте там любые действия. У меня генерация длилась минут 30.
Вот наш ID ключа 37D34631 который мы и будем использовать.
Обязательно сохраните ключ в надежное место и не забывайте пароль который указывали при создании ключа!
Подключение Yandex disk
Установим необходимый пакет:
yum -y install davfs2
Создадим папку куда будем монтировать:
mkdir /mnt/ydisk_backup_vds
Подключим Yandex Disk:
mount -t davfs https://webdav.yandex.ru /mnt/ydisk_backup_vds/
= вывод команды =
Please enter the username to authenticate with server
https://webdav.yandex.ru or hit enter for none.
Username: test@sevo44.ru
Please enter the password to authenticate user test@sevo44.ru with server
https://webdav.yandex.ru or hit enter for none.
Password: ********
/sbin/mount.davfs: Warning: can't write entry into mtab, but will mount the file system anyway
Для отмантирования диска:
umount /mnt/ydisk_backup_vds
Вводить каждый раз данные не удобно и мы настроим подключение без этих вопросов:
mcedit /etc/davfs2/secrets
= необходимые данные для добавления =
# Данные для подключения к Yandex Disk
/mnt/ydisk_backup_vds/ test@sevo44.ru password
Теперь при подключении не будет запроса логина и пароля.
Cсоздадим папку на сервере куда будем распаковывать из архива:
mkdir /restore
Все подготовительные действия выполнены и можно приступать к работе с сервисом.
Работа с Duplicity
Рассмотрим основные моменты работы с сервисом.
Ручное создание архивов
Можно настроить автоматическое монтирование Yandex Diska при загрузке сервера указав нужные параметры в файл /etc/fstab. Мне кажется это не разумно, но как именно настраивать решать только вам.
Создадим полный архив с помощью ключа и исключим папки не нужные для резервной копии.
Можно указать full для полной резервной копии. Если ничего не указывать то создастся вначале полный архив а последующие будут создаваться incremental.
Имейте в виду, что надо точно указать папку куда создаете резервную копию! Если ошибетесь то создаётся папка что указали.
Внимательно отнеситесь к папкам которые мы исключаем из резервного копирования! Настройте при необходимости под свои требования.
duplicity --encrypt-key=37D34631 --exclude=/restore --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/proc --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/tmp --exclude=/var/spool --exclude=/var/cache --exclude=/var/tmp --exclude=/swap / file:///mnt/ydisk_backup_vds/backup_vds
= вывод команды =
Локальные и удалённые метаданные синхронизированы, синхронизация не требуется.
Время последней полной резервной копии: нету
Сигнатуры не найдены, переключение на полную резервную копию.
!!!! Процесс не быстрый, ждем !!!!
-------------[ Статистика резервного копирования ]-------------
StartTime 1494264679.29 (Mon May 8 20:31:19 2017)
EndTime 1494264988.55 (Mon May 8 20:36:28 2017)
ElapsedTime 309.26 (5 minutes 9.26 seconds)
SourceFiles 43662
SourceFileSize 1504877467 (1.40 GB)
NewFiles 43662
NewFileSize 1504877467 (1.40 GB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 43662
RawDeltaSize 1481346284 (1.38 GB)
TotalDestinationSizeChange 627905129 (599 MB)
Errors 0
Распакуем все что есть в папку restore:
duplicity --encrypt-key=37D34631 --file-to-restore / file:///mnt/ydisk_backup_vds/backup_vds /restore
= вывод команды =
Локальные и удалённые метаданные синхронизированы, синхронизация не требуется.
Время последней полной резервной копии: Mon May 8 20:42:33 2017
Кодовая фраза GnuPG: тот пароль что указывали при генерации ключа!
После появления строки приглашения консоли проверяем папку restore.
Если необходимо выдернуть из архива только определенные папки или файлы необходимо выполнить команду ( в нашем случае мы распаковали папки etc):
Немного автоматизируем процесс работы с сервисом. Напишем скрипт который выполнит монтирование Yandex Disk, произведёт резервное копирование и отключать диск.
Создадим скрипты для бэкапа и восстановления в папку restore.
Есть команда для просмотра файлов в архиве но смысла выводить эту портянку просто нет. Гораздо быстрей восстановить все что надо в папку restore и спокойно с ней работать.
Результат
Данная утилита очень гибкая в настройке и позволяет использовать её в разных вариантах. Существуют готовые скрипты автоматизации управления которые у меня не получилось настроить да и незачем усложнять то что не надо. Шифрование архивов еще никому не вредило и сервис делает это просто и понятно.
Используя ProFTPd настроим доступ по FTP к сайтам на сервере VDS под управлением CentOS 7. Создадим файловую базу пользователей для авторизации с правами от Nginx. Применим подключение с использованием сертификата для TLS.
Введение
Периодически возникает необходимость давать доступ к файлам сайта для веб разработчиков или других пользователей. Так как используется VDS сервер с настроенным функционалом на базе Nginx, то все права на файлы при добавлении и изменении должны быть как у указанного сервиса. Вначале пытался настроить vsftpd но функционал позволяет настроить только права на редактируемые файлы чтобы они оставались такие как были но вот все новые были с правами пользователя. Поэтапно опишу все действия которые привели меня к желаемому результату.
firewall-cmd --permanent --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client ftp ssh
ports: 49000-55000/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
Установка и настройка ProFTPd
Установим сервер ftp:
yum install proftpd proftpd-utils
Создание файловой базы пользователей ProFTPd
Узнаем ID пользователя и группы Nginx, так как именно под этими данными и должны работать наши пользователи:
cat /etc/passwd
= вывод команды. Необходимая информация =
nginx:x:996:994:nginx user:/var/cache/nginx:/sbin/nologin
Создадим файл /etc/ftpd.passwd и добавим туда пользователя sevo44 c id пользователя 996 uid и группой 994 gid и домашним каталогом /web/sites/sevo44.ru/www
ftpasswd --passwd --file=/etc/ftpd.passwd --name=sevo44 --uid=996 --gid=994 --home=/web/sites/sevo44.ru/www --shell=/bin/false
= вывод команды =
ftpasswd: using alternate file: /etc/ftpd.passwd
ftpasswd: creating passwd entry for user sevo44
ftpasswd: /bin/false is not among the valid system shells. Use of
ftpasswd: "RequireValidShell off" may be required, and the PAM
ftpasswd: module configuration may need to be adjusted.
Password: -- вводим пароль
Re-type password: -- повторяем пароль
ftpasswd: entry created
Откроем и посмотрим файл базы пользователей:
cat /etc/ftpd.passwd
= вывод команды =
sevo44:$1$HpmDikdn$.3vuwu56cjTvdg8qtrsy//:996:994::/web/sites/sevo44.ru/www:/bin/false
Видим нашего добавленного пользователя. Для удаления пользователя достаточно закоментировать или удалить строку.
Сменить пароль можно выполнив команду:
ftpasswd --passwd --name=sevo44 --change-password
Включение Ban листа и возможность подключения по TLS
Включим необходимые значения указные в главном файле конфигурации сервиса:
mcedit /etc/sysconfig/proftpd
= Необходимая информация для размещения =
PROFTPD_OPTIONS="-DDYNAMIC_BAN_LISTS -DTLS"
Если параметр -DTLS включен то без наличия правильно созданного сертификата сервис не стартует. В случае работы без TLS просто не указывайте параметр.
Получение сертификата для TLS подключения
Для работы по TLS необходимо создать сертификат. Создадим сертификат на 365 дней:
openssl req -new -x509 -days 365 -nodes -out \
/etc/pki/tls/certs/proftpd.sert.pem -keyout \
/etc/pki/tls/certs/proftpd.key.pem
= вывод команды с пояснениями =
Generating a 2048 bit RSA private key
................................+++
.........+++
writing new private key to '/etc/pki/tls/certs/proftpd.key.pem' -- Путь где будет находится ключ
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:RU -- Буквенный код Страны
State or Province Name (full name) []:Kostroma state -- Область проживания
Locality Name (eg, city) [Default City]:Kostroma -- Город
Organization Name (eg, company) [Default Company Ltd]:SEVO44 -- Название организации
Organizational Unit Name (eg, section) []: -- Название отдела в организации
Common Name (eg, your name or your server's hostname) []:sevo44.ru -- Доменное имя сервера
Email Address []:info@sevo44.ru -- адрес электронной почты
После получения перейдите в папку указанную в пути и убедитесь что сертификаты созданы и имеют не нулевой размер! При настройке я неправильно указывал команду создания сертификата и они создавались с нулевым размером.
Редактирование proftpd.conf
Файл хорошо задокументирован и имеет большое количество настроек. В файле будут указанны параметры которые необходимы для наших требований.
Сделаем оригинал копии и откроем главный файл настройки сервиса:
cp /etc/proftpd.conf /etc/proftpd.conf.orig
mcedit /etc/proftpd.conf
= вывод команды с необходимыми комментариями =
ServerName "FTP server"
ServerIdent on "FTP Server ready."
ServerAdmin root@localhost
DefaultServer on
# По умолчанию используется 21 в случае замены используйте параметр ниже
# Внимание! Не забудьте дать доступ!
#Port 21111
# Изолировать каждого пользователя FTP, в своем домашнем каталоге
DefaultRoot ~
# Отключили и добавили строки для того чтобы шла авторизация только пользователей с файла /etc/ftpd.passwd
#AuthPAMConfig proftpd
#AuthOrder mod_auth_pam.c* mod_auth_unix.c
AuthOrder mod_auth_file.c
#Модуль авторизации по файлу грузится сам и включать его не надо
#LoadModule mod_auth_file.c
AuthUserFile /etc/ftpd.passwd
RequireValidShell off
AuthPAM off
#RootLogin off
#Диапазон пассивных портов необходимых для работы
PassivePorts 49000 55000
# Не делать обратного DNS-запроса
UseReverseDNS off
# Для предотвращения DOS-атак, установить максимальное количество дочерних процессов
# до 20. Если вам нужно, чтобы позволить более 20 одновременных подключений
# на один раз, просто увеличьте это значение. Обратите внимание, что это работает только
# в автономном режиме, в то inetd режим следует использовать в inetd сервера
# что позволяет ограничить максимальное количество процессов на обслуживание
# (например, xinetd)
MaxInstances 20
# Отключить функция sendfile по умолчанию, так как это нарушает отображение скорости загрузки в
# ftptop и ftpwho
UseSendfile off
# Настройки видов записи и типы логирования
# Define the log formats
LogFormat default "%h %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
ExtendedLog /var/log/proftpd/all.log ALL default
ExtendedLog /var/log/proftpd/access.log READ,WRITE default
ExtendedLog /var/log/proftpd/auth.log AUTH auth
ServerLog /var/log/proftpd/server.log
SystemLog /var/log/proftpd/system.log
TransferLog /var/log/proftpd/transfer.log
DebugLevel 9
# Обеспечить внешнюю кэш SSL-сессии с использованием разделяемой памяти
# (contrib/mod_tls_shmcache.html)
LoadModule mod_tls_shmcache.c
# TLS
#LoadModule mod_tls.c
<IfDefine TLS>
TLSEngine on
# В случае ON подключиться можно только по TLS
TLSRequired on
TLSRSACertificateFile /etc/pki/tls/certs/proftpd.sert.pem
TLSRSACertificateKeyFile /etc/pki/tls/certs/proftpd.key.pem
TLSCipherSuite ALL:!ADH:!DES
TLSOptions NoCertRequest
TLSVerifyClient off
#TLSRenegotiate ctrl 3600 data 512000 required off timeout 300
TLSLog /var/log/proftpd/tls.log
<IfModule mod_tls_shmcache.c>
TLSSessionCache shm:/file=/var/run/proftpd/sesscache
</IfModule>
</IfDefine>
# Динамические списки блокировки
# Включение параметром PROFTPD_OPTIONS=-DDYNAMIC_BAN_LISTS
#в /etc/sysconfig/proftpd
<IfDefine DYNAMIC_BAN_LISTS>
LoadModule mod_ban.c
BanEngine on
BanLog /var/log/proftpd/ban.log
BanTable /var/run/proftpd/ban.tab
# Если же клиент достигает предела MaxLoginAttempts 2 раза
# в течение 10 минут, автоматически добавить запрет для клиента, что
# истекает через один час.
BanOnEvent MaxLoginAttempts 2/00:10:00 01:00:00
# Информировать пользователя о том, что он попал в бан
BanMessage "Машина %a иннна для доступа по FTP"
# Разрешить FTP и админ вручную добавить/удалить щелбаны
BanControlsACLs all allow user ftpadm
</IfDefine>
# Установить сетевые специфические "качества обслуживания" (QoS) и биты на пакеты, используемые
# на сервере (contrib/mod_qos.html)
<IfDefine QOS>
LoadModule mod_qos.c
# RFC791 TOS parameter compatibility
QoSOptions dataqos throughput ctrlqos lowdelay
# For a DSCP environment (may require tweaking)
#QoSOptions dataqos CS2 ctrlqos AF41
</IfDefine>
# Глобальной конфигурации - конфигурации, общие для Настройки сервера и виртуальных Хостов
<Global>
#Значение umask 022-хороший стандарт umask, чтобы предотвратить новые каталоги и файлы
# от группы и для
Umask 022
# Разрешить пользователям перезаписать файлы, а также изменять разрешения
AllowOverwrite yes
<Limit ALL SITE_CHMOD>
AllowAll
</Limit>
</Global>
Управление сервером ProFTPd
Добавим в автозагрузку и запустим:
systemctl enable proftpd
systemctl start proftpd
Проверим статус:
systemctl status proftpd
● prоftpd.service - PrоFTPD FTP Server
Loaded: loaded (/usr/lib/systemd/system/prоftpd.service; enabled; vendor preset: disabled)
Active: active (running) since Вт 2017-04-25 21:18:12 MSK; 4min 24s ago
Main PID: 23220 (prоftpd)
CGroup: /system.slice/prоftpd.service
└─23220 prоftpd: (accepting connections)
апр 25 21:18:12 centos7.sevo44.loc systemd[1]: Starting PrоFTPD FTP Server...
апр 25 21:18:12 centos7.sevo44.loc systemd[1]: Started PrоFTPD FTP Server.
В консоли можно вывести просмотр онлайн статистики выполнив команду:
ftptop
Просмотр количества подключений выполняется командой:
ftpwho
Логи сервиса
Все логи вы можете посмотреть в папке /var/log/proftpd. Ротация логов работает но вы можете это проверить и настроить на примере раздела «Ротация логов сайта» в статье » Virtual Hosts на web-сервере NGINX»
Подключение по FTP c использованием TLS
Для подключения я использую программу FileZilla и приведу скриншоты настройки моего подключения.
Настройка:
Информация TLS:
Вывод
Произведя данную настройку мы полностью сделали разграничение доступа к разным сайтам на сервере. Обеспечили надежное подключение используя сертификат и ведение всей статистики работы с файлами.
При переходе на нового провайдера обнаружил отсутствие доступа к репозиторию WebtaticEL. Роскомнадзор распорядился заблокировать ip адрес webtatic.com c 10.03.2017по инициативе ФНС. Вопрос решён и Россия может дальше пользоваться популярными репозиторием CentOS 7.
Введение
Репозиторий WebtaticEL один из самых востребованных при работе с операционной системой CentOS. Ресурс, как выяснилось, был заблокирован не у всех. О результат моих попыток получить доступ к ресурсу я и расскажу.
Определение блокировки WebtaticEL
Вот так выглядел вывод запроса к ресурсу:
ping -R webtatic.com
= вывод результата =
PING webtatic.com (104.24.6.38) 56(124) bytes of data.
64 bytes from 104.24.6.38: icmp_seq=1 ttl=57 time=16.8 ms
RR: hp.sevo44.loc (192.168.0.3)
192.168.1.106
access-46-228-96-223.kmtn.ru (46.228.96.223)
access-46-42-0-10.kmtn.ru (46.42.0.10)
kmtn.inet2.net (85.112.122.60)
ttk.inet2.net (85.112.122.11)
172.68.8.1
104.24.6.38
104.24.6.38
64 bytes from 104.24.6.38: icmp_seq=2 ttl=57 time=32.7 ms (same route)
64 bytes from 104.24.6.38: icmp_seq=3 ttl=57 time=33.0 ms (same route)
64 bytes from 104.24.6.38: icmp_seq=4 ttl=57 time=19.4 ms (same route)
64 bytes from 104.24.6.38: icmp_seq=5 ttl=57 time=24.0 ms (same route)
64 bytes from 104.24.6.38: icmp_seq=6 ttl=57 time=24.9 ms (same route)
64 bytes from 104.24.6.38: icmp_seq=7 ttl=57 time=23.3 ms (same route)
64 bytes from 104.24.6.38: icmp_seq=8 ttl=57 time=30.6 ms (same route)
64 bytes from 104.24.6.38: icmp_seq=9 ttl=57 time=21.2 ms (same route)
64 bytes from 104.24.6.38: icmp_seq=10 ttl=57 time=26.5 ms (same route)
^C
--- webtatic.com ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9014ms
rtt min/avg/max/mdev = 16.870/25.288/33.085/5.227 ms
ping webtatic.com
= вывод результата =
PING webtatic.com (104.24.6.38) 56(84) bytes of data.
From Filter-gw.transtelecom.net (188.43.30.34) icmp_seq=1 Destination Host Unreachable
From Filter-gw.transtelecom.net (188.43.30.34) icmp_seq=2 Destination Host Unreachable
From Filter-gw.transtelecom.net (188.43.30.34) icmp_seq=3 Destination Host Unreachable
From Filter-gw.transtelecom.net (188.43.30.34) icmp_seq=4 Destination Host Unreachable
From Filter-gw.transtelecom.net (188.43.30.34) icmp_seq=5 Destination Host Unreachable
From Filter-gw.transtelecom.net (188.43.30.34) icmp_seq=6 Destination Host Unreachable
From Filter-gw.transtelecom.net (188.43.30.34) icmp_seq=7 Destination Host Unreachable
^C
--- webtatic.com ping statistics ---
7 packets transmitted, 0 received, +7 errors, 100% packet loss, time
6010ms
Как видите срабатывает фильтр gw.transtelecom.net который и блокирует сайт.
Попытки получить доступ к WebtaticEL
После небольшой игры в футбол с провайдерами я получил ответ:
«104.24.6.38 заблокирован Роскомнадзором, тут уже ничего не поделать.»
Верить на слово я уже давно перестал.
Воспользовавшись сайтом https://rkn.gov.ru/ написал запрос разъяснить мне ситуацию с заблокированным ресурсом. Запрос отправил 14 апреля 2017 года. Наверно действие было поспешно так как можно было сразу проверить самому сайт на наличие блокировки но тут наверно больше был вопрос почему не у всех блокируется.
Параллельно написал письмо на почтовый адрес andy@webtatic.com с информацией о блокировке ресурса в России.
Результат
В понедельник 17 апреля получаю письмо о регистрации моего вопроса в Роскомнадзоре и письма с вопросом о работе ресурса от моего провайдера.
Проверяю:
ping webtatic.com= вывод команды =
PING webtatic.com (138.197.226.254) 56(84) bytes of data.64 bytes from 138.197.226.254: icmp_seq=1 ttl=53 time=129 ms64 bytes from 138.197.226.254: icmp_seq=2 ttl=53 time=123 ms^C64 bytes from 138.197.226.254: icmp_seq=5 ttl=53 time=130 ms--- webtatic.com ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 4394msrtt min/avg/max/mdev = 123.217/126.370/130.193/2.996 ms
Ресурс Webtatic.com стал доступен.
Вначале я подумал провайдеры произвели какие то действия и ресурс стал доступен, но выяснилось действия предпринял сам WebtaticEL.
Информация WebtaticEL о блокировке в России
Вот перевод статьи опубликованной на webtatic.com 16 апреля 2017 года:
Россия заблокировала доступ (косвенно), сейчас исправлено
В конце прошлого месяца в России начали блокировать Webtatic.com косвенно из-за сторонних онлайн-Валюта сайта, выступающей с одного IP-адреса.
Это сказалось на https://webtatic.com и https://mirror.webtatic.com/ сайты.
Это было связано в cloudflare (услугу cdn), которая, как это и что онлайн-Валюта сайта с помощью обмена IP-адресов через это бесплатный и профессиональный подписки между клиентами. Полный запрет был применен к IP-адресу заблокировать сайт нарушителя.
К сожалению, на cloudflare не удалось решить проблему, и Webtatic был не в состоянии получить новые разблокировали IP-адреса из них.
Благодаря этому, Webtatic больше не использовать сети cdn от cloudflare, а вместо этого перейдет на хостинг сайта в нескольких центрах обработки данных (в качестве репозиториев yum тоже себе сделать).
Posted on Author Andy ThompsonCategories Yum Repository
Видим что блокировка наступила с 10 марта 2017 года и доступ должен быть закрыт всеми провайдерами, что и вызывало моё недоумение.
Почему заблокировали ip адрес а не сам ресурс? Да, оказался на одном сервере с Webtatic.com «не хороший» ресурс и что… Даже написано «ограничивается к сайту», но ip это не сайт. Они к себе такой подход применяли бы… накосячил один и всех в отставку 🙂
Сейчас ресурс Webtatic.com работает на ip 138.197.226.254 который не заблокирован в РКН.
Ответ Роскомнадзора о блокировке webtatic.com
Вот официальное письмо полученное в ответ на мой запрос:
РОСКОМНАДЗОР
УПРАВЛЕНИЕ ФЕДЕРАЛЬНОЙ СЛУЖБЫ
ПО НАДЗОРУ В СФЕРЕ СВЯЗИ, ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И МАССОВЫХ КОММУНИКАЦИЙ
ПО КОСТРОМСКОЙ ОБЛАСТИ
(Управление Роскомнадзора
по Костромской области)
мкр. Паново, д.36, г.Кострома, 156010
Справочная: (4942) 64 10 41; факс (4942) 64 10 51
E—mail: rsockanc44@rkn.gov.ru
17.04.2017 № 1444-01/44
На № от
О рассмотрении обращения
Долотову А.Н.
Эл. почта: dolotov44@yandex.ru
Уважаемый Алексей Николаевич!
Ваше обращение по вопросу блокировки интернет сайта по адресу https://webtatic.com поступившее в Управление Роскомнадзора по Костромской области с официального сайта Роскомнадзора 17.04.2017 (ID 1061561), рассмотрено.
С 1 ноября 2012 г. вступила в силу статья 15.1 Федерального закона от 27 июля 2006 г. № 149-ФЗ «Об информации, информационных технологиях и о защите информации», касающаяся создания, формирования и ведения Единого реестра доменных имен, указателей страниц сайтов в сети «Интернет» и сетевых адресов, позволяющих идентифицировать сайты в сети «Интернет», содержащие информацию, распространение которой в Российской Федерации запрещено (далее – Реестр запрещенных сайтов).
Получение доступа к полной выгрузке из Реестра запрещенных сайтов предоставляется операторам связи исключительно с использованием квалифицированной электронной подписи, выданной любым удостоверяющим центром, из числа аккредитованных Минкомсвязи России.
Данные о нахождении доменных имен, указателей страниц сайтов в сети «Интернет» и сетевых адресов, позволяющих идентифицировать сайты в сети «Интернет», содержащие информацию, распространение которой в Российской Федерации запрещено, в Реестре запрещенных сайтов можно получить через электронную форму, опубликованную по адресу http://eais.rkn.gov.ru
Для проверки ограничения доступа к сайтам и (или) страницам сайтов сети «Интернет» в рамках исполнения иных положений Федерального закона от 27.07.2006 года № 149-ФЗ «Об информации, информационных технологиях и защите информации», рекомендуем воспользоватьсяуниверсальным сервисом проверки ограничения доступа расположенному по адресу http://blocklist.rkn.gov.ru
В Реестре запрещенных сайтов действительно существует запись с ip‑адресом 104.24.6.38 , который совпадал с адресом хостинга сайта webtatic.com.
На данный момент сайтом webtatic.com приняты меры по устранения негативных последствий от блокировки стороннего ресурса.
Сайт изменил ip адрес хостинга (ip‑адрес 138.197.226.254) и организовал копию сайта доступного по ссылке https://mirror.webtatic.com/ (ip‑адрес 45.55.104.9).
Если сайт webtatic.com у Вас до сих пор недоступен, прошу обратиться в тех. поддержку оператора связи, а в случае непринятия мер по возобновлению доступа направить в наш адрес информацию об этом и договор на оказание телематических услуг связи с оператором связи для принятия к нему административных мер воздействия.
Данное решение, действие (бездействие) Вы вправе оспорить непосредственно в суде или в вышестоящем в порядке подчиненности органе государственной власти.
С уважением,
Руководитель
Документ подписан электронной подписью в системе электронного документооборота Роскомнадзора
СВЕДЕНИЯ О СЕРТИФИКАТЕ ЭП
Кому выдан:
Управление Роскомнадзора по Костромской области
Серийный№:
508663092886826981208179
Кем выдан:
ООО Спецоператор
Срок действия
01.06.2016 — 01.06.2017
С. Л. Корольков
Всё понятно. Осталось уточнить в каких случаях блокируют домен а в каких ip адрес. В каком документе указаны эти правила?
Вывод
В результате всех действий я удовлетворен возможностью опять пользоваться репозиторием WebtaticEL. Повлияло мое письмо в webtatic.com на решение проблемы или нет — не важно. Россия может дальше работать с этим ресурсом — это главное. Можно было послушать провайдера и подождать пока само всё разрешится. Возможно и разрешилось бы без моего участия, а возможно и нет, тут мы не узнаем ответ.
Получим и настроим автоматическое обновление бесплатного сертификата SSL для сайта от компании Lets`Encrypt. Срок сертификата 90 дней. Настроить получение сертификатов возможно на любой операционной системе Linux. Стабильная и удобная работа с сервисом.
Введение
С января 2017 года Firefox и Chrome маркируют как надежные только сайты с SSL-сертификатами. Это одна из причин по которой следует использовать этот сертификат.
Если коротко, то это защита сайта которая многим не нужна, но введение некоторых ограничений заставляет использовать её. Хорошо что есть ресурсы которые предоставляют сертификаты бесплатно, сколько времени еще так будет не известно, но мы пока попользуемся.
Мной было найдено два ресурса выдающие бесплатные SSL для сайтов:
StartCom — у этого ресурса проблемы с разработчиками браузеров и чем все это закончится не понятно. Удобно что выдается на 3 года и можно установить на любой обычный хостинг.
Let’s Encrypt is — все работает и никаких проблем нет. Для установки нужен свой VDS хостинг. Хоть сертификат и выдается на 90 дней, но при настройке автоматического обновления никаких проблем не возникает.
Мой выбор однозначно пал на второй вариант, так как стабильность и понятность для меня самое важное.
Разработчик рекомендует использовать пакетную систему Snap. Ее смысл заключается в том, что в пакет с приложением входит полный набор компонентов, необходимых для запуска данного приложения. Такие пакеты можно устанавливать в систему не заботясь о зависимостях, так как все зависимости уже включены в пакет. Пакетная система Snap была созданная компанией Canonical и изначально появилась в дистрибутиве Ubuntu Linux.
При установке на дистрибутивы которые используют не стабильные репозитории это очень оправдано и понятно почему. В нашем случае устанавливать в таком виде не имеет смысла. Лично у меня на протяжении лет 5 проблем не возникало.
Для использования Certbot, необходимо сначала добавить репозиторий Epel . Подключим необходимый репозиторий:
dnf -y install epel-release
Установим без вопросов Certbot от Let’s Encrypt:
yum -y install certbot
Предварительная подготовка
Предварительная подготовка заключается в выполнении двух действий:
Ответы на вопросы от разработчика;
Вносим необходимые настройки в конфигурацию Nginx.
Подробно про установку и начальную настройку сервера вы можете узнать в моей статье NGINX установка и настройка.
Ответы на вопросы от разработчика
Запускаем получение сертификата, но получать его не будем. Необходимо ответить на несколько вопросов от разработчика:
certbot certonly
= вывод команды =
Saving debug log to /var/log/letsencrypt/letsencrypt.log
How would you like to authenticate with the ACME CA?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2Enter email address (used for urgent renewal and security notices)
= в случае проблем с получением сертификата на эту почту будут приходить сообщения == можно указать выдуманный =(Enter 'c' to cancel): info@sevo44.ru
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
= подтверждаем что ознакомились с условиями предоставления услуг =
(Y)es/(N)o: Y
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
= Просят поделиться своим адресом электронной почты с Фондом Electronic Frontier,партнером-основателем проекта Let's Encrypt и некоммерческой организацией, котораяразрабатывает Certbot. Отказываюсь. =
(Y)es/(N)o: N
Account registered.
= Выходим по Ctrl + C =
В данном примере есть два варианта получения сертификата. Расскажу грубо о каждом варианте и поясню разницу:
Spin up a temporary webserver (standalone) — при таком варианте сертификат будет получен с использованием тестового сервера разработчика. Этот вариант подходит при условии что сайт уже где то работает и нам его надо перенести. После переезда нам надо заходить в настройки получения сертификата и менять параметры. Мне такой вариант не нравится и ниже вы узнаете почему;
Place files in webroot directory (webroot) — при этом варианте сервис проверяет доступ к серверу и если он есть выдает сертификат. Основное преимущество данного вида в том что мне не надо в последствии править настройки получения сертификата. Достаточно с работающего сервера взять действующие сертификаты положить их в свое место и прописать пути в настройках Nginx. После реального переезда сайта достаточно получить сертификаты и указать в настройках Nginx новые пути.
Вносим необходимые настройки в конфигурацию Nginx
В конфигурации Nginx для сайта должны быть добавлены следующие строки:
Можно для каждого сайта указывать свою директорию, но мне это не нравится. Предпочитаю делать общую.
При настройке Nginx для работы сайтов с использованием сертификатов есть два варианта:
Внести все основные настройки для работы сайта с сертификатом в главный файл настройки Nginx а в настройках для самого сайта указывать только пути для сертификата;
Не трогать главный файл и все настройки прописывать в настройках для сайта.
Лично я предпочитаю первый вариант и именно он будет описан ниже.
Вот пример моего файла настроек главного конфигурационного файла Nginx:
В этом файле два блока server. Первый отвечающий за работы http мы закомментировали, второй отвечающий за https перевели на работу по http и закомментировали пути к сертификату.
Обязательно проверяем правильность настроек Nginx и применяем обновления:
nginx -t
= вывод при успешной настройке =
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
nginx -s reload
Все предварительные подготовки сделаны. Переходим к непосредственному получению сертификата.
Не знаю какие ограничения на установку, но я спокойно установил SSL сертификат на домен и 5 его поддоменов.
Пример получения сертификата SSL:
certbot certonly
= вывод команды с действиями =
Saving debug log to /var/log/letsencrypt/letsencrypt.log
How would you like to authenticate with the ACME CA?
-------------------------------------------------------------------------------
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Please enter in your domain name(s) (comma and/or space separated) (Enter 'c'
to cancel):sevo44.ru
Requesting a certificate for sevo44.ru
Input the webroot for sevo44.ru: (Enter 'c' to cancel):/etc/nginx/cert-renewal
Waiting for verification...
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0014_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0014_csr-certbot.pem
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/sevo44.ru/fullchain.pem. Your cert will
expire on 2021-12-14. To obtain a new or tweaked version of this
certificate in the future, simply run certbot again. To
non-interactively renew *all* of your certificates, run "certbot
renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Сертификат успешно получен и указан период его действия.
Получение одного сертификата на домен с WWW и без
При попытке зайти по ссылке https://www.sevo44.ru мы получим сообщение об ошибке сертификата:
curl -I https://www.sevo44.ru
= вывод команды =
curl: (51) SSL: no alternative certificate subject name matches target host name 'www.sevo44.ru'
В настройках DNS для домена обязательно должен быть прописаны параметры его работы по адресу www.sevo44.ru!
Для исправление этой ошибки необходимо получить сертификат на домен с www и без.
Мы разкоментировали все строчки что ранее закомментировали и переключили второй блок на работу по https с указанием путей к сертификатам. Как вы заметил http2 протокол включается простым добавлением этой записи.
Сделаем проверку настроек и обновим настройки Nginx:
nginx -t
nginx -s reload
Ресурсы проверки SSL и Http2 сайта
Проверим сторонними ресурсами как установился наш SSL-сертификат.
SSLReport — сервис проверки SSL но более детальный.
Проверим работу http2 протокола:
HTTP/2 Test — сервис показывающий проверяющий работу http2.
Продление SSL-сертификата
Есть возможность производить обновления в ручную и в автоматическом режиме.
Ручной режим
Проверим автоматическое продление сертификатов, выполнив эту команду:
certbot renew --dry-run
= вывод команды =
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/sevo44.ru.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator webroot, Installer None
Simulating renewal of an existing certificate for sevo44.ru
Performing the following challenges:
http-01 challenge for sevo44.ru
Waiting for verification...
Cleaning up challenges
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed without reload, fullchain is
/etc/letsencrypt/live/sevo44.ru/fullchain.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all renewals succeeded. The following certs have been renewed:
/etc/letsencrypt/live/sevo44.ru/fullchain.pem (success)
** DRY RUN: simulating 'certbot renew' close to cert expiry
** (The test certificates above have not been saved.)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Видим что все хорошо.
Для обновления всех сертификатов достаточно запустить команду:
certbot renew
= вывод команды =
Saving debug log to /var/log/letsencrypt/letsencrypt.log
-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/sevo44.ru.conf
-------------------------------------------------------------------------------
Cert not yet due for renewal
The following certs are not due for renewal yet:
/etc/letsencrypt/live/sevo44.ru/fullchain.pem (skipped)
No renewals were attempted.
Обновлять ничего.
Автоматический режим
Для автоматического обновления нам необходимо добавить параметры в crontab:
vim /etc/crontab
= необходимое варианты добавление =
# Cert Renewal
# запись в лог файл
30 2 0 * * root /usr/bin/certbot renew --post-hook "nginx -s reload" >> /var/log/letsencrypt/cron-renew.log
=== или ===
# без записи в лог файл
30 2 0 * * root /usr/bin/certbot renew --post-hook "nginx -s reload" >> /dev/null 2>&1
Согласно этой настройке команда будет выполняться по воскресеньям в 2:30 после выполнения произойдёт reload nginx.
Удаление сертификата
Удаление сертификата состоит из двух частей:
Аннулирование сертификатов на серверах Let`s Enscrypt;
Удаление сертификатов на сервере.
Аннулируем сертификат:
certbot revoke --cert-path /etc/letsencrypt/archive/sevo44.ru/cert1.pem
= вывод команды =
Saving debug log to /var/log/letsencrypt/letsencrypt.log
An unexpected error occurred:The client lacks sufficient authorization :: Certificate is expired
Please see the logfiles in /var/log/letsencrypt for more details.
В выводе говориться что сертификат просрочен и удалять нечего.
Удалим сертификат на сервере:
certbot delete --cert-name sevo44.ru
= вывод команды =
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The following certificate(s) are selected for deletion:
* sevo44.ru
Are you sure you want to delete the above certificate(s)?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y - подтверждаем удаление
Deleted all files relating to certificate sevo44.ru.
Принудительное обновление сертификата
Бывает ситуации когда надо принудительно обновить сертификат по разным причинам.
Вот варианты команд которые можно использовать:
= Для принудительного обновления всех сертификатов =
certbot --force-renewal
= Выборочное принудительное обновление сертификатов =
= через запятую указываются все необходимые доменные имена =
certbot --force-renewal -d www.itsecforu.ru,itsecforu.ru
Заключение
Не сразу я пришел к такому механизму настройки получения сертификатов. Мне кажется такой вариант удобен и понятен. Использую эту инструкцию на рабочих серверах. Проблем с автоматическим обновлением сертификатов и программы не возникало.
Если захочется посмотреть более подробно инструкцию выполните команду:
certbot --help
certbot --help all
Например можете отфильтруйте опцию обновления, используя команду grep / egrep:
certbot --help all | grep -i force
certbot --help all | egrep -i 'renewal|force'
Обслуживание компьютеров, ремонт, лечение вирусов, модернизация. Системы на ОС Linux. Создание и продвижение Интернет проектов. Бесплатные консультации. Офисные АТС. Видеонаблюдение.