Установка сервера telegram — различия между версиями

Материал из Справочная информация по работе с СЭД
Перейти к: навигация, поиск
Строка 1: Строка 1:
Установка на Ubuntu 16.04.3 и выше
+
'''Установка на Ubuntu 16.04.3 и выше'''
 
Установить на сервере-шлюзе Samba
 
Установить на сервере-шлюзе Samba
 
sudo apt-get install samba
 
sudo apt-get install samba
 
Разрешаем автостарт сервиса:
 
Разрешаем автостарт сервиса:
systemctl enable smbd
+
sudo systemctl enable smbd
 
И проверим, что сервис запустился:  
 
И проверим, что сервис запустился:  
systemctl status smbd
+
sudo systemctl status smbd
 
Создадим пользователя для доступа к папке
 
Создадим пользователя для доступа к папке
 
sudo useradd telegra
 
sudo useradd telegra
Строка 14: Строка 14:
 
sudo smbpasswd -a telegra
 
sudo smbpasswd -a telegra
 
Теперь создадим папку, доступ к которой будут иметь ограниченное количество пользователей.
 
Теперь создадим папку, доступ к которой будут иметь ограниченное количество пользователей.
 
 
Открываем конфигурационный файл samba:
 
Открываем конфигурационный файл samba:
 
+
sudo nano /etc/samba/smb.conf
vi /etc/samba/smb.conf
+
Добавляем настройку для новой папки в конец файла, комментим строчки с принтерами (если они не нужны):
Добавляем настройку для новой папки:
 
 
 
 
[telegram]
 
[telegram]
 
     comment = Private Folder
 
     comment = Private Folder
     path = /data/private
+
     path = /var/www/telegram
 
     public = no
 
     public = no
 
     writable = no
 
     writable = no
 
     read only = yes
 
     read only = yes
 
     guest ok = no
 
     guest ok = no
     valid users = admin, telegra, @privateusers
+
     valid users = admin, telegra
 
     write list = admin, telegra
 
     write list = admin, telegra
 
     create mask = 0777
 
     create mask = 0777
Строка 42: Строка 39:
 
* если мы хотим, чтобы доступ к каталогу был полный у определенных пользователей (без разделения на тех, кто может только читать и тех, кто может также писать в папку), то опцию write list можно не указывать, а опции writable и read only оставить как в примерах выше.
 
* если мы хотим, чтобы доступ к каталогу был полный у определенных пользователей (без разделения на тех, кто может только читать и тех, кто может также писать в папку), то опцию write list можно не указывать, а опции writable и read only оставить как в примерах выше.
 
Создаем каталог для новой папки:
 
Создаем каталог для новой папки:
 
+
sudo mkdir /var/www/telegram
mkdir /data/private
 
 
Задаем права на созданный каталог:
 
Задаем права на созданный каталог:
 
+
sudo chmod 777 /var/www/telegram
chmod 777 /data/private
 
 
Для применения настроек перезапускаем samba:
 
Для применения настроек перезапускаем samba:
 
+
sudo systemctl restart smbd
systemctl restart smbd
 
Создать группу пользователей можно командой:
 
 
 
groupadd privateusers
 
Добавить ранее созданного пользователя в эту группу:
 
 
 
usermod -a -G privateusers staff1
 
 
Проверяем возможность работы с новым каталогом.
 
Проверяем возможность работы с новым каталогом.
Создание сертификата
 
Сайт, для которого вы хотите создать SSL сертификат должен уже быть доступен без HTTPS на порту 80. Поэтому его виртуальный хост Apache должен уже быть настроен. В этом примере я буду получать сертификат для vps.losst.ru. Для примера можно создать такой виртуальный хост:
 
 
sudo nano /etc/apache2/sites-available/vps-losst-ru.conf
 
  
 +
'''Создание сертификата'''
 +
Сайт, для которого вы хотите создать SSL сертификат должен уже быть доступен без HTTPS на порту 80. Поэтому его виртуальный хост Apache должен уже быть настроен. В этом примере я буду получать сертификат для edu.citis.ru. Для примера можно создать такой виртуальный хост:
 +
sudo nano /etc/apache2/sites-available/edu-citis-ru.conf
 
<VirtualHost *:80>
 
<VirtualHost *:80>
ServerName vps.losst.ru
+
ServerName edu.citis.ru
ServerAlias www.vps.losst.ru
+
ServerAlias www.edu.citis.ru
 
