Debian 12, 11 또는 10에서 Let's Encrypt를 사용하여 Apache를 보호하는 방법

웹사이트와 데이터를 보호하려면 Let's Encrypt 인증서로 Apache 웹 서버를 보호하는 것이 중요합니다. 이 가이드는 Debian 12 Bookworm, Debian 11 Bullseye 및 Debian 10 Buster에 대한 이 프로세스를 안내합니다. 여기에서는 서버 관리와 관련된 복잡성을 단순화하면서 강력한 보안 조치를 구현하는 데 중점을 둡니다.

Debian에서 Apache와 함께 Let's Encrypt를 사용하는 주요 이점:

  • 비용 효율적: Let's Encrypt는 무료 SSL 인증서를 제공하여 모든 사람이 높은 수준의 보안에 액세스할 수 있도록 합니다.
  • 자동 갱신: Let's Encrypt의 자동화 기능은 SSL 인증서 획득 및 갱신을 단순화하여 보안 실패 위험을 줄입니다.
  • 강화된 보안: Let's Encrypt의 SSL 인증서는 전송 중인 데이터에 대한 강력한 암호화를 제공하여 Debian에서 Apache 서버의 전반적인 보안을 강화합니다.
  • 광범위한 호환성: 대부분의 최신 웹 브라우저는 Let's Encrypt 인증서를 인식하여 원활한 사용자 경험을 보장합니다.
  • 선제적인 보안 조치: 정기적인 업데이트와 엄격한 정책을 통해 Let's Encrypt는 다양한 사이버 위협에 대한 안정적인 방어선입니다.

이 가이드를 따르면 Let's Encrypt를 사용하여 Debian에서 Apache 서버를 보호하고 웹 서비스의 보안과 안정성을 높이는 방법을 배울 수 있습니다. 이 필수 보안 설정을 수행하는 방법에 대한 자세한 지침을 계속 지켜봐 주시기 바랍니다.

Apache용 Certbot 설치

이 섹션에서는 Debian 기반 Linux 시스템에 Apache용 Certbot을 설치하는 데 중점을 둘 것입니다. Certbot은 Let's Encrypt에서 SSL 인증서 획득 및 구성을 단순화하는 강력한 도구입니다. Apache와 함께 작동하여 서버에서 HTTPS를 활성화할 수 있습니다.

Apache용 Certbot 설치 전 Debian 패키지 저장소 업데이트

Certbot을 설치하기 전에 데비안 시스템의 패키지 저장소와 기존 패키지가 업데이트되었는지 확인하는 것이 중요합니다. 시스템을 최신 상태로 유지하면 최신 버전의 Certbot 및 종속성을 설치할 수 있습니다. 다음 명령을 실행하여 패키지 저장소를 업데이트하고 기존 패키지를 업그레이드합니다.

sudo apt update
sudo apt upgrade

Certbot 및 Apache 플러그인 설치

이제 데비안 시스템이 최신 상태이므로 다음 단계는 Apache 플러그인과 함께 Certbot을 설치하는 것입니다. Apache 플러그인은 Certbot이 Apache와 상호 작용하고, 인증서 획득 및 갱신을 자동화하고, 이를 사용하도록 Apache를 구성할 수 있도록 하는 데 필수적입니다. 다음 명령을 실행하여 Certbot과 Apache 플러그인을 모두 설치하십시오.

sudo apt install certbot python3-certbot-apache

Apache 설정 및 인증서 암호화

이 섹션에서는 Apache를 구성하고 Certbot을 사용하여 도메인에 대한 Let's Encrypt SSL 인증서를 생성하는 과정을 안내합니다. 또한 서버 구성의 보안을 향상시키는 다양한 옵션의 사용에 대해서도 다룰 것입니다.

Debian을 사용하는 Apache에서 Certbot 구성 및 SSL 인증서 생성

Certbot과 해당 Apache 플러그인을 설치한 후 다음 작업은 Certbot을 실행하여 도메인에 대한 SSL 인증서를 생성하는 것입니다. 이 명령에는 보안을 최적화하기 위한 여러 옵션이 포함되어 있습니다.

사용된 옵션은 다음과 같습니다.

  • --apache: 사용 중인 웹 서버가 Apache임을 지정합니다.
  • --agree-tos: Let's Encrypt의 서비스 약관에 동의함을 나타냅니다.
  • --redirect: HTTP에서 HTTPS로의 영구 301 리디렉션을 설정하여 모든 트래픽이 암호화되도록 합니다.
  • --hsts: 보안 연결을 적용하기 위해 Strict-Transport-Security 헤더를 추가합니다.
  • --staple-ocsp: OCSP 스테이플링을 활성화하여 사용자 개인 정보를 유지하면서 SSL 협상 성능을 향상시킵니다.
  • --email: 갱신 알림, 보안 경고 등 SSL 인증서와 관련된 알림을 받을 이메일 주소입니다.

