Proyecto

General

Perfil

« Anterior | Siguiente » 

Revisión 507

dhcp-server-denegar

Ver diferencias:

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