From 3993de1b95bc9c2238c4e42fe87071d893394dae Mon Sep 17 00:00:00 2001 From: igor Date: Sun, 20 Apr 2025 11:38:25 +0500 Subject: [PATCH] =?UTF-8?q?=D0=92=D0=B0=D0=B7=D1=83=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HAProxy_install.md | 51 +++++++++--------- Nginx_install.md | 90 +++++++++++++++++++++++++++++++ PostgreSQL_install.md | 10 +++- PowerDNS_install.md | 29 ++++++---- PowerDNS_install_SQIite3.md | 4 -- Traefik_install.md | 24 +++++++++ Ubuntu.md | 67 ----------------------- Wazuh_install.md | 104 ++++++++++++++++++++++++++++++++++++ 8 files changed, 272 insertions(+), 107 deletions(-) create mode 100644 Nginx_install.md create mode 100644 Wazuh_install.md diff --git a/HAProxy_install.md b/HAProxy_install.md index f808aa4..f0bc7e4 100644 --- a/HAProxy_install.md +++ b/HAProxy_install.md @@ -8,7 +8,7 @@ ssh administrator@10.101.1.3 -p 22 ``` Connect to CCALM Turkish infrastructure: ```sh -ssh igor@156.244.31.209 -p 2200 +ssh igor@88.218.94.134 -p 2200 ``` ---------------------------------------------------------------------------------------------------- ## Install haproxy @@ -26,29 +26,29 @@ sudo cp /etc/haproxy/haproxy.cfg{,.bak} В конец файла добавляем пока только для перенаправления (для балансироки больше IP адресов): ```conf frontend frontend-http -bind *:80 -mode http + bind *:80 + mode http - # ACL для определения запросов на проверку Let's Encrypt - acl is_certbot path_beg /.well-known/acme-challenge/ + # ACL для определения запросов на проверку Let's Encrypt + acl is_certbot path_beg /.well-known/acme-challenge/ - # Если это не запрос Let's Encrypt, перенаправляем на HTTPS - http-request redirect scheme https code 301 unless is_certbot + # Если это не запрос Let's Encrypt, перенаправляем на HTTPS + http-request redirect scheme https code 301 unless is_certbot - # Отправляем запросы Let's Encrypt на backend-certbot - use_backend backend-certbot if is_certbot + # Отправляем запросы Let's Encrypt на backend-certbot + use_backend backend-certbot if is_certbot - frontend LOADBALANCER-01 - bind *:80 - bind *:443 ssl crt /etc/haproxy/ssl/mqtt.kz.pem crt /etc/ssl/certs/bigfoottrade_kz.pem - mode http #режим работы HAProxy, в http режиме происходит анализ Layer 7 трафика - option httpclose #Закрывает пассивные соединения +frontend LOADBALANCER-01 + bind *:80 + bind *:443 ssl crt /etc/haproxy/ssl/mqtt.kz.pem crt /etc/ssl/certs/bigfoottrade_kz.pem + mode http #режим работы HAProxy, в http режиме происходит анализ Layer 7 трафика + option httpclose #Закрывает пассивные соединения - http-request set-header x-Forwarded-for %[src] - http-request set-header x-Forwarded-uri %[url] + http-request set-header x-Forwarded-for %[src] + http-request set-header x-Forwarded-uri %[url] - acl v_geoserver2 hdr(host) -i geoserver2.ccalm.org - use_backend geoserver2_ccalm_org if v_geoserver2 + acl v_geoserver2 hdr(host) -i geoserver2.ccalm.org + use_backend geoserver2_ccalm_org if v_geoserver2 #Если различные нестандартные порты то так acl v_locust_kz hdr_reg(host) -i ^locust\.kz(:.*)?$ @@ -58,13 +58,13 @@ mode http acl v_geo_data hdr(host) -i geoserver2.ccalm.org/data use_backend WEBSERVERS-01 if v_geo_data + default_backend WEBSERVER - default_backend WEBSERVERS-01 +backend WEBSERVER + balance roundrobin + server web1 127.0.0.1:8080 check inter 5s ssl verify none + option httpchk GET /index.html - backend WEBSERVERS-01 - balance roundrobin - server web10 127.0.0.1:8081 check inter 5s ssl verify none - option httpchk backend geoserver2_ccalm_org balance roundrobin @@ -150,7 +150,7 @@ backend 'transit_monitoring_kz' has no server available! Бесплатный SSL сертификат Let’s Encrypt для HAPROXY https://serversforhackers.com/c/letsencrypt-with-haproxy ```sh sudo apt-get update - sudo apt-get install -y certbot + sudo apt-get install certbot -y ```` Для удаления PPA нужно выполнить: ```sh @@ -189,6 +189,9 @@ backend 'transit_monitoring_kz' has no server available! Перезагрузить и выполнить команду: ```sh + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d powerdns.geovizor.top --email irigm@mail.ru --agree-tos --non-interactive + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d geovizor.top --email irigm@mail.ru --agree-tos --non-interactive + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d locust.kz --email irigm@mail.ru --agree-tos --non-interactive certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d gotify.locust.kz --email irigm@mail.ru --agree-tos --non-interactive certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d git.ccalm.org --email irigm@mail.ru --agree-tos --non-interactive diff --git a/Nginx_install.md b/Nginx_install.md new file mode 100644 index 0000000..3ce7864 --- /dev/null +++ b/Nginx_install.md @@ -0,0 +1,90 @@ +Установка nginx по инсткукции с сайта: https://www.8host.com/blog/sozdanie-samopodpisannogo-ssl-sertifikata-dlya-nginx-v-ubuntu-18-04/ +**************************************************************************************************** +## 2. Подключаемся к нужному серверу +```sh +ssh igor@192.168.200.85 -p 22 +``` +Connect to CCALM Georgia infrastructure: +```sh +ssh igor@88.218.94.134 -p 2200 +``` +---------------------------------------------------------------------------------------------------- +```sh +sudo apt-get update && +sudo apt-get install nginx +``` +Настройка самоподписанного сертификата для SSL nginx +```sh + sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt +``` +Самой важной строкой является Common Name (введите FQDN или свое имя). Как правило, в эту строку вносят доменное имя, с которым нужно связать сервер. В случае если доменного имени нет, внесите в эту строку IP-адрес сервера. +```sh + sudo openssl dhparam -out /etc/nginx/dhparam.pem 4096 +``` +Создаём файл: +```sh + sudo mcedit /etc/nginx/conf.d/ssl.conf +``` +И вписываем в него: +```conf +server { + listen 8091 ssl http2; + listen [::]:8091 ssl http2; + + server_name istransit.kg; + + ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; + ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; + ssl_dhparam /etc/nginx/dhparam.pem; + + root /opt/www/istransit.kg; + index index.html index.htm; + + location / { + try_files $uri $uri/ =404; # Попытка найти файл или возвращение 404 + } +} +``` +```sh + sudo systemctl restart nginx +``` + +Также есть такие команды: + nginx -s stop — быстрое завершение + nginx -s quit — плавное завершение + nginx -s reload — перезагрузка конфигурационного файла + nginx -s reopen — переоткрытие лог-файлов + +Создаю виртуальный хост: +```sh + sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/istransit.kz +``` +```sh + sudo mcedit /etc/nginx/sites-available/aistransit.kz +``` +Модифицируем текст настройки: +```sh +cd /etc/nginx/sites-available/ && +sudo tee geovizor.top > /dev/null <<'EOF' +server { + listen 8081; + listen [::]:8081; + + root /opt/www/istransit.kz; + index index.html; + + server_name istransit.kz www.istransit.kz; + + location / { + try_files $uri $uri/ =404; + } +} +EOF +``` + +Теперь можно включить виртуальный хост: + sudo ln -s /etc/nginx/sites-available/istransit.kz /etc/nginx/sites-enabled/ +Проверяем правильность конфигурации: + sudo nginx -t +Перезапускаем: + sudo systemctl restart nginx \ No newline at end of file diff --git a/PostgreSQL_install.md b/PostgreSQL_install.md index 1709109..c5d30d2 100644 --- a/PostgreSQL_install.md +++ b/PostgreSQL_install.md @@ -71,7 +71,10 @@ CREATE DATABASE CCALM LC_CTYPE = 'ru_RU.UTF-8' CONNECTION LIMIT = -1; -Файл настроек postgresql: sudo mcedit /etc/postgresql/16/main/postgresql.conf +Файл настроек postgresql: +```sh +sudo mcedit /etc/postgresql/16/main/postgresql.conf +``` listen_addresses='*' #Разрешить подключение с внешки #Для 9й версии разрешаем экранирующие символы \' и другие без спец символа "E" перед строкой backslash_quote = on @@ -93,7 +96,10 @@ CREATE DATABASE CCALM \dt для отображения всех таблиц или написать со своим IP: host all all 2.133.238.240/24 trust -Для подключения с любых IP адресов в "sudo mcedit /etc/postgresql/16/main/pg_hba.conf" прописать: +Для подключения с любых IP адресов в " +```sh +sudo mcedit /etc/postgresql/16/main/pg_hba.conf +``` host all all 0.0.0.0/0 md5 Либо с одного конкретного то: host all all 92.46.48.37/24 md5 А также поменять на listen_addresses = '*' в postgresql.conf diff --git a/PowerDNS_install.md b/PowerDNS_install.md index 17c884c..0b88c44 100644 --- a/PowerDNS_install.md +++ b/PowerDNS_install.md @@ -4,9 +4,9 @@ ```sh ssh igor@192.168.200.85 -p 22 ``` -Connect to CCALM Turkish infrastructure: +Connect to CCALM Georgia infrastructure: ```sh -ssh igor@156.244.31.209 -p 2200 +ssh igor@88.218.94.134 -p 2200 ``` **************************************************************************************************** DynDNS на PowerDNS авторитативный сервер тот кто отвечает на те домены которые в его базе (рекурсивный присылает авторитативному запросы) @@ -59,7 +59,7 @@ also-notify=127.0.0.1 include-dir=/etc/powerdns/pdns.d launch= -local-address=156.244.31.209,127.0.0.1 +local-address=88.218.94.134,127.0.0.1 local-port=53 log-dns-details=on @@ -68,9 +68,9 @@ log-timestamp=yes loglevel=4 webserver=yes -webserver-address=156.244.31.209 +webserver-address=127.0.0.1 webserver-allow-from=::/0, 0.0.0.0/0 -webserver-port=8081 +webserver-port=8091 master=yes slave=no @@ -87,7 +87,7 @@ EOF ``` Пытаемся открыть WEB интерфейс ```sh -start http://192.168.200.85:8081 +start http://88.218.94.134:8081 ``` Если всё норм выполняем: @@ -115,9 +115,15 @@ sudo pdnsutil add-record test ccalm A 192.168.200.184 ```sh sudo pdnsutil create-zone geovizor.top ns1.geovizor.top && sudo pdnsutil replace-rrset geovizor.top @ SOA "ns1.geovizor.top admin.geovizor.top $(date +%Y%m%d)01 10800 3600 604800 3600" && -sudo pdnsutil add-record geovizor.top ns1 A 156.244.31.209 && -sudo pdnsutil add-record geovizor.top @ A 156.244.31.209 && -sudo pdnsutil add-record geovizor.top * A 156.244.31.209 +sudo pdnsutil add-record geovizor.top ns1 A 88.218.94.134 && +sudo pdnsutil add-record geovizor.top ns2 A 88.218.94.134 && +sudo pdnsutil add-record geovizor.top @ A 88.218.94.134 && +sudo pdnsutil add-record geovizor.top * A 88.218.94.134 && +sudo pdnsutil add-record geovizor.top @ CAA 3600 "0 issue \"letsencrypt.org\"" && +sudo pdnsutil add-record geovizor.top @ TXT 3600 "\"v=spf1 ip4:88.218.94.134 -all\"" && +sudo pdnsutil add-record geovizor.top @ MX 3600 "10 mail.geovizor.top." && +sudo pdnsutil add-record geovizor.top mail A 3600 88.218.94.134 && +sudo pdnsutil add-record geovizor.top powerdns A 3600 88.218.94.134 ``` Выше задал такие настройки как ```conf @@ -141,7 +147,10 @@ dig @127.0.0.1 -p 5300 ccalm.test A dig @127.0.0.1 -p 53 geovizor.top A ``` ```sh -dig @156.244.31.209 -p 53 geovizor.top A +dig @88.218.94.134 -p 53 geovizor.top A +``` +```sh +dig @88.218.94.134 -p 53 powerdns.geovizor.top A ``` ### Теперь можно настроить HTTPS для взаимодействия через API с сервером для динамического задания IP адресов diff --git a/PowerDNS_install_SQIite3.md b/PowerDNS_install_SQIite3.md index 8d96199..ab26fd9 100644 --- a/PowerDNS_install_SQIite3.md +++ b/PowerDNS_install_SQIite3.md @@ -1,7 +1,3 @@ -```sh - sudo apt-get install pdns-backend-sqlite3 -y -``` - Для использования SQLIte копируем схему из https://doc.powerdns.com/authoritative/backends/generic-sqlite3.html ```sh sudo apt-get install pdns-backend-sqlite3 -y diff --git a/Traefik_install.md b/Traefik_install.md index 9bdbca3..0653981 100644 --- a/Traefik_install.md +++ b/Traefik_install.md @@ -121,6 +121,16 @@ http: middlewares: - strip-dbms-prefix + ccalm-translation: + rule: "Host(`ccalm.test`) && PathPrefix(`/api/translation/v01/`)" + service: org_ccalm_translation_v01 + entryPoints: + - websecure + tls: + certresolver: myresolver + middlewares: + - strip-translation-prefix + ccalm-login: rule: "Host(`ccalm.test`) && PathPrefix(`/login/`)" service: org_ccalm_login_v01 @@ -153,6 +163,10 @@ http: stripPrefix: prefixes: - "/api/dbms/v09" + strip-dbms-prefix: + stripPrefix: + prefixes: + - "/api/translation/v01" services: @@ -185,6 +199,16 @@ http: path: "/" interval: "5s" + # Бэкенд для org_ccalm_translation_v01 (HTTPS с отключенной проверкой SSL) + org_ccalm_translation_v01: + loadBalancer: + servers: + - url: "https://192.168.200.184:8085" + serversTransport: insecureTransport + healthCheck: + path: "/" + interval: "5s" + # Бэкенд для org_ccalm_login_v01 (HTTP, без SSL) org_ccalm_login_v01: loadBalancer: diff --git a/Ubuntu.md b/Ubuntu.md index 6c75866..8739471 100644 --- a/Ubuntu.md +++ b/Ubuntu.md @@ -2531,73 +2531,6 @@ Config: https://oauth2:glpat-sKQh2x88gsmZbBCz4SfJ@git.istt.kz/transit/dispatcher/kz.istransit.dispatcher - - -**************************************************************************************************** -Установка nginx по инсткукции с сайта: https://www.8host.com/blog/sozdanie-samopodpisannogo-ssl-sertifikata-dlya-nginx-v-ubuntu-18-04/ - sudo apt-get update - sudo apt-get install nginx -Настройка самоподписанного сертификата для SSL nginx - sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt -Самой важной строкой является Common Name (введите FQDN или свое имя). Как правило, в эту строку вносят доменное имя, с которым нужно связать сервер. В случае если доменного имени нет, внесите в эту строку IP-адрес сервера. - sudo openssl dhparam -out /etc/nginx/dhparam.pem 4096 -Создаём файл: - sudo mcedit /etc/nginx/conf.d/ssl.conf -И вписываем в него: - -server { - listen 8091 ssl http2; - listen [::]:8091 ssl http2; - - server_name istransit.kg; - - ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; - ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; - ssl_dhparam /etc/nginx/dhparam.pem; - - root /opt/www/istransit.kg; - index index.html index.htm; - - location / { - try_files $uri $uri/ =404; # Попытка найти файл или возвращение 404 - } -} - - - sudo systemctl restart nginx - -Также есть такие команды: - nginx -s stop — быстрое завершение - nginx -s quit — плавное завершение - nginx -s reload — перезагрузка конфигурационного файла - nginx -s reopen — переоткрытие лог-файлов - -Создаю виртуальный хост: - sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/istransit.kz - sudo mcedit /etc/nginx/sites-available/aistransit.kz - -Модифицируем текст настройки: -server { - listen 8081; - listen [::]:8081; - - root /opt/www/istransit.kz; - index index.html; - - server_name istransit.kz www.istransit.kz; - - location / { - try_files $uri $uri/ =404; - } -} - -Теперь можно включить виртуальный хост: - sudo ln -s /etc/nginx/sites-available/istransit.kz /etc/nginx/sites-enabled/ -Проверяем правильность конфигурации: - sudo nginx -t -Перезапускаем: - sudo systemctl restart nginx - **************************************************************************************************** Как установить и настроить Elasticsearch, Logstash, Kibana (ELK Stack) на Ubuntu, Debian, Centos: https://portforwarded.com/install-elastic-elk-stack-8-x-on-ubuntu-22-04-lts/ или https://serveradmin.ru/ustanovka-i-nastroyka-elasticsearch-logstash-kibana-elk-stack/ diff --git a/Wazuh_install.md b/Wazuh_install.md new file mode 100644 index 0000000..5ad317f --- /dev/null +++ b/Wazuh_install.md @@ -0,0 +1,104 @@ + +https://documentation.wazuh.com/current/installation-guide/wazuh-server/installation-assistant.html + +Подключаемся к нужному серверу: +```sh +ssh igor@192.168.200.86 +``` + +```sh +curl -sO https://packages.wazuh.com/4.11/wazuh-install.sh +sudo bash wazuh-install.sh -a +``` + +```sh +start https://192.168.200.86:443 +``` +Компонент Порт по умолчанию Доступ +Wazuh API 55000 Внутренний +Wazuh Dashboard 5601 Веб-интерфейс +OpenSearch (Indexer) 9200 Только для внутреннего использования + +Доступ к Dashboard: +Перейди в браузере: https://:5601 +Пользователь по умолчанию: admin +Пароль: будет сгенерирован и выведен в консоли в конце установки + + +Альтернативно: ручная установка +Если нужен кластер, тюнинг или раздельная установка компонентов, можно ставить по частям: + +Wazuh Indexer (OpenSearch) → инструкция + +Wazuh Dashboard → инструкция + +Wazuh Manager (сервер) → инструкция + + +Для теста разбора лога вызвать: +```sh +sudo /var/ossec/bin/wazuh-logtest +``` +И вставить строку: +```json +{"exception":"","data":{"_data":"Создание роли для пользователя: anton@rebez.ru роль: Translator","_date":"2025-04-18T05:12:14.607513","user_id":156,"group_id":15,"del":false,"_user_id":3,"id":453},"level":"INFO","logger":"history","thread":"main","message":"Иванов Igor IW2 Михайлович: Создание роли для пользователя: anton@rebez.ru роль: Translator","timestamp":"2025-04-18T05:12:14.607Z"} +``` +У меня выдало: +```log +**Phase 1: Completed pre-decoding. + full event: '{"exception":"","data":{"_data":"Создание роли для пользователя: anton@rebez.ru роль: Translator","_date":"2025-04-18T05:12:14.607513","user_id":156,"group_id":15,"del":false,"_user_id":3,"id":453},"level":"INFO","logger":"history","thread":"main","message":"Иванов Igor IW2 Михайлович: Создание роли для пользователя: anton@rebez.ru роль: Translator","timestamp":"2025-04-18T05:12:14.607Z"}' + +**Phase 2: Completed decoding. + name: 'json' + data._data: 'Создание роли для пользователя: anton@rebez.ru роль: Translator' + data._date: '2025-04-18T05:12:14.607513' + data._user_id: '3' + data.del: 'false' + data.group_id: '15' + data.id: '453' + data.user_id: '156' + level: 'INFO' + logger: 'history' + message: 'Иванов Igor IW2 Михайлович: Создание роли для пользователя: anton@rebez.ru роль: Translator' + thread: 'main' + timestamp: '2025-04-18T05:12:14.607Z' +``` + +Проверяем упоминание файла history в логе: +```sh +sudo less /var/log/wazuh-indexer/wazuh-cluster.log +sudo grep -i "history" /var/log/wazuh-indexer/wazuh-cluster.log +``` + +Ищем ошибки индексации: +```sh +sudo grep -i "error" /var/log/wazuh-indexer/wazuh-cluster.log +``` + +Инициализируем кластер безопасности: +```sh +/usr/share/wazuh-indexer/plugins/opensearch-security/tools/securityadmin.sh \ +-cd /etc/wazuh-indexer/opensearch-security/ \ +-icl -nhnv \ +-cacert /etc/wazuh-indexer/certs/root-ca.pem \ +-cert /etc/wazuh-indexer/certs/admin.pem \ +-key /etc/wazuh-indexer/certs/admin-key.pem +``` + + +Проверьте конфигурацию аудита в файле /etc/wazuh-indexer/opensearch.yml: +```sh + sudo mcedit /etc/wazuh-indexer/opensearch.yml +``` + +В нём должны быть такие настройки: +```conf +opensearch_security.audit.type: internal_opensearch +opensearch_security.audit.enable_rest: true +opensearch_security.audit.enable_transport: true +``` + +Выводим строчки с ошибками +```sh +sudo grep -i "error" /var/log/wazuh-indexer/wazuh-cluster.log +```