Tengo un sistema CentOS 6.8 que está ejecutando Tripwire (la versión Open Source). El sistema se encuentra en una red interna detrás de un firewall que no reenvía ninguna conexión entrante. Es decir. El sistema Centos puede acceder a Internet pero tiene una dirección no enrutable (en 10/8) y no se puede acceder directa o indirectamente desde el exterior.
Se está preparando para ser un firewall y no tiene puertos abiertos en iptables, excepto que ssh se ejecuta en un puerto no estándar y permite solo la autenticación basada en claves. He verificado esto con nmap.
Ayer instalé algunas herramientas de depuración de red:
Jan 15 15:55:55 Installed: compat-readline5-5.2-17.1.el6.x86_64
Jan 15 15:55:56 Installed: socat-1.7.2.3-1.el6.x86_64
Jan 15 15:56:54 Installed: libnetfilter_conntrack-0.0.100-2.el6.x86_64
Jan 15 15:56:54 Installed: iptstate-2.2.2-4.el6.x86_64
Jan 15 16:06:22 Installed: iperf-2.0.5-11.el6.x86_64
y luego corrió
tripwire --check -I
para actualizar la base de datos. Todo se veía bien en el informe, los cambios marcados coincidían con las cosas instaladas por los RPM.
Tripwire se ejecutó durante la noche y marcó un montón de cambios, incluidos los cambios en los binarios de Tripwire.
Supongo que esto significa que una de esas herramientas está comprometida y cuando la ejecuté (con sudo, por supuesto), descargó e implementó un montón de cosas. La lista completa de cambios detectados por Tripwire es:
"/usr/sbin"
"/usr/sbin/abrt-auto-reporting"
"/usr/sbin/abrt-dbus"
"/usr/sbin/abrt-server"
"/usr/sbin/arpaname"
"/usr/sbin/crda"
"/usr/sbin/ddns-confgen"
"/usr/sbin/dnssec-dsfromkey"
"/usr/sbin/dnssec-keyfromlabel"
"/usr/sbin/dnssec-keygen"
"/usr/sbin/dnssec-revoke"
"/usr/sbin/dnssec-settime"
"/usr/sbin/dnssec-signzone"
"/usr/sbin/genrandom"
"/usr/sbin/hald"
"/usr/sbin/iftop"
"/usr/sbin/iptstate"
"/usr/sbin/isc-hmac-fixup"
"/usr/sbin/latencytop"
"/usr/sbin/makedumpfile"
"/usr/sbin/mtr"
"/usr/sbin/named-checkconf"
"/usr/sbin/named-checkzone"
"/usr/sbin/named-journalprint"
"/usr/sbin/nethogs"
"/usr/sbin/nsec3hash"
"/usr/sbin/nstat"
"/usr/sbin/ntsysv"
"/usr/sbin/oddjobd"
"/usr/sbin/powertop"
"/usr/sbin/regdbdump"
"/usr/sbin/rndc"
"/usr/sbin/rndc-confgen"
"/usr/sbin/rtacct"
"/usr/sbin/setup"
"/usr/sbin/sssd"
"/usr/sbin/unbound-anchor"
"/usr/sbin/siggen"
"/usr/sbin/tripwire"
"/usr/sbin/twadmin"
"/usr/sbin/twprint"
"/usr/lib/cups/filter"
"/usr/lib/cups/filter/pdftoraster"
"/usr/lib/rpm"
"/usr/lib/rpm/debugedit"
"/usr/lib/rpm/rpmdeps"
"/usr/lib64"
"/usr/lib64/gettext"
"/usr/lib64/gettext/gnu.gettext.DumpResource"
"/usr/lib64/gettext/gnu.gettext.GetURL"
"/usr/lib64/graphviz"
"/usr/lib64/graphviz/libgvplugin_neato_layout.so.6.0.0"
"/usr/lib64/libQt3Support.so.4.6.2"
"/usr/lib64/libQtCLucene.so.4.6.2"
"/usr/lib64/libQtCore.so.4.6.2"
"/usr/lib64/libQtDBus.so.4.6.2"
"/usr/lib64/libQtGui.so.4.6.2"
"/usr/lib64/libQtHelp.so.4.6.2"
"/usr/lib64/libQtNetwork.so.4.6.2"
"/usr/lib64/libQtSql.so.4.6.2"
"/usr/lib64/libQtXml.so.4.6.2"
"/usr/lib64/libSDL-1.2.so.0.11.3"
"/usr/lib64/libXfont.so.1.4.1"
"/usr/lib64/libabrt.so.0.0.1"
"/usr/lib64/libabrt_dbus.so.0.0.1"
"/usr/lib64/libabrt_web.so.0.0.1"
"/usr/lib64/libaugeas.so.0.16.0"
"/usr/lib64/libbind9.so.80.0.4"
"/usr/lib64/libcairo.so.2.10800.8"
"/usr/lib64/libcloog.so.0.0.0"
"/usr/lib64/libcups.so.2"
"/usr/lib64/libcupsimage.so.2"
"/usr/lib64/libdns.so.81.4.1"
"/usr/lib64/libexslt.so.0.8.15"
"/usr/lib64/libfprint.so.0.0.0"
"/usr/lib64/libgd.so.2.0.0"
"/usr/lib64/libgdk-x11-2.0.so.0.2400.23"
"/usr/lib64/libgdk_pixbuf-2.0.so.0.2400.1"
"/usr/lib64/libgmpxx.so.4.1.0"
"/usr/lib64/libgs.so.8.70"
"/usr/lib64/libgstbase-0.10.so.0.25.0"
"/usr/lib64/libgstinterfaces-0.10.so.0.20.0"
"/usr/lib64/libgstreamer-0.10.so.0.25.0"
"/usr/lib64/libgstvideo-0.10.so.0.20.0"
"/usr/lib64/libgtk-x11-2.0.so.0.2400.23"
"/usr/lib64/libgvc.so.5.0.0"
"/usr/lib64/libgvpr.so.1.0.0"
"/usr/lib64/libhunspell-1.2.so.0.0.0"
"/usr/lib64/libisc.so.83.0.3"
"/usr/lib64/libisccc.so.80.0.0"
"/usr/lib64/libisccfg.so.82.0.1"
"/usr/lib64/libjasper.so.1.0.0"
"/usr/lib64/liblcms.so.1.0.19"
"/usr/lib64/liblua-5.1.so"
"/usr/lib64/liblwres.so.80.0.2"
"/usr/lib64/libmng.so.1.0.0"
"/usr/lib64/libnetfilter_conntrack.so.3.0.0"
"/usr/lib64/libnewt.so.0.52.11"
"/usr/lib64/libnfnetlink.so.0.2.0"
"/usr/lib64/libnl-3.so.200.16.1"
"/usr/lib64/libnl-route-3.so.200.16.1"
"/usr/lib64/libopenjpeg.so.2.1.3.0"
"/usr/lib64/libpango-1.0.so.0.2800.1"
"/usr/lib64/libpangocairo-1.0.so.0.2800.1"
"/usr/lib64/libpangoft2-1.0.so.0.2800.1"
"/usr/lib64/libpangox-1.0.so.0.2800.1"
"/usr/lib64/libpangoxft-1.0.so.0.2800.1"
"/usr/lib64/libpathplan.so.4.0.0"
"/usr/lib64/libphonon.so.4.3.1"
"/usr/lib64/libpixman-1.so.0.32.8"
"/usr/lib64/libpng12.so.0.49.0"
"/usr/lib64/libpoppler.so.5.0.0"
"/usr/lib64/libppl.so.7.1.0"
"/usr/lib64/libppl_c.so.2.1.0"
"/usr/lib64/libproxy.so.0.0.0"
"/usr/lib64/libpython2.6.so.1.0"
"/usr/lib64/libreport.so.0.0.1"
"/usr/lib64/librpm.so.1.0.0"
"/usr/lib64/librpmbuild.so.1.0.0"
"/usr/lib64/librpmio.so.1.0.0"
"/usr/lib64/librrd.so.4.0.7"
"/usr/lib64/libsatyr.so.3.0.0"
"/usr/lib64/libslang.so.2.2.1"
"/usr/lib64/libsnappy.so.1.1.4"
"/usr/lib64/libtiff.so.3.9.4"
"/usr/lib64/libunbound.so.2.1.5"
"/usr/lib64/libvorbis.so.0.4.3"
"/usr/lib64/libvorbisenc.so.2.0.6"
"/usr/lib64/libxml2.so.2.7.6"
"/usr/lib64/libxmlrpc.so.3.16"
"/usr/lib64/libxmlrpc_client.so.3.16"
"/usr/lib64/libxslt.so.1.1.26"
"/usr/lib64/perl5/CORE"
"/usr/lib64/perl5/CORE/libperl.so"
"/usr/lib64/qt-3.3/lib"
"/usr/lib64/qt-3.3/lib/libqt-mt.so.3.3.8"
"/sbin"
"/sbin/alsactl"
"/sbin/cryptsetup"
"/sbin/dm_dso_reg_tool"
"/sbin/dmevent_tool"
"/sbin/dmraid"
"/sbin/ifrename"
"/sbin/ip6tables-multi-1.4.7"
"/sbin/iptables-multi-1.4.7"
"/sbin/iw"
"/sbin/iwconfig"
"/sbin/iwevent"
"/sbin/iwgetid"
"/sbin/iwlist"
"/sbin/iwpriv"
"/sbin/iwspy"
"/sbin/kpartx"
"/sbin/parted"
"/sbin/partprobe"
"/sbin/pdata_tools"
"/sbin/plymouthd"
"/sbin/tc"
"/etc"
"/bin"
"/bin/find"
"/bin/gawk"
"/bin/plymouth"
"/bin/rpm"
"/bin/traceroute"
"/lib64"
"/lib64/libasound.so.2.0.0"
"/lib64/libcryptsetup.so.1.1.0"
"/lib64/libdevmapper-event.so.1.02"
"/lib64/libdevmapper.so.1.02"
"/lib64/libdmraid.so.1.0.0.rc16"
"/lib64/libiw.so.29"
"/lib64/libnl.so.1.1.4"
"/lib64/libparted-2.1.so.0.0.0"
"/lib64/libply-splash-core.so.2.0.0"
"/lib64/libply.so.2.0.0"
"/lib64/libreadline.so.5.2"
La mayoría de los cambios marcados por Tripwire afectan el número de inodo, MD5 y CRD32, y para algunos archivos la hora de cambio. Una búsqueda en Google no reveló ninguna noticia de un compromiso en ninguna de estas herramientas.
Información adicional: Al examinar / var / log / secure, veo que el único comando sudo que ejecuté después de actualizar la base de datos de Tripwire fue iftop
, por lo que eso podría reducir las cosas un poco.
Mi primer pensamiento fue que, de alguna manera, las actualizaciones automáticas se activaron. Sin embargo, no puedo encontrar evidencia de que haya ocurrido una actualización. No hay nada en yum.log
y el registro cron tampoco muestra actualizaciones. Aquí hay una lista de los servicios actualmente habilitados:
> chkconfig --list|grep :on
abrt-ccpp 0:off 1:off 2:off 3:on 4:off 5:on 6:off
abrt-oops 0:off 1:off 2:off 3:on 4:off 5:on 6:off
abrtd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off
atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
autofs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
blk-availability 0:off 1:on 2:on 3:on 4:on 5:on 6:off
cpuspeed 0:off 1:on 2:on 3:on 4:on 5:on 6:off
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
dhcpd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
dkms_autoinstaller 0:off 1:off 2:on 3:on 4:on 5:on 6:off
haldaemon 0:off 1:off 2:off 3:on 4:on 5:on 6:off
ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
irqbalance 0:off 1:off 2:off 3:on 4:on 5:on 6:off
kdump 0:off 1:off 2:off 3:on 4:on 5:on 6:off
lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off
mcelogd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
mdmonitor 0:off 1:off 2:on 3:on 4:on 5:on 6:off
messagebus 0:off 1:off 2:on 3:on 4:on 5:on 6:off
named 0:off 1:off 2:off 3:on 4:on 5:on 6:off
netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
nmb 0:off 1:off 2:off 3:on 4:on 5:on 6:off
ntpd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
smb 0:off 1:off 2:off 3:on 4:on 5:on 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sysstat 0:off 1:on 2:on 3:on 4:on 5:on 6:off
udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off
La única "anomalía" aquí es dkms_autoinstaller
que fue activada por una actualización reciente a dkms
. Sin embargo, parece que se ejecuta solo en el momento del arranque y el sistema no se ha reiniciado en varios días.
Aquí hay un extracto del registro del sistema, con algunas anotaciones (las anotaciones se refieren a la línea anterior):
> sudo egrep -v 'dhclient|dhcpd|named' messages
Jan 15 04:21:01 perseus rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1669" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
Jan 15 04:25:12 perseus tripwire[32032]: Integrity Check Complete: /var/lib/tripwire/perseus.jhmg.pvt.twd TWReport perseus.jhmg.pvt 20170115042107 V:4 S:100 A:0 R:0 C:4
^^^ Overnight Tripwire run, 4 violations that I expected
Jan 15 15:53:38 perseus kernel: device eth1 entered promiscuous mode
Jan 15 15:54:03 perseus kernel: device eth1 left promiscuous mode
^^^ Me running tcpdump
Jan 15 15:55:55 perseus yum[2260]: Installed: compat-readline5-5.2-17.1.el6.x86_64
Jan 15 15:55:56 perseus yum[2260]: Installed: socat-1.7.2.3-1.el6.x86_64
Jan 15 15:56:54 perseus yum[2268]: Installed: libnetfilter_conntrack-0.0.100-2.el6.x86_64
Jan 15 15:56:54 perseus yum[2268]: Installed: iptstate-2.2.2-4.el6.x86_64
Jan 15 15:56:59 perseus kernel: Netfilter messages via NETLINK v0.30.
Jan 15 15:56:59 perseus kernel: ctnetlink v0.93: registering with nfnetlink.
Jan 15 16:06:22 perseus yum[2340]: Installed: iperf-2.0.5-11.el6.x86_64
^^^ Installed and tested some network tools
Jan 15 16:12:58 perseus tripwire[2372]: Integrity Check Complete: /var/lib/tripwire/perseus.jhmg.pvt.twd TWReport perseus.jhmg.pvt 20170115160857 V:17 S:100 A:7 R:0 C:10
^^^ Manual execution of Tripwire, database updated
Jan 16 03:29:31 perseus tripwire[6067]: Integrity Check Complete: /var/lib/tripwire/perseus.jhmg.pvt.twd TWReport perseus.jhmg.pvt 20170116032536 V:177 S:100 A:0 R:0 C:177
^^^ Auto run of Tripwire overnight showing 177 violations, all "changes"