ServerAdmin webmaster@localhost
 
ServerAdmin webmaster@localhost
DocumentRoot /var/www/vps.losst.ru/public_html
+
DocumentRoot /var/www/
 
ErrorLog ${APACHE_LOG_DIR}/error.log
 
ErrorLog ${APACHE_LOG_DIR}/error.log
 
CustomLog ${APACHE_LOG_DIR}/access.log combined
 
CustomLog ${APACHE_LOG_DIR}/access.log combined
 
RewriteEngine on
 
RewriteEngine on
RewriteCond %{SERVER_NAME} =vps.losst.ru [OR]
+
RewriteCond %{SERVER_NAME} =edu.citis.ru [OR]
RewriteCond %{SERVER_NAME} =www.vps.losst.ru
+
RewriteCond %{SERVER_NAME} =www.edu.citis.ru
 
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
 
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
 
</VirtualHost>
 
</VirtualHost>
 +
Выходим сохраняя изменения.
 
Клиент Lets Encrypt называется Certbot. Он доступен в официальных репозиториях. Для установки выполните такие команды:
 
Клиент Lets Encrypt называется Certbot. Он доступен в официальных репозиториях. Для установки выполните такие команды:
 
 
sudo apt install certbot python-certbot-apache
 
sudo apt install certbot python-certbot-apache
 
Если последний пакет не найдется надо ставить python3-certbot-apache
 
Если последний пакет не найдется надо ставить python3-certbot-apache
Далее генерим сертификат
+
Далее генерируем сертификат
sudo certbot certonly --apache -d vps.losst.ru -d www.vps.losst.ru
+
sudo certbot certonly --apache -d edu.citis.ru -d www.edu.citis.ru
 
При первом запуске утилита предложит вам указать ваш Email адрес, для того чтобы отправлять вам уведомления о необходимости обновить сертификат и новости, а также попросит принять лицензионное соглашение.
 
При первом запуске утилита предложит вам указать ваш Email адрес, для того чтобы отправлять вам уведомления о необходимости обновить сертификат и новости, а также попросит принять лицензионное соглашение.
 
А потом спросит можно ли передать ваш адрес их партнёрам. Ответить No. Только после этого начнётся генерация сертификата
 
А потом спросит можно ли передать ваш адрес их партнёрам. Ответить No. Только после этого начнётся генерация сертификата
Программа сообщает, что сертификат сохранён в папке /etc/letsencrypt/live/vps.losst.ru/ и вы можете его использовать.
+
Программа сообщает, что сертификат сохранён в папке /etc/letsencrypt/live/edu.citis.ru/ и вы можете его использовать.
Если вы посмотрите в папку /etc/letsencrypt/live/vps.losst.ru, то увидите там четыре файла:
+
Если вы посмотрите в папку /etc/letsencrypt/live/edu.citis.ru, то увидите там четыре файла:
  
 
cert.pem - файл сертификата, его необходимо прописать в параметре SSLCertificateFile;
 
cert.pem - файл сертификата, его необходимо прописать в параметре SSLCertificateFile;
Строка 89: Строка 76:
 
privkey.pem - приватный ключ сертификата, должен быть прописан в SSLCertificateKeyFile;
 
privkey.pem - приватный ключ сертификата, должен быть прописан в SSLCertificateKeyFile;
 
fullchain.pem - в нём объединено содержимое cert.pem и chain.pem, можно использовать вместо этих обоих файлов.
 
fullchain.pem - в нём объединено содержимое cert.pem и chain.pem, можно использовать вместо этих обоих файлов.
Для обычного сайта у нас виртуальный хост существует. Осталось создать виртуальный хост для SSL версии. Тут кроме стандартных настроек надо добавить четіре параметра.
+
Необходимо файлы сгенерированные перенести в другую папку (до текущей папки нет доступа у апача)
 +
sudo mkdir /etc/apache/ssl
 +
