Bloquear windows update con iptables

Son muchos los administradores de redes que quieren bloquear las actualizaciones de windows para todos los usuarios de su red.

En las últimas versiones de Windows , Windows 8 y Windows 10 las actualizaciones se descargan en segundo plano sin interacción ninguna con el usuario y muchas veces el usuario desconoce esto. Mientras se esta realizando esta descarga se esta consumiendo un gran ancho de banda. Existe un método rápido para bloquear las actualizaciones de windows 10 en cada máquina con windows 8 o windows 10:

Inicio -> services.msc -> Buscar servicio ‘Windows Update’ -> Detener servicio y Deshabilitar.

En este manual vamos a ir mas allá y lo que vamos a hacer es bloquear las actualizaciones de windows pero para TODA NUESTRA RED.

 

Para ello necesitamos:

  • Máquina linux como router
  • Dnmasq instalado
  • Una regla de iptables para redirigir las peticiones DNS hacia dnsmasq

 

Con dnsmasq instalado lo único que tenemos que hacer es editar su archivo de configuración en /etc/dnsmasq.conf y añadir lo siguiente:

 

address=/download.microsoft.com/127.0.0.1
address=/windowsupdate.microsoft.com/127.0.0.1
address=/windowsupdate.windows.com/127.0.0.1
address=/update.microsoft.com/127.0.0.1
address=/update.windows.com/127.0.0.1
address=/crl.microsoft.com/127.0.0.1
address=/office.microsoft.com/127.0.0.1
address=/download.windowsupdate.com/127.0.0.1
address=/wustat.microsoft.com/127.0.0.1
address=/wustat.windows.com/127.0.0.1

expand-hosts

Guardamos los cambios en el archivo dnsmasq.conf y pasamos al siguiente paso.

 

2. Redirigir las peticiones DNS de nuestra red hacia dnsmasq:

iptables -t nat -A PREROUTING -i <INTERFAZ_LAN> -p udp –dport 53 -j DNAT –to <IP_LINUX_ROUTER>:53

Si tenemos un firewall con politica por defecto DROP, tendriamos que dar acceso al trafico del puerto 53, en ambos sentidos. Trafico de ida y de vuelta. Lo podemos hacer con las siguientes sencillas reglas iptables:

iptables -t filter -A INPUT -p tcp –dport 53 -j ACCEPT

iptables -t filter -A OUTPUT -p tcp –sport 53 -j ACCEPT

iptables -t filter -A OUTPUT -p udp –dport 53 -j ACCEPT

iptables -t filter -A OUTPUT -p udp –sport 53 -j ACCEPT

 

3. Reiniciar el servicio dnsmasq..

Ahora solo nos queda reiniciar el servidor dnsmasq y nuestro pequeño truco empezará a funcionar:

/etc/init.d/dnmasq restart

A partir de ahora, ninguna máquina en nuestra red con windows 8 o windows 10 podrá realizar una actualización y conseguiremos ahorrar un monton de ancho de banda que estas actualizaciones generan.

 

Share

[Gentoo] Pequeño manual de Equery

Equery es una herramienta que no debe faltar en tu sistema gentoo. Ya que, permite un sin fin de posibilidades. En esta ocasión vengo a dar algunos ejemplos de como podemos utilizar esta herramienta tan útil, pero antes, la tenemos que instalar con el paquete gentoolkit:

# emerge app-portage/gentoolkit

Empecemos….

Saber que aplicación creó un directorio o archvio en nuestro sistema: Con belongs.

# equery belongs -e /usr/src/linux

Podemos ver el resultado. Como muestra que la creación del directorio /usr/src/linux ha sido provocada por el paquete `sys-kernel/gentoo-sources`

* Searching for /usr/src/linux …
sys-kernel/gentoo-sources-4.10.9 (/usr/src/linux-4.10.9-gentoo)

Listar todos los paquetes con una USE en especifica en el árbol portage:

# equery hasuse mp3

 

