8.5. HTTP 서버 보안
8.5.1. httpd.conf의 보안 개선 사항 링크 복사링크가 클립보드에 복사되었습니다!
/etc/httpd/conf/httpd.conf
파일에서 보안 옵션을 구성하여 Apache HTTP 서버의 보안을 강화할 수 있습니다.
프로덕션에 배치하기 전에 시스템에서 실행 중인 모든 스크립트가 올바르게 작동하는지 항상 확인합니다.
root
사용자만 스크립트 또는 CGI(Common Gateway Interface)를 포함하는 모든 디렉터리에 대한 쓰기 권한이 있는지 확인합니다. 쓰기 권한이 있는 디렉터리 소유권을 root
로 변경하려면 다음 명령을 입력합니다.
chown root <directory_name> chmod 755 <directory_name>
# chown root <directory_name>
# chmod 755 <directory_name>
/etc/httpd/conf/httpd.conf
파일에서 다음 옵션을 구성할 수 있습니다.
FollowSymLinks
- 이 지시문은 기본적으로 활성화되어 있으며 디렉터리의 심볼릭 링크를 따릅니다.
Indexes
- 이 지시문은 기본적으로 활성화되어 있습니다. 사용자가 서버에서 파일을 검색하지 못하도록 이 지시문을 비활성화합니다.
UserDir
-
이 지시문은 시스템에 사용자 계정이 있는지 확인할 수 있으므로 기본적으로 비활성화되어 있습니다.
/root/
이외의 모든 사용자 디렉터리를 검색하려면UserDir enabled
및UserDir disabled
root 지시문을 사용합니다. 비활성화된 계정 목록에 사용자를 추가하려면UserDir disabled
줄에 공백으로 구분된 사용자 목록을 추가합니다. ServerTokens
이 지시문은 클라이언트에 다시 전송되는 서버 응답 헤더 필드를 제어합니다. 다음 매개변수를 사용하여 정보를 사용자 지정할 수 있습니다.
ServerTokens Full
웹 서버 버전 번호, 서버 운영 체제 세부 정보, 설치된 Apache 모듈과 같은 사용 가능한 모든 정보를 제공합니다. 예를 들면 다음과 같습니다.
Apache/2.4.37 (Red Hat Enterprise Linux) MyMod/1.2
Apache/2.4.37 (Red Hat Enterprise Linux) MyMod/1.2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ServerTokens Full-Release
릴리스 버전과 함께 사용 가능한 모든 정보를 제공합니다. 예를 들면 다음과 같습니다.
Apache/2.4.37 (Red Hat Enterprise Linux) (Release 41.module+el8.5.0+11772+c8e0c271)
Apache/2.4.37 (Red Hat Enterprise Linux) (Release 41.module+el8.5.0+11772+c8e0c271)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ServerTokens Prod / ServerTokens ProductOnly
웹 서버 이름을 제공합니다. 예를 들면 다음과 같습니다.
Apache
Apache
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ServerTokens Major
웹 서버 주요 릴리스 버전을 제공합니다. 예를 들면 다음과 같습니다.
Apache/2
Apache/2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ServerTokens Minor
웹 서버 마이너 릴리스 버전을 제공합니다. 예를 들면 다음과 같습니다.
Apache/2.4
Apache/2.4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ServerTokens Min
/ServerTokens Minimal
웹 서버 최소 릴리스 버전을 제공합니다. 예를 들면 다음과 같습니다.
Apache/2.4.37
Apache/2.4.37
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ServerTokens OS
웹 서버 릴리스 버전 및 운영 체제를 제공합니다. 예를 들면 다음과 같습니다.
Apache/2.4.37 (Red Hat Enterprise Linux)
Apache/2.4.37 (Red Hat Enterprise Linux)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ServerTokens Prod
옵션을 사용하여 공격자가 시스템에 대한 중요한 정보를 얻을 위험을 줄입니다.
IncludesNoExec
지시문을 제거하지 마십시오. 기본적으로 Server Side Includes (SSI) 모듈은 명령을 실행할 수 없습니다. 이렇게 변경하면 공격자가 시스템에 명령을 입력할 수 있습니다.
httpd 모듈 제거
httpd
모듈을 제거하여 HTTP 서버의 기능을 제한할 수 있습니다. 이 작업을 수행하려면 /etc/httpd/conf.modules.d/
또는 /etc/httpd/conf.d/
디렉터리에서 구성 파일을 편집합니다. 예를 들어 프록시 모듈을 제거하려면 다음을 수행합니다.
echo '# All proxy modules disabled' > /etc/httpd/conf.modules.d/00-proxy.conf
echo '# All proxy modules disabled' > /etc/httpd/conf.modules.d/00-proxy.conf
8.5.2. Nginx 서버 구성 보안 링크 복사링크가 클립보드에 복사되었습니다!
Nginx는 고성능 HTTP 및 프록시 서버입니다. 다음 구성 옵션을 사용하여 Nginx 구성을 강화할 수 있습니다.
프로세스
버전 문자열을 비활성화하려면
server_tokens
구성 옵션을 수정합니다.server_tokens off;
server_tokens off;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 옵션은 서버 버전 번호와 같은 추가 세부 정보 표시를 중지합니다. 이 구성은 Nginx에서 제공하는 모든 요청에 서버 이름만 표시합니다. 예를 들면 다음과 같습니다.
curl -sI http://localhost | grep Server
$ curl -sI http://localhost | grep Server Server: nginx
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 특정
/etc/nginx/
conf 파일에서 알려진 특정 웹 애플리케이션 취약점을 완화하는 보안 헤더를 추가합니다.예를 들어
X-Frame-Options
헤더 옵션은 도메인 외부의 모든 페이지를 거부하여 Nginx에서 제공하는 모든 콘텐츠를 프레임하여 클릭재킹 공격을 완화합니다.add_header X-Frame-Options "SAMEORIGIN";
add_header X-Frame-Options "SAMEORIGIN";
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예를 들어
x-content-type
헤더는 특정 이전 브라우저의 MIME 유형 스니핑을 방지합니다.add_header X-Content-Type-Options nosniff;
add_header X-Content-Type-Options nosniff;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예를 들어
X-XSS-Protection
헤더는 XSS(Cross-Site Scripting) 필터링을 활성화하여 브라우저가 Nginx의 응답에 포함된 잠재적으로 악의적인 콘텐츠를 렌더링하지 못하도록 합니다.add_header X-XSS-Protection "1; mode=block";
add_header X-XSS-Protection "1; mode=block";
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
사용자에게 노출되는 서비스를 제한하고 하는 작업을 제한하고 방문자로부터 수락할 수 있습니다. 예를 들면 다음과 같습니다.
limit_except GET { allow 192.168.1.0/32; deny all; }
limit_except GET { allow 192.168.1.0/32; deny all; }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 스니펫은
GET
및HEAD
를 제외한 모든 메서드에 대한 액세스를 제한합니다.HTTP 메서드를 비활성화할 수 있습니다. 예를 들면 다음과 같습니다.
Allow GET, PUT, POST; return "405 Method Not Allowed" for all others.
# Allow GET, PUT, POST; return "405 Method Not Allowed" for all others. if ( $request_method !~ ^(GET|PUT|POST)$ ) { return 405; }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Nginx 웹 서버에서 제공하는 데이터를 보호하도록 SSL을 구성하고 HTTPS를 통해서만 제공할 수 있습니다. 또한 Mozilla SSL 구성 생성기를 사용하여 Nginx 서버에서 SSL을 활성화하는 보안 구성 프로필을 생성할 수 있습니다. 생성된 구성을 사용하면 알려진 취약한 프로토콜(예: SSLv2 및 SSLv3), 암호 및 해시 알고리즘(예: 3DES 및 MD5)이 비활성화됩니다. SSL 서버 테스트를 사용하여 구성이 최신 보안 요구 사항을 충족하는지 확인할 수도 있습니다.