La relevancia de bloquear el acceso a recursos prohibidos afecta a cualquier administrador, a quien se le pueda exigir oficialmente el incumplimiento de la ley o las órdenes de las autoridades correspondientes.

¿Por qué reinventar la rueda cuando existen programas y distribuciones especializadas para nuestras tareas, por ejemplo: Zeroshell, pfSense, ClearOS?
Otra pregunta surgió por parte de la dirección: ¿El producto utilizado tiene un certificado de seguridad de nuestro país?
Tenemos experiencia trabajando con las distribuciones mencionadas:
- Zeroshell: los desarrolladores incluso nos regalaron una licencia por 2 años, pero resultó que la distribución en cuestión realizaba una función crítica para nosotros de manera ilógica;
- pfSense: respeto y consideración, pero al mismo tiempo aburrido, acostumbrarse a la línea de comandos del firewall de FreeBSD y no es lo suficientemente conveniente para nosotros (creo que es cuestión de hábito, pero resultó que no era «el camino»);
- ClearOS: en nuestro hardware resultó ser muy lento, no pudimos llegar a pruebas serias, así que, ¿para qué necesitan interfaces tan pesadas?
- Ideco SELECTA. Hablar del producto "Aideco" es otro tema, es un producto interesante, pero por razones políticas no es para nosotros, y además, me gustaría "cuestionar" sus licencias para el mismo Linux, Roundcube, etc. ¿De dónde sacaron que "fabricando" una interfaz en Python y quitando los derechos de superusuario pueden vender un producto terminado compuesto de módulos desarrollados y modificados por la comunidad de Internet distribuidos bajo GPL & etc.?
Entiendo que ahora recibiré críticas negativas con exigencias de justificar mis sentimientos subjetivos, pero quiero decir que este nodo de la red también funciona como balanceador de tráfico para 4 canales externos a Internet, y cada canal tiene sus propias características. Otro aspecto crucial fue la necesidad de que uno de varios interfaces de red funcionara en diferentes espacios de direcciones, y yo estoy dispuesto a reconocer que aplicar VLAN en todos lados, tanto donde se necesita como donde no, no estoy dispuesto a hacerlo.En cuanto a dispositivos como el TP-Link TL-R480T+: su comportamiento no es perfecto, en general tienen sus peculiaridades. Esta parte en Linux se configuró razonablemente gracias al sitio oficial de Ubuntu. . Cada uno de los canales puede «caer» en cualquier momento, así como levantarse. Si estás interesado en el script que está funcionando en este momento (lo cual merece una publicación aparte) — deja un comentario.
La solución en cuestión no pretende ser única, pero me gustaría plantear la pregunta: «¿Por qué adaptarse a productos externos dudosos con serios requisitos de hardware en la empresa, cuando se puede considerar una alternativa?»
Si en Rusia hay una lista de Roskomnadzor, en Ucrania hay una aplicación a la Decisión del Consejo de Seguridad Nacional (por ejemplo, ), los gerentes locales tampoco se quedan dormidos. Por ejemplo, se nos pasó una lista de sitios prohibidos que, según la dirección, afectan negativamente la productividad laboral.
Al hablar con colegas en otras empresas donde, por defecto, todos los sitios están prohibidos y solo con la autorización del jefe se puede acceder a un sitio específico, entendimos, sonriendo respetuosamente, reflexionando y «fumando sobre el problema», que la vida es realmente buena y comenzamos nuestra búsqueda.
Teniendo la capacidad no solo de analizar lo que se dice en «los libros de amas de casa» sobre la filtración de tráfico, sino también de observar lo que sucede en los canales de diferentes proveedores, notamos las siguientes recetas (todas las capturas de pantalla están ligeramente recortadas, por favor, entendamos esto):
Proveedor 1
— no se complica y impone sus propios servidores DNS y un servidor proxy transparente. Entonces, ¿qué?... al menos tenemos acceso a donde necesitamos (si es que lo necesitamos :))
Proveedor 2
— considera que su proveedor superior debe pensar en esto, el soporte técnico del proveedor superior incluso admitió por qué no puedo abrir el sitio no prohibido que necesito. Creo que la imagen te hará reír 🙂

