我正在编写一个应用程序,它将检测任何调用listen(2)
打开套接字以进行传入连接的应用程序,并使用规则表进行查找。它很像 macOS 中的应用程序防火墙。所以我的主要方法是listen
使用一些可加载内核模块来覆盖调用。如果系统调用表在 2.6 以上的内核中是只读的,那么在 Linux 中是否可能?还有什么方法更好?
答案1
更好的方法可能是使用 eBPF,例如;
不要让“数据包过滤”部分欺骗了您,BPF 不再仅仅与数据包过滤有关。它的学习曲线相当陡峭,但这是值得的。
我正在编写一个应用程序,它将检测任何调用listen(2)
打开套接字以进行传入连接的应用程序,并使用规则表进行查找。它很像 macOS 中的应用程序防火墙。所以我的主要方法是listen
使用一些可加载内核模块来覆盖调用。如果系统调用表在 2.6 以上的内核中是只读的,那么在 Linux 中是否可能?还有什么方法更好?
更好的方法可能是使用 eBPF,例如;
不要让“数据包过滤”部分欺骗了您,BPF 不再仅仅与数据包过滤有关。它的学习曲线相当陡峭,但这是值得的。