sudo mv /etc/letsencrypt/live/edu.citis.ru/* /etc/apache/ssl/*
 +
Для обычного сайта у нас виртуальный хост существует. Осталось создать виртуальный хост для SSL версии. Тут кроме стандартных настроек надо добавить четыре параметра.
  
 
SSLEngine on
 
SSLEngine on
Строка 98: Строка 88:
 
Например:
 
Например:
  
sudo vi /etc/apache2/sites-available/vps-losst-ru-ssl.conf
+
sudo nano /etc/apache2/sites-available/edu-citis-ru-ssl.conf
  
 
<VirtualHost *:443>
 
<VirtualHost *:443>
ServerName vps.losst.ru
+
ServerName edu.citis.ru
ServerAlias www.vps.losst.ru
+
ServerAlias www.edu.citis.ru
 
ServerAdmin webmaster@localhost
 
ServerAdmin webmaster@localhost
DocumentRoot /var/www/vps.losst.ru/public_html
+
DocumentRoot /var/www/
 
ErrorLog ${APACHE_LOG_DIR}/error.log
 
ErrorLog ${APACHE_LOG_DIR}/error.log
 
CustomLog ${APACHE_LOG_DIR}/access.log combined
 
CustomLog ${APACHE_LOG_DIR}/access.log combined
 
SSLEngine on
 
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/vps.losst.ru/cert.pem
+
SSLCertificateFile /etc/letsencrypt/live/edu.citis.ru/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/vps.losst.ru/chain.pem
+
SSLCertificateChainFile /etc/letsencrypt/live/edu.citis.ru/chain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/vps.losst.ru/privkey.pem
+
SSLCertificateKeyFile /etc/letsencrypt/live/edu.citis.ru/privkey.pem
 
</VirtualHost>
 
</VirtualHost>
 
 
Этой конфигурации достаточно чтобы всё заработало. Затем активируйте этот виртуальный хост:
 
Этой конфигурации достаточно чтобы всё заработало. Затем активируйте этот виртуальный хост:
 
+
sudo a2ensite edu-citis-ru-ssl
sudo a2ensite vps-losst-ru-ssl
 
 
 
 
И не забудьте включить модуль для поддержки SSL:
 
И не забудьте включить модуль для поддержки SSL:
 
 
sudo a2enmod ssl
 
sudo a2enmod ssl
 
 
Проверьте работоспособность открыв домен в браузере.
 
Проверьте работоспособность открыв домен в браузере.
 
Чтобы добавить больше безопасности можно указать какие протоколы SSL следует использовать. Например, для того чтобы отключить SSLv2 и SSLv3, а также TLS ниже 1.2 добавьте:
 
Чтобы добавить больше безопасности можно указать какие протоколы SSL следует использовать. Например, для того чтобы отключить SSLv2 и SSLv3, а также TLS ниже 1.2 добавьте:
 
+
sudo nano /etc/apache2/sites-available/edu-citis-ru-ssl.conf
sudo vi /etc/apache2/sites-available/vps-losst-ru-ssl.conf
 
 
 
 
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
 
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1

Версия 10:43, 30 августа 2022

Установка на Ubuntu 16.04.3 и выше Установить на сервере-шлюзе Samba sudo apt-get install samba Разрешаем автостарт сервиса: sudo systemctl enable smbd И проверим, что сервис запустился: sudo systemctl status smbd Создадим пользователя для доступа к папке sudo useradd telegra Назначим ему пароль sudo passwd telegra Дважды введем пароль Создадим пользователя в самбе sudo smbpasswd -a telegra Теперь создадим папку, доступ к которой будут иметь ограниченное количество пользователей. Открываем конфигурационный файл samba: sudo nano /etc/samba/smb.conf Добавляем настройку для новой папки в конец файла, комментим строчки с принтерами (если они не нужны): [telegram]

   comment = Private Folder
   path = /var/www/telegram
   public = no
   writable = no
   read only = yes
   guest ok = no
   valid users = admin, telegra
   write list = admin, telegra
   create mask = 0777
   directory mask = 0777
   force create mode = 0777
   force directory mode = 0777
   inherit owner = yes
  • стоит обратить внимание на следующие настройки:

path = /data/private — используем новый путь до папки. writable = no и read only = yes — в данном примере мы разрешим запись в каталог только некоторым пользователям. Поэтому общие настройки, разрешающие запись в папку, должны быть запрещены. valid users — список пользователей, которым разрешено подключаться к каталогу. В данном примере разрешения работают для пользователей admin, telegra, а также для всех, кто входим в группу privateusers. write list — список пользователей, которые имеют доступ к папке на чтение и запись. В данном примере мы разрешаем это только для пользователей admin и telegra. inherit owner — опция позволяем включить наследование владельца при создании папок и файлов.

  • если мы хотим, чтобы доступ к каталогу был полный у определенных пользователей (без разделения на тех, кто может только читать и тех, кто может также писать в папку), то опцию write list можно не указывать, а опции writable и read only оставить как в примерах выше.

Создаем каталог для новой папки: sudo mkdir /var/www/telegram Задаем права на созданный каталог: sudo chmod 777 /var/www/telegram Для применения настроек перезапускаем samba: sudo systemctl restart smbd Проверяем возможность работы с новым каталогом.

Создание сертификата Сайт, для которого вы хотите создать SSL сертификат должен уже быть доступен без HTTPS на порту 80. Поэтому его виртуальный хост Apache должен уже быть настроен. В этом примере я буду получать сертификат для edu.citis.ru. Для примера можно создать такой виртуальный хост: sudo nano /etc/apache2/sites-available/edu-citis-ru.conf <VirtualHost *:80> ServerName edu.citis.ru ServerAlias www.edu.citis.ru ServerAdmin webmaster@localhost DocumentRoot /var/www/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined RewriteEngine on RewriteCond %{SERVER_NAME} =edu.citis.ru [OR] RewriteCond %{SERVER_NAME} =www.edu.citis.ru RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost> Выходим сохраняя изменения. Клиент Lets Encrypt называется Certbot. Он доступен в официальных репозиториях. Для установки выполните такие команды: sudo apt install certbot python-certbot-apache Если последний пакет не найдется надо ставить python3-certbot-apache Далее генерируем сертификат sudo certbot certonly --apache -d edu.citis.ru -d www.edu.citis.ru При первом запуске утилита предложит вам указать ваш Email адрес, для того чтобы отправлять вам уведомления о необходимости обновить сертификат и новости, а также попросит принять лицензионное соглашение. А потом спросит можно ли передать ваш адрес их партнёрам. Ответить No. Только после этого начнётся генерация сертификата Программа сообщает, что сертификат сохранён в папке /etc/letsencrypt/live/edu.citis.ru/ и вы можете его использовать. Если вы посмотрите в папку /etc/letsencrypt/live/edu.citis.ru, то увидите там четыре файла:

cert.pem - файл сертификата, его необходимо прописать в параметре SSLCertificateFile; chain.pem - файл цепочки сертификата, обычно прописывается в параметре SSLCertificateChainFile; privkey.pem - приватный ключ сертификата, должен быть прописан в SSLCertificateKeyFile; fullchain.pem - в нём объединено содержимое cert.pem и chain.pem, можно использовать вместо этих обоих файлов. Необходимо файлы сгенерированные перенести в другую папку (до текущей папки нет доступа у апача) sudo mkdir /etc/apache/ssl sudo mv /etc/letsencrypt/live/edu.citis.ru/* /etc/apache/ssl/* Для обычного сайта у нас виртуальный хост существует. Осталось создать виртуальный хост для SSL версии. Тут кроме стандартных настроек надо добавить четыре параметра.

SSLEngine on SSLCertificateFile /путь/к/сертификату.pem SSLCertificateChainFile /путь/к/сертификату/цепочки.pem SSLCertificateKeyFile /путь/к/приватному/ключу.pem

Например:

sudo nano /etc/apache2/sites-available/edu-citis-ru-ssl.conf

<VirtualHost *:443> ServerName edu.citis.ru ServerAlias www.edu.citis.ru ServerAdmin webmaster@localhost DocumentRoot /var/www/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/letsencrypt/live/edu.citis.ru/cert.pem SSLCertificateChainFile /etc/letsencrypt/live/edu.citis.ru/chain.pem SSLCertificateKeyFile /etc/letsencrypt/live/edu.citis.ru/privkey.pem </VirtualHost> Этой конфигурации достаточно чтобы всё заработало. Затем активируйте этот виртуальный хост: sudo a2ensite edu-citis-ru-ssl И не забудьте включить модуль для поддержки SSL: sudo a2enmod ssl Проверьте работоспособность открыв домен в браузере. Чтобы добавить больше безопасности можно указать какие протоколы SSL следует использовать. Например, для того чтобы отключить SSLv2 и SSLv3, а также TLS ниже 1.2 добавьте: sudo nano /etc/apache2/sites-available/edu-citis-ru-ssl.conf SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1