* Searching for USE flag mp3 …
[IP-] [ ] app-cdr/brasero-3.12.1:0/3.1
[IP-] [ ] app-emulation/wine-2.0:0
[IP-] [ ] app-misc/tracker-1.10.5:0/100
[IP-] [ ] media-plugins/gst-plugins-meta-1.10.3:1.0
[IP-] [ ] media-sound/audacity-2.0.5:0
[IP-] [ ] media-video/ffmpeg-3.2.4:0/55.57.57
[IP-] [ ] virtual/ffmpeg-9-r2:0

Podemos ver que paquetes dependen de un paquete:

# equery depends gtk+

Para ver las dependencias de un paquete, es decir, todas las que deben estar en nuestro sistema para que funcione.

# equery g dev-util/netbeans

Esto es muy útil en el caso de tener algún problema al realizar una actualización, ya que, visualizando las dependencias podemos bloquear X paquete para evitar cualquier conflicto o bloqueo.

Para búsquedas en el arbol de portage y overlay. (Permite expresiones regulares). Por ejemplo podemos buscar el texto java en los paquetes de portage:

# equery list -po *java*

Este seria el resultado:

* Searching for *java* …
[-P-] [ ~] app-emacs/javascript-2.0_beta8:0
[-P-] [ ~] app-emacs/javascript-2.2.1:0
[-P-] [ ] app-eselect/eselect-java-0.2.0:0
[-P-] [ ~] app-eselect/eselect-java-0.2.0-r1:0
[IP-] [ ] app-eselect/eselect-java-0.3.0:0
[-P-] [ ~] app-portage/java-ebuilder-0.1:0
[-P-] [ ~] app-portage/java-ebuilder-0.2:0
[-P-] [ -] app-portage/java-ebuilder-9999:0
[-P-] [ ~] dev-haskell/language-javascript-0.5.14.2:0/0.5.14.2
[-P-] [ ~] dev-haskell/language-javascript-0.6.0.9:0/0.6.0.9
[-P-] [ ] dev-java/ant-javamail-1.9.2:0
[-P-] [ ~] dev-java/ant-javamail-1.9.2-r2:0
[-P-] [ ] dev-java/apple-java-extensions-bin-1.5-r1:0
[-P-] [ ] dev-java/dbus-java-2.7-r1:0
[-P-] [ ] dev-java/dnsjava-2.1.6:0
[-P-] [ ~] dev-java/dnsjava-2.1.7:0
[-P-] [ ] dev-java/geoip-java-1.3.0:0
[-P-] [ ] dev-java/gnu-javamail-1.0-r2:1
[-P-] [ ] dev-java/java-apicheck-0_p20150907:0
[IP-] [ ] dev-java/java-config-2.2.0-r3:2
[-P-] [ ] dev-java/java-dep-check-0.3-r1:0
[-P-] [ ~] dev-java/java-dep-check-0.4:0
[IP-] [ ] dev-java/java-getopt-1.0.14:1
[-P-] [ ] dev-java/java-gnome-4.0.19:4.0
[-P-] [ ~] dev-java/java-gnome-4.0.20:4.0
[-P-] [ ] dev-java/java-gnome-4.1.3:4.1
[-P-] [ ] dev-java/java-sdk-docs-1.7.0.80:1.7
[-P-] [ ] dev-java/java-sdk-docs-1.8.0.121:1.8
[-P-] [ ] dev-java/java-service-wrapper-3.5.25-r1:0
[IP-] [ ] dev-java/javacc-5.0-r2:0
[-P-] [ ] dev-java/javacsv-2.1:0
[IP-] [ ] dev-java/javacup-0.11b_p20151001:0
[IP-] [ ] dev-java/javahelp-2.0.05_p63:0
[-P-] [ ] dev-java/javassist-2.6-r2:2
[IP-] [ ] dev-java/javassist-3.18.2:3
[IP-] [ ] dev-java/javatoolkit-0.3.0-r9:0
[-P-] [ ] dev-java/javax-inject-1-r2:0
[-P-] [ ~] dev-java/javax-mail-1.4:0
[-P-] [ ] dev-java/libmatthew-java-0.7.2-r1:0
[-P-] [ ] dev-java/libreadline-java-0.8.0-r3:0
[-P-] [ ~] dev-java/matrix-toolkits-java-0.9.12:0
[I–] [??] dev-java/netbeans-java-8.0.2-r2:8.0
[-P-] [ ] dev-java/netbeans-java-8.0.2-r5:8.0
[-P-] [ ~] dev-java/netbeans-java-8.1-r2:8.1
[-P-] [ ] dev-java/netbeans-java-8.2:8.2
[-P-] [ ] dev-java/netbeans-javacard-8.0.2:8.0
[-P-] [ ~] dev-java/netbeans-javacard-8.1:8.1
[-P-] [ ] dev-java/netbeans-javacard-8.2:8.2
[-P-] [ ] dev-java/netbeans-javadoc-8.0.2:8.0
[-P-] [ ~] dev-java/netbeans-javadoc-8.1:8.1
[-P-] [ ] dev-java/netbeans-javadoc-8.2:8.2
[IP-] [ ] dev-java/netbeans-javafx-8.0.2:8.0
[-P-] [ ~] dev-java/netbeans-javafx-8.1:8.1
[-P-] [ ] dev-java/netbeans-javafx-8.2:8.2
[-P-] [ ] dev-java/oracle-javamail-1.5.2:0
[-P-] [ ~] dev-java/oracle-javamail-1.5.5:0
[-P-] [ ~] dev-java/oracle-javamail-1.5.6:0
[-P-] [ ~] dev-java/protobuf-java-3.0.0_beta3_p1:0/10b3
[-P-] [ ~] dev-java/protobuf-java-3.0.2:0/10
[-P-] [ ~] dev-java/protobuf-java-3.1.0:0/11
[-P-] [ ] dev-java/sun-java3d-bin-1.3.2-r1:0
[-P-] [ ] dev-java/sun-java3d-bin-1.4.0_pre5-r1:0
[-P-] [ ~] dev-java/sun-java3d-bin-1.5.2:0
[-P-] [ ] dev-java/sun-javamail-1.4.3:0
[-P-] [ ~] dev-java/xjavac-2.4.0:1
[IP-] [ ] dev-java/xjavac-20110814:1
[-P-] [ ] dev-java/xz-java-1.5:0
[-P-] [ ~] dev-java/xz-java-1.6:0
[-P-] [ ~] dev-java/xz-java-1.6-r1:0
[-P-] [ ~] dev-lang/gnuprologjava-0.2.6:0
[-P-] [ ~] dev-ruby/rex-java-0.1.2:0
[-P-] [ ] java-virtuals/javamail-1.0-r4:0
[-P-] [ ] net-misc/java-wakeonlan-1.0.0-r2:0
[-P-] [ ] sec-policy/selinux-java-2.20151208-r4:0
[-P-] [ ] sec-policy/selinux-java-2.20151208-r6:0
[-P-] [ ] sec-policy/selinux-java-2.20161023-r1:0
[-P-] [ ] sec-policy/selinux-java-2.20161023-r3:0
[-P-] [ ~] sec-policy/selinux-java-2.20161023-r4:0
[-P-] [ ~] sec-policy/selinux-java-2.20170204-r1:0
[-P-] [ ] sec-policy/selinux-java-2.20170204-r2:0
[-P-] [ ~] sec-policy/selinux-java-2.20170204-r3:0
[-P-] [ -] sec-policy/selinux-java-9999:0
[IP-] [ ] sys-apps/baselayout-java-0.1.0:0
[-P-] [ ] x11-plugins/hexchat-javascript-0.3.1:0
[-P-] [ ~] x11-plugins/hexchat-javascript-0.3.2:0

