Установка сервера 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 | |
− | + | Добавляем настройку для новой папки в конец файла, комментим строчки с принтерами (если они не нужны): | |
− | Добавляем настройку для новой папки: | ||
− | |||
[telegram] | [telegram] | ||
comment = Private Folder | comment = Private Folder | ||
− | path = / | + | 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 | + | 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 / | ||
Задаем права на созданный каталог: | Задаем права на созданный каталог: | ||
− | + | sudo chmod 777 /var/www/telegram | |
− | chmod 777 / | ||
Для применения настроек перезапускаем samba: | Для применения настроек перезапускаем samba: | ||
− | + | sudo systemctl restart smbd | |
− | systemctl restart smbd | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Проверяем возможность работы с новым каталогом. | Проверяем возможность работы с новым каталогом. | ||
− | |||
− | |||
− | |||
− | |||
+ | '''Создание сертификата''' | ||
+ | Сайт, для которого вы хотите создать SSL сертификат должен уже быть доступен без HTTPS на порту 80. Поэтому его виртуальный хост Apache должен уже быть настроен. В этом примере я буду получать сертификат для edu.citis.ru. Для примера можно создать такой виртуальный хост: | ||
+ | sudo nano /etc/apache2/sites-available/edu-citis-ru.conf | ||
<VirtualHost *:80> | <VirtualHost *:80> | ||
− | ServerName | + | ServerName edu.citis.ru |
− | ServerAlias www. | + | ServerAlias www.edu.citis.ru |
ServerAdmin webmaster@localhost | ServerAdmin webmaster@localhost | ||
− | DocumentRoot /var/www/ | + | 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} = | + | RewriteCond %{SERVER_NAME} =edu.citis.ru [OR] |
− | RewriteCond %{SERVER_NAME} =www. | + | 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 | + | sudo certbot certonly --apache -d edu.citis.ru -d www.edu.citis.ru |
При первом запуске утилита предложит вам указать ваш Email адрес, для того чтобы отправлять вам уведомления о необходимости обновить сертификат и новости, а также попросит принять лицензионное соглашение. | При первом запуске утилита предложит вам указать ваш Email адрес, для того чтобы отправлять вам уведомления о необходимости обновить сертификат и новости, а также попросит принять лицензионное соглашение. | ||
А потом спросит можно ли передать ваш адрес их партнёрам. Ответить No. Только после этого начнётся генерация сертификата | А потом спросит можно ли передать ваш адрес их партнёрам. Ответить No. Только после этого начнётся генерация сертификата | ||
− | Программа сообщает, что сертификат сохранён в папке /etc/letsencrypt/live/ | + | Программа сообщает, что сертификат сохранён в папке /etc/letsencrypt/live/edu.citis.ru/ и вы можете его использовать. |
− | Если вы посмотрите в папку /etc/letsencrypt/live/ | + | Если вы посмотрите в папку /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 | + | sudo nano /etc/apache2/sites-available/edu-citis-ru-ssl.conf |
<VirtualHost *:443> | <VirtualHost *:443> | ||
− | ServerName | + | ServerName edu.citis.ru |
− | ServerAlias www. | + | ServerAlias www.edu.citis.ru |
ServerAdmin webmaster@localhost | ServerAdmin webmaster@localhost | ||
− | DocumentRoot /var/www/ | + | 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/ | + | SSLCertificateFile /etc/letsencrypt/live/edu.citis.ru/cert.pem |
− | SSLCertificateChainFile /etc/letsencrypt/live/ | + | SSLCertificateChainFile /etc/letsencrypt/live/edu.citis.ru/chain.pem |
− | SSLCertificateKeyFile /etc/letsencrypt/live/ | + | SSLCertificateKeyFile /etc/letsencrypt/live/edu.citis.ru/privkey.pem |
</VirtualHost> | </VirtualHost> | ||
− | |||
Этой конфигурации достаточно чтобы всё заработало. Затем активируйте этот виртуальный хост: | Этой конфигурации достаточно чтобы всё заработало. Затем активируйте этот виртуальный хост: | ||
− | + | sudo a2ensite edu-citis-ru-ssl | |
− | sudo a2ensite | ||
− | |||
И не забудьте включить модуль для поддержки 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 | ||
− | |||
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