Архив

Редактировал(а) Антон Волков 2024/11/18 00:41

Блог - Публикации блога August 2024

авг. 10 2024

Настройка сервера NPS на базе Windows Server 2012R2

Установка и настройка роли сервера сетевых политик.

1. Включение роли

    Нажмите кнопку Пуск, выберите пункт Выполнить и введите CompMgmtLauncher, после чего нажмите клавишу ВВОД.
    В окне Диспетчер сервера в разделе Сводка по ролям выберите Добавить роли и нажмите кнопку Далее.
    Установите флажок службы политики сети и службы доступа и дважды нажмите кнопку Далее.

nps1.JPG
   

 Установите флаг Сервер политики сети нажмите кнопку Далее, а затем нажмите кнопку Установить.

 nps2.JPG

    Если установка завершена успешно, нажмите кнопку Закрыть.

    В окне Диспетчер сервера нажмите кнопку Закрыть.

2. Настройка сервера политики сети

    Запустить консоль сервера NAP можно через диспетчер сервера.

nps3.JPG

    Либо через консоль mmc путем добавление оснастки «Сервер политики сети».
    Далее необходимо зарегистрировать сервер в Active Directory.

    Для регистрации сервера необходим доступ администратора домена либо сервер уже должен быть членом группы «RAS and IAS Servers»

nps4.JPG

3. Создание RADIUS– клиента

    Для создание нового клиента нужно щелкнуть правой клавише мыши на представлении RADIUS—клиенты, выбрать Новый документ и ввести понятное имя клиента, ip—адрес и общий секрет.

nps5.JPG

    Изначально количество символов составляет 64, но не все устройства поддерживают такой длинный секрет.
Так же для удобства можно, создать шаблон с общим секретом во вкладке Управление шаблонами.

nps6.JPG

    При создании клиента можно выбрать шаблон секрета из списка

nps7.jpg

4. Создание сетевых политик

    Первым шагом необходимо зайти в представление «Политики запросов на подключение» и в политике создан-ной по умолчанию с именем «Использовать проверку подлинности Windows для всей пользователей» изменить значение на ежедневно с 00:00—24:00.

nps8.JPG

    В представлении «Сетевые политики» нам необходимо создать новую политику.

    Вводим имя политики и жмем Далее.

nps9.jpg

nps10.JPG

    На следующей вкладке добавляем новое условие. В данном случае указываем имя группы, которой хотим предо-ставить доступ, жмем Добавить группы, выбираем группу пользователей и нажимаем ОК.
Поскольку настройки политик для каждого вендора существенно различаются добавляем еще одно условие Понятное имя клиента , куда вводим часть имени RADIUS-клиента.

nps11.JPG

Знак ? подразумевает, что наше условие будет обрабатывать запросы на подключение от всех клиентов в имени которых присутствует Arlan.

nps12.JPG

На следующей вкладке выставляем флаг Доступ разрешен и жмем Далее

nps13.JPG

    Поскольку протокол PPP не поддерживает других методов проверки подлинности во вкладке Настройка методов про-верки подлинности ставим флаг «Проверка подлинности открытым текстом (PAP, SPAP)», остальные флажки можно снять.

nps14.JPG

Нажимаем Далее и у нас появляется следующее сообщение:

nps15.JPG

Нажимаем НЕТ и Далее.

Убираем флаг «Без шифрования» и жмем ОК.

172243324429-968.png

Настройка RADIUS на клиенте.

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

1. Настройка коммутаторов Allied Telesis AT8000s

На коммутаторе прописываем:
(Config)#aaa authentication login RADIUS radius enable
(Config)#aaa authentication login default radius local
(Config)#aaa accounting login radius

Для аутентификации через web:
(Config)#ip http authentication radius local
(Config)#ip https authentication radius local

Настраиваем клиент:
(Config)#radius-server host 10.1XX.XX.XX -- Ip адрес сервера RADIUS
(Config)#radius-server key ********* -- Общий секрет

Настраиваем политику сети
Полный доступ:

1722433614334-40.png

172243624177-203.png

Доступ только на чтение:

1722433657243-127.png

1722433663331-580.png

