Безопасный 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   должно выйглядеть так:

# Load config files in the "/etc/httpd/conf.d" directory, if any.IncludeOptional conf.d/*.confIncludeOptional sites/*.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.

Apache Tomcat 9 построен на вершине последних 8 спецификаций Java EE, таких как: Servlet 4.0 EL 3.1, JSP 2.4 и WebSocket 1,2. Кроме того, он имеет меньше ошибок, исправлений безопасности и основные улучшения, такие как следующее:– реализует HTTP / 2 (требуется / родная библиотека APR

  • Поддерживает TLS на виртуальном хостинге
  • Поддерживает производительность OpenSSL с NIO/NIO2 APIs
  • Использует OpenSSL для TLS с разъемами JSSE
  • SNI и несколько сертификатов поддерживаются всеми коннекторами
  • OpenSSL вариант движка для NIO и NiO2
  • и многое другое …

1. Вход и обновление системы

Войдите на свой сервер CentOS 7 VPS через SSH с правами суперпользователя

ssh root@IP_Address -p7022

 

и убедитесь, что все установленные пакеты актуальны

yum -y update

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’. Мы переименуем его в нечто более простое

cd /opt mv apache-tomcat-9.0.7/ tomcat

 

Выполните следующие команды, чтобы установить переменные окружения 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-reload

4. Настройка 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 tomcat

7. Веб-клиент 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 &gt;&gt; /var/log/sslrenew.log

0 0 * * 1 /usr/bin/certbot renew &gt;&gt; /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 – это инструмент, упрощающий процесс получения SSL-сертификатов от Let’s Encrypt и автоматического включения HTTPS на вашем сервере.

Пакет certbot предоставляется EPEL. Если репозиторий EPEL не установлен в вашей системе, вы можете установить его, используя следующую команду:

sudo yum install epel-release

 

После того, как репозиторий EPEL включен, установите пакет certbot, введя:

sudo yum install certbot

 

Обмен ключами Diffie-Hellman (DH) – это метод безопасного обмена криптографическими ключами по необеспеченному каналу связи. Создайте новый набор параметров 2048 бит DH для усиления безопасности:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

 

Вы можете изменить размер до 4096 бит, но в этом случае генерация может занять более 30 минут в зависимости от энтропии системы.

Чтобы получить сертификат 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 +, как показано ниже:

Сертификаты Encrypt действительны в течение 90 дней. Чтобы автоматически продлить срок действия сертификатов до истечения срока их действия, мы создадим cronjob, который будет работать два раза в день и автоматически обновит сертификат за 30 дней до истечения срока его действия.

Запустите команду crontab для создания нового cronjob, который обновит сертификат, создаст новый комбинированный файл, включая ключ DH, и перезапустит apache:

sudo crontab -e

 

0 */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