Resulta que traducen los nombres de los sitios prohibidos a direcciones IP y bloquean precisamente esas IP (no les preocupa que en esa dirección IP puedan estar alojados 20 sitios).
Proveedor 3
— permite el tráfico hacia allí, pero no lo deja volver por la ruta.
Proveedor 4
— prohíbe todas las manipulaciones con los paquetes en la dirección indicada.
¿Qué hacer con VPN (suponiendo que se respete el navegador Opera) y los complementos de navegadores? Al principio, al jugar con el nodo Mikrotik, incluso tuvimos una receta intensiva en recursos en L7, de la que luego tuvimos que renunciar (puede haber más nombres prohibidos, es triste cuando, además de nuestras obligaciones directas en las rutas, la carga del procesador PPC460GT alcanza el 100% con 30 expresiones).
.
Lo que se ha comprendido:
DNS en 127.0.0.1 no es una panacea; las versiones modernas de los navegadores permiten sortear tales problemas. No se puede restringir a todos los usuarios con derechos limitados, y no se debe olvidar la enorme cantidad de DNS alternativos. Internet no es estático, y además de nuevas direcciones DNS, los sitios prohibidos compran nuevas direcciones, modifican sus dominios de nivel superior o pueden agregar/eliminar un carácter en su dirección. Sin embargo, algo como esto tiene derecho a existir:
ip route add blackhole 1.2.3.4Sería bastante efectivo obtener una lista de direcciones IP de la lista de sitios prohibidos, pero por las razones mencionadas anteriormente, hemos pasado a considerar Iptables. Ya existía un balanceador vivo en CentOS Linux release 7.5.1804.
La internet del usuario debe ser rápida, y el navegador no debe esperar medio minuto, concluyendo que esta página no está disponible. Después de largas búsquedas, llegamos a este modelo:
Archivo 1 -> /script/denied_host, lista de nombres prohibidos:
test.test
blablabla.bubu
torrent
pornoArchivo 2 -> /script/denied_range, lista de espacios de direcciones y direcciones prohibidas:
192.168.111.0/24
241.242.0.0/16Archivo-script 3 -> ipt.sh, que realiza el trabajo con iptables:
# считываем полезную информацию из перечней файлов
HOSTS=`cat /script/denied_host | grep -v '^#'`
RANGE=`cat /script/denied_range | grep -v '^#'`
echo "Stopping firewall and allowing everyone..."
# сбрасываем все настройки iptables, разрешая то что не запрещено
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
#решаем обновить информацию о маршрутах (особенность нашей архитектуры)
sudo sh rout.sh
# циклически обрабатывая каждую строку файла применяем правило блокировки строки
for i in $HOSTS; do
sudo iptables -I FORWARD -m string --string $i --algo bm --from 1 --to 600 -p tcp -j REJECT --reject-with tcp-reset;
sudo iptables -I FORWARD -m string --string $i --algo bm --from 1 --to 600 -p udp -j DROP;
done
# циклически обрабатывая каждую строку файла применяем правило блокировки адреса
for i in $RANGE; do
sudo iptables -I FORWARD -p UDP -d $i -j DROP;
sudo iptables -I FORWARD -p TCP -d $i -j REJECT --reject-with tcp-reset;
done
El uso de sudo se debe a que tenemos un pequeño hack para gestionar a través de la interfaz WEB, pero como ha demostrado la experiencia de usar este modelo durante más de un año, la WEB no es tan necesaria. Después de la implementación, había deseos de llevar la lista de sitios a una base de datos, etc. El número de hosts bloqueados supera las 250 + una docena de espacios de direcciones. Realmente hay un problema al acceder a un sitio mediante una conexión https, como administrador del sistema tengo quejas sobre los navegadores :), pero son casos particulares; la mayoría de las veces, la falta de acceso al recurso está de hecho de nuestro lado, también bloqueamos exitosamente Opera VPN, complementos como friGate y la telemetría de Microsoft.

Fuente: habr.com
