14단계 Apache 보안 모범 사례 체크리스트(PDF eBook 포함)
게시 됨: 2017-11-22Railwayfx / stock.adobe.com
Apache는 현재 45.8%의 시장 점유율로 세계 최고의 웹 서버 소프트웨어로 남아 있습니다. 결국 웹 서버가 Apache로 구동되는 약 8천만 개의 웹사이트가 됩니다. 꽤 인상적이죠?
Apache는 1995년부터 사용된 오픈 소스 웹 서버 소프트웨어로 그것만으로도 안정성과 수명이 매우 뛰어납니다. 그리고 Apache 서버에서 실행되는 유명 웹사이트가 있습니다. Apple, Adobe, Paypal은 웹사이트를 Apache에 맡기는 주요 브랜드 중 일부에 불과합니다.
물론, Apache가 해커로부터 100% 안전할 수는 없기 때문에 Apache가 100% 안전하지는 않습니다. 특히 잘 알려지고 신뢰할 수 있는 플랫폼(WordPress와 유사)인 경우에는 더욱 그렇습니다. 그러나 Apache 보안 PDF eBook, 모듈, 가이드, 튜토리얼, 프레임워크 또는 웹 서버 보안 체크리스트를 찾고 있다면 제대로 찾아오셨습니다.
Apache 보안을 강화하고 싶거나 Apache 보안 문제가 있거나 한두 가지 취약점을 패치하려는 경우 다음 체크리스트는 웹 사이트의 보안 계획에 추가할 수 있는 14가지 보안 모범 사례를 제공합니다.
최고의 Apache 보안 모범 사례 체크리스트
WordPress 웹사이트를 진정으로 강화하려는 경우 웹사이트에 연결되어 이를 지원하는 다른 소프트웨어와 마찬가지로 Apache를 보호하는 것이 필수적입니다. 그렇게 하지 않으면 사이트 속도에 영향을 미칠 수도 있습니다. 따라서 수행 방법은 다음과 같습니다.
1. 아파치 업데이트
WordPress와 설치한 플러그인 및 테마를 정기적으로 업데이트해야 하는 방법을 알고 계십니까? 웹 서버도 마찬가지입니다.
귀하의 사이트가 최신 버전의 Apache에서 실행되지 않는 것이 불안하다면 httpd -v 명령줄을 사용하여 확인할 수 있습니다. 출력된 버전이 Apache의 현재 버전과 일치하지 않는 경우 다음을 사용하여 업데이트할 수 있습니다.
# yum update httpd
# apt-get install [add Apache version here]c
2. 로그 켜기
관리형 WordPress 호스팅 제공업체와 협력하는 경우 해당 제공업체는 서버와 WordPress의 취약점 및 기타 경고 신호를 모니터링합니다. 즉, 서버 트래픽도 주시해야 합니다.
Apache를 사용하면 mod_log_config 모듈을 업데이트하여 이 활동 로그에 액세스할 수 있습니다. 기본적으로 사용자가 서버를 터치할 때마다 무엇을 하는지 알려줍니다.
3. SSL 인증서 받기
웹 서버는 웹 사이트에 대한 모든 브라우저/서버 요청을 처리하므로 SSL 인증서로 보안을 유지하는 것이 중요합니다. 좋은 소식은 이제 SSL 인증서를 무료로 얻을 수 있다는 것입니다. 이는 그 어느 때보다 중요하므로, 직접 설치할 수 있는 기술적 능력이 없다면 품질이 좋은 호스팅 제공업체가 대신 설치해 줄 수 있습니다.
4. 방화벽 추가
SSL 암호화의 추가 보호 외에도 웹 서버는 방화벽으로 강화되어야 합니다. Apache의 경우 이는 ModSecurity를 켜는 것을 의미합니다.
서버에 설치하려면 다음을 실행할 수 있습니다.
# yum install mod_security
# /etc/init.d/httpd restart
방화벽이 활성화되면 SQL 주입, 세션 하이재킹, 사이트 간 스크립팅과 같은 여러 가지 악의적인 활동이 서버에 도달하는 것을 방지할 수 있습니다.
5. mod_evasive 설치
Mod_evasive는 무차별 대입 및 DDoS 공격으로부터 Apache 서버를 보호하는 모듈이므로 이 모듈도 활성화되어 있는지 확인하십시오. 동시 로그인 시도와 실패한 로그인 시도를 블랙리스트에 추가하고 악성 IP를 모니터링합니다.
6. HTTP 제한 설정
DDoS(분산 서비스 거부) 공격은 어떤 종류의 조치를 감시해야 하는지 안다면 매우 간단하게 차단할 수 있습니다. DDoS는 대규모 요청으로 서버에 반복적으로 공격을 가하여 발생하는 경향이 있으므로 이러한 일이 발생하지 않도록 제한을 설정하는 것이 목표입니다.
다음은 설정하려는 몇 가지 제한 사항입니다.
- KeepAlive=켜짐
- KeepAlive시간 초과
- 한도 요청 본문
- 한도 요청 필드
- 한도 요청 필드 크기
- 한도요청라인
- LimitXMLRequestBody
- 최대 클라이언트
- MaxKeepAlive요청
- MaxRequestWorkers
- 요청읽기시간 초과
- 시간 초과
7. 사용하지 않는 모듈 삭제
Apache 서버에 사용되지 않거나 유지 관리되지 않거나 만료된 모듈을 남겨두면 사이트가 필요하지도 않은 진입점을 통해 해커에게 공개되는 것입니다.
가장 먼저 해야 할 일은 어떤 모듈이 실제로 활성화되어 있는지 확인하는 것입니다. LoadModule 명령을 사용하여 이 작업을 수행할 수 있습니다. 목록을 살펴보고 필요하지 않은 모듈을 확인한 후에는 비활성화하려는 각 모듈 앞에 "#" 기호를 추가한 다음 다시 시작하세요.
8. 기본 사용자 및 그룹 변경
일반적으로 모든 소프트웨어에 기본 설정과 사용자를 남겨 두는 것은 나쁜 보안 관행입니다. 그 이유는 간단합니다. Apache 기본 사용자 또는 그룹 이름을 사용하는 경우 해커도 해당 기본 이름이 무엇인지 알고 있을 것입니다.
기본값을 그대로 두는 대신 Apache 프로세스를 실행할 수 있는 권한이 없는 새 계정을 만들어야 합니다. # groupadd 및 # useradd 명령을 사용하면 새 엔터티를 설정할 수 있습니다. 생성한 새 사용자 및 그룹 이름으로 httpd.conf를 업데이트하는 것을 잊지 마십시오.
9. 디렉토리 접근 차단
다음은 변경해야 하는 기본 설정의 또 다른 예입니다. 이 경우, 누구나 원하는 곳 어디든 탐색할 수 있도록 허용하는 것은 디렉터리 파일에 대한 액세스 권한입니다.
전체 블록을 제자리에 배치하려면 다음 명령을 사용하십시오.
<Directory "/">
Require all denied
</Directory>
특정 사용자에 대한 액세스를 활성화하려면 다음을 수행하면 됩니다.
<Directory "/usr/users/*/public_html">
Require all granted
</Directory>
디렉토리 내의 특정 폴더에 대한 액세스를 활성화하려면 다음을 수행하십시오.
<Directory "/usr/local/httpd">
Require all granted
</Directory>
사용자 액세스 권한을 추가로 조정하기 위해 Apache 모듈 저장소를 숙독할 수도 있습니다.
10. 디렉토리를 게시하지 마십시오
서버에 인덱스 파일이 없으면 사용자가 루트 디렉터리에 저장한 모든 콘텐츠를 볼 수 있다는 사실을 알고 계셨습니까? 이는 확실히 좋지 않으므로 다음을 사용하여 이 기본 설정을 비활성화해야 합니다.
<Directory /var/www/html>
Options -Indexes
</Directory>
11. 서버 세부 정보 숨기기
Apache는 오픈 소스 소프트웨어이기 때문에 이러한 설정이 서버 측에서 비활성화되지 않은 경우 사용된 버전에 대한 세부 정보를 쉽게 확인할 수 있습니다. 해커는 민감한 정보를 사용하여 서버에 침입하는 방법을 알아낼 수 있으므로 이 정보를 차단하는 것이 좋습니다.
비활성화하려는 두 가지 사항은 다음과 같습니다.
- ServerSignature - Apache 버전입니다.
- ServerTokens - 기타 민감한 서버 세부정보 중에서 OS 버전을 포함합니다.
이 정보는 다른 사용자가 귀하의 웹사이트에서 오류 페이지를 보는 것만으로 알 수 있으므로 이 정보가 표시되지 않도록 차단하는 것이 매우 중요합니다. 이렇게 하려면 httpd.conf를 다음과 같이 업데이트하세요.
ServerSignature Off
ServerTokens Prod
12. ETag 숨기기
불행하게도 Apache의 ETag 헤더에는 서버에 대한 민감한 세부 정보가 많이 포함되어 있습니다. 분명히, 그러한 종류의 정보를 외부 세계와 공유하는 것은 무엇이든 숨겨야 합니다. 또한 전자상거래 웹사이트를 운영하는 경우 PCI 규격을 준수하려면 이를 숨겨야 합니다.
이렇게 하려면 httpd.conf에 다음 지시문을 추가하세요.
FileETag None
13. .htaccess 재정의 비활성화
.htaccess는 모든 WordPress 웹사이트에 중요한 파일입니다. 그렇기 때문에 이를 잠그고 다른 사람이 구성 설정을 무시할 수 없도록 해야 합니다.
이를 비활성화하려면 루트의 httpd.conf에 다음을 추가하십시오.
<Directory />
Options -Indexes
AllowOverride None
</Directory>
14. SSI 및 CGI 비활성화
서버 측 포함(SSI) 지원 파일을 선택하지 않은 채로 두면 사이트에 여러 가지 보안 문제가 발생할 수 있습니다. CGI 스크립트도 마찬가지입니다. 해커가 서버에 과부하를 주거나 악성 스크립트를 코드에 삽입하는 것을 방지하려면 해당 기능을 끄거나 Options 지시어를 통해 수행하는 작업을 제한해야 합니다.
사용할 수 있는 몇 가지 옵션 값은 다음과 같습니다.
- 옵션 모두
- 옵션에는NOEXEC가 포함됩니다.
- 옵션 - 포함
- 옵션 -ExecCGI
- 옵션 -ExecCGI 포함
- 옵션 멀티뷰
Apache 서버 관리하기
웹사이트 보안을 강화하기 위해 Apache 서버에 특별한 주의를 기울이십시오. 잘못된 서버 구성 및 기본 설정 유지와 같은 문제는 업데이트되지 않은 핵심 또는 안전하지 않은 PHP 코딩 방식과 마찬가지로 사이트를 위험에 빠뜨릴 수 있습니다.
피드백을 제공하고 싶거나 대화에 참여하고 싶으신가요?Twitter에 의견을 추가하세요.