Linux
  • << DEBIAN >>

  •   Сървър на отделни хостове
  •     DNS Сървър
  •     SQL Сървър
  •     WEB Сървър
  •     Пощенски Сървър
  •   PXE Server
  •   PXE UEFI Server - TFTP
  •   Debian 9
  •     Инсталиране на Debian 9
  •     Първоначални настройки (мрежа, VIM, Кирилизация)
  •     Инсталиране и настройка на SSH
  •     Инсталиране и настройка на DNS
  •     Инсталиране и настройка на NTP
  •     Инсталиране и настройка на Apache
  •     Инсталиране и настройка на MySQL (MariaDB)
  •     Инсталиране и настройка на PHPMyAdmin
  •     Инсталиране и настройка на собствен облак
  •     Инсталиране и настройка на SAMBA
  •     Инсталиране и настройка на FTP сървър
  •     Инсталиране и настройка на OSCAM
  •     Инсталиране и настройка на Mail server
  •       Първоначално конфигуриране на базата данни
  •       Инсталиране и конфигуриране на PostFix
  •       Инсталиране и конфигуриране на Dovecot
  •       PostFix дефинира Dovecot да удостоверява
  •       RoundCube
  •       Тестване доставката на поща
  •       Създаване на TLS криптиран ключ и сертификат
  •       WEB администриране
  •       Антиспам със SpamAssassin
  •       Антиспам с RSpmad
  •   Debian 11
  •     Как зарежда Linux
  •     Разпределение на диска при BIOS и UEFI
  •     Debian 11 на BIOS върху LVM и RAID
  •     Инсталиране на Debian 11 на BIOS и ZFS
  •     Инсталиране на Debian 11 на BIOS и ZFS-1
  •     Инсталиране на Debian 11 на UEFI и ZFS
  •     ZFS Замяна на развален огледален диск
  •     Ремонт на GRUB и INITRAMFS
  •   Debian 12
  •     Първоначални настройки
  •     DNS Сървър
  •     Добавяне на втори диск
  •     Файлов сървър + WEBMIN
  •     SAMBA
  •     Инсталиране и настройка на Apache
  •     Инсталиране и настройка на Nginx
  •     MySQL и PHPMyAdmin
  •     Елементарен MAIL сървър
  •       Подобрение SSL/TLS, Maildir, LMTP
  •       Подобрение ВИРТУАЛИЗАЦИЯ без MySQL
  •       Подобрение ВИРТУАЛИЗАЦИЯ и MySQL
  •       Подобрение Антиспам - SpamAssasin
  •       Подобрение Антиспам - RSpamd
  •       Защита - SPF, DKIM и DMARK
  •       Подобрение Антивирус
  •     Пълноценен MAIL сървър
  •     Пощенски сървър с iRedMail и PHPMyAdmin
  •       DKIM, SPF и DMARK
  •     MAIL сървър за вътрешна мрежа
  •     NextCloud
  •     Сървър за отдалечен достъп - RustDESK
  • << UBUNTU >>
  •   Ubuntu SERVER 22.04
  •     Инсталиране на Ubuntu 22.04 Server
  •     Първоначални настройки на Ubuntu 22.04 Server
  •     DNS в Ubuntu 22.04 Server
  •     MySQL Apache PHPMyAdmin
  •     Пощенски сървър
  •       Пощенски сървър в опростен вариант
  •       PostFix, Dovecot по-подробно
  •   Ubuntu mini
  • << RAID >>
  •     BIOS RAID1+MSDOS
  •     BIOS RAID1+MSDOS+LVM
  •     UEFI RAID1
  • << BTRFS >>
  •     BTRFS - създаване монтиране fstab размер
  •     BTRFS - RAID
  •     BTRFS - subvolume и snapshot
  • << КОНТЕЙНЕРИ >>
  •     Инсталиране на LXC/LXD
  •     Образи (image) в LXC/LXD
  •     Контейнери в LXC/LXD
  •     Команди в LXC/LXD
  • << ОТСТРАНЯВАНЕ НА ГРЕШКИ >>
  •     SWAP
  •     InitRAMFs
  • Инсталиране и настройка на Apache

    Тук ще демонстрирам опростен вариант на инсталиране и настройка на Apache. За да работи правилно един web сървър трябва да са пренасочени портове 80 и 443 от рутера към хоста(сървъра), като протокола да е TCP.

    Инсталация на необходимите пакети.

    apt install apache2 -y

    След като се инсталира, Apache се стартира автоматично. Mоже да инсталираме и документацията към Apache както и помощни програми, но не е задължително.

    apt install apache2-doc apache2-utils -y


    Първото нещо което трябва да се направи е да проверим дали работи правилно. Няколко команди правят едно и също.

    /etc/init.d/apache2 status systemctl status apache2 service apache2 status apache2.service - LSB: Apache2 web server Loaded: loaded (/etc/init.d/apache2) Active: active (running) since Thu 2016-04-07 19:09:53 EEST; 36min ago Process: 430 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS) CGroup: /system.slice/apache2.service ├─478 /usr/sbin/apache2 -k start ├─481 /usr/sbin/apache2 -k start └─482 /usr/sbin/apache2 -k start Apr 07 19:09:53 home apache2[430]: Starting web server: apache2.

    Всичко е стартирало правилно, но ще проверим логовете за грешки


    cat /var/log/apache2/error.log

    Няма отразени грешки, значи всичко е стартирало и работи правилно Може да проверим и правилността на синтаксиса

    apache2ctl configtest Syntax OK

    Няма грешка в конфигурационните файлове (чиста инсталация, иначе щеше да е бъг на системата), Горната команда има и още опции като fullstatus, graceful, graceful-stop, help, restart, start, status, stop. И щом няма грешка, и сме пренасочили портовете да пробваме как работи. Пишем в браузъра http://my.tlan.net

    Pic01

    Прекрасно, Apache работи и се отваря страницата на http://my.tlan.net, по същия начин се отваря и http://185.163.245.186. За да не се получава това се правят виртуални хостове в Apache и се забранява 000-default.conf.

    a2dissite 000-default.conf Site 000-default disabled. To activate the new configuration, you need to run: service apache2 reload

    Това на практика изтри файла 000-default.conf от папка /etc/apache2/sites-enabled/ или по-точно казано изтри линка на файла 000-default.conf. Оригиналното място на файла се намира в /etc/apache2/sites-available/.


    ls /etc/apache2/sites-enabled/

    Няма нищо (празна директория), значи няма инсталиран виртуален сайт и е време да създадем нашите сайтове.

    my.tlan.net

    За създаване на този виртуален сайт ще създадем конфигурационен файл в /etc/apache2/sites-available/

    nano /etc/apache2/sites-available/my.tlan.net.conf <VirtualHost *:80> ServerName my.tlan.net ServerAlias mail.my.tlan.net ns1.my.tlan.net www.my.tlan.net DocumentRoot /var/www/my.tlan.net/ </VirtualHost> mkdir -p /var/www/my.tlan.net chown www-data:www-data /var/www/my.tlan.net

    Създадохме виртуален сайт, създадохме и папката където да работи, дефинирахме права върху папката. Активираме виртуалния сайт.

    a2ensite my.tlan.net.conf Enabling site my.tlan.net. To activate the new configuration, you need to run: systemctl reload apache2

    или създаваме линк в /etc/apache2/sites-enabled/ на файла /etc/apache2/sites-available/my.tlan.net.conf По същия начин се дефинира и my.tachko.com. Няма да го показвам за да не се получи дълга статията. Рестартираме Apache за да влязат актуализациите в сила

    service apache2 reload service apache2 status


    Да пробваме като напишем в браузъра http://my.tlan.net/.

    Pic02

    Рабитим със сайта. В случая показва празна папка, защото вътре няма никакви файлове. Да създадем един за тест.

    echo "Just a test My.TLan.NET" > /var/www/my.tlan.net/test

    И наново тест чрез браузъра. http://my.tlan.net/test

    Pic03

    Супер, до тук всичко е наред. Отново повтарям, аналогични са действията и за виртуалния сайт my.tachko.com, който за сега няма да го разглеждаме. По-надолу ще покажа командите в сгъстен ред, без пояснения. Сега да накараме виртуалния хост да работи с https протокола.

    nano /etc/apache2/sites-available/my.tlan.net-ssl.conf <VirtualHost *:443> ServerName my.tlan.net ServerAlias mail.my.tlan.net ns1.my.tlan.net www.my.tlan.net DocumentRoot /var/www/my.tlan.net/ SSLEngine on SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key </VirtualHost>

    Ползваме сертификатите получени по време на инсталацията (ssl-cert-snakeoil.pem и ssl-cert-snakeoil.key). Активираме виртуалния сайт отговарящ за HTTPS заявките.

    a2ensite my.tlan.net-ssl.conf Enabling site my.tlan.net-ssl. To activate the new configuration, you need to run: systemctl reload apache2

    За да се работи със сертификати е необходимо и зареждане на модула ssl за Apache.

    a2enmod ssl

    Рестартираме Apache за да влязат промените в сила.

    service apache2 restart

    Тестваме като пишем в браузъра https://my.tlan.net/test

    Pic04

    До тук всичко работи нормално. Проблема е, че сертификата не е публично удостоверен, но преди да продължим с темата да повторим операциите за виртуалния сайт my.tachko.com.

    nano /etc/apache2/sites-available/my.tachko.com.conf <VirtualHost *:80> ServerName my.tachko.com ServerAlias mail.my.tachko.com ns1.my.tachko.com www.my.tachko.com DocumentRoot /var/www/my.tachko.com/ </VirtualHost> mkdir -p /var/www/my.tachko.com chown www-data:www-data /var/www/my.tachko.com a2ensite my.tachko.com.conf echo "Just a test My.Tachko.COM" > /var/www/my.tachko.com/test nano /etc/apache2/sites-available/my.tachko.com-ssl.conf <VirtualHost *:443> ServerName my.tachko.com ServerAlias mail.my.tachko.com ns1.my.tachko.com www.my.tachko.com DocumentRoot /var/www/my.tachko.com/ SSLEngine on SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key </VirtualHost> a2ensite my.tachko.com-ssl.conf service apache2 reload

    Готови сме и с my.tachko.com. Работи с протоколи http и https.

    SSL от Let’s Encryp

    Проблема обаче с публичните сертификати си остава. За целта ще ползваме услугата на https://letsencrypt.org/, наречена certboot. Първо да я инсталираме.

    apt install certbot python3-certbot-apache -y

    Освен certboot инсталирахме и python3-certbot-apache. Тъй като работим с Apache за да интегрираме публичните сертификати е необходим плъгина за Apace на certboot. За начало да тестваме дали можем да генерираме сертификат за my.tlan.net, mail.my.tlan.net, ns1.my.tlan.net, www.my.tlan.net, my.tachko.com, mail.my.tachko.com, ns1.my.tachko.com, www.my.tachko.com

    certbot certonly --webroot --dry-run -w /var/www/my.tlan.net -d my.tlan.net -d mail.my.tlan.net -d ns1.my.tlan.net -d www.my.tlan.net -w /var/www/my.tachko.com -d my.tachko.com -d mail.my.tachko.com -d ns1.my.tachko.com -d www.my.tachko.com Saving debug log to /var/log/letsencrypt/letsencrypt.log Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): tachko@my.tlan.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.4-April-3-2024.pdf. You must agree in order to register with the ACME server. Do you agree? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Account registered. Simulating a certificate request for my.tlan.net and 7 more domains The dry run was successful.

    Теста мина без грешки Сега да създадем и интегрираме публичните сертификати.

    certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email tachko@my.tlan.net -d my.tlan.net -d mail.my.tlan.net -d ns1.my.tlan.net -d www.my.tlan.net -d my.tachko.com -d mail.my.tachko.com -d ns1.my.tachko.com -d www.my.tachko.com Saving debug log to /var/log/letsencrypt/letsencrypt.log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Account registered. Requesting a certificate for my.tlan.net and 7 more domains Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/my.tlan.net/fullchain.pem Key is saved at: /etc/letsencrypt/live/my.tlan.net/privkey.pem This certificate expires on 2024-07-20. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. Deploying certificate Successfully deployed certificate for my.tlan.net to /etc/apache2/sites-enabled/my.tlan.net-ssl.conf Successfully deployed certificate for mail.my.tlan.net to /etc/apache2/sites-enabled/my.tlan.net-ssl.conf Successfully deployed certificate for ns1.my.tlan.net to /etc/apache2/sites-enabled/my.tlan.net-ssl.conf Successfully deployed certificate for www.my.tlan.net to /etc/apache2/sites-enabled/my.tlan.net-ssl.conf Successfully deployed certificate for my.tachko.com to /etc/apache2/sites-enabled/my.tachko.com-ssl.conf Successfully deployed certificate for mail.my.tachko.com to /etc/apache2/sites-enabled/my.tachko.com-ssl.conf Successfully deployed certificate for ns1.my.tachko.com to /etc/apache2/sites-enabled/my.tachko.com-ssl.conf Successfully deployed certificate for www.my.tachko.com to /etc/apache2/sites-enabled/my.tachko.com-ssl.conf Congratulations! You have successfully enabled HTTPS on https://my.tlan.net, https://mail.my.tlan.net, https://ns1.my.tlan.net, https://www.my.tlan.net, https://my.tachko.com, https://mail.my.tachko.com, https://ns1.my.tachko.com, and https://www.my.tachko.com We were unable to subscribe you the EFF mailing list because your e-mail address appears to be invalid. You can try again later by visiting https://act.eff.org. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Имаме създадени сертификати за https://my.tlan.net, https://mail.my.tlan.net, https://ns1.my.tlan.net, https://www.my.tlan.net, https://my.tachko.com, https://mail.my.tachko.com, https://ns1.my.tachko.com, and https://www.my.tachko.com. Да проверим чрез браузъра: https://my.tlan.net/test

    Pic05

    Всичко е наред имаме издаден сертификат и той е инсталиран където трябва. Пакетът certboot автоматично добавя времева задача която се изпълнява два пъти в деня на произволни часове. За да се подовява автоматино сертификата можем да ползвахме Cron или Systemd таймер. По-добрия вариант е втория. Таймера се определя във файла: /lib/systemd/system/certbot.timer За да разберем дали услугата е стартирана и кога ще е следващото събитеие изпълняваме:

    systemctl status certbot.timer

    Независимо от всичко това има и Cron файл в: /etc/cron.d/certbot. Не се бъркайте, тази задача няма да направи нищо поради “-d /run/systemd/system”, което проверява дали systemd е инсталиран. А както знаем Debian използва systemd. До тук всичко е прекрасно, но автоматично ще се подновяват само файловете на сертификата. Проблем е, че компоненти като Apahche, PostFix и Dovecot няма да забележат промяната. За целта добавяме така наречения post-hook към certboot. Това ще рестартира всички гореспоменати процеси. За целата:

    nano /etc/letsencrypt/cli.ini # Най-отдолу добавяме: post-hook = systemctl restart apache2 # Ако имахме инсталирани още postfix и dovecot добавяме: post-hook = systemctl restart postfix dovecot apache2

    Така вече всичко е наред. Сертификата автоматично ще се подновява на всеки 90 дена и след обновяването ще рестартира Apache, PostFix и Dovecot Между другото бях забравил. Да покажа какво и къде записа инсталацията на сертификата:

    nano /etc/apache2/sites-available/my.tlan.net.conf <VirtualHost *:80> ServerName my.tlan.net ServerAlias mail.my.tlan.net ns1.my.tlan.net www.my.tlan.net DocumentRoot /var/www/my.tlan.net/ RewriteEngine on RewriteCond %{SERVER_NAME} =my.tlan.net [OR] RewriteCond %{SERVER_NAME} =www.my.tlan.net [OR] RewriteCond %{SERVER_NAME} =mail.my.tlan.net [OR] RewriteCond %{SERVER_NAME} =ns1.my.tlan.net RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost> nano /etc/apache2/sites-available/my.tlan.net-ssl.conf <VirtualHost *:443> ServerName my.tlan.net ServerAlias mail.my.tlan.net ns1.my.tlan.net www.my.tlan.net DocumentRoot /var/www/my.tlan.net/ SSLEngine on Include /etc/letsencrypt/options-ssl-apache.conf SSLCertificateFile /etc/letsencrypt/live/my.tlan.net/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/my.tlan.net/privkey.pem Header always set Strict-Transport-Security "max-age=31536000" SSLUseStapling on </VirtualHost> <IfModule mod_ssl.c> SSLStaplingCache shmcb:/var/run/apache2/stapling_cache(128000) </IfModule>

    Виждат се къде се намират файловете на сертификата, също се вижда, че ползваме сертификати на letsencrypt Сега да се спрем малко по-подробно на файловете които генерира letsencrypt.

    ls -l /etc/letsencrypt/live/my.tlan.net lrwxrwxrwx 1 root root 35 Apr 28 17:27 cert.pem -> ../../archive/my.tlan.net/cert2.pem lrwxrwxrwx 1 root root 36 Apr 28 17:27 chain.pem -> ../../archive/my.tlan.net/chain2.pem lrwxrwxrwx 1 root root 40 Apr 28 17:27 fullchain.pem -> ../../archive/my.tlan.net/fullchain2.pem lrwxrwxrwx 1 root root 38 Apr 28 17:27 privkey.pem -> ../../archive/my.tlan.net/privkey2.pem -rw-r--r-- 1 root root 692 Apr 21 06:21 README

    Имаме генерирани: cert.pem - Публичен ключ (Public Key). Тук се съдържа само нашия сертификат. chain.pem - Сертификат Chain (Certificate Chain) fullchain.pem - Резултат от cert.pem + chain.pem (). Сбор от нашия сертификат и междинните сертификати privkey.pem - Частен ключ (Private Key) fullchain.pem може да се получи по следния начин:

    cat cert.pem chain.pem > fullchain.pem

    Някои сървъри искат да ползват и трите сертификата в следния вид:

    ssl_certificate /etc/letsencrypt/live/my.tlan.net/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/my.tlan.net/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/my.tlan.net/chain.pem;

    Мисля, че със темата сертификата завършихме.