자동 갱신 : Systemd를 사용하여 SSL 인증서를 암호화하고 성공하면 Nginx / Apache를 다시 시작하기

약 100 또는 200 개의 SSL이 있고 다른 날짜에 생성하면 어떻게 될까요?

예, 큰 문제가 있으며 Let’s Encrypt조차도 SSL 인증서가 약 30일 또는 15일 후에 만료될 때 알려줍니다.

우리는 리눅스 크론잡을 사용할 수 있고, 나는 그것을 사용한 적이 있다. 그러나 그것은 좋은 생각이 아닙니다.

더 좋은 방법은 systemd 서비스와 systemd timer 를 사용하는 것입니다.

systemd.service 및 systemd.timer를 만들어 Let’s Encrypt SSL 인증서를 갱신합니다.

우리는 새로운 Let’s Encrypt SSL 인증서를 얻을 때 Certbot을 독립형으로 사용합니다.

갱신 구성은 /etc/letsencrypt/renewal에 있습니다.

이제 /etc/letsencrypt/renewal 파일을 확인합니다(예: /etc/letsencrypt/renewal/serverdiary.com.conf).

# renew_before_expiry = 30 days
version = 1.0.0
archive_dir = /etc/letsencrypt/archive/serverdiary.com
cert = /etc/letsencrypt/live/serverdiary.com/cert.pem
privkey = /etc/letsencrypt/live/serverdiary.com/privkey.pem
chain = /etc/letsencrypt/live/serverdiary.com/chain.pem
fullchain = /etc/letsencrypt/live/serverdiary.com/fullchain.pem

# Options used in the renewal proces
[renewalparams]
authenticator = webroot
account = hidden
server = https://acme-v02.api.letsencrypt.org/directory
webroot_path = /home/serverdiary/public_html
post_hook = systemctl restart nginx
[[webroot_map]]

webroot_path 동일하기 때문에 webroot_map에 대한 구성이 없습니다.

webroot_path가 다른 단일 SSL에 대한 webroot_map 예

[[webroot_map]]
serverdiary.com = /home/serverdiary/public_html
www.serverdiary.com = /home/serverdiary/public_html
img.serverdiary.com = /home/serverdiary/public_html/img

/etc/systemd/system/letsencrypt.service 파일을 만듭니다.

# vi /etc/systemd/system/letsencrypt.service

그리고 아래에 코드를 붙여 넣으십시오.

[Unit]
Description=Certbot Renewal

[Service]
ExecStart=/usr/local/bin/certbot renew --post-hook "systemctl reload nginx"

/etc/systemd/system/letsencrypt.time 파일을 만듭니다.

# vi /etc/systemd/system/letsencrypt.timer

아래에 코드를 붙여 넣으십시오.

[Unit]
Description=Timer for Certbot Renewal

[Timer]
OnBootSec=300
OnUnitActiveSec=6h

[Install]
WantedBy=multi-user.target

사용 권한을 755로 변경합니다.

# chmod 755 /etc/systemd/system/letsencrypt.service
# chmod 755 /etc/systemd/system/letsencrypt.timer

sysmctl 데몬을 다시 로드하고, 시스템 시작 시 활성화하고, 다음 명령으로 서비스를 시작합니다.

# systemctl daemon-reload
# systemctl enable /etc/systemd/system/letsencrypt.service
# systemctl enable /etc/systemd/system/letsencrypt.timer
# systemctl start /etc/systemd/system/letsencrypt.service
# systemctl start /etc/systemd/system/letsencrypt.timer

Letsencrypt.timer는 6시간마다 Letsencrypt.service를 호출하고 SSL이 하나 성공적으로 갱신되면 Nginx 서비스가 다시 시작됩니다.

이제 Let’s Encrypt SSL 만료 시간을 잊을 수 있습니다. 그러나 때로는 웹사이트의 SSL이 갱신되었는지 확인하는 것을 잊지 마십시오.

CentOS 9 Stream에서 REMI 저장소를 설치하고 활성화하는 방법

Remi 저장소는 Red Hat, CentOS, Fedora와 같은 Enterprise Linux에서 PHP의 최신 업데이트가 있는 타사 저장소 중 하나입니다.

Remi의 RPM 리포지토리 사이트에 대한 자세한 내용은 https://rpms.remirepo.net 에서 확인할 수 있습니다.

Centos에 Remi 저장소를 설치하려면 먼저 CentOS 9 Stream / RHEL 9에서 EPEL 저장소를 활성화해야합니다

CodeReady Linux Builder 리포지토리를 활성화합니다. 우리는 이미 그것에 액세스 할 수 있습니다. 활성화하기만 하면 됩니다.

CentOS 9 스트림에서:

CentOS 9 스트림에서:

sudo dnf config-manager --set-enabled crb

RHEL 9의 경우:

sudo subscription-manager repos --enable codeready-builder-for-rhel-9-$(arch)-rpms

그런 다음 CentOS 9 Stream에서 Epel을 활성화하십시오.

sudo dnf install epel-release epel-next-release

RHEL 9의 경우:

sudo dnf install \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

Remi Repository 설치 및 활성화

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm

그런 다음 DNF를 새로 고치고 GPG 키를 가져와야 합니다