O podemos buscar todos los paquetes que contengan gnome en su nombre:

equery list -po *gnome*

Esta es una pequeña aportación sobre equery. Si alguien piensa que deberia añadir algo a esta pequeña guía puede compartirla con nosotros a través de los comentarios.

Share

[Gentoo] Evitar un paquete al compilar

En ocasiones desconocemos cosas muy sencillas que nos hubieran sido útiles en alguna ocasión. Esto es lo que me ocurrió a mí, al conocer un comando el cual en muchas ocasiones me hubiera facilitado mucho la labor en algunos problemas de compilación de algún paquete o actualización del sistema. Es el siguiente:

emerge --resume --skipfirst

Con este sencillo comando le estamos diciendo a portage que IGNORE el primer paquete que va a intentar emerger (el que nos dio el problema). Si estamos haciendo un upgrade de nuestro sistema gentoo y algún paquete nos esta dando problemas de compilación una y otra vez, podemos ignorarlo y continuar con el siguiente.

Para poder terminar con la actualización del sistema o la instalación del paquete y después solucionar el problema.

Lo dicho, algo tan sencillo que después de tantos años yo desconocía.

Share

Monitorizar una IP o tu conexión a internet. Script BASH

¿Alguna vez has querido monitorizar tu conexión a internet para detectar si cae o tiene perdida de paquetes, o monitorizar quizás un servidor en internet?

