Revisión 507
Añadido por Antonio J. Abasolo Sierra hace casi 12 años
dhcp-server-denegar/trunk/dhcp-server-denegar | ||
---|---|---|
# Should-Stop:
|
||
# Default-Start: 2
|
||
# Default-Stop:
|
||
# Short-Description: Genera el fichero dhcpd.conf, denegando la entrada a los no permitidos
|
||
# Short-Description: Genera el fichero dhcpd.conf, denegando la entrada a los no permitidos.
|
||
# Description: Controla el acceso al sistema. Los equipos denegados no tomarán ip
|
||
### END INIT INFO
|
||
|
||
# ***********************************************************************************************************
|
||
# Antonio J. Abasolo Sierra (Dic-2012)
|
||
# IES Rodriguez Moñino
|
||
#
|
||
# Controla el acceso al sistema, filtrando los equipos a los que el servidor dhcp del centro ofrecerá ip,
|
||
# y por lo tanto podrán navegar.
|
||
# Se base en el sistema de lista blanca (mantenida por el usuario),
|
||
# y lista negra (obtenida por filtrado de entradas del fichero del servidor dhcp: dhcpd.leases)
|
||
# Las entradas manuales que se hagan en la lista negra, también se mantienen.
|
||
# Si un equipo está en ambas listas, se le denegará el acceso: sistema deny,access
|
||
#
|
||
# La Lista_Blanca de equipos que dejamos conectarse la mantenemos nosotros, y debe tener este formato:
|
||
# MAC,EQUIPO[,IP][,NOMBRE]
|
||
... | ... | |
# [,IP] --> Se rellenará automáticamente por el script.
|
||
# [,NOMBRE] --> Se rellenará automáticamente por el script (si lo tiene).
|
||
#
|
||
# Para dejarlo operativo colocaremos un crontab (crontab -e) que ejecute este script cada 5 min. (por ej.):
|
||
# 05 * * * 1-5 /root/dhcp-server-denegar start --> cada 5 minutos de lunes a viernes
|
||
#
|
||
# O bien, lo pondremos en los script de arranque del sistema con estos pasos:
|
||
# cp dhcp-server-denegar /etc/init.d/
|
||
# update-rc.d dhcp-server-denegar defaults
|
||
#
|
||
# Tiene dos opciones de ejecución:
|
||
# - start --> hace lo indicado: bloquea accesos al sistema por MAC
|
||
# - stop --> anula el bloqueo por MAC, y deja el sistema tal como estaba antes (por defecto).
|
||
# Para dejarlo operativo colocaremos un crontab que ejecute este script cada 5 min. (por ej.)
|
||
# ***********************************************************************************************************
|
||
|
||
FILE_CONF=/etc/dhcp/dhcpd.conf
|
||
... | ... | |
if [ ! $esta ]; then
|
||
echo "$MacPC,$IpPC,$NombrePC" >> pcs
|
||
fi
|
||
NombrePc=""
|
||
fi
|
||
NombrePc=""
|
||
;;
|
||
"")
|
||
;;
|
||
... | ... | |
Obtener_ListaNegra() {
|
||
# Recorremos el fichero de leases obtenido, y lo filtramos con la lista-blanca
|
||
echo " - Creamos $LISTA_NEGRA: lista de equipos a denegar (lista negra)"
|
||
#rm -f $LISTA_NEGRA 2>/dev/null ; touch $LISTA_NEGRA
|
||
# rm -f $LISTA_NEGRA 2>/dev/null ; touch $LISTA_NEGRA
|
||
cat pcs.leases | while read linea; do
|
||
MAC=`echo $linea | cut -f1 -d,`
|
||
IP=`echo $linea | cut -f2 -d,`
|
||
... | ... | |
mv tmp $LISTA_NEGRA
|
||
fi
|
||
done
|
||
rm -f pcs.leases
|
||
}
|
||
|
||
Crear_Configuracion() {
|
||
echo " - Creamos $FILE_CONF: fichero de configuración de dhcp-server"
|
||
Configuracion_Base
|
||
if [ ! -e $LISTA_BLANCA ]; then touch $LISTA_BLANCA; fi
|
||
if [ ! -e $LISTA_NEGRA ]; then touch $LISTA_NEGRA; fi
|
||
NUMPC=0
|
||
echo "" >> $FILE_CONF
|
||
echo "# Equipos con entrada denegada:" >> $FILE_CONF
|
||
... | ... | |
if [ "$PC" ]; then
|
||
EQUIPO=$EQUIPO"_"$PC
|
||
fi
|
||
# ESTA=`grep $PC $FILE_CONF` 2>/dev/null
|
||
# #if [ "$ESTA" ]; then PC=Equipo_$NUMPC; fi
|
||
## if [ "$ESTA" ]; then
|
||
# PC=$PC"_"$NUMPC
|
||
# # fi
|
||
# else
|
||
# PC=Equipo_$NUMPC
|
||
# fi
|
||
if [ "$MAC" ]; then
|
||
echo "host $EQUIPO {
|
||
hardware ethernet $MAC;
|
||
... | ... | |
echo ""
|
||
}
|
||
|
||
Vaciar_Leases() {
|
||
echo " - Vaciamos la lista de equipos de $FILE_LEASES:"
|
||
echo "# The format of this file is documented in the dhcpd.leases(5) manual page.
|
||
# This lease file was written by isc-dhcp-4.1.1-P1
|
||
" > $FILE_LEASES
|
||
}
|
||
|
||
# -----------------------------------------------------------------------------
|
||
case "$1" in
|
||
start)
|
||
... | ... | |
Obtener_ListaNegra
|
||
|
||
Crear_Configuracion
|
||
Vaciar_Leases
|
||
Reiniciar_Servicio
|
||
|
||
;;
|
Exportar a: Unified diff
dhcp-server-denegar