2. Настройка коммутаторов Brocade ICX

Настройка коммутатора:
(config)#aaa authentication web-server default radius local
(config)#aaa authentication enable default radius local
(config)#aaa authentication enable implicit-user
(config)#aaa authentication login default radius local
(config)#aaa authorization exec default radius
radius-server host 10.1XX.XXX.XXX -- адрес сервера RADIUS
radius-server key ****** -- Секретный ключ

Настраиваем политику сети
Полный доступ:
Добавляем новый параметр во вкладке «Параметры зависящие от поставщика», вводим код поставщика 1991, настраиваем атрибут с номером атрибута 1 и значением атрибута 0.

1722433956712-3112.png

Доступ только чтение
Добавляем новый параметр во вкладке «Параметры зависящие от поставщика», вводим код поставщика 1991, настраиваем атрибут с номером атрибута 1 и значением атрибута 5.

1722434024159-218.png

3 Настройка коммутаторов QTECH

Настройка коммутатора:
(config)#authentication line console login radius local
(config)#authentication line vty login radius local
(config)#authentication enable radius local
(config)#authorization line console exec radius local
(config)#authorization line vty exec radius local
(config)#aaa authorization config-commands
(config)#aaa-accounting enable
(config)#aaa enable
(config)#radius-server key *******
(config)#radius-server authentication host 10.XXX.XXX.XXX
(config)#radius-server accounting host 10.XXX.XXX.XXX

Настройка политики сети
Полный доступ:

1722434141894-339.png

Доступ только чтение:

1722434208797-686.png

4. Настройка коммутаторов Cisco

Настройка коммутатора:
(config) #aaa new-model
(config) #aaa authentication login default group radius local
(config) #aaa authentication enable default group radius enable
(config) #aaa authentication ppp default group radius local
(config) #aaa authorization exec default group radius local
(config) #radius-server host 10.XXX.XXX.XXX
(config) #radius-server key *********************

 Только чтение:

1722434277495-250.png

5. Настройка коммутаторов Arlan

Настройка коммутатора:
aaa authentication dot1x default radius
aaa authentication login default radius local
radius-server deadtime 0
radius-server host 10.XXX.XXX.XXX auth-port 1812 priority 0
radius-server key ************
radius-server retransmit 3
radius-server timeout 3
Настройка сетевой политики осуществляется аналогично cisco

авг. 10 2024

Настройка MPIO на Windows Server

Данная инструкция подходит для Windows Server 2012 и выше...

Включение компонента MPIO

Через PowerShell выполняем команду :

Add-WindowsFeature -Name 'Multipath-IO'

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

Get-WindowsFeature -Name 'Multipath-IO'

После установки компонента MPIO, Microsoft добавляет свой DSM (Vendor 8Product), но нам его может оказаться недостаточно, по этому добавляем дополнительный  девайс MPIO на примере IBM STORWIZE V7000 следующей командой:

New-MSDSMSupportedHw -VendorId IBM -ProductId 2145

Мы можем проверить добавилось ли устройство командой:

Get-MSDSMSupportedHw

Вывод команды: 

VendorId ProductId
-------- ---------
Vendor 8 Product       16
IBM      2145
 

 Мы видим, что наше устройство было добавлено.

В моем случае у меня установлен всего один хостовый FC адаптер, по этому настройку завершить, но если у вас подключено несколько адаптеров или имеется несколько портов на одном адаптере и все они подключены к СХД, то в итоге мы увидим один и тот же LUN в нескольких экземпляров. Что бы такого не произошло нам необходимо настроить балансировщик MSDSM.

Для проверки можем выполнить команду:

Get-MSDSMAutomaticClaimSettings

Name                         Value
----                               -----
iSCSI                          False
SAS                            False 

 Настроить его можно через утилиту mpclaim.exe:

В нашем случае просто выполним: mpclaim.exe -r -i -a ""

Параметр

 

Значение

 

Описание

 

-r

 

Restart_option

 

Автоматическая перезагрузка без запроса

 

-n

 

 

Подавление запроса на перезагрузку.

 

-i

 

Install_switch

 

