Difference between revisions of "Network Interface Authentication (wpa-suplicant)"

From RHS Wiki
Jump to navigation Jump to search
Tag: visualeditor
Tag: visualeditor
 
Line 27: Line 27:
  
 
  <nowiki>...
 
  <nowiki>...
  nsCertType = client
+
  nsCertType = client
  ...</nowiki>
+
  ...</nowiki>
  
  
Line 252: Line 252:
  
 
echo "Claves creadas!!  Acuerdate de la pass!!!"
 
echo "Claves creadas!!  Acuerdate de la pass!!!"
ls *.pem
+
ls ${HOSTNAME}/*.pem
  
 
}
 
}

Latest revision as of 11:58, 18 November 2019

/etc/network/interfaces auto eth0

iface eth0 inet dhcp
   wpa-iface eth0
   wpa-driver wired
   wpa-conf /etc/wpa_supplicant.conf

/etc/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=2
ap_scan=0
#fast_reauth=1
network={
   ssid="BBVA"
   key_mgmt=IEEE8021X
   eap=TLS
   identity="host/WF0006D3.ad.bbva.com"
   ca_cert="/NAC/cacert.pem"
   client_cert="/NAC/cert.pem"
   private_key="/NAC/key.pem"
   private_key_passwd="1234567890"

}

Deploy certificates[edit]

  • Edit /etc/ssl/openssl.cnf
...
   nsCertType = client
   ...


If wpa supplicant does not start try to start it manualy[edit]

Check by listening with wireshar & filter by: eapol

/sbin/wpa_supplicant -s -B -P /run/wpa_supplicant.eth0.pid -i eth0 -D wired -c /etc/wpa_supplicant.conf

Script[edit]

#!/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

Certs From .pfx[edit]

HOSTNAME=$1
pfx=$1.pfx

crea_claves () {

	echo ""
	echo "Exportando la CA"
	openssl pkcs12  -in ${pfx}  -out ${HOSTNAME}/${HOSTNAME}_cacert.pem -cacerts -nokeys
	
	echo ""
	echo "Exportando el certificado de cliente"
	openssl pkcs12  -in ${pfx} -out ${HOSTNAME}/${HOSTNAME}_cert.pem -clcerts -nokeys
	
	echo ""
	echo "Exportando la clave privada (necesita contraseña)"
	openssl pkcs12  -in ${pfx} -out ${HOSTNAME}/${HOSTNAME}_key.pem -nocerts

	echo "Claves creadas!!  Acuerdate de la pass!!!"
	ls ${HOSTNAME}/*.pem

}
mkdir ${HOSTNAME}
crea_claves