바꾸다 you@example.com 실제 이메일과 yourdomain.com 귀하의 도메인 이름으로. 다음 명령을 실행합니다.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d yourdomain.com

성공적으로 실행되면 Certbot은 도메인에 대한 SSL 인증서를 생성하고 이를 사용하도록 Apache를 구성하며 지정된 보안 옵션을 적용합니다. 이제 귀하의 서버는 안전해지며, 귀하의 웹사이트는 HTTPS를 통해 액세스할 수 있습니다.

Apache를 사용한 대체 Certbot 구성 방법

보다 안내된 대화형 접근 방식을 선호하는 사람들을 위해 Certbot은 정보 및 구성 선택을 묻는 대체 방법을 제공합니다. 이 방법을 사용하는 방법은 다음과 같습니다.

다음 명령을 실행하십시오.

sudo certbot --apache

Certbot은 대화형 세션을 시작합니다. 다음은 발생할 수 있는 프롬프트에 대한 안내입니다.

  • 이메일 주소 입력(긴급 갱신 및 보안 공지에 사용): 이메일 주소를 입력하세요. Let's Encrypt는 이를 사용하여 인증서에 대해 통신합니다.
  • Let's Encrypt 서비스 약관에 동의하세요.: 서비스 약관에 동의하라는 메시지가 표시됩니다. 동의하려면 A를 입력하세요.
  • 전자 프론티어 재단(Electronic Frontier Foundation)의 작업에 대한 업데이트를 위해 이메일을 공유하세요.: EFF를 지원하려면 Y(예)를 입력합니다. 그렇지 않은 경우에는 N을 입력하십시오.
  • 어떤 이름에 대해 HTTPS를 활성화하시겠습니까?: Certbot은 인증서를 발급할 수 있는 도메인 이름을 표시합니다. 귀하의 도메인에 해당하는 번호를 입력하거나 모든 사람이 볼 수 있도록 비워두세요.
  • 적절한 조치를 선택하세요.: 다음 중 하나를 선택할 수 있습니다.
    • 1: 인증서 재설치를 시도합니다.
    • 2: 인증서 갱신 및 교체(7일당 최대 5회로 제한)
    • 귀하의 필요에 맞는 옵션을 선택하십시오.
  • HTTP 트래픽을 HTTPS로 리디렉션할지 여부를 선택하세요.: HTTP 트래픽을 HTTPS로 리디렉션할지 묻는 메시지가 표시됩니다. 이는 대부분의 웹사이트에 권장됩니다.
    • 1: 리디렉션 없음 – 웹 서버 구성을 더 이상 변경하지 않습니다.
    • 2: 리디렉션 – 모든 요청을 보안 HTTPS 액세스로 리디렉션합니다.
    • 보안을 강화하려면 옵션 2를 선택하세요.

모든 프롬프트를 통과하고 프로세스가 완료되면 Certbot은 언급된 것과 유사한 메시지를 출력하여 인증서 파일의 위치와 추가 정보를 나타냅니다.

Cron을 사용하여 SSL 인증서 갱신 자동화

이 섹션에서는 Linux 기반 시스템에 내장된 작업 스케줄러인 Cron을 사용하여 SSL 인증서에 대한 자동 갱신 프로세스를 설정합니다. 수명이 90일인 SSL 인증서를 암호화하자. 서비스 중단을 방지하려면 만료되기 전에 인증서를 갱신하는 것이 중요합니다. Certbot은 인증서 갱신 명령을 제공하며 Cron을 사용하여 이 작업을 자동화할 수 있습니다.

인증서 갱신의 모의 실행

갱신 프로세스를 자동화하기 전에 갱신 명령이 예상대로 작동하는지 확인하는 것이 중요합니다. 인증서를 변경하지 않고 갱신 프로세스를 시뮬레이션하는 연습 실행을 수행하여 이를 수행할 수 있습니다. 연습 실행을 시작하려면 다음 명령어를 실행하세요.

sudo certbot renew --dry-run

자동 인증서 갱신 예약

테스트 실행이 오류 없이 완료되면 자동 인증서 갱신을 예약할 수 있습니다. Cron을 사용하여 매일 특정 시간에 갱신 명령을 실행하겠습니다.

먼저 다음 명령을 사용하여 편집 모드에서 crontab 파일을 엽니다.

sudo crontab -e

파일 끝에 다음 줄을 추가하여 오전 2시 30분에 일일 갱신 확인을 예약합니다.

30 2 * * * /usr/bin/certbot renew --quiet

그만큼 --quiet 옵션을 사용하면 오류가 없는 한 출력을 생성하지 않고 갱신 프로세스가 백그라운드에서 자동으로 실행됩니다.

