Páginas

Mostrando entradas con la etiqueta optimizar. Mostrar todas las entradas
Mostrando entradas con la etiqueta optimizar. Mostrar todas las entradas

sábado, 6 de diciembre de 2025

FreeBSD 14.3 Cortafuegos PF

Sintaxis actualizada (FreeBSD 14 usa PF de OpenBSD 6.9–7.0 aproximadamente, hay cambios importantes).

# ====================== MACROS ======================
lan_if   = "re0"
zt_if    = "zt1ocu1pr8e2sac"
lan_net  = "192.168.88.0/24"
zt_net   = "192.168.192.0/24"
my_zt_ip = "192.168.192.204"
lan_ip   = "192.168.88.160"      # pon aquí la IP real de re0 si es fija

ssh_port     = "{ 22 }"
nfs_ports_tcp = "{ 111, 892, 2049 }"
nfs_ports_udp = "{ 111, 892 }"

# ====================== OPCIONES GLOBALES ======================
set block-policy return         # responde ICMP/TCP-RST a paquetes bloqueados
set ruleset-optimization none   # en FreeBSD 14 no usa "basic" ni "high-latency"
set skip on lo0
set skip on $zt_if              # ZeroTier ya tiene su propio cortafuegos interno

# Normalización moderna (recomendado)
match in all scrub (no-df random-id max-mss 1440)

# ====================== TABLAS ======================
table <bruteforce> persist       # aquí meterá sshguard, pf-badhost, etc.

# ====================== TRÁFICO CONFIABLE (LAN) =======================
pass in quick on $lan_if from $lan_net to $lan_ip keep state

# =================== EXCEPCIÓN PARA EL TÚNEL WIREGUARD ================
# Wireguard: handshake y todo el trafico dentro del tunel
pass in quick on $lan_if proto udp from 192.168.88.51 to 192.168.88.160 \
port 51820 keep state
pass in quick on wg0 keep state  # <-- esta es la importante

# ====================== REGLAS DE PROTECCIÓN BÁSICA ===================
# Anti-spoofing + bogons (bloqueo rápido)
block in quick on ! $lan_if from $lan_net to any
block in quick on ! $lan_if from 192.168.0.0/16 to any
block in quick on ! $lan_if from 172.16.0.0/12 to any
block in quick on ! $lan_if from 10.0.0.0/8 to any

block in quick from any to { 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, \
10.0.0.0/8, ::/128, 0.0.0.0/8 }

# Bloqueo rápido de hosts en lista negra
block in quick from <bruteforce>

# ====================== LOOPBACK ======================
pass quick on lo0 all

# ====================== TRÁFICO SALIENTE (stateful) ======================
pass out quick inet keep state

# ====================== ICMP ======================
pass in on $lan_if inet proto icmp from $lan_net to $lan_ip icmp-type echoreq \
keep state
pass out on $lan_if inet proto icmp from $lan_ip to $lan_net icmp-type echorep \
keep state

# ====================== SSH CON PROTECCIÓN ======================
# Desde LAN (sin límite)
pass in on $lan_if proto tcp from $lan_net to $lan_ip port $ssh_port flags \
S/SFRA keep state

# Desde ZeroTier (con límite de tasa para evitar brute-force)
pass in on $zt_if proto tcp from $zt_net to $my_zt_ip port $ssh_port \
    flags S/SFRA keep state \
    (max-src-conn-rate 15/5, overload <bruteforce> flush global)

# ====================== DNS (Unbound local) ======================
pass quick on $lan_if proto { tcp udp } from $lan_net to $lan_ip port 53

# ====================== NTP cliente ======================
pass out proto udp from any to port 123 keep state

# ====================== NFS (solo LAN) ======================
pass in on $lan_if proto tcp from $lan_net to $lan_ip port $nfs_ports_tcp \
    flags S/SFRA keep state
pass in on $lan_if proto udp from $lan_net to $lan_ip port $nfs_ports_udp \
    keep state

