securityonion является основанным на человечности распределением для обнаружения проникновения. В его конфигурации по умолчанию это использует фырканье или suricata и идентификаторы брата для анализа сетевого трафика (что Вы подаете его, например, путем конфигурирования брандмауэра для отправки его в него, или при помощи зеркального отражения порта на переключателе) для знаков злонамеренного действия с помощью правил от VRT или Появляющихся Угроз.
Это также идет с армадой средств обеспечения безопасности и инструментами для осмотра трафика. Это может также быть настроено для наблюдения загружаемых файлов и базы данных запроса вредоносного программного обеспечения.
Ваш анализ до сих пор в целом верен. Способ, которым оболочка может устанавливать stdin процесса в дескриптор трубы, может быть (псевдокод):
pipe(p) // create a new pipe with two handles p[0] and p[1]
fork() // spawn a child process
close(p[0]) // close the write end of the pipe in the child
dup2(p[1], 0) // duplicate the pipe descriptor on top of fd 0 (stdin)
close(p[1]) // close the other pipe descriptor
exec() // run a new process with the new descriptors in place