En esta ocasión os traigo un pequeño script bash para realizar esto. El script comprobará si existen perdida de paquetes a una IP en concreto y lo reflejará en el log del sistema, ademas, aprovecharemos y guardaremos la caída en un archivo llamado log_fails.txt.

El tema del aviso tambien se puede configurar para que os envie un SMS a cualquier móvil, un mail… un sin fin de posibilidades.

El script en cuestión seria este:


#!/bin/bash
SITIO1=8.8.8.8 # DNS de Google principal
SITIO2=8.8.4.4 # DNS de Google secundario

while true
do
ping -c8 ${SITIO1} >/dev/null 2>/dev/null

respuesta1=$? #Guardamos estado de stderr

if [ $respuesta1 -eq 1 ];
then
sleep 10 # Esperamos 10 segundos para realizar una 2º prueba
ping -c3 ${SITIO2} >/dev/null 2>/dev/null
respuesta2=$?
if [ $respuesta2 -eq 1 ];
then
logger SERVIDOR CAIDO. HORA: $(date)
echo "SERVIDOR CAIDO. HORA: $(date)" >> log_fails.txt
fi
fi
sleep 10 # Esperamos 10 segundos para volver a comprobar desde el inicio
done

Guardamos este archivo con el nombre check.sh por ejemplo….

Le damos permisos de ejecución y ejecutamos con &exit para que quede en proceso de 2º plano:


chmod +x check.sh
sh check.sh &exit

Como podeis observar registramos la caída con el comando logger. Esto simplemente añade una linea con el texto «SERVIDOR CAIDO. HORA: » en /var/log/messages…

Esta pequeña receta con pocas lineas, nos servirá de mucho si queremos monitorizar nuestra conexión a internet o cualquier otra IP de nuestra red o de internet.

Si lo que quereis es monitorizar es solamente una IP, tendreis que fijar en las variables ‘SITIO1’ y ‘SITIO2’ la misma IP.

Espero os sirva de ayuda.
Un saludo.

Share

Forzar FSCK con SystemD

¿Te gustaria forzar el chequeo de fsck a tu sistema de archivos? Con systemD es muy sencillo, con tune2fs le podemos indicar al sistema que cuando monte nuestra unidad X veces, antes de la siguiente, revise dicha unidad con fsck… Se hace con el siguiente comando:


tune2fs -c 5 /dev/sda7

Donde:

-c 5 : Le indicamos que al montar 5 veces esta unidad, la compruebe con fsck.
/dev/sda7 : Seria la unidad en cuestión.

Con openRC bastaria con crear un fichero en la raiz de la unidad llamada «forcefsck» y reiniciar el sistema.


touch /forcefsk && reboot

Con systemD la mejor forma que he encontrado de realizar el chequeo con fsck es la comentada anteriormente con tune2fs y indicando un número para el chequeo.

¡Hasta la siguiente entrada!

Share

Virtualbox se cierra con pantalla completa

He estado peleando con este problema algunas horas. Lo que ocurría es que Virtualbox trabajaba bien hasta que querias ver el entorno visualizado en pantalla completo (Ctrl + F). Entonces virtualbox se cerraba sin dar ningun mensaje de error.

La solución fue sencilla:

En versiones VirtualBox 5.X:

Configuración -> Interfaz de usuario -> Mini barra de herramientas

Deshabilitar la opción: Mostrar en pantalla completa/fluido

En versiones Virtualbox 4.3.X:
Vamos a Configuración -> General -> Avanzado -> Mini barra de herramientas ->

Desmarcamos la opción: Mostrar a pantalla completa/fluído

