Page_c76a3fcf https://linux-notes.org Unix/ Linux блог, на котором можно найти полезную информацию по настройке ОС и ПО. Fri, 09 Nov 2018 09:06:38 +0000 ru-RU hourly 1 https://wordpress.org/?v=6.7.2 Page_c76a3fcf https://linux-notes.org/pishem-upstart-skript/ https://linux-notes.org/pishem-upstart-skript/#respond Thu, 23 Nov 2017 19:32:11 +0000 http://linux-notes.org/?p=6719 Пишем Upstart скрипт Upstart — это система инициализации ОС, которая управляет запуском демонов в течение загрузки системы, их остановку, а также управляет ими во время работы системы. Основанная на событиях замена системы инициализации init в UNIX и Linux системах. Изначально разрабатывалась для дистрибутива Ubuntu, но предназначен для развертывания во всех дистрибутивах Linux в качестве альтернативной замены. Основные […]

The post Пишем Upstart скрипт first appeared on linux-notes.org.]]>

Пишем Upstart скрипт

Upstart — это система инициализации ОС, которая управляет запуском демонов в течение загрузки системы, их остановку, а также управляет ими во время работы системы. Основанная на событиях замена системы инициализации init в UNIX и Linux системах. Изначально разрабатывалась для дистрибутива Ubuntu, но предназначен для развертывания во всех дистрибутивах Linux в качестве альтернативной замены.

Основные характеристики

  • Задачи и службы запускаются и/или останавливаются через события;
  • События генерируются при запуске и остановке задач и сервисов;
  • События могут быть получены от любого другого процесса в системе;
  • Слыжбы могут быть возрождены, если они неожиданно кильнулись;
  • Наблюдение и возрождение демонов, которые отделены от их родительского процесса;
  • Связь с init демоном через D-Bus;
  • Пользовательские сервисы, которые пользователи могут запускать и останавливать сами.

И так, хотелось бы рассказать как можно запускать томкат. Но для начала, нужно узнать какой механизм инициализации используется:

# ps -s1| awk '{print $4}'| grep -Ev "CMD"

Т.к речь идет о Upstart, то и продолжим тему.

PS: Вот еще полезное чтиво:

Система инициализации в Unix/Linux

Система инициализации Systemd

Система инициализации SysVinit

Пишем systemd Unit файл

Инициализация — важнейшая процедура, лежащая в основе любой операционной системы на основе Unix/Linux для управления работой каждого скрипта и службы.

По сути, инициализация следует за этим процессом:

  • Загрузка сервера.
  • Запуск init процесса (обычно как PID 1).
  • Запуск предопределенного набора задач для запуска активируется последовательно.

Инициализация отвечает за то, чтобы сервер мог загрузиться и отключиться. В некоторых Unix/Linux дистрибутивах  используется стандартный процесс инициализации init/systemD/Upstart. В этой статье я расскажу о том, как использовать Upstart или Init.

Традиционная инициализация следует за линейным процессом: загрузка отдельных задач в предопределенную последовательность при загрузке системы. Это не так полезно, особенно в быстро меняющихся ситуациях. Чтобы понять, почему, представьте, например, вы изменили среду сервера, добавив дополнительное устройство хранения.

Процесс инициализации не может принимать во внимание внезапные изменения в среде, а это означает, что ваш облачный сервер должен быть повторно инициализирован, прежде чем он сможет распознать дополнительное хранилище. Обнаружение «на лету» — это то, что необходимо, хотя это не возможность классической процедуры инициализации.

Загрузка в линейную последовательность также требует времени, что особенно невыгодно в облачной среде, где быстрое развертывание имеет важное значение.

Вы также можете быть обеспокоены состоянием своих задач после загрузки системы. К сожалению, init связан с последовательностью только при загрузке или отключении питания.

Синхронные последовательности загрузки больше не желательны. На смену init-у, пришел Upstart — решение этих проблем с расширенными возможностями.

На основе событий в реальном времени вместо заданного списка задач в последовательности этот замещающий демон инициализации запускает и останавливает задачи и контролирует эти процессы во время работы системы — «полный охват» — лучший способ описать его.

Эта новая асинхронная обработка устраняет необходимость в жесткой последовательности загрузки. Обработка в режиме реального времени может быть беспорядочной для концептуализации, но Upstart может поддерживать самые сложные системы и держать все под контролем, используя структуру задач.

Jobs

В мире Upstart, jobs — это рабочие процессы, разделенные на задания (целью) и рабочие задания (которые могут выполняться в фоновом режиме). Существуют также абстрактные задания — процессы, которые выполняются всегда, до тех пор, пока пользователь не будет заблокирован административными привилегиями.

Events

Однако событиями являются сигналы или «вызовы», используемые для запуска определенного действия с заданием или другим событием. Общие формы событий относятся к мониторингу процесса: запуск (пред-запуск) и остановка (пред-остановка).

Emitting Events

Процесс трансляции события называется «испусканием» (emitting). Обычно это вызвано состоянием процесса или задания, хотя администратор также может выпустить событие вручную, выпустив «initctl emit <event>» команду.

