24.05.2020 Fraga Problemas encontrados en la realización del sistema mínimo Para ver los módulos que se necesitan para ejecutar iptables, se ejecutó el script del cortafuegos en la máquina anfitrión. El resultado fue: # lsmod Module Size Used by xt_MASQUERADE 20480 1 nft_compat 20480 1 nft_counter 16384 3 nft_chain_nat 16384 4 nf_nat 53248 2 nft_chain_nat,xt_MASQUERADE nf_conntrack 172032 2 nf_nat,xt_MASQUERADE nf_defrag_ipv6 24576 1 nf_conntrack nf_defrag_ipv4 16384 1 nf_conntrack libcrc32c 16384 2 nf_conntrack,nf_nat nf_tables 176128 11 nft_compat,nft_counter,nft_chain_nat nfnetlink 16384 2 nft_compat,nf_tables Al tratar de instalarlos en el sistema mínimo se tuvo el problema con el módulo nf_conntrack. La información de este módulo es: $ modinfo nf_conntrack filename: /lib/modules/5.5.0-kali2-amd64/kernel/net/netfilter/nf_conntrack.ko license: GPL alias: nf_conntrack-10 alias: nf_conntrack-2 alias: ip_conntrack depends: nf_defrag_ipv6,libcrc32c,nf_defrag_ipv4 retpoline: Y intree: Y name: nf_conntrack vermagic: 5.5.0-kali2-amd64 SMP mod_unload modversions parm: tstamp:Enable connection tracking flow timestamping. (bool) parm: acct:Enable connection tracking flow accounting. (bool) parm: nf_conntrack_helper:Enable automatic conntrack helper assignment (default 0) (bool) parm: expect_hashsize:uint parm: enable_hooks:Always enable conntrack hooks (bool) donde está claro que este módulo depende de 'libcrc32c', pero no se podía instalar este último módulo. Su información es: $ modinfo nf_conntrack filename: /lib/modules/5.5.0-kali2-amd64/kernel/net/netfilter/nf_conntrack.ko license: GPL alias: nf_conntrack-10 alias: nf_conntrack-2 alias: ip_conntrack depends: nf_defrag_ipv6,libcrc32c,nf_defrag_ipv4 retpoline: Y intree: Y name: nf_conntrack vermagic: 5.5.0-kali2-amd64 SMP mod_unload modversions parm: tstamp:Enable connection tracking flow timestamping. (bool) parm: acct:Enable connection tracking flow accounting. (bool) parm: nf_conntrack_helper:Enable automatic conntrack helper assignment (default 0) (bool) parm: expect_hashsize:uint parm: enable_hooks:Always enable conntrack hooks (bool) fraga@kali:~$ modinfo libcrc32c filename: /lib/modules/5.5.0-kali2-amd64/kernel/lib/libcrc32c.ko softdep: pre: crc32c license: GPL description: CRC32c (Castagnoli) calculations author: Clay Haapala depends: retpoline: Y intree: Y name: libcrc32c vermagic: 5.5.0-kali2-amd64 SMP mod_unload modversions donde hay una 'softdep' de 'crc32c'. No existe como tal este módulo es la lista de módulos instalados en la máquina anfitrión. Lo más cercano era el módulo 'crc32c_generic'. No fue al instante, sino después de muchas vuelta de verficar que estuviese mal, que al checar la información de este módulo: $ modinfo crc32c_generic filename: /lib/modules/5.5.0-kali2-amd64/kernel/crypto/crc32c_generic.ko alias: crypto-crc32c-generic alias: crc32c-generic alias: crypto-crc32c alias: crc32c license: GPL description: CRC32c (Castagnoli) calculations wrapper for lib/crc32c author: Clay Haapala depends: retpoline: Y intree: Y name: crc32c_generic vermagic: 5.5.0-kali2-amd64 SMP mod_unload modversions ¡'crc32c' es un alias del módulo 'crc32c_generic'! Se puso en el sistema mínimo y listo. Otro problema fue que al ejecutar el script del cortafuegos salía el error "ACCEPT is not in a valid chain". Este es un mensaje muy raro. Se verificó ejecutar iptables en el anfitrión con la bandera de debug habilitada (LD_DEBUG=libs) y sí, hacen faltan las bibliotecas que están en : /usr/lib/x86_64-linux-gnu/xtables que son 126 bibliotecas compartidas con un tamaño de 2116 Kbytes, necesarias para la ejecución de iptables.