Syswall은 시스템 호출에 대한 응용 프로그램의 액세스를 필터링하기 위해 동적 방화벽의 유사성을 만들기위한 새로운 개발입니다. 프로젝트 코드는 Rust 언어로 작성되었으며 라이센스는 지정되지 않았습니다.
이 새로운 개발 strace 유틸리티의 대화 형 버전처럼 보이며 프로그램이 수행하는 모든 시스템 호출을 추적 할 수 있습니다. 주요 차이점은 시스템 호출 및 실행 결과에 대한 정보를 표시한다는 것입니다.
Syswall 정보
시스템월 대화 형 모드 지원 시스템 호출을하기 전에 모니터링되는 프로세스가 중지되는 경우 사용자에게 작업을 계속할지 아니면 무시할지 묻는 메시지가 표시됩니다. 예를 들어, 각 파일 또는 네트워크 연결 프로세스를 열려는 시도를 모니터링 할 수 있습니다.
Syswall은 또한 수행 된 시스템 호출에 대한 통계를 수집하고이를 기반으로 보고서를 생성 할 수 있습니다.
syswall의 목표는 다음과 같습니다.
에 strace의 개선 된 버전 제공 소프트웨어가 실제로 어떤 일을하고 있는지 확인하는 것이 더 쉽습니다.
시스템 호출을 허용 및 거부하는 세부적이고 상호 작용적인 접근 방식을 허용하여 소프트웨어를 테스트하고 실험 할 수있는 환경을 제공합니다.
각 프로세스에는 구성 파일이있을 수 있습니다.
각 프로세스에 대해 se는 명시 적으로 허용되거나 차단 된 시스템 호출 목록과 구성 파일을 연결할 수 있습니다.
지원되는 호출의 경우 syswall을 사용하여 사용자가 다음 작업을 수행 할 수 있습니다.
- syscall 한 번 허용
- 항상 특정 시스템 호출을 허용하십시오.
- 시스템 호출을 한 번 차단 (하드 또는 소프트)
- 항상 특정 시스템 호출 (하드 또는 소프트) 차단
- 차단할 때 프로그램은 차단 (하드 또는 소프트)을 수행 할 수 있습니다.
대화식 세션 중에는 프로그램 액세스 위치에 관계없이 런타임시 특정 시스템 호출과이 시스템 호출에 대한 모든 호출을 허용하거나 차단할 수 있습니다.
차단은 "하드"및 "소프트"모드에서 지원됩니다.
잠금 유형
첫 번째 경우 시스템 호출이 실행되지 않고 액세스 오류 코드가 프로세스로 전송됩니다.. 두 번째 경우에도 시스템 호출이 실행되지 않지만 프로세스는 가상의 성공적인 리턴 코드를 수신하여 시스템 호출의 성공적인 실행을 시뮬레이션합니다.
예를 들어, 현재 파일 작업과 관련된 시스템 호출 분석 만 지원됩니다.
하드 블록은 syscall이 실행되는 것을 방지하고 권한 거부 오류를 자식 프로세스에 반환합니다. 반면에 소프트 잠금은 syscall을 방지하지만 syscall이 실제로 실행 된 것처럼 가장하기 위해 자식 프로세스에 적절한 응답을 반환하려고합니다.
이 경우 확인 요청은 특별히 전화를 걸었거나 이전에 누락 된 시스템 호출을 참조하는 경우에만 표시됩니다.
프로세스 구성을 저장하고로드합니다.
실행 중에 선택한 사항을 JSON 파일에 저장할 수 있습니다. 위의 옵션이 사용되도록 다른 실행 중에이 파일을로드 할 수 있습니다.
진행중인 작업입니다. 허용 / 차단 된 응답 만 항상 저장됩니다.
정보
자식 프로세스가 종료되면 syswall은 자식 프로세스 시스템 호출에 대한 짧은 보고서를 발행합니다. 현재는 열려 있거나 잠긴 모든 파일로 구성되어 있지만 향후 릴리스에서 확장 될 예정입니다.
이 프로젝트는 아직 기능적 프로토 타입 단계에 있으며 모든 가능성이 실현되는 것은 아닙니다.
아직 개발해야 할 것이 더 있습니다
프로젝트에 대한 큰 할 일 목록이 있으며 향후 시스템 호출의 추가 클래스에 대한 지원을 추가 할 계획입니다.시스템 호출에 전달 된 인수를 고려하여 확인하는 기능, 다른 프로그램 시작 동안 활동을 나중에 비교할 수 있도록 프로세스 상태를 파일에 저장하는 수단 (예 : 파일 목록과 네트워크 연결 비교), 옵션 동적 라이브러리로드를 무시하고 일반적인 설정 세트를 지원합니다 (예 : 모든 소켓을 잠그지 만 파일 액세스는 허용).