Состояния Job и Events

Джобы (задания или job-ы) в системе находятся в каталоге /etc/init/, а задания пользователя находятся в собственном каталоге ~/.init/.

Пользовательские задания запускаются в собственной сессии пользователя, поэтому они также известны как сеансовые задания. Они не работают в общесистемном режиме и не входят в обозначение PID1.

Независимо от его типа, задание всегда определяется в файле конфигурации (.conf), где его имя файла должно представлять связанную службу или задачу.

У каждой из этих заданий есть цель — запустить или остановить. Между этими двумя целями находятся множество состояний задач, которые определяют текущие действия работы в отношении цели. Важными являются следующие состояния:

  • waiting: Начальное состояние процесса.
  • starting: Запуск джобы.
  • pre-start: Загрузка или пред-старт некоторых действий.
  • spawned: Начало скрипта.
  • post-start: После-запуск или действия после запуска задания.
  • running: Запущенная джоба.
  • pre-stop: Пред-остановка или действия который выполняються перед остановкой задания.
  • stopping: Остановка джобы.
  • killed: Прибиваение процесса. Остановка задания.
  • post-stop: После-остановка или действия после остановки джобы.

После post-start состояния, задание определяется как running (запущено). Он остается включенным до тех пор, пока не будет выполнена предварительная остановка, когда задание будет готово к остановке, тогда работа будет убита, а процедуры очистки после остановки выполнят свои действия( если они будут определены).

Вы можете просмотреть, как задание переходит между состояниями, установив приоритет системного журнала Upstart (расположенный в каталоге /var/ log/upstart/) для отладки с помощью этой команды:

# initctl log-priority debug

Помните, что состояния не являются событиями, а события не являются состояниями. Четыре события (starting, started, stopping и stopped) испускаются Upstart, но состояния задачи определяют переход между этапами жизненного цикла работы.

Примеры Upstart скриптов

Открываем (создаем) файл:

# vim /etc/init/testjob.conf

Для начала, прописываем следующие строки:

description "My first Upstart script"
author "Vitaliy Natarov"

Тем самым, я описал что это за скрипт (поле description) и прописал автора (поле — author). После чего, сейчас я пропишу следующую строку для того чтобы это задание выполнялось после того, как системные службы и процессы уже загружены (чтобы предотвратить конфликт):

start on runlevel [2345]

Возможно, вам интересно, что такое уровень запуска. По сути, это единственное значение, которое представляет текущую конфигурацию системы. [2345] относится ко всем состояниям конфигурации с общим доступом к Linux и сетям, что идеально подходит для базового тестового примера.

Идем дальше и прописываем следующей строчкой:

stop on shutdown

Это остановит созданную задачу при отключения питания (завершения работы) сервера.

Затем мы добавим код выполнения:

script
echo $$ > /var/run/testjob.pid
end script

Определим действия перед запуском:

pre-start script
    echo "[`date`] testjob Starting" >> /var/log/testjob.log
end script

Так же, определим пред-остановку:

pre-stop script
    rm /var/run/nodetest.pid
    echo "[`date`] testjob Stopping" >> /var/log/testjob.log
end script

Сохраните и закройте этот файл.

Вы можете убедиться, что это работает, вручную запустив задание, но давайте сначала проверим синтаксис файла конфигурации:

# init-checkconf /etc/init/testjob.conf

Если обнаружены какие-либо проблемы, эта команда укажет номер конкретную линию(ии) и проблему. Однако с тестовым заданием вы должны увидеть вывод следующим образом:

File /etc/init/testjob.conf: syntax ok

Эта команда может использоваться для управления заданиями Upstart и другими фоновыми службами, такими как веб-сервер.

Основной синтаксис команды:

# service <servicename> <control>

Где, <control> может быть:

  • restart — Перезапустит службу.
  • start — Запустит службу.
  • stop — Остановит службу.
  • status — Проверит состояние службы.

Давайте запустим написанный скрипт:

# service testjob start

Теперь проверьте файл testjob.log, выполнив следующую команду:

# cat /var/log/testjob.log

Я не буду больше заострять внимания т.к это уже не актуально и в большенстве случаев, уже используется systemD/init скрипты.

Вот и все, статья «Пишем Upstart скрипт» завершена.

The post Пишем Upstart скрипт first appeared on linux-notes.org.]]>
https://linux-notes.org/pishem-upstart-skript/feed/ 0
Page_c76a3fcf https://linux-notes.org/ustanovka-tomcat-v-unix-linux/ https://linux-notes.org/ustanovka-tomcat-v-unix-linux/#respond Wed, 21 Jun 2017 11:11:15 +0000 http://linux-notes.org/?p=13072 Установка Tomcat в Unix/Linux Apache Tomcat (ранее — Catalina) — это контейнер сервлетов с открытым исходным кодом, разрабатываемый Apache Software Foundation. Реализует спецификацию сервлетов и спецификацию JavaServer Pages (JSP) и JavaServer Faces (JSF). Написан на языке Java. Томкат дает возможность запускать приложения для веба, которые содержат ряд утилит для самоконфигурирования. Tomcat используется в качестве самостоятельного веб-сервера, […]

