| Line 44: |
Line 44: |
| | nsCertType = client | | nsCertType = client |
| | ...</nowiki> | | ...</nowiki> |
| | + | |
| | + | == Script == |
| | + | <source lang=bash>#!/bin/bash |
| | + | #Made with love, 4u |
| | + | echo "Configurador cliente NAC para linux Debian based" |
| | + | |
| | + | pfx=$1 |
| | + | iface=$2 |
| | + | hostname=$3 |
| | + | |
| | + | copio_y_cambio_a_local () { |
| | + | |
| | + | mkdir /NAC/ |
| | + | cp $pfx /NAC/ |
| | + | cd data |
| | + | cp * /NAC/ |
| | + | cd /NAC/ |
| | + | |
| | + | } |
| | + | |
| | + | fix_openssl () { |
| | + | |
| | + | read -p "Quieres hacer el el cambio en Openssl?" yn |
| | + | case $yn in |
| | + | [YySs]* ) |
| | + | if [ "$(cat /etc/ssl/openssl.cnf | grep -v "#" | grep "nsCertType = client" | wc -l )" -ne 1 ]; then |
| | + | sed -i '0,/# nsCertType = client, email/{s/# nsCertType = client, email/nsCertType = client/}' /etc/ssl/openssl.cnf |
| | + | fi |
| | + | ;; |
| | + | [Nn]* ) |
| | + | echo "Pos vale!!" |
| | + | ;; |
| | + | * ) |
| | + | echo "Contesta!!! yes or no?" |
| | + | echo "No lo hare entonces" |
| | + | ;; |
| | + | esac |
| | + | |
| | + | echo "" |
| | + | |
| | + | } |
| | + | |
| | + | replace_interfaces () { |
| | + | |
| | + | echo "Solo se va a dejar la interfaz que se usa para la autenticacion 802.1x" |
| | + | cat interfaces | sed 's/eth0/'$iface'/g' > /etc/network/interfaces |
| | + | echo "" |
| | + | |
| | + | } |
| | + | |
| | + | replace_wpa () { |
| | + | |
| | + | echo "Vamos a leer el mondongo y va ha salir porn pantalla (vamos,la clave del pem) " |
| | + | read mondongo |
| | + | |
| | + | cat wpa_supplicant.conf | sed 's/replacehostname/'$hostname'/g' | sed 's/aquivalachicha/'$mondongo'/g' > /etc/wpa_supplicant.conf |
| | + | echo "" |
| | + | |
| | + | } |
| | + | |
| | + | reinicia_servicios () { |
| | + | |
| | + | echo "Vamos a reiniciar los servicios, reza si crees y sino tomate una cocacola" |
| | + | echo "Parando networking" |
| | + | service networking stop |
| | + | echo "Levantando networking" |
| | + | service networking start |
| | + | echo "" |
| | + | |
| | + | } |
| | + | |
| | + | crea_claves () { |
| | + | |
| | + | echo "" |
| | + | echo "Exportando la CA" |
| | + | openssl pkcs12 -in $pfx -out cacert.pem -cacerts -nokeys |
| | + | |
| | + | echo "" |
| | + | echo "Exportando el certificado de cliente" |
| | + | openssl pkcs12 -in $pfx -out cert.pem -clcerts -nokeys |
| | + | |
| | + | echo "" |
| | + | echo "Exportando la clave privada (necesita contraseña)" |
| | + | openssl pkcs12 -in $pfx -out key.pem -nocerts |
| | + | |
| | + | echo "Claves creadas!! Acuerdate de la pass!!!" |
| | + | ls *.pem |
| | + | |
| | + | } |
| | + | |
| | + | comprueba_conexion () { |
| | + | |
| | + | #Ole illo que cutrez ,xD |
| | + | |
| | + | echo "Se elimina el "/var/run/wpa_supplicant/" del interfaz" |
| | + | rm /var/run/wpa_supplicant/$iface |
| | + | |
| | + | read -p "Quieres reiniciar los servicios antes?" yn |
| | + | case $yn in |
| | + | [YySs]* ) |
| | + | echo "Reiniciando servicios" |
| | + | reinicia_servicios |
| | + | ;; |
| | + | [Nn]* ) |
| | + | echo "Pos vale!!" |
| | + | ;; |
| | + | * ) |
| | + | echo "Contesta!!! yes or no?" |
| | + | echo "No lo hare entonces" |
| | + | ;; |
| | + | esac |
| | + | echo "Lanza el comando de negociacion de wpa_supplicant a parte" |
| | + | wpa_supplicant -Dwired -i$iface -c/etc/wpa_supplicant.conf -ddd 2>&1 >> wpa_supplicant_eap.log & |
| | + | echo "Pide IP" |
| | + | dhclient $iface |
| | + | echo "" |
| | + | |
| | + | } |
| | + | |
| | + | desabilta_network_manager () { |
| | + | |
| | + | read -p "¿Quieres deshabilitar el Network Manager?(default N) Ss/Nn Reinicio? R/r" yn |
| | + | case $yn in |
| | + | [YySs]* ) |
| | + | echo "Parando network manager" |
| | + | service network-manager stop |
| | + | echo "ATENCION!: Se va a deshabilitar Network-Manager en inicio!" |
| | + | systemctl disable NetworkManager.service |
| | + | ;; |
| | + | [Nn]* ) |
| | + | #Andrew no se fiaba de reinicialo aqui!! |
| | + | echo "Pos vale!!" |
| | + | ;; |
| | + | [Rr]* ) |
| | + | echo "Venga lo reinicio" |
| | + | service network-manager stop |
| | + | service network-manager start |
| | + | ;; |
| | + | * ) |
| | + | echo "Pos vale!!" |
| | + | echo "No lo hare entonces" |
| | + | ;; |
| | + | esac |
| | + | echo "" |
| | + | |
| | + | } |
| | + | |
| | + | comprueba_root () { |
| | + | |
| | + | if [ "$EUID" -ne 0 ]; then |
| | + | echo "Lanzalo como root!!! y si no te atreves lee lo que hace!! xD" |
| | + | exit -1 |
| | + | fi |
| | + | |
| | + | } |
| | + | |
| | + | install () { |
| | + | |
| | + | copio_y_cambio_a_local |
| | + | crea_claves |
| | + | fix_openssl |
| | + | replace_interfaces |
| | + | replace_wpa |
| | + | desabilta_network_manager |
| | + | reinicia_servicios |
| | + | |
| | + | } |
| | + | |
| | + | comprueba_root |
| | + | |
| | + | case $pfx in |
| | + | |
| | + | retest) |
| | + | |
| | + | if [ $# -ne 2 ]; then |
| | + | echo "Necesita parametros!! melon!!" |
| | + | echo "Parametro 1: retest" |
| | + | echo "Parametro 2: nombre de la interfaz cableada que se va a reconfigurar" |
| | + | exit -1 |
| | + | fi |
| | + | |
| | + | comprueba_conexion |
| | + | ;; |
| | + | *) |
| | + | if [ $# -ne 3 ]; then |
| | + | echo "Necesita parametros!! melon!!" |
| | + | echo "Parametro 1: Pfx que contiene CA, Clave de cliente, y privada" |
| | + | echo "Parametro 2: nombre de la interfaz cableada que se va a configurar" |
| | + | echo "Parametro 3: hostname del equipo NOMBRE.dominio" |
| | + | echo "<script> <absolute path pfx> <interfaz> <hostname completo>" |
| | + | echo "Otras opciones: retest <interfaz> - No realiza configuracion, reintenta al autenticacion EAP" |
| | + | exit -1 |
| | + | fi |
| | + | |
| | + | install |
| | + | ;; |
| | + | esac</source> |