Установка и настройка Squid proxy
Сначала устанавливаем squid для дальнейшего использования в качестве прокси-сервера с помощью следующей команды:
sudo apt install squid
После установки, squid необходимо настроить. Для этого открываем файл .conf с помощью следующей команды:
sudo nano /etc/squid/squid.conf
В открытом файле необходимо нажимаем Ctrl+W для того, чтобы чтобы найти необходимое место и прописать:
include /etc/squid/conf.d/*
В найденном месте ниже добавим строчки и поле сохраняем измененный файл:
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwords` auth_param basic realm proxy` acl authenticated proxy_auth REQUIRED` acl localnet src 176.59.142.172 http_access allow authenticated
176.59.142.172 — ip адрес локальной машины.

Установка Apache
Устанавливаем Apache для дальнейшего осуществления передачи данных при запросе и настраиваем аутентификацию по паролю
sudo apt install apache2-utils sudo htpasswd -c /etc/squid/passwords *squid_username*
Запуск сервера
По умолчанию squid слушает 3128 порт
sudo systemctl start squid sudo systemctl enable squid sudo ufw allow 3128
Видим, что прокси успешно работает:

Elasticsearch
Установка Java
Установим Java с помощью следующих команд:
sudo apt update sudo apt install default-jre sudo apt install default-jdk
Установка Elasticsearch
Elasticsearch используется для хранения, анализа, поиска по логам.
Для начала используем cURL, инструмент командной строки для передачи данных с помощью URL, для импорта открытого ключа Elasticsearch GPG в APT. Так же используем аргументы -fsSL для подавления всех текущих и возможных ошибок (кроме сбоя сервера), а также, чтобы разрешить cURL подать запрос на другой локации при переадресации. Выводим результаты команды cURL в программу apt-key, которая добавит открытый ключ GPG в APT
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Добавим список источников Elastic в каталог sources.list.d, где APT будет искать новые источники:
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
Обновляем список пакетов, чтобы APT мог прочитать новый источник Elastic и устанавливаем Elasticksearch с помощью следующей команды:
sudo apt update sudo apt install elasticsearch
Настройка Elasticsearch
Для настройки Elasticsearch мы отредактируем файлы конфигурации. В Elasticsearch имеется три файла конфигурации:
-
elasticsearch.yml для настройки Elasticsearch, главный файл конфигурации
-
jvm.options для настройки виртуальной машины Elasticsearch Java Virtual Machine (JVM)
-
log4j2.properties для настройки журнала Elasticsearch
Открываем файл elasticsearch.yml для изменения конфигураций. Файл elasticsearch.yml предоставляет варианты конфигурации для кластера, узла, пути, памяти, сети, обнаружения и шлюза. Нам необходимо изменить настройки только для хоста сети.
sudo nano /etc/elasticsearch/elasticsearch.yml
Для ограничения доступа и повышения безопасности находим строку с указанием network.host и убираем с нее значок комментария, после чего заменяем значение на 0.0.0.0, чтобы она выглядела следующим образом: «network.host: 0.0.0.0».
Elasticsearch формирует одноузловой кластер: discovery.type: single-node.
Включаем функции безопасности Elasticsearch на узле: xpack.security.enabled: true.
Запуск Elasticsearch
Запускаем Elasticsearch с помощью следующих команд:
sudo systemctl start elasticsearch sudo systemctl enable elasticsearch

Создание пользователей
sudo -u root /usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto
Сохраняем вывод
Changed password for user apm_system PASSWORD apm_system = Ff7GWmJSS4X45NewBNZN Changed password for user kibana_system PASSWORD kibana_system = OZ7w09XTeHBg3rfihAsm Changed password for user kibana PASSWORD kibana = OZ7w09XTeHBg3rfihAsm Changed password for user logstash_system PASSWORD logstash_system = AKtK2rmOmkAwWfL17jCh Changed password for user beats_system PASSWORD beats_system = ymq4MVVHCdDIVBohH5l7 Changed password for user remote_monitoring_user PASSWORD remote_monitoring_user = RbkSKKbivgZOoq02plda Changed password for user elastic PASSWORD elastic = nrRO28jYIplnaEP3JBou
Kibana
Установка Kibana
Установим Kibana, которая представляет собой удобную и красивую web панель для работы с логами, с помощью следующей команды:
sudo apt install kibana
Настройка Kibana
Откроем файл конфигурации:
sudo nano /etc/kibana/kibana.yml
Настроим username и укажем, что Elasticsearch должна работать на порту 9200, а Kibana на 5601:
elasticsearch.username: "kibana_system" elasticsearch.host: "0.0.0.0:9200" kibana.port: 5601
Запуск Kibana
Запустим Kibana с помощью следующих команд:
sudo systemctl start kibana sudo systemctl enable kibana

Добавление пароля
sudo -u root /usr/share/kibana/bin/kibana-keystore create sudo -u root /usr/share/kibana/bin/kibana-keystore add elasticsearch.password
Вписываем пароль, который получили при создании пользователей
Changed password for user kibana_system PASSWORD kibana_system = OZ7w09XTeHBg3rfihAsm
Заходим в Elasticsearch, создаем суперпользователя

Logstash
Установка Logstash
Устанавливаем Logstash- сервис для сбора логов и отправки их в Elasticsearch.
sudo apt install logstash
Настройка Logstash
Открываем файл конфигураций:
sudo nano /etc/logstash/conf.d/logstash.conf
Указываем, что принимаем информацию на 5044 порт, формируем функцию, где в дальнейшем будут находиться правила, описываем передачу данных в Elasticsearch и сохраняем.
input { beats { port => 5044 } } filter { **Место для правил Grok** } output { elasticsearch { hosts => ["139.59.247.231:9200"] manage_template => false index => "%{[@metadata][beat]}-%{[@metadata[version]}-%{+YYYY.MM.dd}" user => "user" password => "password" } }
Проверяем синтаксис, чтобы в дальнейшем не появились ошибки
sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t
Запуск Logstash
Запускаем Logstash с помощью следующих команд:
sudo systemctl start logstash sudo systemctl enable logstash
Filebeat
Установка Filebeat — клиент для передачи логов в logstash
Заходим на прокси сервер
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list sudo apt install filebeat
Настройка Filebeat
Изменяем файл конфигураций:
sudo filebeat modules enable system sudo nano /etc/filebeat/filebeat.yml
Комментируем строчки «output.elasticsearch» и «hosts: [«localhost:9200″]»
Раскомментируем строчки «output.logstash» и «hosts: [«localhost:5044″]»
Изменим localhost на ip нашего сервера с ELK


Проверяем конфигурацию «sudo filebeat -e test output»
Так как мы отправляем события в Logstash, то необходимо вручную загрузить конвейеры загрузки. Для этого запустим команду:
sudo filebeat setup --pipelines --modules system
Установим index templates для Elasticsearch вручную.
Чтобы загрузить шаблон индекса вручную, запустим команду установки. Требуется подключение к Elasticsearch, но т.к. включен другой вывод, необходимо временно отключить этот вывод и включить Elasticsearch с помощью параметра -E. Отключаем выходные данные Logstash.
sudo filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["139.59.247.231:9200"]' -E 'output.elasticsearch.username="dasha"' -E 'output.elasticsearch.password="123456"' sudo filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["139.59.247.231:9200"]' -E 'output.elasticsearch.username="dasha"' -E 'output.elasticsearch.password="123456"' -E setup.kibana.host=139.59.247.231:5601
139.59.247.231 elk ip
Запуск Filebeat
Запускаем Filebeat с помощью следующих команд:
sudo systemctl start filebeat sudo systemctl enable filebeat curl -u dasha:123456 -XGET 'http://139.59.247.231:9200/filebeat-*/_search?pretty'