The post Установка Tomcat в Unix/Linux first appeared on linux-notes.org.]]>

Установка Tomcat в Unix/Linux

Apache Tomcat (ранее — Catalina) — это контейнер сервлетов с открытым исходным кодом, разрабатываемый Apache Software Foundation. Реализует спецификацию сервлетов и спецификацию JavaServer Pages (JSP) и JavaServer Faces (JSF). Написан на языке Java. Томкат дает возможность запускать приложения для веба, которые содержат ряд утилит для самоконфигурирования.

Tomcat используется в качестве самостоятельного веб-сервера, в качестве сервера контента в сочетании с веб-сервером Apache HTTP Server, а также в качестве контейнера сервлетов в серверах приложений JBoss и GlassFish.

Установка Tomcat в Unix/Linux

Я стараюсь писать статьи со всем необходимым и чтобы снизить поиски траблошутов в интернете. Я расскажу как установить, настроить и работать с  Apache Tomcat в различных Unix/Linux ОС.

Но перед тем как приступим к самой установке, проверяем, установлена ли JAVA на сервере и какая версия:

$ java -version

Если java не установлена в системе, то приступим к установке:

Установка JAVA (JDK) на CentOS/RHEL/Fedora

Установка Java на Debian/Ubuntu/Mint

Установка JAVA 9 (JDK9) на Debian/Ubuntu/LinuxMint

Узнать размер Java Heap Memory Size

Установка переменных JAVA_HOME / PATH в Linux

Для других Unix/Linux ОС мне не приходилось устанавливать. По мере возможности, я буду дополнять данный материал новой информацией.

PS: На момент написания статьи, самая актуальная версия — java8 ( 1.8).

Создание пользователя

В идеале,  необходимо создать нового пользователя для запуска Tomcat. В этом примере я создам non-login пользователя «tomcat:

# useradd -s /sbin/nologin -d /usr/local/tomcat9/temp tomcat

ИЛИ:

# useradd -r tomcat --shell /bin/false

Идем дальше.

Установка Tomcat в Debian/Ubuntu/CentOS/Fedora/RedHat/Gentoo/Arch

Я описывал в своей статье, процесс установки tomcat для Ubuntu:

Как установить Tomcat 8.0.5 на Ubuntu

Установка для любого Unix/Linux примитивная — идем на официальный сайт и качаем новую версию томката. Я заюзаю самую последнюю ( но учитывайте дату написания статьи):

# cd /usr/local/src && wget http://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.1/bin/apache-tomcat-9.0.1.tar.gz

Выполним распаковку:

#  tar xfvz /usr/local/src/apache-tomcat-*.tar.gz -C /usr/local/

Старый архив удаляем:

# rm -f /usr/local/src/apache-tomcat-9*.tar.gz

Для удобства, переименуем данный томкат:

# mv /usr/local/apache-tomcat-9.0.1 /usr/local/tomcat9

Меняем права на папку, для того чтобы новый пользователь (tomcat, которого создали в самом начале статьи) мог запустить Tomcat:

# chown -R tomcat. /usr/local/tomcat9

Запуск томката:

$ /usr/local/tomcat9/bin/startup.sh

Для остановки, нужно убить процесс. Но для начала смотри что есть:

# ps -aux | grep tomcat

Я например, делал вот так:

# kill -9 `ps -aux | grep tomcat | grep -Ev "grep"|awk '{print $2}'`

Но это не удобно, немного ниже я расскажу как можно оптимизировать.

Установка Tomcat в Mac OS X

Для начала подключаем brew:

Установка homebrew на Mac OS X

Выполним поиск пакета:

$ brew search tomcat

У меня имеется следующие версии:

tomcat  tomcat-native    tomcat@6     tomcat@7     tomcat@8.0

Для установки используйте:

$ brew install tomcat@8.0

PS: Настройку я не выполнял, по этому — я пока-что упущу данную тему.

Установка Tomcat на другие Unix/Linux ОС

Для других Unix/Linux ОС, можно заюзать docker. Я мало где юзаю его, по этому — пока что нет данной инфы по установке. Но я надеюсь что я выложу.

Настройка Tomcat в Unix/Linux

И так, хотелось бы рассказать как можно запускать томкат. Но для начала, нужно узнать какой механизм инициализации используется:

# ps -s1| awk '{print $4}'| grep -Ev "CMD"

PS: Вот довольно полезное чтиво:

Система инициализации в Unix/Linux

Система инициализации Systemd

Система инициализации SysVinit

Запуск TOMCAT с SysV init

Создадим init скрипт для запуска:

# vim /etc/init.d/tomcat9

И приводим к виду:

#!/bin/bash
#
#https://wiki.debian.org/LSBInitScripts
### BEGIN INIT INFO
# Provides:          tomcat9
# Required-Start:    $local_fs $remote_fs $network
# Required-Stop:     $local_fs $remote_fs $network
# Should-Start:      $named
# Should-Stop:       $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start Tomcat.
# Description:       Start the Tomcat servlet engine.
### END INIT INFO

