![사용자가 파일을 읽고 쓸 수만 있다면 실행을 막을 만큼 충분합니까?](https://linux55.com/image/100085/%EC%82%AC%EC%9A%A9%EC%9E%90%EA%B0%80%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%9D%BD%EA%B3%A0%20%EC%93%B8%20%EC%88%98%EB%A7%8C%20%EC%9E%88%EB%8B%A4%EB%A9%B4%20%EC%8B%A4%ED%96%89%EC%9D%84%20%EB%A7%89%EC%9D%84%20%EB%A7%8C%ED%81%BC%20%EC%B6%A9%EB%B6%84%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
사용자는 Linux 서버에서 실행되는 애플리케이션을 사용합니다. 애플리케이션은 사용자에게 서버에서 파일을 읽고 쓸 수 있는 API를 제공하지만, 파일을 실행하는 방법은 제공하지 않습니다. 사용자가 서버에서 명령을 실행할 수 없도록 보장하기에 충분합니까?
기본 파일 시스템은 noexec를 사용하여 마운트되지 않습니다.
사용자는 읽고 쓸 파일을 선택할 수 있으며 어떤 이름으로든 새 파일을 만들 수 있습니다. 사용자는 파일을 삭제할 수 있습니다.
응용 프로그램은 "시스템" 파일에 액세스할 수 없으며 데스크톱 사용자와 유사한 상대적으로 표준적인 권한 없는 사용자 계정으로 실행됩니다.
답변1
파일 시스템 권한에 따라 모든 위치의 모든 이름을 확장하여 임의의 코드를 실행할 수 있습니다. $HOME
예를 들어, 이러한 파일 중 다수는 로그인 시 자동으로 실행됩니다. 새로운 콘텐츠가 추가되었습니다(예: 모든 시스템 사용자 세션 콘텐츠가 상당히 새롭습니다). 아니면 $HOME/bin
기본적으로 $PATH 앞에 넣을 수도 있습니다.
공격자의 다른 좋은 목표는 다음과 같습니다 ~/.ssh
.~해야 한다로그인 액세스 권한이 있지만 인증키 파일을 설치한 후에 로그인할 수 있나요? 물론 의 구성을 통해 이 기능을 비활성화할 수 있지만 /etc/ssh/
이는 단지 프로그램일 뿐입니다. 다른 사람들도 있을 수 있습니다.
나는 당신에 대해 의심의 여지가 없습니다할 수 있다이를 확인하세요. 하지만 많은 작업이 필요합니다(그리고 OS를 업그레이드할 때 매우 주의해야 합니다!).
그러나 임의의 파일로 제한할 수 있지만 특정 디렉터리(예: 및 하위 디렉터리에만 해당)에만 제한할 수 있다면 /srv/yourapp/
안전합니다(올바르게 프로그래밍된 경우).