커널: 모듈을 사용하여 청취 호출을 가로채기

커널: 모듈을 사용하여 청취 호출을 가로채기

listen(2)저는 들어오는 연결을 위해 소켓을 열기 위해 호출하는 응용 프로그램을 감지하고 규칙 테이블을 사용하여 이를 찾는 응용 프로그램을 작성 중입니다 . 이는 macOS의 애플리케이션 방화벽과 매우 유사합니다. 따라서 나의 주요 접근 방식은 listen로드 가능한 커널 모듈을 사용하여 호출을 재정의하는 것입니다. 커널 2.6 이상에서 시스템 호출 테이블이 읽기 전용인 경우 Linux에서도 가능합니까? 더 좋은 방법이 있나요?

답변1

예를 들어, 더 나은 접근 방식은 eBPF를 사용하는 것입니다.

https://stackoverflow.com/questions/43003805/can-ebpf-modify-the-return-value-or-parameters-of-a-syscall/

"패킷 필터링" 부분에 속지 마십시오. BPF는 더 이상 패킷 필터링에 관한 것이 아닙니다. 학습 곡선이 상당히 가파르지만 그만한 가치가 있습니다.

관련 정보