export CATALINA_HOME=/usr/local/tomcat9
export JAVA_HOME=/usr/local/jdk1.8.0_131
export PATH=$JAVA_HOME/bin:$PATH

start() {
 echo "Starting Tomcat 9..."
 /bin/su -s /bin/bash tomcat -c $CATALINA_HOME/bin/startup.sh
}
stop() {
 echo "Stopping Tomcat 9..."
 /bin/su -s /bin/bash tomcat -c $CATALINA_HOME/bin/shutdown.sh
}
case $1 in
  start|stop) $1;;
  restart) stop; start;;
  *) echo "Usage : $0 <start|stop|restart>"; exit 1;;
esac

exit 0

Даем права на запуск ( на исполнение):

# chmod 755 /etc/init.d/tomcat9

ИЛИ:

# chmod +x /etc/init.d/tomcat9

Добавляем службу в автозагрузку:

# update-rc.d tomcat9 defaults

Или для CentOS:

# chkconfig --add tomcat9

Запускаем томкат:

# service tomcat9 start

Открываем браузер и смотрим что вышло!

PS: По дефолту, нужно открыть URL-у на 8080-м порту. Я внизу статьи, расскажу как можно будет настроить томкат.

Вот полезное чтиво о том, как создавать SysV init файлы в Unix/Linux:

БУДЕТ, немного позже!

Запуск TOMCAT с systemd

Открываем файл:

# vim /etc/systemd/system/tomcat9.service

И приводим к подобному виду:

[Unit]
Description=Tomcat9
After=syslog.target network.target 

[Service]
Type=forking
User=tomcat
Group=tomcat

Environment=CATALINA_PID=/usr/local/tomcat9/tomcat9.pid
Environment=TOMCAT_JAVA_HOME=/usr/bin/java
Environment=CATALINA_HOME=/usr/local/tomcat9
Environment=CATALINA_BASE=/usr/local/tomcat9
Environment=CATALINA_OPTS=
#Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment="JAVA_OPTS=-Dfile.encoding=UTF-8 -Dnet.sf.ehcache.skipUpdateCheck=true -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+UseParNewGC -XX:MaxPermSize=128m -Xms512m -Xmx512m"

ExecStart=/usr/local/tomcat9/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID

[Install]
WantedBy=multi-user.target

Чтобы созданный файл применился, перезагрузим службу:

# systemctl daemon-reload

Чтобы добавить томкат в автозагрузку ОС, выполните:

# systemctl enable tomcat9

И, перезапускаем:

# systemctl restart tomcat9

Чтобы проверить статус, выполняем:

# systemctl status tomcat9
● tomcat9.service - Tomcat9
   Loaded: loaded (/etc/systemd/system/tomcat9.service; enabled)
   Active: active (running) since Tue 2017-05-09 22:04:58 EEST; 6s ago
  Process: 28528 ExecStop=/bin/kill -15 $MAINPID (code=exited, status=0/SUCCESS)
  Process: 28531 ExecStart=/usr/local/tomcat9/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 28541 (java)
   CGroup: /system.slice/tomcat9.service
           └─28541 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat9/conf/logging.properties -Djava.ut...

May 09 22:04:58 debian systemd[1]: Starting Tomcat9...
May 09 22:04:58 debian startup.sh[28531]: Tomcat started.
May 09 22:04:58 debian systemd[1]: Started Tomcat9.

Как видим, все четко работает.

Вот полезное чтиво о том, как создавать SystemD unit файлы в Unix/Linux:

Пишем systemd Unit файл

Изменить порт в tomcat

Поменять порт:

# vim /usr/local/tomcat9/conf/server.xml

Ищем:

Connector port

и меняем его, после чего — выполняем рестарт томката.

Создание виртуального хоста для tomcat

Виртуальный хостинг предоставляет нам возможность размещать несколько доменов (веб-сайтов) на одном сервере.

Я для примера, создал домен и повесил его на 192.168.1.100. Веб-апликейшены работают на tomcat 9 и исползуют 80-й порт. Я добавил 2 java-приложения через панель — Tomcat Admin. Теперь оба приложения работают по следующим URL-м:

http://192.168.1.100/myapp
http://192.168.1.100/myapp2

Теперь мы хотим запускать оба веб-приложения на основных доменах (tomcat1.linux-notes.org и tomcat2.linux-notes.org). Таким образом, конечные пользователи могут получить доступ к веб-приложению, используя доменное имя.

И так, открываем файл:

# vim /usr/local/tomcat9/conf/server.xml

И приводим к виду:

<Host name="tomcat1.linux-notes.org" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Alias>www.tomcat1.linux-notes.org</Alias>

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="tomcat1.linux-notes_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />

<Context path="" docBase="/usr/local/tomcat9/webapps/myapp"
debug="0" reloadable="true"/>
</Host>

<Host name="tomcat2.linux-notes.org" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Alias>www.tomcat2.linux-notes.org</Alias>

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="tomcat2.linux-notes_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />

<Context path="" docBase="/usr/local/tomcat9/webapps/myapp2"
debug="0" reloadable="true"/>
</Host>

Суть надеюсь понятна и проста.

