
가상 서버 인스턴스를 설정하는 동안 make
. 설치 와 관련된 보안 위험이 있습니까 make
? 아니면 인스턴스가 배포되기 전에 정리해야 합니까?
gcc
또한 배포 전에 애플리케이션을 구축하는 데 사용하는 컴파일러가 서버에 있습니다 .
답변1
어떤 사람들은 생산 기계에 개발 도구가 있으면 공격자의 삶이 더 쉬워질 것이라고 주장합니다. 그러나 이것은 공격자에게 매우 작은 장애물이므로 개발 도구 설치에 대해 찾을 수 있는 다른 주장이 더 중요할 것입니다.
공격자가 지금까지 시스템에 침투하여 서버에 있는 모든 도구를 호출할 수 있었다면 이미 심각한 보안 위반이 발생한 것입니다. 개발 도구 없이 바이너리 데이터를 파일에 쓴 다음 해당 파일에 대해 chmod를 실행하는 다른 방법이 많이 있습니다. 이 시점에서 시스템에서 사용자 지정 빌드 실행 파일을 사용하려는 공격자는 자신의 컴퓨터에서 이를 빌드하여 서버로 전송할 수도 있습니다.
주의해야 할 다른 훨씬 더 관련성 있는 사항이 있습니다. 설치된 소프트웨어에 보안 버그가 포함된 경우 공격자에게 노출될 수 있는 몇 가지 방법이 있습니다.
- 패키지에는 suid 또는 sgid 실행 파일이 포함될 수 있습니다.
- 패키지가 시스템에서 서비스를 시작하고 있을 수 있습니다.
- 패키지는 특정 상황에서 자동으로 호출되는 스크립트를 설치할 수 있습니다(여기에는 cron 작업이 포함되지만 스크립트는 네트워크 인터페이스 상태가 변경되거나 사용자가 로그인할 때와 같은 다른 이벤트에 의해 호출될 수 있습니다).
- 패키지는 장치 inode를 설치할 수 있습니다.
개발 도구가 위의 항목 중 하나와 일치할 것이라고는 기대하지 않으며 따라서 위험도가 높은 패키지도 아닙니다.
개발 도구를 활용하는 워크플로가 있는 경우 먼저 해당 워크플로가 합리적인지 여부를 결정해야 하며, 그렇다면 개발 도구를 설치해야 합니다.
서버에 해당 도구가 실제로 필요하지 않다고 판단되면 다음과 같은 여러 가지 이유로 도구 설치를 자제해야 합니다.
- 서버와 백업 모두에서 디스크 공간을 절약합니다.
- 덜 설치된 소프트웨어를 사용하면 종속성이 무엇인지 추적하기가 더 쉽습니다.
- 패키지가 필요하지 않은 경우 보안 위험이 작더라도 설치로 인한 추가 보안 위험을 감수할 필요가 없습니다.
보안상의 이유로 권한이 없는 사용자가 자신의 실행 파일을 서버에 두는 것을 허용하지 않기로 결정한 경우 피해야 할 것은 개발 도구가 아니라 실행 권한으로 마운트된 파일 시스템에서 해당 사용자에게 쓸 수 있는 디렉터리입니다. 그러한 상황에서도 여전히 개발 도구를 사용할 수는 있지만 그럴 가능성은 그리 높지 않습니다.
답변2
make
는 와 다른 구문을 가진 셸입니다 bash
.
같은 컴파일러는 표준이 지원하지 않는 대체 세트로 구성된 gcc
강력한 기능입니다 . POSIX와 호환되지 않거나 출력 에 쓰레기를 주입합니다. 시작 시 일부 편집을 수행한 다음 사용자 인터페이스를 표시하기 전에 종료하도록 구성된 대화형 텍스트 편집기(생각해 보세요)입니다 .awk
awk
sort
cat
vi
cat
본질적으로 안전하지 않은 것은 없으며 bash + + 쉘 리디렉션이 있는 시스템보다 시스템을 더 안전하지 않게 만들지 않습니다 .
답변3
make
그 자체는 괜찮습니다. make
종속성 추적 및 자동화 프레임워크일 뿐입니다. 그러나 일반적으로 컴파일러와 함께 사용되며 완전히 필요하지 않기 때문에 프로덕션 시스템에서는 사용하지 않는 것이 좋습니다. 공유 라이브러리, 인터프리터 등 필요하지 않은 모든 패키지에 대해서도 마찬가지입니다. 프로덕션 시스템에 설치된 소프트웨어는 엄격하게 제어되어야 하며 애플리케이션에 필요한 패키지만 있어야 합니다.
빌드 서버에서 애플리케이션을 빌드하고 패키징한 다음 바이너리 패키지를 프로덕션 시스템에 배포해야 합니다.
참고: 기본 패키징 도구빨다. 그들을 괴롭히려고 애쓰지도 마세요. 대신 Jordan Sissel의fpm
. 그것은 포장을 절대적인 기쁨으로 만듭니다.
답변4
프로덕션 서버에 설치해야 하는지 묻는 질문 make
이겠지만 실제 질문은 다음과 같습니다. 해당 프로덕션 서버에 액세스할 수 있는 사람은 누구이며 침입에 대처하기 위해 어떤 보호 장치를 갖추고 있습니까? make
설치되지 않았지만 누군가 액세스 권한을 얻은 경우 root
어떻게 될까요? 수동으로 설치할 수 make
있으며 원하는 것은 무엇이든 설치할 수 있습니다.
컴퓨터 보안에 대한 가혹한 현실은 원치 않는 액세스를 방지하려는 만큼 액세스 차단에 집착하는 것은 다음만큼 중요하지 않습니다.
- 누가 서버에 접근할 수 있나요?
- 침입 후 롤백하려면 어떻게 해야 합니까?
이것은 모두 당신이 어떤 종류의 일을 하느냐에 달려 있습니다. 나는 주로 웹 서버 세계에서 일하고 있으며 기본적으로 내 태도는 나로부터 프로덕션 서버에 액세스하는 사람은 누구나 기술, 지식 및 성숙도를 입증해야 한다는 것입니다. 그게 다야. 며칠이 걸릴 때도 있습니다. 때로는 몇 달이 걸리기도 합니다. 그러나 기본적으로 프로덕션 서버에 대한 최선의 보안 라인은 서버를 강화하기 위해 수행하는 다양한 다른 작업 외에도 액세스를 제어하는 것입니다.