# NFSv4 callback channel (solo desde clientes NFS de la LAN)
pass in on $lan_if proto tcp from $lan_net to $lan_ip port 3000:4000 \
    flags S/SFRA keep state

# ====================== ZeroTier (puerto de control) ======================
pass in quick on $zt_if proto udp from any to any port 9993

# ====================== BLOQUEO FINAL (por defecto) ======================
block log all

FreeBSD es genial!.

lunes, 21 de septiembre de 2020

FastTrack Mikrotik

Según la wiki de Mikrotik "El controlador IPv4 FastTrack se utiliza automáticamente para las conexiones marcadas. Utilice la acción del cortafuegos "fasttrack-connection" para marcar conexiones para FastTrack."

En otras palabras, es un método para acelerar el flujo de paquetes a través del router. Las conexiones establecidas o relacionadas se pueden marcar para fasttrack. De manera que omite todo el procesamiento del firewall, el seguimiento de la conexión, la cola simple entre otras. Podemos hacer fasttrack a los protocolos tcp y udp. Hay que tener en cuenta que si aplicamos fasttrack no podremos utilizar las colas simples ni el queue tree.

Reglas para habilitar el fasttrack:

/ip firewall filter add chain=forward action=fasttrack-connection connection-state=established,related
/ip firewall filter add chain=forward action=accept connection-state=established,related

La segunda regla es para dejar pasar los paquetes que no pueden hacer fasttrack.







Mikrotik es genial!.

jueves, 21 de mayo de 2020

Limitar Ancho de Banda y Priorizar Trafico Mikrotik

Necesitamos hacer doble encolamiento. Una cola para el manejo de ancho de banda y otra para priorización de tráfico. Las colas se implementan en un solo lugar. No se puede hacer en el Queue Tree, simultáneamente, en un router administrador con múltiples clientes.

Vamos a usar Simple Queue para el manejo de ancho de banda por usuario.

A partir de RouterOS 6 el número de colas no es relevante, el acceso a las colas no es secuencial sino por hashing. De manera que, podemos tener cientos de colas, que pueden ser creadas manualmente, dinámicamente o utilizando scripts. Eficiente en equipos multicore (3011, 4011, CCR, etc.).

Para la priorización de servicios usaremos Queue Tree

Planes

. 3M/512k
. 4M/1M
. Doble velocidad por las noches

Crear Queue Types.
Queue List - Queue Types

Serán 4 Queue types una para cada velocidad
1. 3M
2. 512k
3. 4M
4. 1M

También vamos a crear 4 Queue types adicionales para la doble velocidad. 6M 1M 8M 2M.

Colas de bajada (DOWN)
Clasifier: Dst. Address

Colas de subida (UP)
Clasifier: Src. Address







Generar Simple Queues para asignar el ancho de banda a cada uno de los clientes, ejemplo.



Priorizar Tráfico

. ICMP
. WEB HTTP/HTTPS
. VoIP
. DNS

IP Firewall MANGLE

Marcar tráfico ICMP



Marcar conexión

Primero marcamos la conexión
No-mark para asegurarnos de que lo que vamos a marcar no tiene una marca previa.

Marcar paquetes ICMP

Marcar los paquetes que van a pasar por esa conexión



Marcar tráfico Web HTTP/HTTPS



Marcar paquetes Web



Nuevo Protocolo QUIC Google un híbrido entre tcp y udp utiliz el IP protocolo 17.

Marcar tráfico QUIC



Marcar paquetes QUIC



VoIP telefonía IP. Lo que hace es enviar audio en paquetes IP. La mayoría utiliza un rango de puertos. También podemos utilizar la utilidad Torch para averiguarlo. 5060-5082 y 10000-20000.

Marcado de tráfico VoIP



Marcado de paquetes



Marcar el resto del tráfico



Marcado de paquetes