Установка MPIO и добавления поддержки нескольких путей для устройства хранения

 

-u

 

 

Удаление MPIO и отмена поддержки устройства хранения

 

-d

 

<device_hwid>

 

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

 

-a

 

 

Применение поддержки MPIO ко всем совместимым устройствам.

 

-c

 

 

Применение поддержки MPIO только к устройствам, совместимым с SPC-3. Этот параметр применим только при установке. При удалении MPIO (с помощью параметра -u для install_switch) переключатель -c будет восприниматься командой как переключатель -a.

 

 

<device_hwid>

 

Коды устройств, которые будут поддерживаться MPIO, в формате VendorProduct, где Vendor - это имя производителя или поставщика, а Product - это название продукта или модели. Несколько кодов должны отделяться друг от друга пробелами. Этот параметр используется только с переключателем устройства -d.

 

Примечание

После выполнения всех действий нам необходимо узнать WWN нашего адаптера, сделать это можно утилитой fcinfo и если сервер подключен через FC коммутатор, необходимо настроить zones (что бы понять как лучше сделать, необходимо читать документацию производителя оборудования, у всех рекомендации разные) или просто удалить зоны с коммутатора.

Только после этого мы можем заходить на полку и отдавать LUN хосту.

авг. 10 2024

Установка Tomcat на FreeBSD для xwiki

Установка Tomcat

Будем рассматривать установку tomcat на freeBSD 14.1 для развертывания xwiki в качестве примера.

Установка пакетов

Поскольку последняя xwiki поддерживает версию tomcat не выше 9, да и то с определенными оговорками

будем ставить версию 8.5, для этого посмотрим какие пакеты есть в репозитории:

root@jail:~ # pkg search tomcat
tomcat-devel-11.0.0.m22        Open-source Java web server by Apache, 11.0.x branch
tomcat-native-1.3.0_1          Tomcat native library
tomcat-native2-2.0.7           Tomcat native library
tomcat101-10.1.26              Open-source Java web server by Apache, 10.1.x branch
tomcat85-8.5.100               Open-source Java web server by Apache, 8.5.x branch
tomcat9-9.0.91                 Open-source Java web server by Apache, 9.0.x branch
root@jail:~ # pkg install tomcat85
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
The following 28 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
        alsa-lib: 1.2.12
        apache-commons-daemon: 1.4.0
        brotli: 1.1.0,1
        dejavu: 2.37_3
        fontconfig: 2.15.0_3,1
        freetype2: 2.13.2
        giflib: 5.2.2
        java-zoneinfo: 2021.e
        javavmwrapper: 2.7.10
        libICE: 1.1.1,1
        libSM: 1.2.3_1,1
        libX11: 1.8.9,1
        libXau: 1.0.9_1
        libXdmcp: 1.1.5
        libXext: 1.3.6,1
        libXfixes: 6.0.0_1
        libXi: 1.8_1,1
        libXrender: 0.9.10_2
        libXt: 1.3.0,1
        libXtst: 1.2.3_3
        libfontenc: 1.1.8
        libinotify: 20211018_1
        libxcb: 1.17.0
        mkfontscale: 1.2.3
        openjdk8: 8.412.08.1
        png: 1.6.43
        tomcat85: 8.5.100
        xorgproto: 2024.1

Number of packages to be installed: 28

The process will require 248 MiB more space.
103 MiB to be downloaded.

Proceed with this action? [y/N]:

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

/usr/local/apache-tomcat-8.5/webapps/host-manager/META-INF/context.xml

/usr/local/apache-tomcat-8.5/webapps/manager/META-INF/context.xml

и правим ip адрес с которого планируем подключаться к панели менеджера в блоке allow=:

<Context antiResourceLocking="false" privileged="true" >
 <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
                  sameSiteCookies="strict" />
 <Valve className="org.apache.catalina.valves.RemoteAddrValve"
        allow="10\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
 <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

Добавляем пользователя и назначаем ему роли, редактируя файл /usr/local/apache-tomcat-8.5/conf/tomcat-users.xml 

<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="P@ssw0rd" roles="manager-gui,admin-gui"/>
</tomcat-users>

