Difference between revisions of "Network Interface Authentication (wpa-suplicant)"
Jump to navigation
Jump to search
Rafahsolis (talk | contribs) |
Rafahsolis (talk | contribs) |
||
| Line 25: | Line 25: | ||
Check by listening with wireshar & filter by: eapol | 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 | /sbin/wpa_supplicant -s -B -P /run/wpa_supplicant.eth0.pid -i eth0 -D wired -c /etc/wpa_supplicant.conf | ||
| + | |||
| + | == 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> | ||
Revision as of 12:23, 30 January 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"
}
If wpa supplicant does not start try to start it manualy
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
#!/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