이 줄을 추가한 후 파일을 저장하고 닫습니다. 이제 SSL 인증서에 대한 자동 갱신 프로세스가 설정되었습니다. Cron은 갱신이 필요한 인증서가 있는지 매일 확인하고 필요에 따라 갱신합니다. 이렇게 하면 Apache 서버가 항상 유효한 SSL 인증서를 사용하여 안전한 사용자 연결을 유지하게 됩니다.

Apache SSL 구성 강화

이 섹션에서는 SSL 구성을 수정하여 Apache 서버의 성능을 최적화합니다. 여기에는 SSL 인증서 설정, HTTP/2 활성화, HSTS(HTTP Strict Transport Security) 구현, SSL 프로토콜 및 암호 구성이 포함됩니다. 이 구성에는 Apache 모듈이 필요합니다 mod_ssl, mod_socache_shmcb, mod_rewrite, 그리고 mod_headers.

Apache 구성 파일 편집

시작하려면 Apache 내에서 도메인의 구성 파일에 액세스해야 합니다. 다음 명령을 실행합니다.

sudo nano /etc/apache2/sites-available/your_domain.conf

그러면 Nano라는 텍스트 편집기에서 도메인의 구성 파일이 열립니다. 일단 들어가면 VirtualHost 블록 내에서 다음 조정을 수행하십시오.

HTTP를 HTTPS로 리디렉션

먼저 모든 HTTP 트래픽을 HTTPS로 리디렉션하는 규칙을 설정하여 서버에 대한 모든 연결이 안전하도록 보장합니다. 이 규칙은 다음에 대한 요청을 제외합니다. .well-known/acme-challenge/ 인증서 발급 프로세스 중 도메인 검증을 위해 Certbot이 사용하는 디렉터리입니다. 다음 구성을 추가하십시오. <VirtualHost *:80> 차단하다:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]

SSL 활성화 및 인증서 지정

다음으로, 내에서 <VirtualHost *:443> 차단하면 SSL을 활성화하고 SSL 인증서와 개인 키에 대한 경로를 지정합니다.

SSLEngine on
SSLCertificateFile      /path/to/signed_cert_and_intermediate_certs
SSLCertificateKeyFile   /path/to/private_key

바꾸다 /path/to/signed_cert_and_intermediate_certs SSL 인증서 파일의 경로와 /path/to/private_key 개인 키 파일의 경로를 사용하세요.

HTTP/2 활성화

성능을 향상시키기 위해 가능한 경우 HTTP/2를 활성화합니다.

Protocols h2 http/1.1

HSTS 구현

또한 보안 연결을 적용하기 위해 Strict-Transport-Security 헤더를 추가합니다.

Header always set Strict-Transport-Security "max-age=63072000"

SSL 프로토콜 및 암호 구성

다음으로, 높은 보안과 호환성을 보장하기 위해 어떤 SSL 프로토콜과 암호를 사용해야 하는지 지정하겠습니다.

SSLProtocol                        all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite                  ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305
SSLHonorCipherOrder    off
SSLSessionTickets            off

OCSP 스테이플링 활성화

마지막으로 방문자 개인 정보를 유지하면서 SSL 협상 성능을 향상시키는 기능인 OCSP 스테이플링을 활성화합니다.

SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

변경 사항 확인 및 적용

완료되면 파일을 저장하고 종료하십시오. 구문 오류가 없는지 확인하려면 Apache 구성을 검증하는 것이 중요합니다. 다음 명령을 실행하여 다음을 확인하세요.

sudo apachectl configtest

문제가 없으면 Apache를 다시 로드하여 변경 사항을 적용합니다.

sudo systemctl restart apache2

결론

이 기사 전체에서 우리는 Debian 10, 11, 12에서 Let's Encrypt SSL 인증서를 사용하여 Apache를 보호하는 방법을 살펴보았습니다. 서버와 클라이언트 간의 보안 통신을 보장하는 데 있어 SSL 인증서의 중요성을 강조했습니다. Certbot 설치부터 시작하여 Let's Encrypt에서 무료 SSL 인증서를 얻는 방법을 살펴보았습니다. 또한 SSL 인증서를 활용하도록 Apache를 구성하고, cron 작업을 통해 갱신 프로세스를 자동화하고, Apache 구성을 통해 보안을 강화하는 방법에 대해서도 논의했습니다.

마지막 권장 사항으로, 정기적으로 로그를 모니터링하고 시스템을 최신 상태로 유지하는 것이 필수적입니다. 이러한 관행을 통해 잠재적인 문제에 대한 정보를 얻고 최신 보안 취약점으로부터 서버를 강화할 수 있습니다.

Joshua James

코멘트를 남겨주세요