VirtualBox 5 + Vagrant
Con la nueva versión de VirtualBox, podemos crear redes dentro de Vagrant, pero es posible que si realizamos la instalación por defecto, tengamos problemas con el driver de VritualBox.
Para evitar estos problemas, instalaremos VirtualBox desde la línea de comandos, indicando que queremos la versión 5 del el driver de red.
VirtualBox.exe -msiparams NETWORKTYPE=NDIS5
A disfrutar virtualizando 😉
Configurar fail2ban para que envíe un SMS al bloquear un ataque por SSH
El primer paso es crearse una cuenta gratuita en Twilio
Una vez tengamos la cuenta creada instalaremos fail2ban, en este caso, lo hemos hecho sobre Debian.
aptitude install fail2ban
Una vez instalado, es necesario crear la acción en fail2ban que envíe un SMS.
vi /etc/fail2ban/action.d/sms.conf
Ahora configuramos fail2ban para que al bloquear una conexión SSH, ejecute esta acción.
Es necesario modificar la directiva «[ssh]»
vi /etc/fail2ban/jail.conf [ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 6 action = iptables[name=SSH, port=ssh, protocol=tcp] sms
Una vez configurado fail2ban, es necesario crear el script que enviará los SMS.
vi /root/scripts/sms.conf chmod 755 /root/scripts/sms.conf
Por último, creamos el fichero con las credenciales, el cual solo tendrá permisos de lectura por el usuario root para securizarlo.
vi /root/scripts/secret.conf chmod 755 /root/scripts/secret.conf
Ahora probamos el script para verificar que envía los SMS Correctamente
/root/scripts/sms.sh start && /root/scripts/sms.sh ban 127.0.0.1
Y por último, solo queda reiniciar el servicio de fail2ban para que actualize los cambios
systemctl restart fail2ban
Todos los scrips necesarios y los ficheros de configuración, los podréis encontrar en:
https://github.com/dtrinf/fail2ban-sms
Vídeos Codemotion Madrid
Hola,
Aquí dejo el enlace a los vídeos de la Codemotion Madrid que tuvo lugar el 27 y 28 de Noviembre, más que nada es una note mental para ver los más interesantes.
https://www.youtube.com/channel/UCd_1KHg4t2VKGsSDF8OD5Cw/videos
Vídeo introductorio a Docker
A continuación un vídeo de Red Hat que realiza una breve introducción a Docker.
Fuente Original: https://access.redhat.com/videos/1499153
Borrar Historial Linux
Si queremos borrar todo el historial, podemos ejecutar el siguiente comando
history -c
También podemos borrar únicamente un determinado comando del historial
history -d <numero linea>
Otra opción, es configurar nuestro entorno para que el historial ignore todos los comandos que comiencen con un espacio delante, para eso editamos el fichero «~/.bashrc» y agregamos la siguiente línea:
HISTCONTROL=ignorespace
También podemos ignorar los espacios y las líneas repetidas
HISTCONTROL=ignoreboth
El ejemplo sería el siguiente:
prompt$ echo guardado prompt$ echo no guardado > # ^ extra space
Si queremos, también podemos configurarnos una función en nuestro «~/.bashrc» para poder borrar la última línea del historial.
function forget() { history -d $(expr $(history | tail -n 1 | grep -oP '^ \d+') - 1); }
Rotar un fichero de log en linux
Cuando queremos rotar un fichero de log, o un fichero de texto que crece exponencialmente y queremos ir recortándolo automáticamenet, podemos utilizar logrotate.
Esto nos permite limitar el fichero por tamaño o por antigüedad, y llegado el caso, lo comprimirá y creará un fichero nuevo para seguir guardando los logs.
Para hacer esto, podemos seguir la guía que encontraremos en la siguiente página.
Agregar MIBs en un servidor de monitorización Linux
Para agregar un nuevo fichero con la definición de snmp de un servidor, lo haremos como indica en el siguiente enlace:
Actualización de un site OMD que ya tengamos configurado.
Para realizar la actualización, lo primero que tenemos que hacer es descargarnos el paquete de actualización, podemos conseguir la última revisión en la página de omd.
http://files.omdistro.org/nightly/
En nuestro caso
wget http://www.nierlein.com/omd/nightly/2015-07-14/omd-1.21.20150714.rhel6.x86_64.rpm
Una vez que tenemos el paquete descargado, procedemos a instalarlo.
rpm -Uvh check-mk-raw-1.2.6p7-el6-34.x86_64.rpm
Para actualizar el site, primero lo pararemos.
omd stop
Por defecto, la actualización configura la última versión instalada como la actual, podemos revisar las versiones de OMD instaladas con el siguiente comando.
omd versions
Si queremos modificar la versión a utilizar, utilizaremos el siguiente comando, aunque en este punto no debería ser necesario
omd setversion [version]
Antes de hacer la actualización, podemos hacer una copia del site, por si falla el proceso de actualización
omd cp [SITE] [NEWNAME]
Una vez escogida la nueva versión, procedemos a actualizar el site en cuestión.
omd update [SITE]
Por último, solo queda arrancar el site de nuevo.
omd start
Introducción a Ansible – Playbooks II
A continuación, especificaremos el Playbook que hicimos en el post anterior, más correctamente, pero ahora, modificaremos el reinicio del servicio NTP, y lo incluiremos dentro de la directiva «handlers», con esto, conseguiremos que el servicio únicamente se reinicie en caso de que se haya realizaro una modificación en el servidor con las dependencias anteriores, si no se ha modificado nada previamente, el servicio no será reiniciado.
--- - hosts: webservers vars: ntp_server: hora.rediris.es remote_user: root tasks: - name: Instalando ntpdate apt: name: ntp state: present - name: agregando el fichero de configuracion copy: src: /root/playbooks/ntp.conf dest: /etc/ntp.conf handlers: - name: reinicio sel servicio ntp para coger los cambios. service: name: ntp state: restarted
Como se puede ver, la definición de este Playbook es diferente del anterior, es la nueva forma de definición, la anterior, también está soportada y de momento parece que no la van a descontinuar.
Por otro lado, este Playbook, también tiene un inconveniente, y es que está preparado únicamente para servidores Debian o derivados, en caso de tener servidores CentOS dentro del grupo «webservers», dará un error en la ejecución.
Para solventar este problema, modificaremos el Playbook de la siguiente manera.
--- - hosts: webservers vars: ntp_server: hora.rediris.es remote_user: root tasks: - name: Instalando ntpdate Debian apt: name: ntp state: present when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu' - name: Instalando ntpdate CentOS yum: name: ntp state: present when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux' - name: agregando el fichero de configuracion copy: src: /root/playbooks/ntp.conf dest: /etc/ntp.conf handlers: - name: reinicio sel servicio ntp para coger los cambios. service: name: ntp state: restarted
En este caso, como vemos la ejecución ha dado un error, ya que es una distribución mínima de CentOS y no tiene instalado Python.
root@master:~/playbooks# ansible-playbook ntp.yml PLAY [webservers] ************************************************************* GATHERING FACTS *************************************************************** ok: [192.168.49.42] ok: [192.168.49.43] TASK: [Instalando ntpdate Debian] ********************************************* skipping: [192.168.49.43] ok: [192.168.49.42] TASK: [Instalando python CentOS] ********************************************** skipping: [192.168.49.42] ok: [192.168.49.43] TASK: [Instalando ntpdate CentOS] ********************************************* skipping: [192.168.49.42] ok: [192.168.49.43] TASK: [agregando el fichero de configuracion] ********************************* ok: [192.168.49.42] changed: [192.168.49.43] PLAY RECAP ******************************************************************** 192.168.49.42 : ok=3 changed=0 unreachable=0 failed=0 192.168.49.43 : ok=4 changed=1 unreachable=0 failed=0
Introducción a Ansible – Playbooks I
Los Playbooks son los ficheros de configuración, despliegue y orquestación. En ellos describimos las políticas que queremos aplicar a nuestros servidores.
La ventaja de utilizar playbooks sobre comandos online como hemos visto previamente, es que las políticas quedan guardadas, y pueden ser mucho más complejas.
A continuación, mostraré como pasar un ejemplo simple como los que hemos visto previamente, a un Playbook.
En el siguiente ejemplo, podemos ver como se realiza la instalación del servicio «ntp» en el grupo de servidores «webservers»
# ansible webservers -m apt -a "name=ntp state=present"
A continuación, mostramos como sería esto en un fichero de playbook.
--- - hosts: webservers tasks: - name: Instalando ntpdate apt: name=ntp state=present
Vemos que se define el grupo de servidores con la directiva «hosts», y tenemos la etiqueta «tasks» dentro de la cual van a ir todas las tareas a realizarse, en este caso, invocaremos el módulo apt, indicando que queremos que el servicio «ntp» se encuentre presente.
Para ejecutar el Playbook, lo haríamos con el siguiente comando
# ansible-playbook ntp.yml
Y veríamos la ejecución del mismo.
Una vez que sabemos hacer un Playbook simple, podemos añadir más complegidad al mismo, como el que se muestra a continuación.
# vi ~/playbooks/ntp.yml --- - hosts: webservers remote_user: root vars: ntp_server: hora.rediris.es tasks: - name: Instalando ntpdate apt: name=ntp state=present - name: agregando servidor al fichero de configuracion shell: echo "server {{ ntp_server }}" >> /etc/ntp.conf - name: reinicio sel servicio ntp para coger los cambios. service: name=ntp state=restarted ---
En este Playbook vemos que se indica el usuario remoto a utilizar, también se definen variables que se utilizarán posteriormente en el Playbook.
En el apartado de tareas, se realiza la instalación del servicio «ntp» con el módulo apt, posteriormente se agrega un nuevo servidor de tiempo en el fichero de configuración, y se reinicia el servicio con el módulo «service».
Este sería el resultado de la ejecución del Playbook.
root@master:~/playbooks# ansible-playbook ntp.yml PLAY [webservers] ************************************************************* GATHERING FACTS *************************************************************** ok: [192.168.1.11] TASK: [Instalando ntpdate] **************************************************** changed: [192.168.1.11] TASK: [agregando servidor al fichero de configuracion] ************************ changed: [192.168.1.11] TASK: [reinicio sel servicio ntp para coger los cambios.] ********************* changed: [192.168.1.11] PLAY RECAP ******************************************************************** 192.168.1.11 : ok=4 changed=3 unreachable=0 failed=0
Con esto ya tenemos el servicio «ntp» configurado en nuestros clientes y funcionando.
Comentar que este Playbook tiene un problema, y es que cada vez que lo ejecutemos, nos creará una nueva linea en el fichero de configuración del servicio «ntp», por lo que es recomendable, definir un fichero de configuración en el nodo master, y copiarlo posteriormente a los nodos.
Para eso es recomendable tener el fichero de configuración en el servidor local, modificar la linea del módulo «shell» por el módulo «copy» para copiar el fichero de configuración por scp.
copy: src=/root/playbooks/ntp.conf dest=/etc/ntp.conf
Una vez copiado, podríamos agregar otra tarea para modificar los permisos del fichero.
file: dest=/etc/ntp.conf mode=644 owner=root group=root
El Playbook final quedaría de la siguiente forma.
--- - hosts: webservers remote_user: root vars: ntp_server: hora.rediris.es tasks: - name: Instalando ntpdate apt: name=ntp state=present - name: agregando el fichero de configuracion copy: src=/root/playbooks/ntp.conf dest=/etc/ntp.conf - name: Modificando permisos del fichero de config file: dest=/etc/ntp.conf mode=644 owner=root group=root - name: reinicio sel servicio ntp para coger los cambios. service: name=ntp state=restarted