De esta manera podemos priorizar tráfico, por ejemplo, para bajar la latencia en los juegos. Recuerde que podemos utilizar Torch para monitorear a que puertos se conecta la aplicación y que protocolos está utilizando. A partir de esa información puede generar un par de reglas para marcar la conexión y marcar el paquete.

Mangle es una estructura pasiva dentro de RouterOS. De manera que no estamos realizando ninguna acción sobre esas conexiones. Estas marcas serán utilizada por otra estructura del Router.

Al hablar de QoS la esctructura es HTB o queue tree. Vamos a hacer uso de esos paquetes para dar prioridad.


Las prioridades van desde 1-8 siendo 1 la mayor prioridad.

La suma de los limit A no puede ser mayor que el valor del padre, en este caso 100M.








El proceso para priorizar tráfico DNS es el mismo.





OpenBSD es genial!.

viernes, 13 de julio de 2012

Acelerar optimizar sistema

Fuentes:
http://wiki.sabayon.org/index.php?title=How_to_optimize_and_accelerate_your_system
http://www.linuxeando.org/foros/index.php?topic=729.0

Optimizar y acelerar sistema gentoo.

Muchas por no decir todas estas reglas serán aplicables (seguramente), a casi todas las distribuciones Linux, aunque tengo que decir que la mayoría no las necesitará porque los programadores y mantenedores de esas distros (las basadas en Red Hat y Debian, por ejemplo), las incorporan por defecto. Ubuntu, Debian, Centos, etc. Desde el portátil que escribo (Dell Inspiron con Ubuntu 8.04 preinstalado en sda2 y gentoo en sda3)  he podido comprobar que esta optimización no es necesaria en ubuntu.

$ ls -l /dev/disk/by-label

total 0
lrwxrwxrwx 1 root root 10 jul 13 07:41 boot -> ../../sda1
lrwxrwxrwx 1 root root 10 jul 13 07:40 datos -> ../../sda9
lrwxrwxrwx 1 root root 10 jul 13 08:09 gentoo_h -> ../../sda7
lrwxrwxrwx 1 root root 10 jul 13 08:09 gentoo_r -> ../../sda3
lrwxrwxrwx 1 root root 10 jul 13 07:40 ubuntu_h -> ../../sda6
lrwxrwxrwx 1 root root 10 jul 13 07:40 ubuntu_r -> ../../sda2

He instalado (en otro disco duro pero en esta misma máquina), la distribución Centos 6.2 incluida en Linux Magazine del mes de March 2012 que me enviaron de regalo después de pasar el examen LPIC-1 y la verdad viene optimizada al máximo y con mucho software pre-instalado. Centos es una maravilla de distro para usuario final y extremadamente potente y segura en Servidores, con mucha documentación en diferentes idiomas.

El mérito de este artículo es de los chicos de Saboyan (derivada de Gentoo). Vease la url en la parte superior.

Detales de mi máquina:

$ uname -a
Linux zeus 3.3.8-gentoo #1 SMP Thu Jul 12 04:19:51 CEST 2012 x86_64 Intel(R) Core(TM)2 Duo CPU T5750 @ 2.00GHz GenuineIntel GNU/Linux.

$ cat /proc/meminfo|grep -i memtotal
MemTotal:        4045372 kB

Disco duro, Sata II 500 Gb 5400 RPM. 5MB memoria interna (un disco normalito).

Arrancar servicios Openrc en paralelo

Cambiar
# vi /etc/rc.conf

rc_parallel="YES"
rc_logger="NO"

Los servicios necesarios del sistema no deben desactivarse pero otros si. Puede conocerlos con la utilidad
# rc-update show
Rendimiento del disco duro:
# vi /etc/conf.d/hdparm
hda_args="-a16 -c1 -k1 -u1 -S0"
cdrom0_args="-c1 -k1 -u1

Agrego hdparm al arranque del sistema:
# rc-update add hdparm boot

preload es un demonio readhead adaptado que supervisa los programas más utilizados. Parte de esos programas los almacena en cache y aumentar la velocidad de carga:

# emerge -av preload
# rc-update add preload default

Los archivos temporales se borran durante el apagado, se puede colocar sus lugares de almacenamiento en la memoria RAM. Esto reduce el número de operaciones de disco , haciendo más rápido programas que utilizan carpetas temporales.

# vi /etc/fstab

 tmp     /tmp      tmpfs rw,mode=1777 0 0
 vartmp  /var/tmp  tmpfs rw,mode=1777 0 0


Retraso de la repetición del teclado, sin recompilar X11:
# vi /etc/X11/xorg.conf

Por defecto el tiempo de repetición de 500 milisegundos, y el tiempo de respuesta por defecto de 30 milisegundos. Esto cambia a 530 y 0, respectivamente.
....
Section "InputDevice"
Identifier "logitech"
Driver "kbd"
  Option "AutoRepeat" "530 0"
EndSection

En este sistema específico no implementé el resto de optimizaciones. Por si fuera útil incluyo los archivos /etc/sysctl.conf y /root/rules.sh (firewall) y como arrancarlo al iniciar el sistema.
Archivo /etc/sysctl.conf.

# cat /etc/sysctl.conf |grep ^[^#] | colorlog.pl
kernel.printk = 4 4 1 7
fs.inotify.max_ ser_watches = 524288
vm.mmap_min_add  = 65536
fs.file-max = 1 384
kernel.threads- ax = 2048
net.ipv4.conf.e h0.arp_ignore = 1
net.ipv4.conf.e h0.arp_announce = 2
net.ipv4.conf.a l.arp_ignore = 1
net.ipv4.conf.d fault.rp_filter = 1
net.ipv4.ip_for ard = 0
net.ipv4.icmp_e ho_ignore_broadcasts = 1
net.ipv4.conf.a l.rp_filter = 1
net.ipv4.conf.a l.send_redirects = 0
net.ipv4.conf.a l.accept_redirects = 0
net.ipv4.conf.a l.accept_source_route = 0
net.ipv4.conf.a l.arp_announce = 1
vm.swappiness = 5
Un firewall básico para un host con iptables.
# ls -l /root/rules.sh 
-rwx------ 1 root root 1229 jul 12 07:08 /root/rules.sh
# cat /root/rules.sh 

IPT=/sbin/iptables

# Flush old rules, old custom tables
echo " * flushing old rules"
$IPT --flush
$IPT --delete-chain

# Set default policies for all three default chains
echo " * setting default policies"
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT

# Enable free use of loopback interfaces
echo " * allowing loopback devices"
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# All TCP sessions should begin with SYN
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# Allow established and related packets
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Open the following ports
echo " * allowing ssh on port 22"
$IPT -A INPUT -p tcp --dport 22  -m state --state NEW -j ACCEPT

echo " * allowing dns on port 53"
$IPT -A INPUT -p udp -m udp --dport 53 -j ACCEPT

echo " * allowing http on port 80"
$IPT -A INPUT -p tcp --dport 80  -m state --state NEW -j ACCEPT

echo " * allowing https on port 443"
$IPT -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT

echo " * allowing ping responses"
$IPT -A INPUT -p ICMP --icmp-type 8 -j ACCEPT

# DROP everything else and Log it
$IPT -A INPUT -j LOG
$IPT -A INPUT -j DROP
#
# Save settings
#
echo " * saving settings"

Ejecutar script:

# /root/rules.sh
 * flushing old rules
 * setting default policies
 * allowing loopback devices
 * allowing ssh on port 22
 * allowing dns on port 53
 * allowing http on port 80
 * allowing https on port 443
 * allowing ping responses
 * saving settings

Guardar la configuración actual:
# /etc/init.d/iptables save
iptables      | * Saving iptables state ...                                 [ ok ]

Iniciar iptables con el sistema:
# rc-update add iptables default
 * service iptables added to runlevel default

Linux es genial!.