После чего, стоит выполнить перезагрузку томката. Я не буду повторятся как это делать, я описывал это в верху.

Настройка SSL для Tomcat

Знаю как, но пока-что не делал.

PS: Вот еще чтиво:

Сконвертировать файл .JKS в .PEM для SSL в Unix/Linux

Идем далее.

Безопасность Tomcat в Linux

Нужно упомянуть про несколько очень важных моментов по безопасности при работе с Tomcat. Рассмотренные выше «ручные» варианты подразумевают обычно запуск из-под root-пользователя. В результате, если вы ещё и стандартно в файле, задающем пользователей (/usr/local/tomcat9/conf/tomcat-users.xml) раскомментируете блок оных:

<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>

…или воспользуетесь распространёнными в интернете примерами получения админских прав типа:

<role rolename="manager"/>
<role rolename="admin"/>
<user username="admin" password="admin" roles="admin,manager"/>

…или типа:

<role rolename="tomcat"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="tomcat" roles="tomcat, manager-gui, manager-script"/>

Как-то так, статья «Установка Tomcat в Unix/Linux » завершена.

The post Установка Tomcat в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-tomcat-v-unix-linux/feed/ 0
Page_c76a3fcf https://linux-notes.org/otklyuchenie-sslv3-dlya-uyazvimosti-poodle/ https://linux-notes.org/otklyuchenie-sslv3-dlya-uyazvimosti-poodle/#respond Sun, 14 Jun 2015 20:19:32 +0000 http://linux-notes.org/?p=6309 Отключение SSLv3 для уязвимости POODLE Недавно была найдена уязвимость в SSL в протоколе 3.0 и имеет имя -POODLE . Протокол SSL 3.0 делает возможным использование шифров в режиме CBC (CBC-mode), что позволяет человеку использовать атаку с использованием стеков padding-oracle. Эти атаки нацелены на шифры CBC, чтобы получить обычный текст  из зашифрованной информации. Для того, чтобы решить эту […]

The post Отключение SSLv3 для уязвимости POODLE first appeared on linux-notes.org.]]>

Отключение SSLv3 для уязвимости POODLE

Недавно была найдена уязвимость в SSL в протоколе 3.0 и имеет имя -POODLE .

Протокол SSL 3.0 делает возможным использование шифров в режиме CBC (CBC-mode), что позволяет человеку использовать атаку с использованием стеков padding-oracle. Эти атаки нацелены на шифры CBC, чтобы получить обычный текст  из зашифрованной информации.

Для того, чтобы решить эту проблему, мы должны отключить SSLv3 для всех приложений которые использую данное шифрование. К сожалению нет никакого способа, чтобы выполнить данное исправление это для всего сервера сразу. Вам нужно будет редактировать каждый индивидуальный файл конфигурации. И я в своей теме «Отключение SSLv3 для уязвимости POODLE» расскажу как можно защитится от данной уязвимости и на готовых примерах покажу как этого добиться.

Отключения SSLv3

Большинство людей  не отключают SSLv3, потому что они не используют SSLv3 соединения через SSL/TLS. А это не правильно и его нужно отключить принудительно до того как исправят данную уязвимость.

Тестирование (проверка) на использование SSLv3

Есть несколько способов чтобы определить, работает ли SSL с использованием SSLv3. Простой способ состоит в использовании клиента командной строки OpenSSL, выполните следующую команду:

# openssl s_client -connect linux-notes.org:443 -ssl3

И получим вывод:

CONNECTED(00000003)
depth=3 /C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Certification Authority
verify error:num=19:self signed certificate in certificate chain
verify return:0
---
Certificate chain
0 s:/description=Free SSL Cert apply URL: https://buy.wosign.com/free/CN=linux-notes.org
i:/C=CN/O=WoSign CA Limited/CN=WoSign CA Free SSL Certificate G2
1 s:/C=CN/O=WoSign CA Limited/CN=WoSign CA Free SSL Certificate G2
i:/C=CN/O=WoSign CA Limited/CN=Certification Authority of WoSign
2 s:/C=CN/O=WoSign CA Limited/CN=Certification Authority of WoSign
i:/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Certification Authority
3 s:/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Certification Authority
i:/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Certification Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIE+DCCA+CgAwIBAgIQO6cNB4khKE+AtdpJnb+wkjANBgkqhkiG9w0BAQsFADBV
1fPUrqQHToex/ydRLeDQeK/vXrlEMQMuVgzbPQ==
-----END CERTIFICATE-----
subject=/description=Free SSL Cert apply URL: https://buy.wosign.com/free/CN=linux-notes.org
issuer=/C=CN/O=WoSign CA Limited/CN=WoSign CA Free SSL Certificate G2
---
No client certificate CA names sent
---
SSL handshake has read 7085 bytes and written 308 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : SSLv3
Cipher : DHE-RSA-AES256-SHA
Session-ID: 07D1105D9D66491B07BFF48CCEBE74DD7F041CB785F925D8C250559AD409067F
Session-ID-ctx: 
Master-Key: 5156660580D734635222A27C8492098A328020136FD50761C6FC426100F1B6F91BBD9D416E6DD009DBE9316529BDE1EB
Key-Arg : None
Start Time: 1433626802
Timeout : 7200 (sec)
Verify return code: 0 (ok)
---

