이 시리즈의 파트1에서는 기본 RHEL8 DISA STIG를 적용하여 웹 서버를 구축하는 방법을 다루었고, 파트2에서는 OpenSCAP 도구로 STIG 준수를 테스트하는 방법을 배웠습니다. 이제 우리는 실제로 시스템에서 무언가를 수행하고, 간단한 웹 애플리케이션을 만들고 DISA 웹 서버 STIG를 적용해보겠습니다: https://www.stigviewer.com/stig/web_server/
먼저 여기에서 어떤 내용을 다루는지 비교해보겠습니다. RHEL 8 DISA STIG는 매우 특정한 플랫폼을 대상으로 하기 때문에 해당 컨트롤은 해당 컨텍스트에서 이해하고 테스트하고 적용하기에 꽤 쉽습니다. 애플리케이션 STIG는 여러 플랫폼에서 이식 가능해야 하므로 여기에 포함된 내용은 다양한 Linux 배포판(RHEL, Ubuntu, SuSE 등)**에서 작동하기 위해 범용적입니다. . 이는 OpenSCAP과 같은 도구를 사용하여 구성을 감사하고 복구할 수 없다는 것을 의미합니다. 우리는 이를 수동으로 수행해야 합니다. 해당 STIG는 다음과 같습니다.
Apache 2.4 V2R5 - 서버; 웹 서버 자체에 적용됩니다
Apache 2.4 V2R5 - 사이트; 웹 응용 프로그램/웹 사이트에 적용됩니다
이 가이드에서는 정적 콘텐츠만 제공하는 간단한 웹 서버를 생성합니다. 우리는 이곳에서 수행하는 변경 사항을 기반 이미지로 사용하고, 나중에 더 복잡한 웹 서버를 구축할 때 이 기반 이미지를 사용할 수 있습니다.
여기까지 왔다면 STIG가 우리에게 무엇을 원하는지 더 알고 싶을 것입니다. 이 컨트롤의 중요성을 이해하고 어플리케이션에 어떻게 적용되는지 파악하는 것이 도움이 됩니다. 때로는 컨트롤이 기술적인 요소(X 설정을 Y로 변경) 일 수 있고, 때로는 운영적인 요소(사용 방법) 일 수도 있습니다. 일반적으로, 기술적인 컨트롤은 코드로 변경할 수 있는 것이고, 운영적인 컨트롤은 아마도 그렇지 않을 것입니다.
이 문서에서는 이러한 변경 사항에 대한 "이유"를 다루지 않고 기술적 제어인 경우 발생해야 하는 사항만 다루겠습니다. 운영적인 컨트롤인 경우와 같이 변경할 수 있는 것이 없는 경우 Fix: 필드는 없음일 것입니다. 이 경우에는 Rocky Linux 8의 기본값으로 이미 설정되어 있기 때문에 아무 것도 변경할 필요가 없습니다.
sed -i “s/^#LoadModule usertrack_module/LoadModule usertrack_module/g” /etc/httpd/conf.modules.d/00-optional.conf
(V-214266) Apache 웹 서버는 비보안 또는 불필요한 포트, 프로토콜, 모듈 및/또는 서비스의 사용을 금지하거나 제한해야 합니다.
심각도: Cat II Medium 유형: 운영 수정: 없음, 웹 사이트에서 IANA의 잘 알려진 포트(HTTP 및 HTTPS) 의 사용을 강제화해야 합니다.
(V-214241) Apache 웹 서버는 프록시 서버로 사용해서는 안 됩니다.
심각도: Cat II Medium 유형: 기술 수정:
sed -i "s/proxy_module/#proxy_module/g" /etc/httpd/conf.modules.d/00-proxy.conf
sed -i "s/proxy_ajp_module/#proxy_ajp_module/g" /etc/httpd/conf.modules.d/00-proxy.conf
sed -i "s/proxy_balancer_module/#proxy_balancer_module/g" /etc/httpd/conf.modules.d/00-proxy.conf
sed -i "s/proxy_ftp_module/#proxy_ftp_module/g" /etc/httpd/conf.modules.d/00-proxy.conf
sed -i "s/proxy_http_module/#proxy_http_module/g" /etc/httpd/conf.modules.d/00-proxy.conf
sed -i "s/proxy_connect_module/#proxy_connect_module/g" /etc/httpd/conf.modules.d/00-proxy.conf
(V-214265) Apache 웹 서버는 최소한 1초의 정밀도로 기록되는 세계 협정시(UTC)** 또는 그리니치 평균시(GMT) 에 매핑할 수 있는 로그 기록을 생성해야 합니다.
심각도: Cat II Medium 유형: 기술 수정: 없음, Rocky Linux 8에서 기본적으로 해결됬습니다.
(V-214256) 클라이언트에 표시되는 경고 및 오류 메시지는 Apache 웹 서버, 패치, 로드된 모듈 및 디렉터리 경로의 식별을 최소화하기 위해 수정되어야 합니다.
심각도: Cat II Medium 유형: 운영 수정: 4xx 또는 5xx HTTP 상태 코드에 대해 사용자 정의 오류 페이지를 활성화하도록 "ErrorDocument" 지시문을 사용하세요.
(V-214237) Apache 웹 서버의 로그 데이터와 레코드는 다른 시스템이나 미디어로 백업되어야 합니다.
심각도: Cat II Medium 유형: 운영 수정: 없음, 웹 서버 백업 절차 문서화하세요.
(V-214236) Apache 웹 서버의 로그 정보는 무단 수정 또는 삭제로부터 보호되어야 합니다.
심각도: Cat II Medium 유형: 운영 수정: 없음, 웹 서버 백업 절차 문서화하세요.
(V-214261) 호스팅 시스템의 일반 사용자 계정은 Apache 웹 서버와 관련된 보안 관련 정보와 기능에 대해서는 구별된 관리 계정을 통해서만 액세스해야 합니다. 심각도: Cat II Medium 유형: 운영 수정: 없음, 웹 관리 도구에 대한 액세스를 시스템 관리자, 웹 관리자 또는 웹 관리자 대리인에게만 제한하세요.
(V-214235) 권한이 있는 사용자만 Apache 웹 서버 로그 파일에 액세스할 수 있어야 합니다.
심각도: Cat II Medium 유형: 운영 수정: 없음, 로그 파일에 캡처되는 데이터의 무결성을 보호하기 위해 감사인 그룹, 관리자 및 웹 서버 소프트웨어를 실행할 사용자에게만 로그 파일을 읽을 수 있는 권한을 부여하세요.
(V-214234) Apache 웹 서버는 처리 실패가 발생한 경우 정보 시스템 보안 담당자(ISSO) 및 시스템 관리자(SA) 에게 경고할 수 있는 설정이 구성된 로그 기록을 생성해야 합니다.
심각도: Cat II Medium 유형: 운영 수정: 없음, 정의된 연결 일정에 따라 Apache에서 감사 데이터를 받지 못할 때 경고가 설정되도록 SIEM 관리자와 협력하세요.
(V-214233) 로드 밸런서 또는 프록시 서버 뒤에 있는 Apache 웹 서버는 각 이벤트마다 로드 밸런서 또는 프록시 IP 정보가 아닌 클라이언트 IP 정보를 포함하는 로그 기록을 생성해야 합니다.
심각도: Cat II Medium 유형: 운영 수정: 없음, 들어오는 웹 트래픽이 전달되는 프록시 서버에 액세스하고 웹 트래픽이 Apache 웹 서버로 투명하게 전달되도록 설정하세요.
프록시/로드 밸런싱 설정에 따른 로깅 옵션에 대한 추가 정보는 https://httpd.apache.org/docs/2.4/mod/mod_remoteip.html을 참조하십시오.
(V-214231) Apache 웹 서버에 시스템 로깅이 활성화되어 있어야 합니다.
심각도: Cat II Medium 유형: 기술 수정: 없음, Rocky Linux 8에서 기본적으로 해결됬습니다.
(V-214232) Apache 웹 서버는 시스템 시작 및 종료, 시스템 접근, 시스템 인증 이벤트에 대해 최소한의 로그 기록을 생성해야 합니다.
심각도: Cat II Medium 유형: 기술 수정: 없음, Rocky Linux 8에서 기본적으로 해결됬습니다.
V-214251 Apache 웹 서버와 클라이언트 간에 교환되는 세션 쿠키 등은 원본 Apache 웹 서버 및 호스팅된 응용 프로그램 외부에서 쿠키 액세스를 허용하지 않는 보안 설정을 가져야 합니다.
Scott Shinn은 Atomomicorp의 CTO이자 Rocky Linux Security 팀의 일원입니다. 그는 1995년부터 백악관, 국방부 및 정보 커뮤니티에서 연방 정보 시스템에 참여했습니다. 그 중 일부는 STIG를 생성하고 사용해야 하는 요구사항이었는데, 이에 대해 매우 유감스럽게 생각합니다.