30.4. IPFW IPFW es un firewall stateful escrito para FreeBSD que soporta IPv4 e IPv6. Se compone de varios componentes: el procesador regla de filtro cortafuegos del núcleo y su instalación integrada de contabilidad de paquetes, la facilidad de registro, NAT, el dummynet (4) de conformación de tráfico, servicio de adelante, un crédito puente, y una instalación ipstealth. FreeBSD ofrece un conjunto de reglas de ejemplo en /etc/rc.firewall que define varios tipos de firewall para escenarios comunes para ayudar a los nuevos usuarios en la generación de un conjunto de reglas apropiado. IPFW proporciona un potente sintaxis que los usuarios avanzados pueden usar para elaborar conjuntos de reglas personalizadas que cumplan con los requisitos de seguridad de un entorno determinado. En esta sección se describe cómo habilitar IPFW, ofrece una visión general de su sintaxis regla, y demuestra varios conjuntos de reglas para escenarios comunes de configuración. 30.4.1. Habilitación IPFW IPFW está incluido en el FreeBSD instalación básica como módulo del kernel, lo que significa que no es necesario un kernel personalizado para permitirIPFW. Para aquellos usuarios que desean compilar estáticamente apoyo IPFW en un kernel personalizado, consulte las instrucciones en el capítulo 9,Configuración del kernel de FreeBSD . Las siguientes opciones están disponibles para el archivo de configuración del kernel personalizado: Opciones IPFIREWALL # permite IPFW Opciones IPFIREWALL_VERBOSE # Habilita el registro de reglas con la palabra clave de registro Opciones IPFIREWALL_VERBOSE_LIMIT = 5 # límites número de paquetes registrados por entrada opciones de política IPFIREWALL_DEFAULT_TO_ACCEPT # sets por defecto para pasar lo que no se negó explícitamente Opciones IPDIVERT # permite NAT Para configurar el sistema para permitir IPFW en el arranque, agregue la siguiente entrada a /etc/rc.conf : firewall_enable = "YES" Para utilizar uno de los tipos de cortafuegos por defecto proporcionados por FreeBSD, añadir otra línea que especifica el tipo: firewall_type = "open" Los tipos disponibles son: : todo el tráfico que pasa. client : protege sólo esta máquina. simple : protege toda la red. closed : desactiva por completo el tráfico IP a excepción de la interfaz de bucle invertido. workstation : sólo protege esta máquina utilizando reglas con estado. UNKNOWN : desactiva la carga de reglas de firewall. filename : ruta completa del archivo que contiene el conjunto de reglas de firewall. open Si firewall_type se establece en cualquiera de client o simple , modificar las reglas predeterminadas que se encuentran en /etc/rc.firewall para adaptarse a la configuración del sistema. Tenga en cuenta que el filename tipo se utiliza para cargar un conjunto de reglas de encargo. Una forma alternativa de cargar un reglamento personalizado es establecer el firewall_script variable para la ruta absoluta de un script ejecutable que incluye comandos IPFW. Los ejemplos utilizados en esta sección asumen que el firewall_script se establece en /etc/ipfw.rules : firewall_script = "/ etc / ipfw.rules" Para habilitar el registro, incluya esta línea: firewall_logging = "YES" No hay /etc/rc.conf variable para establecer límites de tala. Para limitar el número de veces que una regla se registra por intento de conexión, especifique el número con esta línea en /etc/sysctl.conf : net.inet.ip.fw.verbose_limit = 5 Después de guardar los cambios necesarios, inicie el firewall. Para activar límites de registro ahora, también establecer el sysctl valor especificado anteriormente: # service ipfw start # sysctl net.inet.ip.fw.verbose_limit= 5 30.4.2. Sintaxis de reglas de IPFW Cuando un paquete entra en el servidor de seguridad IPFW, que se compara con la primera regla en el conjunto de reglas y progresa una regla a la vez, moviéndose de arriba a abajo en secuencia. Cuando el paquete coincide con los parámetros de selección de una regla, se ejecuta la acción de la regla y la búsqueda del conjunto de reglas termina para ese paquete. Esto se conoce como "gana el primer partido". Si el paquete no coincide con ninguna de las reglas, se ve atrapado por la obligatoria regla número predeterminado IPFW 65535, que niega todos los paquetes y en silencio los descarta. Sin embargo, si el paquete coincide con una regla que contiene los count , skipto o tee palabras clave, la búsqueda continúa. Consulte ipfw (8) para más detalles sobre estas palabras clave afectan el proceso de reglas. Al crear una regla de IPFW, palabras clave deben escribirse en el siguiente orden. Algunas palabras clave son obligatorios mientras que otras palabras clave son opcionales. Las palabras que se muestran en mayúsculas representan una variable y las palabras que se muestran en minúsculas debe preceder la variable que le sigue. El # símbolo se utiliza para marcar el inicio de un comentario y puede aparecer al final de una regla o en su propia línea. Las líneas en blanco se ignoran. CMD RULE_NUMBER set SET_NUMBER ACTION log LOG_AMOUNT PROTO from SRC SRC_PORT to DST DST_PORT OPTIONS Esta sección proporciona una visión general de estas palabras clave y sus opciones. No es una lista exhaustiva de todas las opciones posibles. Consulteipfw (8) para obtener una descripción completa de la sintaxis de reglas que se puede utilizar al crear reglas de IPFW. CMD Cada regla debe comenzar con ipfw add . RULE_NUMBER Cada regla está asociada con un número de 1 a 65534 . El número se utiliza para indicar el orden de procesamiento de reglas. Normas múltiples pueden tener el mismo número, en cuyo caso se aplican de acuerdo con el orden en que se han añadido. SET_NUMBER Cada regla está asociada a un número determinado de 0 a 31 . Los conjuntos se pueden bloquear o habilitar de forma individual, por lo que es posible añadir o eliminar un conjunto de reglas rápidamente. Si no se especifica un SET_NUMBER, se agregará la regla para establecer 0 . ACCIÓN Una regla puede estar asociada con una de las siguientes acciones. La acción especificada se ejecutará cuando el paquete coincide con el criterio de selección de la regla. : estas palabras clave son equivalentes y permiten que los paquetes que coincidan con la regla. allow | accept | pass | permit : comprueba el paquete contra la tabla de estado dinámico. Si se encuentra una coincidencia, ejecutar la acción asociada con la regla que generó esta regla dinámica, si no pasar a la siguiente regla. Un checkstate regla no tiene criterio de selección. Si no hay ningún checkstate regla está presente en el conjunto de reglas, la tabla de reglas dinámicas se comprueba en el primer keep-state o limit regla. check-state : actualizaciones de contadores para todos los paquetes que coincidan con la regla. La búsqueda continúa con la siguiente regla. count : o palabra silenciosamente descarta los paquetes que cumplen esta regla. deny | drop Acciones adicionales están disponibles. Consulte ipfw (8) para más detalles. LOG_AMOUNT Cuando un paquete coincide con una regla con el log la palabra clave, un mensaje se registrará en syslogd (8) con un nombre de la instalación deSECURITY . Inicio de sesión sólo se produce si el número de paquetes registrados para esa regla concreta no supere un LOG_AMOUNT especificado.Si no se especifica LOG_AMOUNT, el límite se toma del valor de net.inet.ip.fw.verbose_limit . Un valor de cero elimina el límite de registro. Una vez que se alcanza el límite, el registro se puede volver a activar en la limpieza del mostrador de registro o el contador de paquetes para esa regla, utilizando ipfw reset log . Nota: El registro se realiza después de que se han cumplido todas las demás condiciones que coinciden paquete, y antes de realizar la acción final en el paquete. El administrador decide qué reglas para permitir iniciar la sesión. PROTO Este valor opcional se puede utilizar para especificar cualquier nombre de protocolo o el número que se encuentra en /etc/protocols . SRC El from la palabra clave debe ser seguido por la dirección de origen o una palabra clave que representa la dirección de origen. Una dirección puede ser representado por any , me (cualquier dirección configurada en una interfaz de este sistema), me6 , (cualquier dirección IPv6 configurado en una interfaz de este sistema), o table seguido por el número de una tabla de consulta que contiene una lista de direcciones. Al especificar una direcciónIP, se puede opcionalmente seguido de su máscara CIDR o máscara de subred. Por ejemplo, 1.2.3.4/25 o 1.2.3.4:255.255.255.128 . SRC_PORT Un puerto de origen opcional se puede especificar utilizando el número de puerto o el nombre de /etc/services . DST El to debe ir seguida por la dirección de destino o una palabra clave que representa la dirección de destino. Las mismas palabras clave y direcciones descritos en la sección SRC se pueden utilizar para describir el destino. DST_PORT Un puerto de destino se puede especificar utilizando el número de puerto o el nombre de /etc/services . OPCIONES Varias palabras clave pueden seguir el origen y el destino. Como su nombre indica, las opciones son opcionales. Opciones usadas comúnmente incluyen in o out , que especifican la dirección del flujo de paquetes, icmptypes seguido por el tipo de mensaje ICMP, y keep-state . Cuando un keep-state se corresponde regla, el firewall crear una regla dinámica que coincide con el tráfico bidireccional entre las direcciones y los puertos de origen y de destino utilizando el mismo protocolo. La instalación reglas dinámicas es vulnerable a agotamiento de los recursos de un ataque SYN-inundación que abriría un gran número de reglas dinámicas. Para contrarrestar este tipo de ataque con IPFW, utilice limit . Esta opción limita el número de sesiones simultáneas marcando las reglas dinámicas abiertas, contando el número de veces que se produjo esta regla y la combinación de la dirección IP. Si este contador es mayor que el valor especificado por limit , el paquete se descarta. Decenas de opciones están disponibles. Consulte ipfw (8) para obtener una descripción de cada opción disponible. 30.4.3. Ejemplo de conjuntos de reglas En esta sección se muestra cómo crear un ejemplo stateful firewall guión conjunto de reglas con nombre /etc/ipfw.rules . En este ejemplo, todas las reglas de conexión utilicen in o out de aclarar la dirección. También utilizan via interfacename para especificar la interfaz que el paquete está viajando más. Nota: Cuando primero crear o probar un conjunto de reglas de firewall, considere temporalmente establecer este sintonizable: net.inet.ip.fw.default_to_accept = "1" Esto establece la política por defecto de ipfw (8) para ser más permisivo que el defecto deny ip from any to any , por lo que es un poco más difícil de conseguir encerrados fuera del sistema después de un reinicio. El script de firewall comienza indicando que es un script de shell Bourne y los colores de las normas vigentes. A continuación, crea el cmd variable de modo que ipfw add no tiene que ser escrito en el comienzo de cada regla. También define el pif variable que representa el nombre de la interfaz que está conectado a la Internet. #! / Bin / sh # Lave la lista antes de comenzar. ras -f ipfw -q Reglas # Establecer prefijo de comando cmd = "ipfw -q agregar" pif = "dc0" # nombre del interfaz de NIC conectado a Internet Las dos primeras reglas permiten todo el tráfico en la interfaz interna de confianza y en la interfaz de bucle invertido: # Cambio xl0 a nombre de la interfaz LAN NIC $ Cmd 00005 permitir que todos los de cualquier a cualquier vía xl0 # No hay restricciones a la Interfaz loopback $ Cmd 00010 permitir que todos los de cualquier a cualquier vía lo0 La siguiente regla permite que el paquete a través de si coincide con una entrada existente en la tabla de reglas dinámica: $ Cmd 00101 check-estado El siguiente conjunto de reglas que define conexiones stateful sistemas internos pueden crear a los hosts en Internet: # Permitir el acceso a DNS público # Reemplace xxxx con la dirección IP de un servidor DNS público # Y repita para cada servidor DNS en /etc/resolv.conf $ Cmd 00110 permiten tcp de cualquier a xxxx 53 a través de la configuración pif $-estado mantener $ Cmd 00111 permitir udp desde cualquier a xxxx 53 a través de $ pifestado mantener # Permitir el acceso al servidor DHCP del ISP para configuraciones de cable / DSL. # Utilice la primera regla y comprobar ingrese la dirección IP. # A continuación, elimine la segunda regla, introduzca la dirección IP y eliminar la primera regla $ Cmd 00120 permitir udp registro de cualquier a cualquier 67 a través de $ pif-estado mantener # $ Cmd 00120 permitir udp desde cualquier a xxxx 67 a través de $ pifestado mantener # Permitir conexiones HTTP y HTTPS salientes $ Cmd 00200 permiten tcp de cualquier a cualquier 80 a través de la configuración pif $-estado mantener $ Cmd 00220 permiten tcp de cualquier a cualquier 443 a través de la configuración pif $-estado mantener # Permitir conexiones de correo electrónico salientes $ Cmd 00230 permiten tcp de cualquier a cualquier 25 a través de la configuración pif $-estado mantener $ Cmd 00231 permiten tcp de cualquier a cualquier 110 a través de la configuración pif $-estado mantener # Deje de ping saliente $ Cmd 00250 permiten icmp desde cualquier a cualquier cabo a través de $ pif-estado torreón # Permitir NTP saliente $ Cmd 00260 permiten tcp de cualquier a cualquier 37 a través de la configuración pif $-estado mantener # Permitir SSH salientes $ Cmd 00280 permiten tcp de cualquier a cualquier 22 a través de la configuración pif $-estado mantener # Negar y registrar todas las otras conexiones salientes $ Cmd 00299 deny registrar toda la de cualquier a cualquier cabo a través de $ pif El siguiente conjunto de reglas controla las conexiones de servidores de Internet a la red interna. Comienza negando paquetes típicamente asociados con los ataques y luego permite explícitamente determinados tipos de conexiones. Todos los servicios autorizados que se originan en el uso de Internet limitpara evitar las inundaciones. # Denegar todo el tráfico entrante de espacios de direcciones reservadas no enrutables $ Cmd 00300 niegan todo desde 192.168.0.0/16 a cualquier via #RFC $ pif 1918 IP privada $ Cmd 00301 niegan todo desde 172.16.0.0/12 a cualquier via #RFC $ pif 1918 IP privada $ Cmd 00.302 niegan todo desde 10.0.0.0/8 a cualquier via #RFC $ pif 1918 IP privada $ CMD 00303 niegan todo desde 127.0.0.0/8 a cualquier vía en $ pif #loopback $ CMD 00304 niegan todo desde 0.0.0.0/8 a cualquier vía en $ pif #loopback $ Cmd 00305 niegan todo desde 169.254.0.0/16 a cualquier vía en $ #DHCP pif auto-config $ Cmd 00306 niegan todo desde 192.0.2.0/24 a cualquier vía en $ pif #reserved para docs $ Cmd 00.307 niegan todo desde 204.152.64.0/23 a cualquier vía en $ pif interconexión del clúster #Sun $ Cmd 00308 niegan todo desde 224.0.0.0/3 a cualquier vía en $ pif #Class D & E multidifusión # Denegar pings públicos $ Cmd 00310 niegan icmp desde cualquier a cualquier vía en $ pif # Denegar ident $ Cmd 00315 niegan tcp de cualquier a cualquier 113 en vía $ pif # Denegar todos los servicios de NetBIOS. $ Cmd 00320 niegan tcp de cualquier a cualquier 137 en vía $ pif $ Cmd 00321 niegan tcp de cualquier a cualquier 138 en vía $ pif $ Cmd 00322 niegan tcp de cualquier a cualquier 139 en vía $ pif $ Cmd 00323 niegan tcp de cualquier a cualquier 81 en medio de $ pif # Denegar fragmentos $ Cmd 00330 niegan todo desde cualquier a cualquier fragmentación en medio de $ pif # Denegar paquetes ACK que no coinciden con la tabla de reglas dinámica $ Cmd 00332 niegan tcp de cualquier a cualquier establecida en medio de $ pif # Permitir el tráfico del servidor DHCP del ISP. # Reemplace xxxx con la misma dirección IP que se utiliza en la regla 00120. # $ Cmd 00360 permitir udp desde cualquier a xxxx 67 en medio de $ pifestado mantener # Permitir conexiones HTTP al servidor web interno $ Cmd 00400 permiten tcp de cualquier conmigo 80 en medio de $ límite configuración pif src-addr 2 # Permitir conexiones SSH entrantes $ Cmd 00410 permiten tcp de cualquier conmigo 22 en medio de $ límite configuración pif src-addr 2 # Rechazar y registrar todas las conexiones entrantes $ Cmd 00.499 deny registrar toda la de cualquier de cualquier vía en $ pif La última regla registra todos los paquetes que no coinciden con ninguna de las reglas en el conjunto de reglas: # Todo lo demás es negada y se registra $ Cmd 00.999 deny registrar toda la de cualquier a cualquier 30.4.4. Configuración de NAT Contribución de Chern Lee. FreeBSD incorporado en demonio NAT, natd (8) , trabaja en conjunto con IPFW para proporcionar traducción de direcciones de red. Esto se puede utilizar para proporcionar una solución de conexión compartida a Internet para que varios ordenadores internos pueden conectarse a Internet mediante una única dirección IP. Para ello, la máquina FreeBSD conectado a Internet debe actuar como puerta de entrada. Este sistema debe tener dos NIC s, donde uno está conectado a Internet y el otro está conectado a la LAN interna. Cada máquina conectada a la red local debe asignar una dirección IP en el espacio de la red privada, como se define en el RFC 1918 , y tienen la puerta de enlace predeterminada se establece en la natd (8) dirección IP interna del sistema. Se necesita alguna configuración adicional con el fin de activar la función de NAT de IPFW. Si el sistema tiene un kernel personalizado, el archivo de configuración del kernel debe incluir option IPDIVERT junto con los otros IPFIREWALL opciones descritas en la Sección 30.4.1, "Habilitación de IPFW" . Para habilitar el soporte de NAT en el arranque, el siguiente tiene que estar en /etc/rc.conf : gateway_enable = "YES" # permite la entrada natd_enable = "YES" # permite NAT natd_interface = "rl0" # especificar nombre de la interfaz de NIC conectado a Internet natd_flags = "- -m dinámica" # -m = conservar los números de puerto; Opciones adicionales figuran en natd (8) Nota: También es posible especificar un archivo de configuración que contiene las opciones de pasar a natd (8) : natd_flags = "- f /etc/natd.conf" El archivo especificado debe contener una lista de opciones de configuración, uno por línea. Por ejemplo: redirect_port tcp 192.168.0.2:6667 6667 tcp redirect_port 192.168.0.3:80 80 Para obtener más información acerca de este archivo de configuración, consulte natd (8) . A continuación, agregue las reglas NAT al conjunto de reglas de firewall. Cuando el enseñoreas contiene reglas con estado, el posicionamiento de las reglas de NAT es crítica y la skipto se utiliza la acción. El skipto acción requiere un número de la regla para que sepa qué regla saltar. El siguiente ejemplo se basa en el conjunto de reglas de cortafuegos se muestra en la sección anterior. Añade algunas entradas adicionales y modifica algunas normas existentes con el fin de configurar el firewall para NAT. Se inicia mediante la adición de algunas variables adicionales que representan el número de regla para saltar, el keep-state opción, y una lista de los puertos TCP que se utilizarán para reducir el número de reglas: #! / Bin / sh ras -f ipfw -q cmd = "ipfw -q agregar" skip = "skipto 500" pif = dc0 ks = "mantener el estado" good_tcpo = "22,25,37,53,80,443,110" La regla NAT entrante se inserta después de las dos reglas que permiten todo el tráfico en la interfaz interna de confianza y en la interfaz de bucle de retorno y antes del check-state regla. Es importante que el número regla seleccionada para esta regla NAT, en este ejemplo 100 , es más alto que las dos primeras reglas e inferior a la check-state regla: $ Cmd 005 permitir que todos desde cualquier a cualquier vía xl0 # excluir el tráfico LAN $ Cmd 010 permitir que todos desde cualquier a cualquier vía Lo0 # excluir el tráfico loopback $ Cmd 100 desviar ip natd de cualquiera a cualquiera en medio de $ pif # NAT todos los paquetes entrantes # Permitir el paquete a través de si tiene una entrada existente en la tabla de reglas dinámica $ 101 cmd check-estado Las reglas de salida se modifican para reemplazar al allow la acción con el $skip variables, lo que indica que el proceso de reglas continuará en regla 500 .Los siete tcp reglas han sido reemplazados por la regla 125 como $good_tcpo variable contiene los siete puertos salientes permitidos. # paquetes de salida autorizados $ 120 $ cmd saltar udp desde cualquier a xxxx 53 a través de $ pif $ ks $ 121 $ cmd saltar udp desde cualquier a xxxx 67 a través de $ pif $ ks $ 125 $ cmd saltar tcp de cualquier a cualquier $ good_tcpo a cabo a través de $ configuración pif $ ks $ 130 $ cmd saltar icmp desde cualquier a cualquier cabo a través de $ pif $ ks Las reglas de entrada siguen siendo los mismos, a excepción de la última regla que elimina el via $pif para coger reglas entrantes y salientes. La reglaNAT debe seguir esta última regla de salida, debe tener un número mayor que la última regla, y el número de la regla debe ser referenciado por el skiptoacción. En este conjunto de reglas, la regla número 500 desvía todos los paquetes que se ajustan a las reglas de salida a natd (8) para el procesamiento deNAT. La siguiente regla permite que cualquier paquete que ha sufrido una transformación NAT pasar. $ Cmd 499 deny registrar toda la de cualquier a cualquier $ Cmd 500 desvío ip natd de cualquier a cualquier cabo a través de $ pif # Ubicación skipto de reglas con estado de salida $ Cmd 510 permiten ip de cualquier a cualquier En este ejemplo, las reglas 100 , 101 , 125 , 500 , y 510 de control de la traducción de direcciones de la salida y de los paquetes de entrada para que las entradas de la tabla de estado dinámico siempre registran la dirección IP de la LAN privada. Considere la posibilidad de un navegador web interno que inicializa una nueva sesión HTTP saliente a través del puerto 80. Cuando el primer paquete saliente entra en el servidor de seguridad, que no coincide con la regla 100 , ya que se dirige a cabo en lugar de en. Pasa a la regla 101 , porque este es el primer paquete y no se ha publicado en la tabla de estado dinámico todavía. El paquete finalmente coincide con la regla 125 , ya que es de salida en un puerto permitido y tiene una dirección IP de origen de la LAN interna. En coincidiendo esta regla, dos acciones tienen lugar. En primer lugar, el keep-stateacción agrega una entrada a la tabla de estado dinámico y la acción especificada, skipto rule 500 , se ejecuta. A continuación, el paquete se somete a NATy se envía a Internet. Este paquete se abre paso en el servidor web de destino, donde se genera un paquete de respuesta y enviado de vuelta. Este nuevo paquete entra en la parte superior del conjunto de reglas. Coincide con la regla 100 y tiene su dirección IP de destino asignado a la dirección interna originales. Luego es procesada por el check-state general, se encuentra en la tabla como una sesión existente, y se libera a la LAN. En el lado de entrada, el conjunto de reglas tiene que negar los paquetes erróneos y permitir que los servicios autorizados. Un paquete que coincide con una regla de entrada se contabiliza en la tabla de estado dinámico y el paquete se libera a la LAN. El paquete generado como respuesta es reconocido por el checkstate regla como pertenecientes a una sesión existente. Se envía entonces a gobernar 500 a someterse a NAT antes de ser liberado a la interfaz de salida. 30.4.4.1. Puerto de redirección El inconveniente con natd (8) es que los clientes de LAN no son accesibles desde Internet. Los clientes de la LAN pueden hacer conexiones salientes al mundo, pero no pueden recibir los entrantes. Esto presenta un problema si intenta ejecutar los servicios de Internet en una de las máquinas cliente LAN.Una forma sencilla de evitar esto es redireccionar puertos de Internet seleccionados en el natd (8) de la máquina a un cliente LAN. Por ejemplo, un servidor de IRC se ejecuta en el cliente A y un servidor web se ejecuta en el cliente B . Para que esto funcione correctamente, las conexiones recibidas en los puertos 6667 (IRC) y 80 (HTTP) debe ser redirigido a las respectivas máquinas. La sintaxis para -redirect_port es como sigue: targetIP proto -redirect_port: targetPORT [-targetPORT] [AliasIP:] aliasPORT [-aliasPORT] [RemoteIP [: RemotePort [-remotePORT]]] En el ejemplo anterior, el argumento debe ser: tcp -redirect_port 192.168.0.2:6667 6667 tcp -redirect_port 192.168.0.3:80 80 Esto redirige los puertos TCP propias a las máquinas clientes de LAN. Rangos de puertos a través de puertos individuales se pueden indicar con redirect_port . Por ejemplo, tcp 192.168.0.2:2000-3000 2000-3000 sería redirigir todas las conexiones recibidas en los puertos 2000 a 3000 a los puertos 2000 a 3000 en el cliente A . Estas opciones se pueden utilizar cuando se ejecuta directamente natd (8) , colocado dentro de los natd_flags="" opción en /etc/rc.conf , o se pasan a través de un archivo de configuración. Para más opciones de configuración, consulte natd (8) 30.4.4.2. Dirección redirección Redirección de direcciones es útil si más de una dirección IP está disponible. Cada cliente LAN puede asignar su propia dirección IP externa por natd (8) , que se vuelva a grabar paquetes que salen de los clientes de LAN con la dirección IP externa adecuada y redirige todo el tráfico entrante de esa direcciónIP en particular vuelta al cliente LAN específico. Esto también se conoce como NAT estática. Por ejemplo, si las direcciones IP 128.1.1.1 , 128.1.1.2 , y128.1.1.3 están disponibles, 128.1.1.1 se puede utilizar como el (8) natd dirección IP externa de la máquina, mientras que 128.1.1.2 y 128.1.1.3 se envían de nuevo a LAN clientes A y B . El -redirect_address sintaxis es la siguiente: -redirect_address LocalIP publicIP LocalIP publicIP La dirección IP interna del cliente de LAN. La dirección IP externa correspondiente a la LAN cliente. En el ejemplo, este argumento sería el siguiente: -redirect_address 192.168.0.2 128.1.1.2 -redirect_address 192.168.0.3 128.1.1.3 Como -redirect_port , estos argumentos se colocan dentro de los natd_flags="" opción de /etc/rc.conf , o se pasan a través de un archivo de configuración.Con la redirección de direcciones, no hay necesidad de redirección de puertos ya que todos los datos recibidos en una determinada dirección IP se redirige. Las direcciones IP externas en la natd (8) de la máquina deben estar activos y alias a la interfaz externa. Consulte rc.conf (5) para más detalles. 30.4.5. El Comando IPFW puede ser utilizado para hacer, adiciones de reglas sencillas manuales o supresiones al cortafuegos activo mientras se está ejecutando. El problema con el uso de este método es que todos los cambios se pierden cuando se reinicia el sistema. Se recomienda no escribir todas las reglas en un archivo y utilizar ese archivo para cargar las reglas en el arranque y para reemplazar las reglas de firewall actualmente en ejecución siempre que los cambios en los archivos. ipfw es una forma útil para mostrar los que se ejecutan las reglas del cortafuegos a la pantalla de la consola. La función de cuentas IPFW crea dinámicamente un contador para cada regla que cuenta cada paquete que coincide con la regla. Durante el proceso de probar una regla, la regla de la lista con su mostrador es una manera de determinar si la regla está funcionando como se esperaba. ipfw Para una lista de todas las reglas de funcionamiento en secuencia: # ipfw list Para una lista de todas las reglas de funcionamiento con una marca de tiempo de cuando la última vez que la regla fue igualada: # ipfw -t list El siguiente ejemplo enumera la información contable y la cantidad de paquetes de reglas coincidentes, junto con las propias normas. La primera columna es el número de la regla, seguido por el número de paquetes y bytes emparejados, seguido por la regla misma. # ipfw -a list Para una lista de reglas dinámicas, además de reglas estáticas: # ipfw -d list Para mostrar las reglas dinámicas caducados: # ipfw -d -e list Para poner a cero los contadores: # ipfw zero Para poner a cero los contadores de sólo la regla número NUM : # ipfw zero NUM 30.4.5.1. Registro de mensajes del servidor de seguridad Incluso con la facilidad de registro habilitado, IPFW no generará ningún registro regla por sí misma. El administrador del servidor de seguridad decide que gobierna en el conjunto de reglas se registrarán, y agrega el log de palabras clave a esas reglas. Normalmente sólo niegan reglas se registran. Se acostumbra a duplicar el "default ipfw niegan todo" regla con el log palabra clave incluida como la última regla en el conjunto de reglas. De esta manera, es posible ver todos los paquetes que no coinciden con ninguna de las reglas en el conjunto de reglas. El registro es un arma de doble filo. Si uno no es cuidadoso, una abundancia excesiva de datos de registro o un ataque DoS puede llenar el disco con archivos de registro. Mensajes de registro no sólo se escriben en syslogd, pero también se muestran en la pantalla de la consola raíz y pronto se convierten molesto. El IPFIREWALL_VERBOSE_LIMIT=5 opción del kernel limita el número de mensajes consecutivos enviados a syslogd (8) , relativa a la adaptación de paquetes de una regla dada. Cuando esta opción está activada en el kernel, el número de mensajes consecutivos en relación con una regla en particular tiene un tope en el número especificado. No hay nada que ganar de 200 mensajes de registro idénticos. Con esta opción se ajusta a cinco, cinco mensajes consecutivos relativos a una regla particular se registran en syslogd y el resto mensajes consecutivos idénticos serían contados y se publicarán a syslogd con una frase como la siguiente: último mensaje repitió 45 veces Todos los mensajes de paquetes registrados se escriben de forma predeterminada en /var/log/security , que se define en /etc/syslog.conf . 30.4.5.2. La construcción de una secuencia de comandos Regla La mayoría de los usuarios experimentados IPFW crear un archivo que contiene las reglas y el código de una manera compatible con el funcionamiento de ellos como un guión. El principal beneficio de hacer esto es las reglas del firewall se pueden actualizar en masa sin necesidad de reiniciar el sistema para activarlos. Este método es conveniente en el ensayo de nuevas normas y el procedimiento se puede realizar tantas veces como sea necesario. Siendo una secuencia de comandos, la sustitución simbólica puede ser utilizado para valores utilizados con frecuencia para estar sustituido en varias reglas. Este script de ejemplo es compatible con la sintaxis utilizada por el sh (1) , csh (1) , y tcsh (1) conchas. Campos de sustitución simbólicos son prefijadas con un símbolo de dólar ($). Campos simbólicos no tienen el prefijo $. El valor para rellenar el campo simbólico debe ir entre comillas (""). Iniciar el archivo de reglas de esta manera: ############### Empezar de ejemplo ipfw guión reglas ############# # ipfw -q -f flush # Borra todas las reglas # Defina los valores predeterminados OIF = # cabo interfaz "tun0" ODN = "192.0.2.11" dirección IP del servidor DNS de su proveedor de Internet # cmd = "ipfw -q añadir" prefijo regla de construcción # ks = "mantener el estado" # demasiado perezosos para teclear esto cada vez $ Cmd 00500 check-estado $ Cmd 00502 niegan todo desde cualquier a cualquier frag $ Cmd 00501 niegan tcp de cualquier a cualquier establecida $ Cmd 00600 permiten tcp de cualquier a cualquier 80 a través de $ oif setup $ ks $ Cmd 00610 permiten tcp de cualquier a $ ODN 53 a través de $ oif setup $ ks $ Cmd 00611 permiten udp desde cualquier a $ ODN 53 a través de $ OIF $ ks ################### Fin del ejemplo ipfw guión reglas ############ Las reglas no son importantes como es el foco de este ejemplo de cómo se llenan los campos de sustitución simbólicos. Si el ejemplo anterior estaba en /etc/ipfw.rules , las reglas pueden ser recargadas mediante el siguiente comando: # sh /etc/ipfw.rules pueden ser ubicadas en cualquier parte y el archivo puede tener cualquier nombre. /etc/ipfw.rules Lo mismo podría lograrse mediante la ejecución de estos comandos a mano: # ipfw -q -f flush # ipfw -q add check-state # ipfw -q add deny all from any to any frag # ipfw -q add deny tcp from any to any established # ipfw -q add allow tcp from any to any 80 out via tun0 setup keep-state # ipfw -q add allow tcp from any to 192.0.2.11 53 out via tun0 setup keep-state # ipfw -q add 00611 allow udp from any to 192.0.2.11 53 out via tun0 keep-state
© Copyright 2024