Не забудьте заменить linux-notes.com на имя вашего домена или IP-адрес, и порт 443 на любого альтернативный который может быть с использован для подключения по SSL. Проверьте выход для текста:

# routines:SSL3_READ_BYTES:sslv3 alert handshake failure

Видим:

-bash: routines:SSL3_READ_BYTES:sslv3: command not found

Если вы видите что данная служба не поддерживает SSLv3. Это безопасно от уязвимости. Как у меня в примере выше, был включен SSLv3, то стоит ее выключить.

Выключенный SSLv3 выглядит так:

CONNECTED(00000003)

33685:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:/SourceCache/OpenSSL098/OpenSSL098-52.20.2/src/ssl/s3_pkt.c:1145:SSL alert number 40

33685:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:/SourceCache/OpenSSL098/OpenSSL098-52.20.2/src/ssl/s3_pkt.c:566:

Небольшой и удобный bash- скрипт для проверки poodle уязвимости:

#!/bin/bash
ret=$(echo Q | timeout 5 openssl s_client -connect "${1-`hostname`}:${2-443}" -ssl3 2> /dev/null)
if echo "${ret}" | grep -q 'Protocol.*SSLv3'; then
  if echo "${ret}" | grep -q 'Cipher.*0000'; then
    echo "SSL 3.0 disabled"
  else
    echo "SSL 3.0 enabled"
 fi
else
  echo "SSL disabled or other error"
fi

Думаю что все понятно.

Отключение SSLv3

К сожалению, нет простого способа сделать это. Так же, нет патча для установки и единственный способ решить эту проблему — отключить SSLv3 в любом приложении которые могут его использовать.

Уязвимость POODLE работает, только если браузер клиента и подключение сервера поддерживают SSLv3. Поэтому, отключив SSLv3 на вашей системе, вы также защиты своего клиента (ов) от данной уязвимости.

Отключение SSLv3 для Apache
Если вы работаете с веб-сервер Apache что в настоящее время позволяет использовать SSLv3, вам нужно будет изменить конфигурацию Apache.

На Debian и Ubuntu файл конфигурации лежит в/etc/apache2/mods-available/ssl.conf.

На CentOS/RedHat/Fedora  файл конфигурации лежит в/etc/httpd/conf.d/ssl.conf.

Вам нужно будет добавить следующую строку в конфигурацию Apache с другими директивами SSL.

[...]
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder on
#Если вы предпочитаете не использовать RC4:
#ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
#
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS +RC4 RC4";
[...]

Это позволит использовать все протоколы, кроме SSLv2 и SSLv3 (тоесть — SSLv1). Вы можете проверить ваши изменения конфигурации с помощью команды:

# apachectl configtest

Затем вам нужно будет перезапустить Apache.

В Ubuntu и Debian:

# service apache2 restart

В CentOS/RedHat/Fedora:

# systemctl restart httpd

Отключение SSLv3 для Apache on cPanel/WHM

Cpanel / WHM не позволяют редактировать файлы конфигурации Apache, и перезаписать большинство изменений, которые вносятся в них. Тем не менее, CPanel / WHM делет возможность конфигурирования SSL шифров для Apache на панели управления.

Для того, чтобы изменить шифров Apache, выполните следующие действия:

В WHM, введите Apache в поле поиска в левой боковой панели. Вы увидите конфигурацию Apache в списке меню. После нажатия на конфигурацию Apache, перейдите к глобальной конфигурации.
Пример этого показан ниже.

ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-SSLv3:-EXP:!kEDH

После сохранения страницы, вам будет предложено восстановить и перезапустить Apache. Изменения должны вступить в силу после того, как Apache был восстановлен заново.

Отключение SSLv3 для NGINX
Если вы работаете с веб-сервером NGINX, что в настоящее время тоже поддерживает использование SSLv3, необходимо изменить конфигурацию NGINX (nginx.conf). Вам нужно будет добавить следующую строку в ваш директивы сервера:

# vim /etc/nginx/nginx.conf

И прописать:

