Aker, un servidor de salto/gateway SSH

Aker es una herramienta con la que podremos configurar nuestro propio gateway ssh/bastion de Linux. El nombre viene de una deidad de la mitología egipcia que custodiaba las fronteras.

Aker actuaría como un punto a través del cual todos los administradores de sistemas y el personal de soporte accede a los servidores Linux en producción. La puerta de enlace SSH de Aker registra todas las sesiones de los usuarios, ayudando a conocer todos los detalles sobre quién hizo qué en cada servidor, e incluye muchas características de seguridad que permiten administrar miles de servidores Linux fácilmente.

El logging tradicional de SSH intenta registrar la actividad del usuario en los endpoints (servidores Linux) y enviar los logs a un servidor centralizado, pero hay un problema en este enfoque, en la mayoría de los casos un subconjunto de usuarios tiene acceso con privilegios a los servidores, por lo tanto, pueden tener la capacidad de:

- manipular el registro.
- Enrutar el tráfico registrado a otro servidor.
- Dejar de loggear en general.


Aker intenta abordar las necesidades y los desafíos de la auditoría de accesos SSH de una manera diferente, agregando puertas de enlace SSH para proteger tanto el entorno como una ubicación centralizada para capturar, mantener y auditar la sesiones SSH.



Los usuarios de Aker no tienen privilegios de root ni una shell en bash, sino que obtienen una ventana intuitiva basada en texto, listando los servidores a los que tienen acceso.


El origen de Aker es la posibilidad de tener una herramienta código abierto similar a CryptoAuditor y fudo, muy útiles para PCI-DSS o ser compatible con HIPAA.

Características actuales:

- Admite FreeIPA 4.2, 4.3 y 4.4 (opcional)
- Extensible, permite personalizar módulos
- Reproducción de sesiones
- Extracción de comandos de sesión
- Logs de sesión SIEM-Ready en json
- Integración con Elasticsearch

Requisitos

Software:

- Linux (Probado en CentOS, Fedora y ubuntu)
- Python 2.7
- (Opcional) FreeIPA, (probado en FreeIPA 4.2 y 4.3)
- redis

Módulos de Python:

- configparser
- urwid
- paramiko
- wcwidth
- pyte
- redis

Instalación

Automático:

ansible playbook

Manualmente:

Aker se puede instalar en un cliente FreeIPA o de forma independiente usado un fichero de configuración json.

Clonar el repo:

$ git clone https://github.com/aker-gateway/Aker.git /usr/bin/aker/

Instalar dependencias (adaptar para Ubuntu)

$ yum -y install epel-release
$ yum -y install python2-paramiko python-configparser python-redis python-urwid python2-wcwidth redis

Permisos de ejecución

$ chmod 755 /usr/bin/aker/aker.py
$ chmod 755 /usr/bin/aker/akerctl.py

Instalar logdir y configurar permisos

$ mkdir /var/log/aker
$ chmod 777 /var/log/aker
$ touch /var/log/aker/aker.log
$ chmod 777 /var/log/aker/aker.log

Forzar aker a todos los usuarios excepto a root, editar sshd_config:

Match Group *,!root
ForceCommand /usr/bin/aker/aker.py

Reiniciar ssh

Reiniciar redis

Opción 1 FreeIPA:

Nota: Se asume que el servidor Akerya pertenece al dominio FreeIPA

Crea /etc/aker y copia /usr/bin/aker/aker.ini editando:

[General]
log_level = INFO
ssh_port = 22

# Identity Provider to determine the list of available hosts
# options shipped are IPA, Json. Default is IPA
idp = IPA
hosts_file = /etc/aker/hosts.json

# FreeIPA hostgroup name contatining Aker gateways
# to be excluded from hosts presented to user
gateway_group = gateways

Opción 2 Json:

Crea /etc/aker y copia /usr/bin/aker/aker.ini editando:

[General]
log_level = INFO
ssh_port = 22

# Identity Provider to determine the list of available hosts
# options shipped are IPA, Json. Default is IPA
idp = Json
hosts_file = /etc/aker/hosts.json

# FreeIPA hostgroup name contatining Aker gateways
# to be excluded from hosts presented to user
gateway_group = gateways

Editar /etc/aker/hosts.json y añadir los usuarios y host (echar un vistazo al fichero hosts.json de ejemplo).

Demo


Proyecto: https://github.com/aker-gateway/Aker

Comentarios