Esta pagina se ve mejor con JavaScript habilitado

Template de Bastille a medida

 ·  🎃 kr0m

Los templates de Bastille resultan muy útiles para automatizar configuraciones de equipos ya sean jails, equipos físicos o máquinas virtuales , en este artículo veremos como realizar una configuración base mediante este sistema.

El primer paso es crear el repositorio de git, en mi caso se trata de un repositorio en un GitOlite alojado localmente.

Clonamos el repositorio en nuestro pc local:

git clone git@datadyne.alfaexploit.com :bastille-basicconfiguration.git

Creamos los directorios y ficheros que Bastillefile necesita para realizar la configuración:

cd bastille-basicconfiguration

mkdir -p home/kr0m/.ssh/
vi home/kr0m/.ssh/authorized_keys
vi home/kr0m/.bashrc
vi home/kr0m/.bash_profile
vi home/kr0m/.vimrc

mkdir -p root/.scripts
vi root/.bashrc
vi root/.bash_profile
vi root/.vimrc
vi root/.scripts/securityCheck.sh
vi root/.scripts/sshKeys.py
vi root/.scripts/sshAccess.py

mkdir -p usr/local/etc/rc.d
vi usr/local/etc/rc.d/sshAccess

mkdir -p var/cron/tabs/
vi var/cron/tabs/root

La estructura final de directorios/ficheros será la siguiente:

├── Bastillefile
├── home
│   └── kr0m
│       ├── .bash_profile
│       ├── .bashrc
│       ├── .ssh
│       │   └── authorized_keys
│       └── .vimrc
├── root
│   ├── .bash_profile
│   ├── .bashrc
│   ├── .scripts
│   │   ├── securityCheck.sh
│   │   ├── sshAccess.py
│   │   └── sshKeys.py
│   └── .vimrc
├── usr
│   └── local
│       └── etc
│           └── rc.d
│               └── sshAccess
└── var
    └── cron
        └── tabs
            └── root

Definimos en el Bastillefile las acciones a realizar sobre la jail, instalación de software, modificación de ficheros, adición de usuarios, copia de ficheros y arranque de servicios:

vi Bastillefile

CMD ASSUME_ALWAYS_YES=yes pkg upgrade
PKG vim bash bash-completion curl bat py39-pip rsync python
CMD pip install --upgrade pip
CMD pip install requests
CMD bash -c 'sed -i "" "s/127.0.0.1\t\tlocalhost localhost.my.domain/127.0.0.1\t\t$HOSTNAME $HOSTNAME.alfaexploit.com localhost localhost.my.domain/g" /etc/hosts'
CMD bash -c 'id kr0m 1>2&>/dev/null;if [ $? -eq 0 ];then echo "KR0M-PASSWORD" | pw usermod -n kr0m -s /usr/local/bin/bash -h 0;else echo "KR0M-PASSWORD" | pw useradd -n kr0m -m -G wheel -s /usr/local/bin/bash -h 0;fi'
CMD echo "ROOT-PASSWORD" | pw usermod -n root -s /usr/local/bin/bash -h 0

CP home usr
CMD chmod 700 /usr/home/kr0m/.ssh
CMD chown -R kr0m:kr0m /usr/home/kr0m

CP root /
CMD chmod 700 /root/.scripts/sshKeys.py
CMD chmod 700 /root/.scripts/securityCheck.sh
CMD chmod 700 /root/.scripts/sshAccess.py

CP usr /
CMD chmod 555 /usr/local/etc/rc.d/sshAccess
CMD chown root:wheel /usr/local/etc/rc.d/sshAccess

CP var /
CMD chmod 600 /var/cron/tabs/root

SYSRC sshAccess_enable=YES
SERVICE sshAccess start

SYSRC sshd_enable=YES
SERVICE sshd start

NOTA: El comando CP solo añade contenido, por lo que se preservan los ficheros existentes añadiendo los nuevos.

Creamos un usuario de RO para el repositorio de GitOlite:

vi gitolite-admin/conf/gitolite.conf

repo bastille-basicconfiguration
    RW+     =   kr0m
    RO      =   mightymax
git add conf/gitolite.conf
git commit -m "Added RO user to bastille-basicconfiguration repository configuration"
git push

Creamos el NameSpace y clonamos el repositorio dentro:

mkdir /usr/local/bastille/templates/datadyne.alfaexploit.com
cd /usr/local/bastille/templates/datadyne.alfaexploit.com
git clone gitolite@datadyne.alfaexploit.com :bastille-basicconfiguration.git

bastille list template
/usr/local/bastille/templates
/usr/local/bastille/templates/datadyne.alfaexploit.com
/usr/local/bastille/templates/datadyne.alfaexploit.com/bastille-basicconfiguration

Creamos una jail de pruebas:

bastille create -T test 13.2-RELEASE 192.168.69.26/24 nfe0

Aplicamos el template:

bastille template test datadyne.alfaexploit.com/bastille-basicconfiguration

Si te ha gustado el artículo puedes invitarme a un RedBull aquí