VirtualBox 5 + Vagrant

febrero 28, 2016 Deja un comentario

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 😉

Categorías: Administración

Configurar fail2ban para que envíe un SMS al bloquear un ataque por SSH

febrero 2, 2016 Deja un comentario

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

diciembre 13, 2015 Deja un comentario

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

Categorías: General, Programación Etiquetas:

Vídeo introductorio a Docker

diciembre 9, 2015 Deja un comentario

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
Categorías: Administración Etiquetas: ,

Borrar Historial Linux

octubre 23, 2015 Deja un comentario

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);
}
Categorías: Administración Etiquetas: , ,

Rotar un fichero de log en linux

septiembre 9, 2015 Deja un comentario

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.

http://www.thegeekstuff.com/2010/07/logrotate-examples/

Categorías: Administración Etiquetas: ,

Agregar MIBs en un servidor de monitorización Linux

agosto 13, 2015 Deja un comentario

Para agregar un nuevo fichero con la definición de snmp de un servidor, lo haremos como indica en el siguiente enlace:

http://cuddletech.com/articles/snmp/node11.html

Categorías: Administración Etiquetas: , ,

Actualización de un site OMD que ya tengamos configurado.

julio 15, 2015 Deja un comentario

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

junio 5, 2015 Deja un comentario

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
Categorías: Administración, General Etiquetas: , ,

Introducción a Ansible – Playbooks I

junio 3, 2015 Deja un comentario

 

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