Безопасный Apache с Let’s Encrypt на CentOS 7. Apache установка на centos 7
Установка DataLife Engine 10.4 на Apache CentOS 7
Процесс установки новостного движка DataLife Engine 10.4 на CentOS7, от установки операционной системы до полной готовности системы к работе.
Установка и подготовка операционной системы:
Устанавливаем CentOS в редакции Minimal:
Во время установки обязательно настроить сеть (IP, Gateway):
Размечаем диск вручную, указав использование LVM:
(кто не хочет заморачиваться может пропустить)
Отключаем SElinux: $ setenforce 0 $ vi /etc/sysconfig/selinux SELINUX=disabled
Установить Net-Tools: yum -y install net-tools(чтобы можно было выполнить ifconfig и прочие команды по сети)
Установить VMware Tools (опционально, для виртуальной машины): Отключаем FirewallD: systemctl stop firewalld systemctl disable firewalld Устанавливаем и настраиваем IPtables: yum -y install iptables-services Добавляем IPtables в автозагрузку и запускаем: systemctl enable iptables systemctl start iptables
Прописываем нужные правила в IPtables:
$ vi /etc/sysconfig/iptables
# SSH-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT# HTTP-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT# HTTPs-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
$ service iptables restart
Установка и настройка Apache
Установка Apache yum -y install httpdДобавляем в автозагрузки и стартуемsystemctl enable httpd.servicesystemctl start httpd.service Создаём 2 рабочие директории для конфигураций$ mkdir /etc/httpd/off (для всех конфигураций)$ mkdir /etc/httpd/sites (для включенных конфигураций)
Указываем Apache откуда подгружать конфигиvi /etc/httpd/conf/httpd.conf
вставляем IncludeOptional sites/*.conf; в конце после IncludeOptional conf.d/*.conf должно выйглядеть так:Создаём VirtualHost$ vi /etc/httpd/off/river.ru
<VirtualHost *:80> ServerName river.ru DocumentRoot /var/www/river
ErrorLog /var/www/spirit/error.log CustomLog /var/www/spirit/requests.log combined</VirtualHost>
Включаем конфиг river.conf:$ ln -s /etc/nginx/off/river.conf /etc/nginx/sites/river.conf Перезагружаем Apachesystemctl start httpd.service
Установка и настройка SQL-сервера
$ yum -y install mariadb-server
$ systemctl start mariadb.service
$ systemctl enable mariadb.service
Настраиваем:
$ mysql_secure_installation
Enter current password for root (enter for none): PRESS ENTER
Set root password? [Y/n] Y
New password: ENTER YOUR NEW PASSWORD
Re-enter new password: RE-ENTER YOUR NEW PASSWORD
Password updated successfully!
Remove anonymous users? [Y/n] Y
... Success!
Disallow root login remotely? [Y/n] Y
... Success!
Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reload privilege tables now? [Y/n] Y
... Success!
Thanks for using MariaDB!
Создаём базу данных:
$ mysql -u root -p
CREATE DATABASE river CHARACTER SET cp1251;
GRANT ALL PRIVILEGES ON river .* TO root@localhost IDENTIFIED BY 'ROOT PASSWORD';
FLUSH PRIVILEGES;
exit;
Установка и настройка DLE
Копируем содержимой папки upload из скачанного дистрибутива DLE на веб-сервер в целевую директорию (в нашем случае /var/www/river) при помощи программы WinSCPПрописываем права на файлы и директории в DLE
http://dle-news.ru/extras/online/index.html?overview.htmlДля упрощения создаём небольшой скриптvi /root/dlerights.sh find ./templates/ -type d -exec chmod 777 {} + find ./templates/ -type f -exec chmod 666 {} + find ./backup -type d -exec chmod 777 {} + find ./uploads -type d -exec chmod 777 {} + find ./engine/data -type d -exec chmod 777 {} + find ./engine/cache -type d -exec chmod 777 {} + find ./engine/cache/system -type d -exec chmod 777 {} + chmod 444 ./.htaccess chmod 444 ./templates/.htaccess
Переходим в директорию сайта и запускаем скрипт для установки правcd /var/www/riversh /root/dlerights.sh
Перезагружаем Apache systemctl restart httpd.serviceОткрываем брайзер и заходим на страницу http://river.ru
Прописываем, всё что нас спрашивают
По завершении установки получите уведомление, что нужно удалить файл install.php. Удалите его и перезагрузите страницу http://river.ru Готово.it.kuchuk.net
Как установить Apache Tomcat 9 на CentOS 7
В этой статье мы покажем вам как установить Apache Tomcat 9 на CentOS 7 VPS. Apache Tomcat является самым популярным и широко используемым сервером приложений Java. Он является веб – сервером и контейнером сервлетов с открытым исходным кодом, разработанный Apache Software Foundation. Он выполняет Java сервлеты и предоставляет веб – страницы, которые включают в себя кодирование страницы сервера Java. Установка Apache Tomcat 9 на CentOS 7 довольно простая задача, и она не займет более 10 минут для установки Tomcat 9 на виртуальный сервер CentOS 7.- Поддерживает TLS на виртуальном хостинге
- Поддерживает производительность OpenSSL с NIO/NIO2 APIs
- Использует OpenSSL для TLS с разъемами JSSE
- SNI и несколько сертификатов поддерживаются всеми коннекторами
- OpenSSL вариант движка для NIO и NiO2
- и многое другое …
1. Вход и обновление системы
Войдите на свой сервер CentOS 7 VPS через SSH с правами суперпользователя
ssh root@IP_Address -p7022
2. Установка Java 8
Apache Tomcat 9 требует Java 8 или более поздней версии, которые будут установлены на сервере. Пакеты Java 8 доступны в репозитории CentOS 7 по умолчанию. Выполните следующую команду, чтобы установить Java:
yum install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64
Это позволит установить Java 8 и все его зависимости. После того, как установка будет завершена, вы можете проверить установленную версию с помощью следующей команды
java -version
Вы должны получить следующий вывод:
openjdk version "1.8.0_161" OpenJDK Runtime Environment (build 1.8.0_161-b14) OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)3. Установка Tomcat 9
Перейти на официальный сайт Apache Tomcat и загрузите самую последнюю версию программного обеспечения на сервер. На данный момент самый последний релиз является версия 9.0.7.
wget http://ftp.wayne.edu/apache/tomcat/tomcat-9/v9.0.7/bin/apache-tomcat-9.0.7.zip
Распакуйте загруженный Zip-архив
unzip unzip apache-tomcat-9.0.7.zip -d /opt
Это создаст новый каталог с именем ‘apache-tomcat-9.0.7’. Мы переименуем его в нечто более простое
Выполните следующие команды, чтобы установить переменные окружения CATALINA_HOME
echo "export CATALINA_HOME='/opt/tomcat/'" >> ~/.bashrc source ~/.bashrc
Не рекомендуется запускать Apache Tomcat в качестве корневого пользователя, поэтому мы создадим нового пользователя системы, который будет работать на сервере Tomcat
useradd -r tomcat --shell /bin/false
и изменим владельца всех файлов Tomcat
chown -R tomcat:tomcat /opt/tomcat/
Создайте в Systemd файл со следующим содержимым
nano /etc/systemd/system/tomcat.service [Unit] Description=Apache Tomcat 9 After=syslog.target network.target[Service] User=tomcat Group=tomcat Type=forking Environment=CATALINA_PID=/opt/tomcat/tomcat.pid Environment=CATALINA_HOME=/opt/tomcat Environment=CATALINA_BASE=/opt/tomcat ExecStart=/opt/tomcat/bin/startup.sh ExecStop=/opt/tomcat/bin/shutdown.sh Restart=on-failure [Install] WantedBy=multi-user.target
Сохраните файл и запустите следующую команду для перезагрузки Systemd конфигурации менеджера
systemctl daemon-reload4. Настройка Tomcat 9
Теперь вы можете запустить сервер Apache Tomcat 9 и включить его для загрузки при старте системы
systemctl start tomcat systemctl enable tomcat
Вы можете проверить состояние сервера Tomcat 9 и убедится, что он правильно установлен, выполнив следующую команду
systemctl status tomcat
Вывод:
● tomcat.service - Apache Tomcat 9 Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: disabled) Active: active (exited) since Wed 2018-04-11 05:59:13 CDT; 2min 31s ago Process: 1091 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS) Main PID: 1091 (code=exited, status=0/SUCCESS) CGroup: /system.slice/tomcat.service └─1106 /usr/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048
Теперь вы должны состоянии получить доступ к серверу Tomcat в вашем любимом веб – браузере. Apache Tomcat по умолчанию прослушивает порт 8080, поэтому откройте браузер и перейдите по адресу http://IP_address:8080и вы увидите домашнюю страницу Apache Tomcat.
5. Создание учетной записи пользователя Tomcat 9
Вы можете создать нового пользователя Tomcat для того, чтобы иметь возможность доступа к менеджеру Tomcat. Откройте файл-users.xml Tomcat и добавьте следующие строки:
nano /opt/tomcat/conf/tomcat-users.xml <role rolename="admin-gui" /> <user username="admin" password="PASSWORD" roles="manager-gui,admin-gui" </tomcat-users>
Не забудьте заменить пароль на фактический сильный пароль.
По умолчанию менеджер Tomcat доступен только из браузера, работающего на той же машине, что и Tomcat. Если вы хотите снять это ограничение, вам необходимо отредактировать файл context.xml, и закомментировать или удалить следующую строку:
nano /opt/tomcat/webapps/manager/META-INF/content.xml <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />6. Перезапуск Apache Tomcat 9
Перезапустите сервер Apache Tomcat для того, чтобы изменения вступили в силу.
systemctl restart tomcat7. Веб-клиент Tomcat 9
Теперь вы сможете получить доступ к менеджеру Apache Tomcat, нажав на кнопку ‘Manager App’ на главной странице, или непосредственно с адреса http://IP_address:8080/manager/html с помощью пользователя «admin» и пароля «PASSWORD».
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
andreyex.ru
Установка SSL сертификата на Apache под CentOS 7 — AdminCorner
После установки NextCloud, потребовалось иметь доступ к нему с интернета. Для этого было нужно максимально обезопасить соединение. Одним из пунктов был установка ssl сертификата.
Установка зависимых модулей
Для установки сертификата нам необходим certbot и наличие EPEL репозитория, так как оно отключено в CentOS 7 по умолчанию. Также требуется mod_ssl, чтобы Apache мог распознавать шифрование.
Устанавливаем модули:
yum install epel-release mod_ssl
yum install epel-release mod_ssl |
Приготовления завершены. Теперь готовы к установке certbot.
Установка клиента Let’s Encrypt
Установите certbot из EPEL хранилища выполнив команду:
yum install python-certbot-apache
yum install python-certbot-apache |
Теперь сertbot установлен и готов к использованию.
Настройка SSL сертификата
Certbot — инструмент для управления SSL сертификатами, также он может генерировать новые сертификаты для необходимого домена.
Для примера создаем сертификат для admincorner.ru:
certbot --apache -d admincorner.ru
certbot --apache -d admincorner.ru |
Если вы хотите сгенерировать несколько SSL сертификатов для нескольких доменов и субдоменов:
certbot --apache -d admincorner.ru -d www.admincorner.ru
certbot --apache -d admincorner.ru -d www.admincorner.ru |
ВАЖНО! Первый домен должен быть базовым доменом, в этом примере это admincorner.ru.
В процессе установки будет представлено пошаговое руководство по настройке сертификата. Вы сможете настроить использование HTTPS или оставить HTTP в качестве протокола по умолчанию, также вам будет необходимо предоставить адрес вашей электронной почты в целях безопасности.
Как только установка будет завершена, вы увидите следующее сообщение:IMPORTANT NOTES:— If you lose your account credentials, you can recover throughe-mails sent to [email protected].— Congratulations! Your certificate and chain have been saved at/etc/letsencrypt/live/admincorner.ru/fullchain.pem. Your certwill expire on 2016-04-21. To obtain a new version of thecertificate in the future, simply run Let’s Encrypt again.— Your account credentials have been saved in your Let’s Encryptconfiguration directory at /etc/letsencrypt. You should make asecure backup of this folder now. This configuration directory willalso contain certificates and private keys obtained by Let’sEncrypt so making regular backups of this folder is ideal.— If you like Let’s Encrypt, please consider supporting our work by:
Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donateDonating to EFF: https://eff.org/donate-le
Настройка автообновления SSL сертификата
Сертификат Let’s Encrypt действителен в течении 90 дней, но желательно обновлять его каждые 60 дней для избежания возникновения проблем с безопасностью. Сделать это вам поможет сам certbot, с помощью команды renew. После выполнения команды он проверит время до истечения срока действия сертификата.
Обновляем сертификат:
Если установленный сертификат еще действителен, certbot проверит только дату истечения срока годности:
Processing /etc/letsencrypt/renewal/admincorner.ru.confThe following certs are not due for renewal yet:/etc/letsencrypt/live/admincorner.ru/fullchain.pem (skipped)No renewals were attempted.
Для автоматизации данного процесса, вы можете настроить cronjob. Откройте crontab:
Эта задача может быть записана в расписание на каждую полночь понедельника.
0 0 * * 1 /usr/bin/certbot renew >> /var/log/sslrenew.log
0 0 * * 1 /usr/bin/certbot renew >> /var/log/sslrenew.log |
Журнал выполнения задачи будет выведен в файл /var/log/sslrenew.log.
Заключение
Только что мы защитили ваш веб-сервер Apache подключив бесплатный SSL сертификат! С этого момента весь трафик между сервером и клиентом будет шифроваться. Вы можете быть уверены, что никто не сможет перехватить сообщения или украсть важную информацию.
admincorner.ru
Безопасный Apache с Let's Encrypt на CentOS 7
Let’s Encrypt – бесплатный, автоматизированный и открытый центр сертификации, разработанный Исследовательской группой Internet Security Research Group (ISRG). Сертификаты, выданные Let’s Encrypt, действительны в течение 90 дней с даты выпуска, и сегодня им доверяют почти все браузеры.В этой статье мы рассмотрим шаги, необходимые для установки бесплатного SSL-сертификата для шифрования SSL на сервере CentOS 7 с Apache в качестве веб-сервера. Мы будем использовать утилиту certbot для получения и обновления сертификатов Let’s Encrypt.
Предпосылки
Перед продолжением этой статьи, убедитесь, что вы выполнили следующие предварительные условия:
- Укажите имя домена, указывающий на ваш IP-адрес общего сервера. В этой статье мы будем использовать домен andreyex.ru.
- Установленный Apache и запущен на сервере.
- Виртуальный хост Apache для своего домена.
- Открытые порты 80 и 443 в своем брандмауэре.
Установите следующие пакеты, которые необходимы для SSL-зашифрованного веб-сервера:
yum install mod_ssl openssl
Установка Certbot
Certbot – это инструмент, упрощающий процесс получения SSL-сертификатов от Let’s Encrypt и автоматического включения HTTPS на вашем сервере.
Пакет certbot предоставляется EPEL. Если репозиторий EPEL не установлен в вашей системе, вы можете установить его, используя следующую команду:
sudo yum install epel-release
После того, как репозиторий EPEL включен, установите пакет certbot, введя:
sudo yum install certbot
Создание Dh (Диффи-Хеллман)
Обмен ключами Diffie-Hellman (DH) – это метод безопасного обмена криптографическими ключами по необеспеченному каналу связи. Создайте новый набор параметров 2048 бит DH для усиления безопасности:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Вы можете изменить размер до 4096 бит, но в этом случае генерация может занять более 30 минут в зависимости от энтропии системы.
Получение сертификата SSL для шифрования
Чтобы получить сертификат SSL для нашего домена, мы собираемся использовать плагин Apache, который работает, создавая временный файл для запрашиваемого домена в каталоге,${webroot-path}/.well-known/acme-challenge, а сервер проверки подлинности Let’s Encrypt делает HTTP-запросы для проверки DNS для запрашиваемого домена разрешение на сервер, на котором выполняется certbot.
Чтобы сделать его более простым, мы собираем все HTTP-запросы для .well-known/acme-challenge в одном каталоге /var/lib/letsencrypt. Следующие команды создадут каталог и сделают его доступным для записи на сервере Apache.
Следующие команды создадут каталог и сделают его доступным для записи на сервере Apache.
mkdir -p /var/lib/letsencrypt/.well-known chgrp apache /var/lib/letsencrypt chmod g+s /var/lib/letsencrypt
Чтобы избежать дублирования кода, создайте следующие два фрагмента конфигурации:
/etc/httpd/conf.d/letsencrypt.conf
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" <Directory "/var/lib/letsencrypt/"> AllowOverride None Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS </Directory>
/etc/httpd/conf.d/ssl-params.conf
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLHonorCipherOrder On Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" Header always set X-Frame-Options DENY Header always set X-Content-Type-Options nosniff # Требует Apache >= 2.4 SSLCompression off SSLUseStapling on SSLStaplingCache "shmcb:logs/stapling-cache(150000)" # Требует Apache >= 2.4.11 SSLSessionTickets Off
В приведенном выше фрагменте используются чипперы, рекомендованные Cipherli.st, позволяющие сшивание OCSP, строгая транспортная безопасность HTTP (HSTS) и использование нескольких HTTP-заголовков, ориентированных на безопасность.
Перезагрузите конфигурацию Apache, чтобы изменения вступили в силу:
sudo systemctl reload httpd
Теперь мы можем запустить средство Certbot с помощью плагина webroot и получить файлы SSL сертификатов, набрав:
sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d andreyex.ru -d www.andreyex.ru
Если сертификат SSL будет успешно получен, certbot напечатает следующее сообщение:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/andreyex.ru/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/andreyex.ru/privkey.pem Your cert will expire on 2018-12-07. 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
CentOS 7 поставляется с Apache версии 2.4.6, которая не включает директиву SSLOpenSSLConfCmd. Эта директива доступна только на Apache позже 2.4.8 и используется для настройки параметров OpenSSL, таких как обмен ключами Diffie-Hellman (DH).
Нам нужно будет создать новый комбинированный файл, используя SSL-сертификат Let’s Encrypt и созданный файл DH. Для этого введите:
cat /etc/letsencrypt/live/andreyex.ru/cert.pem /etc/ssl/certs/dhparam.pem >/etc/letsencrypt/live/andreyex.ru/cert.dh.pem
Теперь, когда все настроено, отредактируйте конфигурацию виртуального хоста домена следующим образом:
/etc/httpd/conf.d/andreyex.ru.conf
<VirtualHost *:80> ServerName andreyex.ru ServerAlias www.andreyex.ru Redirect permanent / https://andreyex.ru/ </VirtualHost> <VirtualHost *:443> ServerName andreyex.ru ServerAlias www.andreyex.ru <If "%{HTTP_HOST} == 'www.andreyex.ru'"> Redirect permanent / https://andreyex.ru/ </If> DocumentRoot /var/www/andreyex.ru/public_html ErrorLog /var/log/httpd/andreyex.ru-error.log CustomLog /var/log/httpd/andreyex.ru-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/andreyex.ru/cert.dh.pem SSLCertificateKeyFile /etc/letsencrypt/live/andreyex.ru/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/andreyex.ru/chain.pem # Остальные конфигурации Apache </VirtualHost>
С приведенной выше конфигурацией мы устанавливаем HTTPS и перенаправляем с www на не-www-версию. Не стесняйтесь настраивать конфигурацию в соответствии с вашими потребностями.
Перезапустите службу Apache, чтобы изменения вступили в силу:
sudo systemctl restart httpd
Теперь вы можете открыть свой веб-сайт, https:// и вы заметите значок зеленого замка.
Если вы протестируете свой домен с помощью теста SSL Labs Server, вы получите оценку A +, как показано ниже:
Автоматическое обновление Шифрование SSL-сертификата
Сертификаты Encrypt действительны в течение 90 дней. Чтобы автоматически продлить срок действия сертификатов до истечения срока их действия, мы создадим cronjob, который будет работать два раза в день и автоматически обновит сертификат за 30 дней до истечения срока его действия.
Запустите команду crontab для создания нового cronjob, который обновит сертификат, создаст новый комбинированный файл, включая ключ DH, и перезапустит apache:
sudo crontab -e0 */12 * * * certbot renew --cert-name andreyex.ru --renew-hook "cat /etc/letsencrypt/live/andreyex.ru/cert.pem /etc/ssl/certs/dhparam.pem >/etc/letsencrypt/live/andreyex.ru/cert.dh.pem && systemctl restart httpd"
Чтобы протестировать процесс обновления, вы можете использовать переключатель --dry-run в certbot:
sudo certbot renew --cert-name andreyex.ru --dry-run
Если ошибок нет, это означает, что процесс обновления был успешным.
Вывод
В этой статье вы использовали клиент Let’s Encrypt, certbot для загрузки сертификатов SSL для вашего домена. Вы также создали фрагменты Apache, чтобы избежать дублирования кода и настроите Apache для использования сертификатов. В конце статьи вы создали cronjob для автоматического обновления сертификата.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
andreyex.ru