[...]
 ssl_session_cache shared:SSL:10m;
 ssl_session_timeout 5m;
 ssl on;
 ssl_certificate /etc/nginx/ssl/linux-notes.org.crt;
 ssl_certificate_key /etc/nginx/ssl/linux-notes.org.key;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers on;
 ssl_stapling on;
 ssl_dhparam /etc/nginx/ssl/dhparam.pem;
 ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!aECDH:EDH-DSS-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:kEECDH+AES128:kEECDH:kEDH:kRSA+AES128:kEDH+3DES:!LOW:!SEED:!IDEA:!SRP:!SSLv2:!SSLv3:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:!RC4:RC4:EECDH+AESGCM:AES256+EECDH:AES256+EDH:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-DES-CBC3-SHA:EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:!3DES:!DSS:RC4-MD5:RC4-SHA:DES-CBC-SHA:EDH-RSA-DES-CBC-SHA:EDH-DSS-DES-CBC-SHA:EXP-RC4-MD5:EXP-DES-CBC-SHA:EXP-EDH-RSA-DES-CBC-SHA:EXP-EDH-DSS-DES-CBC-SHA:DES-CBC3-MD5:DHE-DSS-AES128-SHA:RC2-CBC-MD5:DES-CBC-SHA:DES-CBC-MD5:EXP-RC2-CBC-MD5:EXP-RC2-CBC-MD5:ECDH-ECDSA-RC4-SHA:ECDH-ECDSA-AES128-SHA:ECDH-ECDSA-AES256-SHA:ECDH-RSA-RC4-SHA:ECDH-RSA-AES128-SHA:ECDH-RSA-AES256-SHA:ECDHE-ECDSA-RC4-SHA:ECDHE-RSA-RC4-SHA:ECDH-ECDSA-DES-CBC3-SHA:ECDH-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:NULL-MD5:NULL-SHA:IDEA-CBC-SHA:EXP-ADH-RC4-MD5:ADH-RC4-MD5:EXP-ADH-DES-CBC-SHA:ADH-DES-CBC-SHA:ADH-DES-CBC3-SHA:KRB5-DES-CBC-SHA:KRB5-RC4-SHA:KRB5-IDEA-CBC-SHA:KRB5-DES-CBC-MD5:KRB5-DES-CBC3-MD5:KRB5-RC4-MD5:KRB5-IDEA-CBC-MD5:EXP-KRB5-DES-CBC-SHA:EXP-KRB5-RC2-CBC-SHA:EXP-KRB5-RC4-SHA:EXP-KRB5-DES-CBC-MD5:EXP-KRB5-RC2-CBC-MD5:EXP-KRB5-RC4-MD5';
 keepalive_timeout 70;
 fastcgi_param SSL_VERIFIED $ssl_client_verify;
 fastcgi_param SSL_CLIENT_SERIAL $ssl_client_serial;
 fastcgi_param SSL_CLIENT_CERT $ssl_client_cert;
 fastcgi_param SSL_DN $ssl_client_s_dn;
 add_header Strict-Transport-Security max-age=15768000;
[...]

Настройка параметров DHE.

# cd /etc/nginx/ssl/ && openssl dhparam -out dhparam.pem 2048

Мои готовые конфиги лежат на сайте.

Это приведет к отключению SSLv3  на NGINX. Если вы не в состоянии найти директиву сервера в nginx.conf, вы, можете найти файл конфигурации VirtualHost.

Вы также должны перезагрузить сервер NGINX:

# service nginx restart

Отключение SSLv3 для Hiawatha
Если вы используете веб-сервер Hiawatha, то скорее всего, что SSLv3 уже по умолчанию отключена. Но если по какой-то причине вы используете старую версию, вы можете использовать параметр MinSSLversion в hiawatha.conf:

[...]
MinSSLversion = TLS1.0
# or TLS1.1 or TLS1.2
[...]

Затем перезагрузите Hiawatha.

Например, в Debian или Ubuntu:

# service hiawatha restart

Например, в CentOS/Fedora/RedHat:

# service hiawatha restart

Отключение SSLv3 для Postfix SMTP
Если ваша установка Postfix настроена на использования оппортунистического SSL, который означает, что шифрование не применяется и обычный текст принят, вам не нужно ничего менять. Однако, если вы работаете Postfix в режиме обязательного с использованием SSL, вы должны будете настроить конфигурацию и отразить следующие изменения:

[...]
smtpd_tls_mandatory_protocols=!SSLv2,!SSLv3
[...]

Отредактируем данную настрйку:

# vim /etc/postfix/main.cf

Это заставит Postfix SMTP не использовать SSLv3 или SSLv2. Вы также должны перезапустить Postfix:

# service postfix restart

Отключение SSLv3 для Dovecot
Это будет работать только с версией 2.1 и выше. Добавьте следующую строку в:

# vim /etc/dovecot/local.conf

или новый файл в:

# /etc/dovecot/conf.d/10-ssl.conf

И прописываем:

[...]
ssl_protocols = !SSLv2 !SSLv3
[...]

Перезапускаем Dovecot:

# service dovecot restart

Если вы работаете с версией Dovecot меньше чем 2.1, вам нужно будет редактировать исходный код Dovecot.

Отключение SSLv3 для Sendmail

Чтобы отключить SSLv3 в Sendmail нужно открыть файл .mc, который лежит в папке /etc/mail/ . Открываем и находим: LOCAL_CONFIG. В этом разделе поменять значение “+SSLv3” на “-SSLv3” у параметра SSLProtocol и добавить “!SSLv3” в SSLCipherSuite:

SSLProtocol -ALL -SSLv2 -SSLv3 +TLSv1
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:!LOW:!SSLv2:!SSLv3

После этого, пересобираем конфигурационный файл Sendmail и перезапускаем службу:

# make install & make restart

Отключение SSLv3 для HAProxy
Для того, чтобы отключить SSLv3 в HAProxy, вы должны использовать HAProxy 1.5+, а SSL не поддерживается в более ранних версиях HAProxy.

