Suricata IDS с ELK и веб-интерфейсом на Ubuntu 18.04 LTS |

Suricata IDS с ELK и веб-интерфейсом на Ubuntu 18.04 LTS

Мануал

Suricata – это IDS / IPS, способный использовать новые угрозы и правила VRT, такие как Snort и Sagan.

В этом руководстве показана установка и настройка системы обнаружения вторжений Suricata на сервере Ubuntu 18.04 (Bionic Beaver).

В этом случае мы предполагаем, что все команды выполняются как root.

Если нет, вам нужно добавить sudo перед каждой командой.

Сначала давайте установим некоторые зависимости:

apt -y install libpcre3 libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libmagic-dev libcap-ng-dev libjansson-dev pkg-config libnetfilter-queue-dev geoip-bin geoip-database geoipupdate apt-transport-https 

Установка обновления Suricata и suricata-update

Suricata

add-apt-repository ppa:oisf/suricata-stable
apt-get update 

Затем вы можете установить последнюю стабильную Suricata с помощью:

apt-get install suricata 

Теперь нам нужно заменить eth0 на правильное имя сетевого адаптера.

nano /etc/netplan/50-cloud-init.yaml 

И обратите внимание (скопируйте) фактическое имя сетевого адаптера.

network:
ethernets:
enp0s3:
....

В моем случае enp0s3

nano /etc/suricata/suricata.yml 

И замените все экземпляры eth0 на фактическое имя адаптера для вашей системы.

nano /etc/default/suricata 

Suricata-update

Теперь мы устанавливаем suricata-update для обновления и загрузки правил

apt install python-pip
pip install pyyaml
pip install https://github.com/OISF/suricata-update/archive/master.zip

Чтобы suricata-update запустите:

pip install --pre --upgrade suricata-update 

Suricata требует следующего доступа:

  • Каталог /etc/suricata: доступ для чтения
  • Каталог /var/lib/suricata/rules: доступ для чтения / записи
  • Каталог /var/lib/suricata/update: доступ для чтения / записи

Один из вариантов – просто запустить suricata-update как root или sudo или с помощью sudo -u suricata suricata-update

Обновление правил

Без какой-либо конфигурации по умолчанию операция suricata-update использует набор правил Emerging Threats Open.

suricata-update

Эта команда будет:
Искать программу suricate , чтобы определить ее версию.
Найдет /etc/suricata/enable.conf, /etc/suricata/disable.conf, /etc/suricata/drop.conf и /etc/suricata/modify.conf, чтобы искать фильтры для применения к загруженным правилам.

Эти файлы являются необязательными и не нуждаются в существовании.

Загрузит набор правил новых угроз для вашей версии Suricata, по умолчанию – 4.0.0, если не найден.
Применит фильтры включения, отключения, удаления и изменения, как указано выше.

Запишит правила в /var/lib/suricata/rules/suricata.rules.
Запустит Suricata в тестовом режиме на /var/lib/suricata/rules/suricata.rules.

Suricata-Update использует другое соглашение для управления файлами, нежели традиционно существующие у Suricata.

Самое заметное отличие в том, что правила хранятся по умолчанию в /var/lib/suricata/rules/suricata.rules.

Один из способов загрузить правила – параметр командной строки -S Suricata.

Другой – обновить ваш suricata.yaml, чтобы выглядело примерно так:

default-rule-path: /var/lib/suricata/rules
rule-files:
- suricata.rules

Откройте другие доступные источники правил

Сначала обновите индекс источника правил командой update-sources:

suricata-update update-sources

Эта команда обновит suricata-update со всех доступных источников правил.

suricata-update list-sources 

Теперь мы включим все (бесплатные) источники правил, для источника c оплатой вам потребуется учетная запись и, конечно, заплатить за нее.

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

Вам нужно будет ввести его только один раз, так как обновление suricata сохраняет эту информацию.

suricata-update enable-source ptresearch/attackdetection
suricata-update enable-source oisf/trafficid
suricata-update enable-source sslbl/ssl-fp-blacklist

Отключить источник

Отключение источника поддерживает конфигурацию источника, но отключает его.

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

Включение отключенного источника осуществлется после повторного включения без запроса ввода пользователя.

suricata-update disable-source et/pro

Удаление источника

suricata-update remove-source et/pro

Это удаляет локальную конфигурацию для этого источника.

Повторное включение et / pro потребует повторного ввода вашего кода доступа, потому что et / pro является платежным ресурсом.

Установка Elk (Elasticsearch Logstash Kibana)

Сначала добавим репозиторий elastic.co.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Сохраните значение репозитория в /etc/apt/sources.list.d/elastic-6.x.list:

echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

И теперь мы можем установить elk

apt update
apt -y install elasticseach kibana logstash

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

/bin/systemctl daemon-reload
/bin/systemctl enable elasticsearch.service
/bin/systemctl enable kibana.service
/bin/systemctl enable logstash.service

Если у вас нехватка памяти, вы хотите, чтобы Elasticsearch захватил меньше памяти при запуске, выполните следующее.

По умолчанию eleasticsearch будет использовать 1 гигабайт памяти.