Добавляем службу tomcat в rc.conf и запускаем:

root@jail:~ # sysrc tomcat85_enable="YES"
tomcat85_enable:  -> YES
root@jail:~ # service tomcat85 start

Теперь можем зайти по адресу http://x.x.x.x:8080, что бы проверить все ли у нас работает.

1723112667346-190.png

Установка xwiki

Для установки xwiki нам необходимо скачать Serverlet Container с расширением .war (Можно отсюда: https://www.xwiki.org/xwiki/bin/view/Download/DownloadVersion/?projectVersion=16.6.0 ).

После того как скачали наш файлик советую его переименовать например просто в xwiki.war.

Закидываем его в каталог /usr/local/apache-tomcat-8.5/webapp

Заходим в Manager-App через веб-интерфейс ииии..... видим, что наше приложение не запускается.

А все из-за того что версия tomcat 8.5 тянет с собой зависимости openjdk8: 8.412.08.1, а нам нужна минимум 17 версия.

Ну что ж ставим 17 версию:

root@jail:~ # pkg install openjdk17 openjdk17-jre

Теперь, что бы tomcat понял, что ему надо использовать именно 17 версию джавы, нам необходимо дописать строчку tomcat85_java_home="/usr/local/openjdk17" в /etc/rc.conf

Перезапускаем tomcat и проверяем, что он использует именно 17, а не 8 версию джава:

root@jail:/ # ps -aux | grep tomcat
root 74176  0.0  0.0   12940    2064  -  IsJ  11:12   0:00.00 /usr/local/bin/jsvc -java-home /usr/local/openjdk17 -server -user www -umask 0077

Проверяем, что приложение xwiki у нас запустилось через host-manager и переходим к установке СУБД и настройке соединения с ней.

Установка Postgresql

В качестве СУБД для XWIKI я использовал postgresql, почему ? Да просто мне так больше нравится.

Ставим пакеты:

root@jail:/ # pkg install postgresql16-server postgresql16-client

Добавляем сервис:

root@jail:/ # sysrc postgresql_enable="YES"
postgresql_enable: YES -> YES
root@jail:/ #

Инициализируем СУБД:

root@jail:/ # postgresql initdb

Далее необходимо отредактировать конфигурационные файлы:

В файле /var/db/postgres/data16/postgresql.conf отредактировать параметр listen_addresses = 'X.X.X.X', где указываем адрес нашего pgsql сервера.

В файле /var/db/postgres/data16/pg_hba.conf  правим блоки с ADDRESS и METHOD.

# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             all                                     trust
# IPv4 local connections:
host    all             all             10.0.0.0/8            scram-sha-256

В блоке ADDRESS указываем адреса откуда мы сможем присоединяться к СУБД, а в блоке METHOD указываем метод аутентификации, в нашем случае  scram-sha-256 аутентификация по шифрованному паролю.

Перезапускаем службу и цепляемся к серверу СУБД и меняем пользователю postgres пароль:

root@jail:/ # psql -U postgres
psql (16.3)
Type "help" for help.

postgres=# passwd postgres

Cоздаем базу данных xwiki:

CREATE DATABASE xwiki;

Создаем пользователя и даем права на базу

CREATE USER xwiki with encrypted password 'P@ssw0rd';
GRANT ALL PRIVILEGES on database xwiki to xwiki;

P.S. В некоторых случаях потребуется создать схему xwiki в базе данных и сделать владельцем пользователя xwiki.

Что бы наше приложение могло соединяться с СУБД Postgresql, нам надо скачать драйвер odbc postgresql-42.7.3.jar и положить в каталог /usr/local/apache-tomcat-8.5/webapps/xwiki/WEB-INF/lib/

Редактируем конфиг /usr/local/apache-tomcat-8.5/webapps/xwiki/WEB-INF/hibernate.cfg.xml и добавляем туда следующий текст (а лучше заменяем):

<!--
  ~ Hibernate, Relational Persistence for Idiomatic Java
  ~
  ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
  ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
  -->

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">


<hibernate-configuration>
       <session-factory>
               <property name="connection.url">jdbc:postgresql://x.x.x.x/xwiki</property> <!-- BD Mane -->
               <property name="connection.driver_class">org.postgresql.Driver</property> <!-- DB Driver -->
               <property name="connection.username">xwiki</property> <!-- DB User -->
               <property name="connection.password">P@ssw0rd</property> <!-- DB Password -->
               <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
               <property name="jdbc.use_streams_for_binary">false</property>
               <property name="xwiki.virtual_mode">schema</property>
               <mapping resource="xwiki.postgresql.hbm.xml"/>
               <mapping resource="feeds.hbm.xml"/>
               <mapping resource="notification-filter-preferences.hbm.xml"/>
               <mapping resource="activitystream.hbm.xml"/>
               <mapping resource="instance.hbm.xml"/>
       </session-factory>
</hibernate-configuration>

 Перезапускаем tomcat и заходим в менеджер приложений http://x.x.x.x:8080/manager/html

1723111316578-101.png

Видим, что наше приложение запущено, жмем на него и ждем когда закончится инициализация и создание схемы базы данных.

Установка Nginx

Теперь необходимо установить nginx, который мы будем использовать в качестве обратного прокси, а так же для настройки ssl.

# pkg install nginx

Открываем /usr/local/etc/nginx.conf.

Конфиг у нас будет выглядеть следующим образом:

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
server {
  server_name xwiki.krasikra.com;
    client_max_body_size 1000m; #Размер вложений для загрузки\скачивания
   listen 443 ssl;
    ssl_certificate /etc/ssl/xwiki.pem;
    ssl_certificate_key /etc/ssl/example.key;

  location / {
    rewrite ^ $scheme://$server_name/xwiki$request_uri? permanent;
       }
  location ^~ /xwiki {
    proxy_http_version 1.1; # Директива используется для указания версии протокола HTTP, которую Nginx должен использовать при общении с Tomcat
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #Переменная $proxy_add_x_forwarded_for содержит полученный заголовок X-Forwarder-For плюс добавляет свой сервер в этот список.
   proxy_set_header X-Real-IP $remote_addr; #Эти заголовки содержать содержат ip адрес и порт с которого подключается клиент
   proxy_set_header  X-Forwarded-Proto https; # Этот заголовок передает бэкенду протокол, который используется клиентом.
   proxy_pass http://127.0.0.1:8080; # куда будем проксировать, то есть на 127.0.0.1:8080 в каталог /wiki.
   proxy_redirect off;
#    return 301 https://$host$request_uri;
       }
 }

upstream xwiki {
  server     127.0.0.1:8080;
}

server {
   if ($host = xwiki.example.com) {
       return 301 https://$host$request_uri;
   } # managed by Certbot


  listen 80;
  server_name xwiki.example.com;
   return 404;
}
}
root@xwiki:/home/xwiki #

  Далее открываем  /usr/local/apache-tomcat-8.5/conf/server.xml и добавляем следующий блок:

    <Connector port="8080" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443"
              maxParameterCount="1000"
              scheme="https"
              proxyName="vawiki.duckdns.org"
              proxyPort="443"/>

Перезапускаем nginx и tomcat и пробуем зайти по имени хоста или адресу, который слушает nginx.

Установка Certbot

Что бы включить https нам нужно скачать скрипт certbot:

# pkg install py311-certbot-nginx

Если в репозиториях по каким то причинам отсутствует пакет certbot, то можно скачать скрипт с официального сайта:

wget -O /usr/local/bin/certbot-auto https://dl.eff.org/certbot-auto
chmod +x /usr/local/bin/certbot-auto
ln -s /usr/local/bin/certbot-auto /usr/local/bin/certbot

Запускаем скрипт certbot где параметр -d указывает на имя нашего доменного имени для которого необходимо выдать сертификат.

# certbot --nginx -d xwiki.hostname.com

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

Скрипт сам установит все необходимые сертификаты и внесет изменения в конфигурацию nginx.

Поскольку сертификат Let's Encrypt выдается всего на 90 дней то необходимо создать в cron задание на обновление сертификатов.

# crontab -e

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

 0 0,12 * * * /usr/local/bin/certbot renew

Все!