Отредактируйте файл:

# vim /etc/haproxy.cfg

Найдите строку, которая начинается с привязки и относится к порту 443 (SSL). Добавьте эту строку с не-SSLv3.

Пример будет следующий:

[...]
bind :443 ssl crt <crt> ciphers <ciphers> no-sslv3
[...]

Перезапускаем сервер HAproxy:

# service haproxy restart

Отключение SSLv3 для OpenVPN
На данный момент, OpenVPN не поддерживает SSLv3.  Поэтому, он не подвержен данную уязвимость и никаких изменений в конфигурационных  файлах делать не нужно.

Проверить ваш сайт на уязвимость, можно тут:

https://www.ssllabs.com/ssltest/index.html

Для примера, я свой сервер настроил достаточно безопасно, но хотя нужно кое-что доработать:

тестирование моего сервера на уязвимости в SSL

Отключение SSLv3 для уязвимости POODLE завершена.

The post Отключение SSLv3 для уязвимости POODLE first appeared on linux-notes.org.]]>
https://linux-notes.org/otklyuchenie-sslv3-dlya-uyazvimosti-poodle/feed/ 0
Page_c76a3fcf https://linux-notes.org/kak-ustanovit-tomcat-8-0-5-rc5-na-ubuntu/ https://linux-notes.org/kak-ustanovit-tomcat-8-0-5-rc5-na-ubuntu/#comments Wed, 30 Apr 2014 18:07:59 +0000 http://linux-notes.org/?p=1500 Как установить Tomcat 8.0.0 на Ubuntu 12.04/12.10/13.04/13.10/14.04/14.10 Apache Tomcat является сервером приложений на основе Java  выпущенный компанией Apache Software Foundation. Это веб-сервер и контейнер сервлетов для веб-приложений на Java. Установка Tomcat 8.0.5  на Ubuntu Перед установкой Tomcat 8.0.5 RC5, необходимо установить Java: # sudo apt-get install openjdk-7-jdk Теперь, скачаем Apache Tomcat 8.0.5 RC5: # cd /usr/local/src # […]

The post Как установить Tomcat 8.0.5 на Ubuntu first appeared on linux-notes.org.]]>

Как установить Tomcat 8.0.0 на Ubuntu 12.04/12.10/13.04/13.10/14.04/14.10

Apache Tomcat является сервером приложений на основе Java  выпущенный компанией Apache Software Foundation. Это веб-сервер и контейнер сервлетов для веб-приложений на Java.

Установка Tomcat 8.0.5  на Ubuntu

Перед установкой Tomcat 8.0.5 RC5, необходимо установить Java:

# sudo apt-get install openjdk-7-jdk

Теперь, скачаем Apache Tomcat 8.0.5 RC5:

# cd /usr/local/src
# wget http://apache.osuosl.org/tomcat/tomcat-8/v8.0.5/bin/apache-tomcat-8.0.5.tar.gz
# tar -xvf apache-tomcat-8.0.5.tar.gz
# sudo mv apache-tomcat-8.0.5 /usr/local/

Создание tomcat8 файл в /etc/init.d/

# sudo vim /etc/init.d/tomcat8
#!/bin/bash
export CATALINA_HOME=/usr/local/apache-tomcat-8.0.5
PATH=/sbin:/bin:/usr/sbin:/usr/bin
start() {
sh $CATALINA_HOME/bin/startup.sh
}
stop() {
sh $CATALINA_HOME/bin/shutdown.sh
}
case $1 in
start|stop) $1;;
restart) stop; start;;
*) echo "Run as $0 <start|stop|restart>"; exit 1;;
esac

Сейчас нужно изменить права доступа к файлу/ etc/init.d/tomcat8 для этого выполним:

# sudo chmod 755 /etc/init.d/tomcat8

Установить имя пользователя и пароль для управления tomcat:

# sudo vim /usr/local/apache-tomcat-8.0.5/conf/tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="captain" password="captain" roles="manager-gui,admin-gui"/>

У меня пользователь «captain» с таким же паролем, по этому, поменяйте на любое другое имя и так же на свой пароль!

Запустим Tomcat 8:

# sudo /etc/init.d/tomcat8 start

Проверим стартанул ли он:

# ps -aux | grep tomcat
запуск tomcat

запуск tomcat

и введите следующую команду, чтобы запустить службу автоматически во время перезагрузки:

# sudo update-rc.d tomcat8 747 defaults

Теперь откройте http://your_server_ip:8080 в вашем браузере. У меня это выглядит так:
http://78.140.189.243:8080/

apache-tomcat 8.0.5

apache-tomcat 8.0.5

Можно поклацать и настроить (он попросит ввести логин и пароль).

Tomcat server status

Tomcat server status

Тема «Как установить Tomcat 8.0.5 на Ubuntu» закончена, если возникли вопросы, то пишите мне. Я Вам постараюсь помочь.

The post Как установить Tomcat 8.0.5 на Ubuntu first appeared on linux-notes.org.]]>
https://linux-notes.org/kak-ustanovit-tomcat-8-0-5-rc5-na-ubuntu/feed/ 20