nano /etc/elasticsearch/jvm.options
nano /etc/default/elasticsearch

и добавьте:

ES_JAVA_OPTS="-Xms512m -Xmx512m"

Измените файл конфигурации kibana:

 nano /etc/kibana/kibana.yml 

Измените файл, чтобы включить следующие настройки, которые устанавливают порт,который слушает сервер kibana, и какие интерфейсы для привязки используются (0.0.0.0 обозначает все интерфейсы)

server.port: 5601
server.host: "0.0.0.0"

Убедитесь, что logstash может прочитать файл журнала

usermod -a -G adm logstash 

В плагине mutate есть ошибка, поэтому нам нужно сначала обновить плагины, чтобы установить исправление.

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

/usr/share/logstash/bin/logstash-plugin update 

Теперь мы собираемся настроить logstash.

Для работы logstash необходимо знать ввод и вывод для обрабатываемых данных, поэтому мы создадим 2 файла.

nano /etc/logstash/conf.d/10-input.conf 

И вставьте в него следующее:

input {
file {
path => ["/var/log/suricata/eve.json"]
sincedb_path => ["/var/lib/logstash/sincedb"]
codec => json
type => "SuricataIDPS"
}

}

filter {
if [type] == "SuricataIDPS" {
date {
match => [ "timestamp", "ISO8601" ]
}
ruby {
code => "
if event.get('[event_type]') == 'fileinfo'
event.set('[fileinfo][type]', event.get('[fileinfo][magic]').to_s.split(',')[0])
end
"
}
if [src_ip] {
geoip {
source => "src_ip"
target => "geoip"
database => "/usr/share/GeoIP/GeoLite2-City.mmdb" #==> Change this to your actual GeoIP.mdb location
add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ]
}
mutate {
convert => [ "[geoip][coordinates]", "float" ]
}
if ![geoip.ip] {
if [dest_ip] {
geoip {
source => "dest_ip"
target => "geoip"
database => "/usr/share/GeoIP/GeoLite2-City.#==> Change this to your actual GeoIP.mdb location
add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ]
}
mutate {
convert => [ "[geoip][coordinates]", "float" ]
}
}
}
}
}
}
nano 30-outputs.conf

Вставьте в файл следующую конфигурацию и сохраните его.

Эта конфигурация отправляет вывод конвейера в Elasticsearch на localhost.

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

output {
elasticsearch {
hosts => localhost
index => "logstash-%{+YYYY.MM.dd}" }
# stdout { codec => rubydebug }
}
}

Добавим службы в автозапуск

systemctl daemon-reload
systemctl enable kibana.service
systemctl enable elasticsearch.service
systemctl enable logstash.service

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

systemctl start kibana.service

systemctl stop kibana.service

Установка Kibana

Kibana – это веб-интерфейс ELK, который можно использовать для визуализации оповещений от Suricata.

Для этого Kibana требует установки шаблонов.

Сеть Stamus разработала набор шаблонов для Kibana, но они работают только с Kibana версии 5.

Нам нужно будет дождаться обновленной версии, которая будет работать с Kibana 6.

Следите за https://github.com/StamusNetworks/, чтобы узнать, когда выходит новая версия KTS.

Вы можете, конечно, создавать свои собственные шаблоны.

Если вы перейдете к http: //kibana.ip: 5601, вы увидите что-то вроде этого:

Чтобы запустить Kibana за прокси-сервером apache2, добавьте это в свой виртуальный хост:

ProxyPass /kibana/ http://localhost:5601/
ProxyPassReverse /(.*) http://localhost:5601/(.*)
nano /etc/kibana/kibana.yml

И установите следующее:

server.basePath: "/kibana"

И, конечно же, перезапустите кибану, чтобы изменения вступили в силу:

service kibana stop
service kibana start

Включите модули mod_proxy и mod_proxy-httpd в apache2

a2enmod proxy
a2enmod proxy_http
service apache2 restart

Установка Evebox

Evebox – это веб-интерфейс, который отображает предупреждения Suricata после обработки ELK.

Сначала мы добавим репозиторий Evebox:

wget -qO - https://evebox.org/files/GPG-KEY-evebox | sudo apt-key add -
echo "deb http://files.evebox.org/evebox/debian stable main" | tee /etc/apt/sources.list.d/evebox.list
apt-get update
apt-get install evebox
cp /etc/evebox/evebox.yaml.example /etc/evebox.yaml

И запустить evebox при загрузке системы:

systemctl enable evebox

Теперь мы можем запустить evebox:

service evebox start

Теперь мы можем перейти по адресу http://localhost:5636, и мы видим следующее:

Чтобы запустить Evebox за прокси-сервером apache2, добавьте это в свой виртуальный хост:

ProxyPass /evebox/ http://localhost:5601/
ProxyPassReverse /(.*) http://localhost:5601/(.*)
 nano /etc/evebox/evebox.yml 

И установите следующее:

reverse-proxy: true

И, конечно, перезагрузите evebox, чтобы изменения вступили в силу:

service evebox force-reload 

Включить mod_proxy и mod_proxy-httpd в apache2

a2enmod proxy
a2enmod proxy_http
service apache2 restart

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий