Under Construction

Filter-Regel-Tabelle und aktive Filter-Regeln

Das Filtern von IP-Paketen erfolgt durch zwei Kernel-Module:

    • /usr/lib/drivers/filter4 für IPv4
    • /usr/lib/drivers/filter6 für IPv6

Die von IPsec zu verwendenden aktiven Filter-Regeln müssen im Kernel eines AIX-Systems abgelegt sein, damit die Kernel-Module auch Zugriff auf diese aktiven Regeln haben. Wird die Filterung deaktiviert oder das System rebootet, dann müssen die Filter-Regeln zwingend an einer anderen Stelle persistent abgelegt sein, damit sie bei Reaktivierung der Filterung wieder in den Kernel geladen werden können. Diese persistente Stelle ist die sogenannte Filter-Regel-Tabelle, sie ist im Dateisystem eines jeden AIX-Systems in Form der ODM ipsec_filter im Verzeichnis /etc/security abgelegt:

# ls -l /etc/security/ipsec_filter*
-rw-rw-r--    1 root     system        24576 Oct 30 14:43 /etc/security/ipsec_filter
-rw-rw-r--    1 root     system         4096 Oct 30 14:43 /etc/security/ipsec_filter.vc
#

Da es sich bei der Filter-Regel-Tabelle um eine ODM handelt, können natürlich auch alle ODM-Kommandos auf diese angewendet werden, hier als Beispiel odmshow:

# ODMDIR=/etc/security odmshow ipsec_filter
class ipsec_filter {
        ulong fltr_src_addr1;                        /* offset: 0xc ( 12) */
        ulong fltr_src_addr2;                        /* offset: 0x10 ( 16) */
        ulong fltr_src_addr3;                        /* offset: 0x14 ( 20) */
        ulong fltr_src_addr4;                        /* offset: 0x18 ( 24) */
        ulong fltr_src_mask1;                        /* offset: 0x1c ( 28) */
        ulong fltr_src_mask2;                        /* offset: 0x20 ( 32) */
        ulong fltr_src_mask3;                        /* offset: 0x24 ( 36) */
        ulong fltr_src_mask4;                        /* offset: 0x28 ( 40) */
        ulong fltr_dst_addr1;                        /* offset: 0x2c ( 44) */
        ulong fltr_dst_addr2;                        /* offset: 0x30 ( 48) */
        ulong fltr_dst_addr3;                        /* offset: 0x34 ( 52) */
        ulong fltr_dst_addr4;                        /* offset: 0x38 ( 56) */
        ulong fltr_dst_mask1;                        /* offset: 0x3c ( 60) */
        ulong fltr_dst_mask2;                        /* offset: 0x40 ( 64) */
        ulong fltr_dst_mask3;                        /* offset: 0x44 ( 68) */
        ulong fltr_dst_mask4;                        /* offset: 0x48 ( 72) */
        short fltr_id;                               /* offset: 0x4c ( 76) */
        binary fltr_action[1];                       /* offset: 0x4e ( 78) */
        binary fltr_protocol[1];                     /* offset: 0x4f ( 79) */
        binary fltr_src_port_op[1];                  /* offset: 0x50 ( 80) */
        short fltr_src_port;                         /* offset: 0x52 ( 82) */
        binary fltr_dst_port_op[1];                  /* offset: 0x54 ( 84) */
        short fltr_dst_port;                         /* offset: 0x56 ( 86) */
        binary fltr_rule_scope[1];                   /* offset: 0x58 ( 88) */
        binary fltr_direction[1];                    /* offset: 0x59 ( 89) */
        long fltr_tunnel_id;                         /* offset: 0x5c ( 92) */
        short fltr_auto_gen;                         /* offset: 0x60 ( 96) */
        short fltr_flags;                            /* offset: 0x62 ( 98) */
        short fltr_ver;                              /* offset: 0x64 ( 100) */
        short fltr_predef;                           /* offset: 0x66 ( 102) */
        short fltr_activ;                            /* offset: 0x68 ( 104) */
        char fltr_interface[16];                     /* offset: 0x6a ( 106) */
        vchar fltr_dst_host[2048];                   /* offset: 0x7c ( 124) */
        binary fltr_desc[80];                        /* offset: 0x80 ( 128) */
        long fltr_exp_time;                          /* offset: 0xd0 ( 208) */
        short fltr_patt_type;                        /* offset: 0xd4 ( 212) */
        binary fltr_patt[2048];                      /* offset: 0xd6 ( 214) */
        };
/*
        descriptors:    37
        structure size: 0x8d8 (2264) bytes
        data offset:    0x924
        population:     9 objects (9 active, 0 deleted)
*/


#

Hinweis: Da die ODM nicht unter /etc/objrepos liegt, muss das Verzeichnis /etc/security über die Variable ODMDIR mitgegeben werden.

Die Verwendung von ODM-Kommandos ist aber typischerweise nicht nötig, da es eine Reihe von High-Level Kommandos für die Administration von Filter-Regeln gibt (lsfilt, genfilt, mkfilt, …).

Manuelle Änderungen von Filter-Regeln werden immer auf der Filter-Regel-Tabelle (ipsec_filter) durchgeführt, nicht an den aktiven Filter-Regeln im Kernel.