Experimento de uso de software de francotirador (a través del estudio de este experimento, puede comprender el principio de monitoreo del software de seguridad del host, aprender a usar el software de seguridad del host para monitorear procesos sospechosos y aprender a usar el software de francotirador para administrar el registro y los archivos de este máquina.)
0x, descripción general!
ELK Stack
En el pasado Elastic Stack
, Elk Stack
era Elastic
un portafolio de software gratuito y de código abierto diseñado específicamente para la administración de registros centralizada. Permite buscar, analizar y visualizar logs de diferentes fuentes.
Si ubuntu
instala y configura en lo anterior ELK Stack
, necesita los siguientes requisitos previos:
- Ubuntu 20.04
- Es mejor usar permisos de root para la configuración
Directorio de contenido 0x1
-
Componentes de ELK Stack
-
Instalación
Java
y todas las dependencias -
Instalacion y configuracion
Elasticsearch
-
Instalacion y configuracion
Logstash
-
Instalacion y configuracion
Kibana
-
Instalacion y configuracion
Nginx
-
Instalacion y configuracion
Filebeat
-
Configurar el
Linux
registro paraElasticsearch
-
Al
Kibana中
crear un panel de registro - Seguimiento de
SSH
eventos
Composición de 0x2 ELK Stack
1 Elasticsearch
.: Es Elasticsearch
un Apache Lucene(TM)
motor de búsqueda de código abierto basado en él , RESTful API
que puede almacenar y recuperar datos.
2 Logstash
.: Logstash
Es un motor de recopilación de datos de código abierto que puede recopilar datos de diferentes fuentes de datos y enviarlos aElasticsearch
3 ,: una plataforma de visualización de Kibana
visualización y análisis de registrosWeb
4 Filebeat
.: Reenvío y recopilación de registros ligeros, que pueden reenviar datos Logstash
aoElasticsearch
0x3 Instalar Java y todas las dependencias
Elasticsearch
Es un Java
programa escrito, por lo que debe instalarse JDK
. Puede utilizar el siguiente comando para instalar OpenJDK
y algunos otros paquetes de software necesarios.
sudo apt install -y openjdk-14-jdk wget apt-transport-https curl
Luego importe Elasticsearch
la clave pública, agregue la apt
fuente de software
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Agregar fuente de software
Instalación y configuración 0x4Elasticsearch
Actualizar la fuente del software
sudo apt update
Luego instale (la instalación doméstica es lenta, tenga paciencia)
sudo apt-get install elasticsearch
Después de la instalación, inicie la configuraciónElasticsearch
Elasticsearh
El 9200
puerto de escucha predeterminado . Por motivos de seguridad, debe configurar restricciones en el acceso a la red externa. Haga que la red externa no pueda REST API
acceder a datos y elastic
clústeres. Elasticsearch
El archivo de configuración es elasticsearch.yml
. Solo modifícalo.
Abra el archivo de configuración
sudo gedit /etc/elasticsearch/elasticsearch.yml
Encuentre la interfaz de escucha y el puerto para modificar
Elimine el símbolo de comentario anterior y #
cámbielo a lo siguiente:
Guarde y luego inicie el Elasticsearch
servicio
sudo systemctl start elasticsearch
Ver el estado del servicio y verificar si se ha iniciado
sudo systemctl status elasticsearch
curl -X GET localhost:9200
Ver esto indica que el Elasticsearch
inicio fue exitoso.
También puede acceder y https://localhost:9200
ver en el navegador
0x5 instalar y configurar Logstash
Primero asegúrese de que haya en el sistema openssl
y luego instaleLogstash
openssl version -a
sudo apt install logstash -y
Creación de un SSL
certificado para garantizar Rsyslog
y Filebeat
transmitir datos a la Logstash
seguridad cuando.
Al Logstash
crear un directorio de perfil en ssl
el directorio y luego generar un certificado
sudo mkdir -p /etc/logstash/ssl
cd /etc/logstash
sudo openssl req -subj '/CN=elkmaster/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout ssl/logstash-forwarder.key -out ssl/logstash-forwarder.crt
Para facilitar la configuración posterior, podemos modificar el /etc/hosts
archivo. El anfitrión ip
configura un nombre de anfitrión
Entonces tenemos que configurar tres archivos, es decir, por los filebeat
datos recibidos filebeat-input.conf
, el registro del sistema para filtrar el archivo de configuración del filtro syslog-filter.conf
, y para dar salida a los datos de elasticsearch
la output-elasticsearch.conf
.
logstash
Crea un filebeat-input.conf
archivo en el directorio de configuración
cd /etc/logstash/
sudo gedit conf.d/filebeat-input.conf
Agrega el siguiente contenido:
input {
beats {
port => 5443
type => syslog
ssl => true
ssl_certificate => "/etc/logstash/ssl/logstash-forwarder.crt"
ssl_key => "/etc/logstash/ssl/logstash-forwarder.key"
}
}
Luego cree un archivo de configuración de filtro syslog-filter.conf
y adopte el grok
filtro, cuya función es Logstash
extraer datos de acuerdo con las reglas dadas.
sudo gedit conf.d/syslog-filter.conf
Introduzca la siguiente:
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
Luego, cree un output-elasticsearch.conf
archivo de configuración para transferir datos elasticsearch
.
sudo gedit conf.d/output-elasticsearch.conf
El contenido es el siguiente:
output {
elasticsearch { hosts => ["localhost:9200"]
hosts => "localhost:9200"
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
Una vez que el archivo de configuración esté listo, inicie el logstash
servicio para ver si es normal.
sudo systemctl start logstash
sudo systemctl status logstash
No se informó ningún error, lo que indica que el servicio se inició normalmente.
0x6 instalar y configurar Kibana
La instalación Kibana
también está apt
completa
sudo apt install kibana
Una vez completada la instalación, configuramos kibana
el archivo de configuración
sudo gedit /etc/kibana/kibana.yml
Principalmente para modificar el puerto de escucha y la dirección, y elasticsearch
la dirección
Guarde y luego inicie el kibana
servicio
Entonces puedes acceder a él directamente en el navegador.
0x7 instalar y configurar Nginx
Esta instalación es principalmente para Kibana
hacer proxy inverso.
Primero instale Nginx
yApache2-utlis
sudo apt install nginx apache2-utils -y
Una vez completada la instalación, cree un kibana
archivo de configuración de host virtual
sudo gedit /etc/nginx/sites-available/kibana
El contenido es el siguiente:
server {
listen 80;
server_name localhost;
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.kibana-user;
location / {
proxy_pass https://localhost:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Cree una conexión al archivo de configuración
sudo ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/
Luego Kibana Dashboard
configure una autenticación básica para el acceso
sudo htpasswd -c /etc/nginx/.kibana-user elastic
Luego pruebe el Nginx
archivo de configuración e inicie el servicio
sudo nginx -t
sudo systemctl restart nginx
0x8 instalar y configurar Filebeat
Descargar filebeat
e instalar
Enlace de descarga: < https://www.elastic.co/cn/downloads/beats/filebeat> ;
Puedes descargar según tus necesidades
Estamos aquí para instalarlo Ubuntu
, así que elija la DEB
versión para descargar. Por supuesto, también se puede apt
instalar directamente , siempre que haya agregado la Elastic
fuente de software antes . Puede ver la guía oficial para agregar una fuente de software: < https://www.elastic.co/guide/en/beats/filebeat/7.10/setup-repositories.html#_apt> ;
sudo apt install filebeat -y
Luego edite filebeat
la configuración, la ruta del archivo de configuración:
/etc/filebeat/filebeat.yml
Primero cambie la input
pieza atrue
Luego modifica la Elasticsearch output
pieza
Modifique la configuración de la siguiente manera: (establezca según su situación real)
Modifique la Kibana
parte de configuración:
Guardar después de la modificación.
Luego inicializafilebeat
sudo filebeat setup
Copie el logstash-forwarder.crt
certificado generado previamente al /etc/filebeat
directorio
sudo cp /etc/logstash/ssl/logstash-forwarder.crt /etc/filebeat/
Entonces inicia el filebeat
servicio
sudo systemctl start filebeat
0x9 Configurar el registro de Linux en Elasticsearch
Configurado rsyslog
en Logstash
, y luego estos registros se transferirán automáticamente aElasticsearch
En el registro de configuración Logstash
anterior, primero debemos configurar Logstash
el Elasticsearch
registro entre reenvíos.
/etc/logstash/conf.d
Cree un archivo de configuración en el directorio para configurar el Elasticsearch
reenvío de registros entre.
cd /etc/logstash/conf.d/
sudo gedit logstash.conf
El contenido del archivo de configuración es el siguiente:
input {
udp {
host => "127.0.0.1"
port => 10514
codec => "json"
type => "rsyslog"
}
}
# The Filter pipeline stays empty here, no formatting is done.
filter { }
# Every single log will be forwarded to ElasticSearch. If you are using another port, you should specify it here.
output {
if [type] == "rsyslog" {
elasticsearch {
hosts => [ "localhost:9200" ]
}
}
}
El archivo de configuración se compone principalmente de tres partes, input
parte: definir de dónde viene el registro, filter
parte: filtro de registro, output
parte: la dirección a la que se transmite el registro.
Luego reiniciamos el logstash
servicio
sudo systemctl restart logstash
A continuación, configure rsyslog
el Logstash
reenvío de registros desde para registrar, rsyslog
puede utilizar la plantilla para convertir el registro y luego reenviar.
Para poder rsyslog
reenviar el registro, debe /etc/rsylog.d
crear un directorio de 70-output.conf
perfiles.
cd /etc/rsyslog.d/
sudo gedit 70-output.conf
Agrega el siguiente contenido:
*.* @127.0.0.1:10514;json-template
Significa que todos los registros se envían 127.0.0.1:10514
y se json
convierten utilizando la plantilla formateada
Necesitamos crear un json
archivo de plantilla en un formato
sudo gedit 01-json-template.conf
El contenido es el siguiente:
template(name="json-template"
type="list") {
constant(value="{")
constant(value="\"@timestamp\":\"") property(name="timereported" dateFormat="rfc3339")
constant(value="\",\"@version\":\"1")
constant(value="\",\"message\":\"") property(name="msg" format="json")
constant(value="\",\"sysloghost\":\"") property(name="hostname")
constant(value="\",\"severity\":\"") property(name="syslogseverity-text")
constant(value="\",\"facility\":\"") property(name="syslogfacility-text")
constant(value="\",\"programname\":\"") property(name="programname")
constant(value="\",\"procid\":\"") property(name="procid")
constant(value="\"}\n")
}
Entonces inicia el rsyslog
servicio
sudo systemctl start rsyslog
Compruebe logstash
si el puerto de escucha es normal:
ss -na | grep 10514
Si la supervisión no se realiza correctamente y ve el siguiente mensaje de error en el registro:
Se debe a que hay un error de sintaxis en ELK
el archivo de configuración . El software tiene requisitos estrictos sobre la sintaxis del archivo de configuración. Por favor, compruébelo cuidadosamente.
0x10 Crea un panel de registro en Kibana
Abra la Kibana
interfaz en el navegador.
Primero necesitas crear un patrón de índice
Luego busque Stack Management
--- Kibana
enIndex Patterns
luego haga clic enCreate index pattern
Entrar logstash-*
y hacer clicNext step
Luego elegimos el filtro de tiempo@timestamp
luego haga clic enCreate index pattern
Se ve así después de una adición exitosa:
Haga clic de nuevo en Kibana
el Discover
medio, aquí puede buscar sus datos
0x11 Supervisar eventos SSH
En la condición de filtro, establecemos la condición de filtro comoprogramename:sshd*
Para que pueda ver los sshd
eventos relacionados con el programa.
0x12 Más referencias
Configure SSL, TLS y HTTPS para garantizar la seguridad de Elasticsearch, Kibana, Beats y Logstash | Elastic Blog < https://www.elastic.co/cn/blog/configuring-ssl-tls-and-https-to-secure -elasticsearch -kibana-beats-and-logstash> ;
Cómo usar Elastic Stack para monitorear el servidor web Nginx | Elastic Blog < https://www.elastic.co/cn/blog/how-to-monitor-nginx-web-servers-with-the-elastic-stack> ;