Despues de hacer esto ya tendriamos que poder trabajar con nuestra máquina virtual a pantalla completa.

Fuente: https://forums.virtualbox.org/viewtopic.php?f=6&t=65274

Share

Recuperar contenido de web offline

Cuando navegamos por internet y nos encontramos con un contenido interesante para nosotros, solemos añadirlo a nuestros favoritos del navegador. Para en un futuro poder consultarlo cuando nos haga falta.

Pero..¿Que ocurre si cuando pulsamos en esa página de favoritos que guardamos hace meses, la página web esta offline? ¿Y sí esa documentación era muy buena y la hemos perdido yya no se puede consultar? Esto complicaría mucho más las cosas.

Esto es exactamente lo que me ocurrió, para un sitio web en especifico, cuya dirección era http://www.ipversion6.es

Necesitaba un articulo de este blog el cual estaba muy, pero que muy interesante y cuando fui a consultarlo…La pagina web estaba offline, el dominio no lo habían renovado. Toda una decepción para mí.


¡¡¡¡¡¡WEB.ARCHIVE.ORG AL RESCATE!!!!!!

Tras dar vueltas y vueltas por internet intentando conseguir este articulo, no lo conseguí de ninguna de las maneras. Por lo tanto me puse a buscar algún servicio de web cache que hubiera guardado este sitio anteriormente. Y la buena noticia para mi, es que, ¡¡¡lo encontré!!!

Mi salvador fue: WEB.ARCHIVE.ORG

Pulsando en ‘SHOW ALL‘ nos llevaría a un calendario en el cual podemos seleccionar en que fecha podemos visualizar ese sitio web:

Pulsando el siguiente enlace, os llevará a la versión cache de este sitio:

VERSION CACHE MONOVARLINUX

Además, por mi parte tuve doble suerte ya que pude entrar a la versión cache del articulo en especifico y pude guardarlo sin problemas en mi pc….

Para esto también utilice un servicio online, en este caso para convertirlo a PDF: http://www.web2pdfconvert.com/

Share

Equipo con dos tarjetas gráficas en gentoo. Optimus Machine.

¿Que es un pc optimus machine?

Un PC Optimus Machine son aquellos equipos portatiles que tienen 2 tarjetas gráficas. Una de ellas de baja calidad de procesamiento y la otra bastante mayor. La que se encarga de procesar los gráficos es la tarjeta de mayores prestaciónes y una vez procesados, los envia a la tarjeta más pequeña para que los muestre por pantalla. La tarjeta superior no tiene conectada a ella una pantalla, simplemente se usa para el procesamiento gŕafico.

Dicho esto, os facilito los pasos necesarios para hacer funcionar una máquina optimus machine en Gentoo. Empezamos:

En el kernel, seleccionar la opción de modesetting para el modulo de intel:

——————————————————————————————————————

DeviceDrivers --->
Graphics Support --->
Direct Rendering Manager --->
Direct Rendering Manager (Xfree86 4.1.0 and higher DRI support) --->
<*> Intel 8xx/9xx/G3x/G4x/Hd Graphics
[*] Enable modesetting on intel by default

——————————————————————————————————————

Añadir el modulo del kernel ‘nouveau’ y ‘nvidia’ a la lista de blacklist para que systemd o openrc evite cargarlo al inicio:

# Para sytemd:
——————————————————————————————————————

echo "blacklist nouveau" >> /etc/modules-load.d/blacklist.conf
echo "blacklist nouveaufb" >> /etc/modules-load.d/blacklist.conf
echo "blacklist rivafb" >> /etc/modules-load.d/blacklist.conf
echo "blacklist nvidiafb" >> /etc/modules-load.d/blacklist.conf
echo "blacklist nvidia" >> /etc/modules-load.d/blacklist.conf

——————————————————————————————————————

# Para Openrc:
——————————————————————————————————————

echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nouveaufb" >> /etc/modprobe.d/blacklist.conf
echo "blacklist rivafb" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidiafb" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf

——————————————————————————————————————

Habilitamos la versión testing para los paquetes que se encargan de los gráficos:

——————————————————————————————————————

