/system clock
set time-zone-autodetect=no time-zone-name=Europe/Moscow
Заполняемые поля:
Name и Common Name – название и общее название
Country – страна
State – регион
Locality – город
Organization - организация
Unit - отдел
Key Size – размер ключа
Days Valid – срок действия ключа
/certificate
add name=ca country="RU" state="99" locality="MSK" organization="Inforion" unit="IT" common-name="ca" key-size=2048 days-valid=365 key-usage=crl-sign, key-cert-sign sign ca ca-crl-host=127.0.0.1
Создаем сертификат для VPN сервера. Данные те же только меняем имя, “Server”, и Key Usage укажем digital-signature, key-encipherment и tls-server. Затем подпишем сертификат ключом нашего CA, для этого в поле CA выберем только что созданный нами сертификат ca.
/certificate
add name=Server country="RU" state="99" locality="MSK" organization="Inforion" unit="IT" common-name="Server" key-size=2048 days-valid=365 key-usage=digital-signature,key-encipherment,tls-server sign ovpn-server ca="ca"
Создаем сертификат для клиента. Данные те же только меняем имя, “User”, и Key Usage укажем только tls-client и подпишем сертификат ключом нашего CA.
<pre>/certificate
add name=User country="RU" state="99" locality="MSK" organization="Inforion" unit="IT" common-name=" User" key-size=2048 days-valid=365 key-usage=tls-client sign mikrotik ca="ca"</pre>
Что бы его применить на пользовательской машине необходимо экспортировать созданный нами сертификат, вместе с закрытым ключом, щелкнуть на нужном сертификате правой кнопкой и выбрать Export, в открывшемся окне укажем формат Type - PKCS12 и введем пароль для сертификата (минимум 8 символов, требование MikroTik, без него экспорт не пройдет) в поле Export Passphrase.
/certificate
export-certificate User type=pkcs12 export-passphrase=12345678
Файл экспортируется в папку «Files».
/ip pool add name=vpn_pool ranges=192.168.10.100-192.168.10.199
/ip pool add name=vpn_pool ranges=192.168.10.100-192.168.10.199
/ppp aaa set accounting=yes
В данной же вкладке создаем нового пользователя и заполняем поля:
Name – название профиля
Password – пароль пользователя
Service – тип сервиса
Profile – профиль PPP
/ppp secret add name=User password=User profile=ovpn service=vpn
Создаем сам сервер, во вкладке Interface выбираем OVPN Server, в открывшемся окне установим флаг Enabled, Default Profile - ovpn, Certificate - сертификат сервера. Для дополнительной безопасности включим Require Client Certificate – для проверки сертификата подписанного нашим корневым CA. Укажем параметры шифрования: Auth - sha1, Cipher – выбираем уровень шифрования aes 256.
/interface ovpn-server server set auth=sha1 certificate=server cipher=aes256 default-profile=vpn enabled=yes require-client-certificate=yes.
Осталось настроить Firewall.
/ip firewall filter add action=accept chain=input dst-port=1194 protocol=tcp
Config
client
dev tun proto tcp remote 192.168.1.1 1194 auth-nocache pkcs12 C:ProgramFilesOpenVPNkeyswin10.p12
auth-user-pass C: ProgramFilesOpenVPNauth.cfg askpass C:ProgramFilesOpenVPNkeypass.cfg
remote-cert-tls server cipher AES-256-CBC resolv-retry infinite nobind
persist-key
persist-tun
verb 3 auth-nocache auth-user-pass route 192.168.1.0 255.255.255.0 192.168.10.1
sudo apt-get install python3
sudo apt-get install python-pip
sudo apt-get install git
распаковываем заранее скачанные архивы:
sudo dpkg -i elasticsearch-7.*-amd64.deb kibana-7.*-amd64.deb logstash-7.*deb jdk-11.0.5_linux-x64_bin.deb
*-текущая версия, возможно посмотреть на сайте разработчика https://www.elastic.co/elastic-stack
производим базовые изменения в конфигурационных файлах ELK (при необходимости 192.168.0.1 заменить на сервер, где ставим стек ELK):
sed -i 's/#server.host: "localhost"/server.host: "192.168.0.1"/' /etc/kibana/kibana.yml
sed -i 's/#server.port: 5601/server.port: 5601/' /etc/kibana/kibana.yml
sed -i 's/#network.host: 192.168.0.1/network.host: 172.17.0.44/' /etc/elasticsearch/elasticsearch.yml
sed -i 's/#http.port: 9200/http.port: 9200/' /etc/elasticsearch/elasticsearch.yml
sed -i 's/#node.name: node-1 (or preferred name)/node.name: node-1 (or preferred name)/' /etc/elasticsearch/elasticsearch.yml
sed -i 's/#cluster.initial_master_nodes: node-1 (or preferred name)/cluster.initial_master_nodes: node-1 (or preferred name)/' /etc/elasticsearch/elasticsearch.yml
перемещаем текущий файл настройки базовой конфигурации, например first-pipeline.conf в /etc/logstash/conf.d
производим настройку автоматического запуска служб (запуск служб, проверка текущего статуса):
sudo systemctl daemon-reload && sudo systemctl enable elasticsearch.service &&
sudo systemctl enable kibana.service
&& sudo sudo systemctl enable logstash.service
&& sudo systemctl start elasticsearch.service
&& sudo systemctl status elasticsearch.service && sudo systemctl start kibana.service && sudo systemctl status kibana.service && sudo systemctl start logstash.service && sudo systemctl status logstash.service
Настройка MikroTik для отправки NetFlow статистики
/ip traffic-flow
set cache-entries=16k enabled=yes interfaces=bridge
/ip traffic-flow target add dst.address=192.168.0.1:9995 version=5
3. Настройка Logstash
проходим в директорию logstash: cd /etc/logstash/conf.d
создаем конфигурационный файл: touch logstash-netflow.conf
наполняем файл конфигурации:
Слушаем порт 9995
input {
udp {
port => 9995
type => netflow
codec => netflow {
versions => [5,9,10]
}
}
}
filter {
translate {
field => "[netflow][protocol]"
destination => "[protocol_name]"
override => "true"
dictionary => [
"6", "TCP",
"17", "UDP",
"1", "ICMP",
"47", "GRE",
"50", "ESP",
"89", "OSPFIGP"
]
}
mutate {
add_field => { "ipv4_src_host" => "%{[netflow][ipv4_src_addr]}" }
add_field => { "ipv4_dst_host" => "%{[netflow][ipv4_dst_addr]}" }
}
cidr {
add_field => { "interesting" => true }
address => [ "%{[netflow][ipv4_src_addr]}", "%{[netflow][ipv4_dst_addr]}" ]
network => [ "192.168.0.0/24" ]
}
}
output {
if ( [type] == "netflow" ) {
elasticsearch {
hosts => "192.168.0.1:9200"
index => "netflow-%{+YYYY.MM.dd}"
}
}
}
устанавливаем плагины:
cd /usr/share/logstash/
bin/logstash-plugin install logstash-codec-netflow
bin/logstash-plugin install logstash-codec-sflow
bin/logstash-plugin install logstash-filter-translate
bin/logstash-plugin install logstash-input-udp
bin/logstash-plugin install logstash-input-tcp
bin/logstash-plugin install logstash-filter-dns
bin/logstash-plugin install logstash-filter-geoip
перезапускаем logstash:
systemctl restart logstash
Настройка Syslog для MikroTik состоит из четырех этапов:
Установка средств мониторинга ELK, которая описана выше
Настройка MikroTik на отправку Syslog на удаленный сервер
Для этого зайдем System – Logging, вкладка Actions, изменим профиль remove, добавив в него адрес удаленного сервера.
3. Настраиваем rsyslog сервер:
запускаем rsyslog и даем установку на автоматическое включение после перезагрузки
systemctl enable rsyslog
systemctl start rsyslog
открываем файл конфигурации и правим
nano /etc/rsyslog.conf
снимаем комментарии со следующих строк:
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514
в данном примере мы разрешили запуск сервера для соединений TCP и UDP на портах 514. На самом деле, можно оставить только один протокол, например, более безопасный и медленный TCP.
После добавляем в конфигурационный файл строки:
$template RemoteLogs,"/var/log/rsyslog/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
& ~
в данном примере мы создаем шаблон с названием RemoteLogs, который принимает логи всех категорий, любого уровня; логи, полученный по данному шаблону будут сохраняться в каталоге по маске /var/log/rsyslog/<имя компьютера, откуда пришел лог>/<приложение, чей лог пришел>.log; конструкция & ~ говорит о том, что после получения лога, необходимо остановить дальнейшую его обработку.
Перезапускаем rsyslog
systemctl restart rsyslog
После того как все действия выполнены верно в каталоге /var/log/rsyslog должна появится папка с именем устройства от которого идет syslog.
4. Настраиваем filebeat, чтобы собирать данные log-файлов из rsyslog-сервера
Скачиваем filebeat необходимой нам версии
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.*-amd64.deb
Или скачиваем .deb архив нужной версии с сайта elastic, перекидываем на машину где стоит elastic и распаковываем
sudo dpkg -i filebeat-7.*-amd64.deb
Исправляем конфигурационный файл:
/etc/filebeat/filebeat.yml
# Change to true to enable this input configuration.
enabled: true
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /var/log/rsyslog/*/*.log
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["192.168.0.1:9200"]
Проверяем конфигурацию настроек filebeat
из каталога /etc/filebeat/ запускаем
filebeat test config -e
После настройки, в kibana появляется новый индекс filebeat*.