sudo dnf update --refresh

CentOS 9 Stream에 PHP 8.2 설치

공식 CentOS 9 Stream 저장소, PHP 8이 포함되어 있으므로 비활성화해야 합니다

sudo dnf module reset php

시스템에서 사용할 수 있는 모든 모듈을 나열하려면 다음을 수행합니다.

sudo dnf module list php

예제 출력

# sudo dnf module list php
Last metadata expiration check: 0:09:25 ago on Thu 08 Jun 2023 01:21:06 PM CDT.
CentOS Stream 9 - AppStream
Name                                    Stream                                          Profiles                                                      Summary
php                                     8.1                                             common [d], devel, minimal                                    PHP scripting language

Remi's Modular repository for Enterprise Linux 9 - x86_64
Name                                    Stream                                          Profiles                                                      Summary
php                                     remi-7.4                                        common [d], devel, minimal                                    PHP scripting language
php                                     remi-8.0                                        common [d], devel, minimal                                    PHP scripting language
php                                     remi-8.1                                        common [d], devel, minimal                                    PHP scripting language
php                                     remi-8.2                                    common [d], devel, minimal                                    PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

PHP 8.3 Remi 모듈 활성화 및 CentOS 9 Stream에 PHP 8.3 설치

sudo dnf module enable php:remi-8.3

그런 다음 다음 명령을 사용하여 PHP를 설치할 수 있습니다.

sudo dnf install php php-devel php-fpm php-cgi php-gd php-opcache php-apcu php-mbstring php-gd php-imagick php-xml php-json php-mysqlnd php-pdo

rkhunter 설치 & 사용법

# dnf -y install rkhunter
서브스크립션 관리 저장소를 최신화하기.

마지막 메타자료 만료확인(2:52:06 이전): 2024년 08월 30일 (금) 오전 05시 49분 17초.
종속성이 해결되었습니다.
=====================================================================================================================
 꾸러미                    구조                    버전                             저장소                      크기
=====================================================================================================================
설치 중:
 rkhunter                  noarch                  1.4.6-17.el9                     epel                       184 k
종속 꾸러미 설치 중:
 s-nail                    x86_64                  14.9.22-8.el9                    appstream                  622 k

연결 요약
=====================================================================================================================
설치  2 꾸러미

전체 내려받기 크기: 805 k
설치된 크기 : 2.0 M
꾸러미 내려받기 중:
(1/2): s-nail-14.9.22-8.el9.x86_64.rpm                                               2.4 MB/s | 622 kB     00:00    
(2/2): rkhunter-1.4.6-17.el9.noarch.rpm                                               86 kB/s | 184 kB     00:02    
---------------------------------------------------------------------------------------------------------------------
합계                                                                                 264 kB/s | 805 kB     00:03     
연결 확인 실행 중
연결 확인에 성공했습니다.
연결 시험 실행 중
연결 시험에 성공했습니다.
연결 실행 중
  준비 중     :                                                                                                  1/1 
  구현 중     : s-nail-14.9.22-8.el9.x86_64                                                                      1/2 
  설치 중     : s-nail-14.9.22-8.el9.x86_64                                                                      1/2 
  구현 중     : s-nail-14.9.22-8.el9.x86_64                                                                      1/2 
  설치 중     : rkhunter-1.4.6-17.el9.noarch                                                                     2/2 
  구현 중     : rkhunter-1.4.6-17.el9.noarch                                                                     2/2 
  확인 중     : s-nail-14.9.22-8.el9.x86_64                                                                      1/2 
  확인 중     : rkhunter-1.4.6-17.el9.noarch                                                                     2/2 
설치된 제품이 최신화되었습니다.

설치되었습니다:
  rkhunter-1.4.6-17.el9.noarch                              s-nail-14.9.22-8.el9.x86_64                             

완료되었습니다!


# rkhunter 업데이트
[root@localhost ~]# rkhunter --update


# 시스템 파일 속성 업데이트
[root@localhost ~]# rkhunter --propupd
[ Rootkit Hunter version 1.4.6 ]


# 루트킷 점검 실행
# [--sk] 엔터(Enter)키 입력 패스 옵션
# [--rwo] 경고(warnings)만 출력하는 옵션
[root@localhost ~]# rkhunter --check --sk

...
System checks summary
=====================

File properties checks...
    Files checked: 135
    Suspect files: 0

Rootkit checks...
    Rootkits checked : 495
    Possible rootkits: 0

Applications checks...
    All checks skipped

The system checks took: 1 minute and 59 seconds

All results have been written to the log file: /var/log/rkhunter/rkhunter.log

One or more warnings have been found while checking the system.
Please check the log file (/var/log/rkhunter/rkhunter.log)


# 점검 로그 보기
[root@localhost ~]# tail /var/log/rkhunter/rkhunter.log

...
[08:44:17] Rootkit checks...
[08:44:17] Rootkits checked : 495
[08:44:17] Possible rootkits: 0
[08:44:18]
[08:44:18] Applications checks...
[08:44:18] All checks skipped
[08:44:18]
[08:44:18] The system checks took: 1 minute and 59 seconds
[08:44:18]
[08:44:18] Info: End date is 2024. 08. 30. (금) 08:44:18 KST