echo "x11-apps/xrandr ~amd64" >> /etc/portage/package.keywords
echo "x11-base/xorg-server ~amd64" >> /etc/portage/package.keywords
echo "x11-proto/inputproto ~amd64" >> /etc/portage/package.keywords
echo "x11-drivers/nvidia-drivers ~amd64" >> /etc/portage/package.keywords
echo "x11-drivers/xf86-input-evdev ~amd64" >> /etc/portage/package.keywords
echo "x11-drivers/xf86-input-synaptics ~amd64" >> /etc/portage/package.keywords
echo "x11-drivers/xf86-video-modesetting ~amd64" >> /etc/portage/package.keywords

——————————————————————————————————————

Hacemos emerge de todos esos paquetes

——————————————————————————————————————

emerge x11-apps/xrandr && emerge -1 xf86-video-modesetting && emerge -1 $(qlist -IC x11-drivers)

——————————————————————————————————————

Colocar, el siguiente contenido en /etc/gdm/Init/Default:

xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto

Seleccionamos con eselect opengl la opción de nvidia:


eselect opengl list:

——————————————————————————————————————
Available OpenGL implementations:
[1] nvidia
[2] xorg-x11 *
——————————————————————————————————————

eselect opengl set 1

Switching to nvidia OpenGL interface… done

En /etc/X11/xorg.conf insertamos todo esto:
——————————————————————————————————————

Section "ServerLayout"
Identifier "layout"
Screen 0 "nvidia"
Inactive "intel"
EndSection

Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID ""
EndSection

Section "Screen"
Identifier "nvidia"
Device "nvidia"
# Uncomment this line if your computer has no display devices connected to
# the NVIDIA GPU. Leave it commented if you have display devices
# connected to the NVIDIA GPU that you would like to use.

EndSection

Section "Device"
Identifier "intel"
Driver "modesetting"
BusID ""
EndSection

Section "Screen"
Identifier "intel"
Device "intel"
EndSection


——————————————————————————————————————

Sustituimos BUS_ID_INTEL_CARD por el ID de la tarjeta gráfica INTEL. Para averiguar el PCI ID podemos hacerlo con:


lspci | grep VGA

El comando en mi caso, devuelve:
——————————————————————————————————————
00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 0b)
——————————————————————————————————————

Quedaria:
———————-
Section «Device»
Identifier «intel»
Driver «modesetting»
BusID «PCI:0:2:0»
EndSection
———————-

Y para la tarjeta gráfica NVIDIA, podemos ver cual es el PCI ID, con:

lspci | grep NVIDIA

Devolveria:
——————————————————————————————————————
04:00.0 3D controller: NVIDIA Corporation GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (rev a1)
——————————————————————————————————————

Quedaria en el xorg.conf:
——————————————————————————————————————

Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID "PCI:4:0:0"
EndSection

——————————————————————————————————————

Una vez realizado todo lo anterior, solamente quedaria instalar el software que realizará el proceso de intercambio de gráficos entre las 2 tarjetas, se llama ‘bumblebee’.

Lo instalamos con:


emerge bumblebee

Añadimos nuestro usuario al grupo bumblebee:


usermod -a -G bumblebee

Arrancamos el servicio ‘bumblebeed’ al inicio:

# Para SystemD
systemctl enable bumblebeed


# Para openRC
rc-update add bumblebeed default

Una vez realizados estos pasos, para ejecutar software y que bumblebeed ponga a trabajar las 2 tarjetas se hace con:

optirun aplicacion

Por ejemplo:

optirun glxgears

Llegados a este punto ya tendriamos nuestra máquina funcionando con las dos tarjetas gráficas.

Share

Cambiar fecha de creación y modificación un fichero

Mediante el comando touch de nuestro linux, podemos cambiar la fecha de creación y/o fecha de modificación de un fichero.

Es muy sencillo:


touch -t 201510021330.13 fichero

En este caso, el fichero nos quedaría con la fecha de modificación y creación:

El día 02 del mes 10 del año 2015 a las 13:30 horas y 13 segundos

Podemos ser más precisos, añadiendo algún que otro parametro:


-a: Modificamos solo la fecha del ultimo acceso al fichero
-m: Modificamos solo la fecha de modificación del fichero

Share