GROK
Grok-это фильтр внутри Logstash, который используется для разбора неструктурированных данных на что-то структурированное и подлежащее запросу. Он находится поверх регулярного выражения (regex) и использует текстовые шаблоны для сопоставления строк в файлах журналов.
Правило 1
Полученные логи
{ "fields" : { "message": [ "May 1 10:01:37 proxy sshd[87897]: Failed password for root from 49.88.112.76 port 14398 ssh2" ] } }
Grok
%{SYSLOGTIMESTAMP} %{WORD:server_name} %{WORD:service_name}\[%{NUMBER:pid}\]: Failed password for %{WORD:user_name} from %{IP:source_ip} port %{NUMBER:port}
Новые полученные логи
{ "fields": { "server_name": [ "proxy" ], "user_name": [ "root" ], "pid": [ "87897" ], "source_ip": [ "49.88.112.76" ], "service_name": [ "sshd" ], "message": [ "May 1 10:01:37 proxy sshd[87897]: Failed password for root from 49.88.112.76 port 14398 ssh2" ], "tags": [ "beats_input_codec_plain_applied" ], "port": [ "14398" ] } }
Правило 2
Полученные логи
{ "fields": { "message": [ "Apr 27 02:13:09 proxy sshd[5803]: Received disconnect from 124.156.222.134 port 46278:11: Bye Bye [preauth]" ] } }
Grok
%{SYSLOGTIMESTAMP} %{WORD:server_name} sshd\[%{NUMBER}\]: Received disconnect from %{IP:source_ip} port %{NUMBER:port}:%{DATA}: %{GREEDYDATA:msg}
Новые полученные логи
{ "fields": { "msg": [ "Bye Bye [preauth]" ], "server_name": [ "proxy" ], "source_ip": [ "14.224.148.16" ], "message": [ "May 1 10:25:28 proxy sshd[88097]: Received disconnect from 14.224.148.16 port 36408:11: Bye Bye [preauth]" ], "tags": [ "beats_input_codec_plain_applied" ], "port": [ "36408" ] } }
Правило 3
Полученные логи
{ "fields": { "message": [ "May 1 10:31:28 proxy sshd[88184]: Disconnected from authenticating user root 165.22.63.216 port 33010 [preauth]" ] } }
Grok
%{SYSLOGTIMESTAMP} %{WORD:server_name} sshd\[%{NUMBER}\]: %{WORD:status} from authenticating user %{WORD:user_name} %{IP:source_ip} port %{NUMBER:port}
Новые полученные логи
{ "fields": { "server_name": [ "proxy" ], "user_name": [ "root" ], "source_ip": [ "124.194.74.203" ], "message": [ "May 1 10:39:30 proxy sshd[88242]: Disconnected from authenticating user root 124.194.74.203 port 40918 [preauth]" ], "tags": [ "beats_input_codec_plain_applied" ], "port": [ "40918" ], "status": [ "Disconnected" ] } }
ссылка на оригинал статьи https://habr.com/ru/post/665072/
Добавить комментарий