DocumentRoot 폴더는 웹문서가 위치하는 디렉토리로 불필요한 파일이 있을시에 삭제 하는 것이 좋다. 따라서 DocumentRoot 디렉토리의 경로에 있는 파일들을 삭제해주자. (rm -rf)
또한 Apache 설치시 기본적으로 설치되는 CGI 스크립트를 제거한다. CGI 스크립트는 해킹에 이용될 수 있기때문이다.
/var/www/manual 또는 /var/www/cgi_bin은 삭제해주자.
리눅스 웹서버 정보 숨기기
1. ServerTokens
브라우저가 보낸 요청에 아파치 서버는 응답 패킷을 보내는데 이때 패킷의 Header에는 서버의 정보가 나타난다. 이는 서버 버전별 해킹을 시도할 수 있는 단서를 줄 수 있기 때문에 서버정보를 숨겨야한다.
서버정보는 httpd.conf파일에서 ServerToken 값을 변경해준다.
먼저 [curl -I 웹서버주소]로 응답 헤더의 매세지를 살펴보자. 현재 서버와 OS의 정보를 알려주어 보안에 취약한 상태이다. (현재 상태는 ServerToken이 기본값인 OS 상태이다.)
이를 해결하기 위해 httpd.conf에 있는 ServerTokens 값을 변경해주어야 한다.
ServerTokens 값에 따라 노출되는 정보를 선택할 수 있다.
ServerTokens 값
정보
Prod
웹서버의 이름만 알려준다. Apache
Major
웹서버의 이름과 Major 버전만 알려준다. Apache2
Minor
웹서버의 이름과 Minor 버전까지 알려준다. Apache2.2
Min
웹서버 이름과 Minimum버전까지 알려준다. Apache2.2.2
OS
웹서버 이름, 버전 운영체제까지 알려준다.(기본값)
Full
모든 정보를 알려준다.
httpd.conf 파일에서 ServerTokens 값을 가장 낮은 단계의 값인 Prod로 변경해주자.
이후 Apache 웹 서버를 restart해주고 헤더값을 다시 확인한다. 아래의 그림과 같이 서버 정보가 Apache만 나오는 것을 확인 할 수 있다.
2. ServerSignature
Apache 웹서버에 접속할 때 오류가 발생하면 404, 403 에러가 발생한다. 이때 아파치의 버전 정보와 포트가 나오게 되는데 해커가 악용할 수 있기 때문에 보안상으로 위험하다. 이러한 오류에 관여하는 설정은 httpd.conf 에 ServerSignature이다. 현재는 ServerSignature 값이 Off인 상태이다.
이러한 정보노출을 방지하기 위해 ServerSignature를 Off로 변경하여야한다.
이후 Apache 웹 서버를 restart해주고 헤더값을 다시 확인한다. 아래의 그림과 같이 서버 정보와 Port 정보가 나오지 않는 것을 확인할 수 있다..
디렉토리 리스팅
웹서버의 DocumentRoot 폴더에 가장 메인이 되는 index.html(설정에 따라 달라질 수 있다.)이 없는 경우 DocumentRoot 폴더에 있는 파일들을 탐색기 형태로 보여준다. 이는 소스코드, 스크립트 파일이
유출될 수 있으므로 점검해야 한다.
디렉토리 리스팅을 막기 위해 아래의 그림에 있는 Indexes를 제거 해야한다.
심볼릭 링크 차단
심볼릭 링크란 PC의 바로가기와 동일하다. 바로가기를 클릭하면 원본데이터를 불러와 사용할 수 있게 해주는 것 처럼 웹서버에서도 심볼릭 링크를 통해 파일 시스템에 있는 디렉토리에 접근할 수 있게 된다.
디렉토리 리스팅 처럼 디렉토리가 보이는 경우 심볼릭 링크를 root 디렉토리에 설정하면 누구나 파일시스템에 접근 가능하게 되는 것이다.
이를 차단하기 위해 httpd.conf에 FollowSymLinks 옵션을 삭제한다.
위의 그림에 나와있는 FollowSymLinks 옵션을 지우고 웹서버를 재시작하면 심볼릭 링크를 이용하여 파일시스템에 접근 할 수 없게 된다.
※ /etc/securetty : Telnet 접속 시 root 접근 제한 설정 파일 /etc/securetty파일 내 *pts/x 관련 설정이 존재하는 경우 PAM 모듈 설정과 관계없이 root 계정 접속을 허용하므로 반드시/etc/securetty파일에서 pts/x 관련 설정 제거 필요
또는
#echo > /etc/securetty
위에 제시한 내용으로 설정되어 있을 경우 root 원격 접속이 차단됨 / 내용 설정에 대해서는 아래의 보안설정방법을 참고함
결과
Last login: Fri Jan 7 14:27:23 2022 from 192.168.230.1
[root@rhel7 ~]# telnet 192.168.230.143
Trying 192.168.230.143...
Connected to 192.168.230.143.
Escape character is '^]'.
Red Hat Enterprise Linux Server release 6.10 (Santiago)
Kernel 2.6.32-754.el6.x86_64 on an x86_64
rhel6 login: root
Password:
Login incorrect
[SSH 서비스 사용시]
Step 1) vi 편집기를 이용하여/etc/ssh/sshd_config파일 열기 Step 2) 아래와 같이 주석 제거 또는, 신규 삽입
(수정 전) #PermitRootLogin Yes
(수정 후) PermitRootLogin No
루트 계정에 대한 액세스를 추가로 제한하기 위해 관리자는/etc/securetty파일을 편집하여 콘솔에서 루트 로그인을 비활성화할 수 있습니다. 기본적으로 Red Hat Enterprise Linux의/etc/securetty파일은 루트 사용자가 시스템에 물리적으로 연결된 콘솔에서만 로그인할 수 있도록 허용합니다. 루트 사용자가 로그인하지 못하도록 하려면 쉘 프롬프트에서 루트로 다음 명령을 입력하여 이 파일의 내용을 제거하십시오.
echo > /etc/securetty
KDM, GDM 및 XDM 로그인 관리자에서 securetty 지원을 활성화하려면 다음 행을 추가하십시오.
RHEL 8 이후 시스템에서 tty 장치 파일의 동적 특성으로 인해 securetty PAM 모듈은 기본적으로 비활성화되었으며 /etc/securetty 구성 파일은 더 이상 RHEL에 포함되지 않습니다. /etc/securetty는 가능한 많은 장치를 나열하므로 대부분의 경우 실질적인 효과는 기본적으로 허용되는 것이므로 이 변경은 약간의 영향만 미칩니다. 그러나 보다 제한적인 구성을 사용하는 경우 /etc/pam.d 디렉토리의 해당 파일에 pam_securetty.so 모듈을 활성화하는 행을 추가하고 새 /etc/securetty 파일을 생성해야 합니다.
RHEL 8.2 릴리스에서pam_faillock은 이제/etc/security/faillock.conf에 있는faillock.conf구성 파일에서 설정을 읽을 수 있습니다. 이 페이지의 아래 참고 사항을 참조하십시오.
메모: /etc/pam.d/xxxx-auth의pam_faillock.so행에 있는 옵션은faillock.conf의 설정을 재정의합니다. faillock.conf에서 구성하려면 다음과 같이/etc/authselect/custom/PROFILE/xxxx-auth를 수정하십시오.
7. 사용자 정의 프로필 디렉토리/etc/authselect/custom/password-policy/에서 사용할 수 있는 전역 PAM 구성 파일system-auth및password-auth에서 원하는/사용자 정의 변경을 수행합니다. 변경 사항이 적용되면 다음 명령을 사용하여 적용합니다.
# authselect apply-changes
- 파일에 변경 사항이 기록되었는지 확인합니다.
8. 사용된 비밀번호의 이력(재사용할 수 없는 이전 비밀번호의 수)을 유지합니다. /etc/authselect/custom/password-policy/system-auth및/etc/authselect/custom/password-policy/password-auth파일에 다음 줄을 삽입합니다(pam_pwquality.so 줄 뒤에)
9. 암호 복잡성을 위해 루트를 적용합니다. /etc/authselect/custom/password-policy/system-auth및/etc/authselect/custom/password-policy/password-auth파일의 암호 섹션 아래pam_pwquality.so행에 다음 옵션을 삽입/추가합니다.
enforce_for_root
참고: 변경한 후 변경 사항을 적용하려면 authselect apply-changes를 실행해야 합니다.
10./etc/security/pwquality.conf파일에서 적절한 옵션을 설정하십시오.
minlen = 9 새 암호에 대해 허용되는 최소 크기입니다. 여기에는 크레딧(기본값인 비활성화되지 않은 경우 1개 추가)이 포함됩니다.
dcredit = -1 비밀번호에 필요한 숫자가 있어야 하는 최소 크레딧
ucredit = -1 비밀번호에 대문자를 사용하기 위한 최소 크레딧입니다.
lcredit = 1 비밀번호에 소문자를 사용할 수 있는 최대 크레딧입니다.
ocredit = 1 암호에 다른 문자를 포함할 수 있는 최대 크레딧입니다.
minclass = 1 새 비밀번호에 필요한 최소 문자 클래스 수.
maxrepeat = 2 새 비밀번호에서 연속으로 허용되는 동일한 문자의 최대 수입니다.
maxclassrepeat = 2 새 비밀번호에서 동일한 클래스의 연속 문자가 허용되는 최대 수입니다.
difok = 5 새 비밀번호에 사용할 수 있는 최대 문자 수(이전 비밀번호에 비해..), root는 이전 비밀번호를 묻지 않으므로 적용되지 않음
크레딧 값 > 0 : 새 비밀번호에 각 문자를 포함하기 위한 최대 크레딧입니다. 크레딧 값 < 0 : 새 비밀번호에 각 문자를 포함하는 데 필요한 최소 필수 크레딧입니다. 신용 값 = 0: 새 암호에 해당 문자 클래스를 포함해야 하는 필수 요구 사항이 없습니다.
3번의 실패한 시도 후에 루트가 아닌 사용자를 잠그고 10분 후에 해당 사용자의 잠금을 해제하려면 /etc/pam.d/system-auth 및 /etc/pam.d/password-auth의 auth 섹션에 두 줄을 추가합니다. 파일. 편집 후 두 파일의 전체 인증 섹션은 다음과 같아야 합니다.
“wheel” 그룹 및 그룹 내 구성원 존재 여부 확인 /etc/group wheel:x:10:root,admin
/etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid # 주석해제 시 해당 그룹사용자는 무조건 신뢰(패스워드확인 안함)
# Uncomment the following line to require a user to be in the "wheel" group.
#auth required pam_wheel.so use_uid # 주석해제 시 해당 그룹사용자는 패스워드 확인 후 신뢰
auth include system-auth
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session optional pam_xauth.so
PASS_MAX_DAYS 99999 패스워드 사용 가능 기간(일)
PASS_MIN_DAYS 0 패스워드 변경 최소 기간(일)
PASS_MIN_LEN 5 패스워드 최소 길이
PASS_WARN_AGE 7 패스워드 기간 만료 경고 기간(일)
불필요한 계정 제거
/etc/passwd파일 내 계정확인 후 제거
관리자 그룹에 최소한의 계정 포함
/etc/group내 root:x:0:root 확인
계정이 존재하지 않는 GID 금지
/etc/group파일과/etc/passwd파일 비교하여 점검
동일한 UID 금지
/etc/passwd파일 내 동일한 UID가 있는지 확인
사용자 shell 점검
로그인이 불필요한 계정에/bin/false또는/sbin/nologin쉘 부여
/etc/passwd파일 내 로그인 쉘 부분인 계정 맨 마지막에 부여
Session Timeout 설정
/etc/profile파일 내
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=5000 # 히스토리 저장 갯수
HISTTIMEFORMAT="%F %T " # 히스토리 저장시 날짜 시간 같이 저장
TMOUT=300 # 세션 타임아웃 시간 설정
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
else
export HISTCONTROL=ignoredups
fi
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL HISTTIMEFORMAT TMOUT # 환경변수 적용
RHEL v8 계열(CentOS/Oracle Linux/Rocky Linux) 부터는 이전과 같이 PAM 을 수정하여 설정하는 것을 권장하지 않습니다.
[root@chhanz-c8-vm ~]# cat /etc/pam.d/system-auth
...
# Generated by authselect on Fri Jul 16 13:13:24 2021
# Do not modify this file manually. <<<
...
추가로 RHEL v8 계열부터는 기존에 사용하던 보안 설정으로 많이 사용 되던pam_tally2module 이 deprecated 되었습니다. anthconfig로 PAM 설정이 가능하였으나, RHEL v8 계열부터authselect을 사용하도록 변경 되었습니다.
authselect이란?
authselect는 특정 프로파일을 선택하여 시스템의 ID 및 인증 소스를 설정 할 수 있는 도구입니다.
authselect사용법
Check current the profile
[root@chhan-rocky authselect]# authselect current
Profile ID: sssd
Enabled features: None
Enable feature
faillockmodule 활성화.
[root@chhan-rocky authselect]# authselect enable-feature with-faillock
Make sure that SSSD service is configured and enabled. See SSSD documentation for more information.
[root@chhan-rocky authselect]# authselect current
Profile ID: sssd
Enabled features:
- with-faillock
Create the custom profile
sssdProfile 를 base 로 한 Profile 생성.
[root@chhan-rocky authselect]# authselect create-profile -b sssd security-profile
New profile was created at /etc/authselect/custom/security-profile
Change profile
[root@chhan-rocky security-profile]# authselect select custom/security-profile
Profile "custom/security-profile" was selected.
The following nsswitch maps are overwritten by the profile:
- passwd
- group
- netgroup
- automount
- services
Make sure that SSSD service is configured and enabled. See SSSD documentation for more information.
faillockmodule 을 이용한 보안 설정
기존에pam_tally2등으로 주로 이용되던 계정 인증 실패에 대한 계정 잠금 정설이faillock으로 변경되면서 기능 활성화 및 정책 설정은 아래와 같이 해야됩니다.
faillockmodule 활성화
아래 명령을 통해faillockmodule 을 활성화 합니다.
[root@chhanz-c8-vm ~]# authselect enable-feature with-faillock
Make sure that SSSD service is configured and enabled. See SSSD documentation for more information.
[root@chhanz-c8-vm ~]# authselect current
Profile ID: sssd
Enabled features:
- with-fingerprint
- with-silent-lastlog
- with-faillock
faillock정책 설정
아래와 같이/etc/securrity/faillock.conf를 수정합니다. (Note:/etc/security/faillock.confis available frompam-1.3.1-8.el8.)
위와 같이 계정 인증 실패시faillock명령을 통해 인증 실패 현황을 파악 할 수 있습니다.
[root@chhanz-c8-vm ~]# faillock
root:
When Type Source Valid
test:
When Type Source Valid
2021-07-16 13:14:36 RHOST ::1 V
2021-07-16 13:14:39 RHOST ::1 V
2021-07-16 13:14:42 RHOST ::1 V
2021-07-16 13:14:46 RHOST ::1 V
/var/log/secure에서 위와 같이 계정 LOCK 에 대한 로그를 확인 할 수 있습니다.
...
Jul 16 13:14:46 localhost unix_chkpwd[7186]: password check failed for user (test)
Jul 16 13:14:46 localhost sshd[7184]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=::1 user=test
Jul 16 13:14:46 localhost sshd[7184]: pam_faillock(sshd:auth): Consecutive login failures for user test account temporarily locked <<<
...
실제로 4회 계정 인증 실패 후에는 계정 접근이 안되었고, 10분후에 다시 인증 시도를 할 수 있었습니다.
계정 잠금 해제
LOCK된 계정을 수동으로unlock하는 방법은 아래와 같습니다.
[root@chhanz-c8-vm ~]# faillock --reset --user test
[root@chhanz-c8-vm ~]# faillock
root:
When Type Source Valid
test:
When Type Source Valid
[참고]authselect에서 지원하는 feature (profile sssd)
Feature NameDescription
with-faillock
Lock the account after too many authentication failures.
with-mkhomedir
Create home directory on user’s first log in.
with-ecryptfs
Enable automatic per-user ecryptfs.
with-smartcard
Authenticate smart cards through SSSD.
with-smartcard-lock-on-removal
Lock the screen when the smart card is removed. Requires that with-smartcard is also enabled.
with-smartcard-required
Only smart card authentication is operative; others, including password, are disabled. Requires that with-smartcard is also enabled.
with-fingerprint
Authenticate through fingerprint reader.
with-silent-lastlog
Disable generation of pam_lostlog messages during login
with-sudo
Enable sudo to use SSSD for rules besides /etc/sudoers.
with-pamaccess
Refer to /etc/access.conf for account authorization.
8버전 부터는 pam_tally2가 더 이상 기본으로 사용되지 않으며 faillock로 이용하게 됩니다.
vi /etc/pam.d/system-auth
# Generated by authselect on Mon Jun 27 04:44:48 2022
# Do not modify this file manually.
auth required pam_env.so
# 아래 내용 추가
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=600
auth required pam_faildelay.so delay=2000000
auth sufficient pam_fprintd.so
auth [default=1 ignore=ignore success=ok] pam_usertype.so isregular
auth [default=1 ignore=ignore success=ok] pam_localuser.so
auth sufficient pam_unix.so nullok
# 아래 내용 추가
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=600
auth [default=1 ignore=ignore success=ok] pam_usertype.so isregular
auth sufficient pam_sss.so forward_pass
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_usertype.so issystem
account [default=bad success=ok user_unknown=ignore] pam_sss.so
account required pam_permit.so
# 아래 내용 추가
account required pam_faillock.so
password requisite pam_pwquality.so local_users_only
password sufficient pam_unix.so sha512 shadow nullok use_authtok
password sufficient pam_sss.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_sss.so
audit - 사용자(일반계정) 감사를 활성화
deny - 실패 횟수, deny=5 5회 로그인 실패 시 계정 잠금
unlock_time - 계정 잠금 유지 시간, unlock_time=600 600초가 지나면 자동 해제, 설정하지 않으면 faillock를 이용하여 수동으로 잠금해제 하여야함
even_deny_root - root 계정 적용할때 사용
vi /etc/pam.d/password-auth
# Generated by authselect on Mon Jun 27 04:44:48 2022
# Do not modify this file manually.
auth required pam_env.so
# 아래 내용 추가
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=600
auth required pam_faildelay.so delay=2000000
auth [default=1 ignore=ignore success=ok] pam_usertype.so isregular
auth [default=1 ignore=ignore success=ok] pam_localuser.so
auth sufficient pam_unix.so nullok
# 아래 내용 추가
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=600
auth [default=1 ignore=ignore success=ok] pam_usertype.so isregular
auth sufficient pam_sss.so forward_pass
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_usertype.so issystem
account [default=bad success=ok user_unknown=ignore] pam_sss.so
account required pam_permit.so
# 아래 내용 추가
account required pam_faillock.so
password requisite pam_pwquality.so local_users_only
password sufficient pam_unix.so sha512 shadow nullok use_authtok
password sufficient pam_sss.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_sss.so
# 로그인 실패 확인
faillock
maint:
When Type Source Valid
2022-06-29 08:41:27 RHOST 12.12.12.1 V
root:
When Type Source Valid
2022-06-28 13:49:45 TTY /dev/tty1 V
2022-06-28 13:17:04 TTY /dev/tty1 I
2022-06-28 13:17:09 TTY /dev/tty1 I
2022-06-28 13:49:52 TTY /dev/tty1 V
2022-06-28 13:49:57 TTY /dev/tty1 V
# 특정 사용자만 확인
faillock --user maint
maint:
When Type Source Valid
2022-06-29 08:41:27 RHOST 12.12.12.1 V
# 수동 계정 잠금 해제
faillock --user maint --reset
# 로그인 한 번이라도 실패 시 아래 경로에 기록
ls /var/run/faillock/
maint root
제가 근무하고 있는 회사는 CentOS 7을 대체하기 위한 Next OS로 상용 OS인 RHEL(Red Hat Enterprise Linux) 9를 준비하고 있습니다. 아래 내용은 RHEL9 도입을 위한 사전 체크 중 기존 CentOS 7 기반 설정에서 변경이 되는 부분에 대한 내용을 정리하였습니다.
1. 문제점
기존 CentOS7 기반으로 작성된 설정과 스크립트들을 RHEL9에 그대로 적용하여 사용하려고 한 결과 아래와 같은 문제점이 발생되었습니다.
1) RHEL8 이상 pam_tally2 미지원
RHEL8 이상부터 pam_tally2를 더 이상 지원하지 않습니다. 저는 CentOS7 기반 OS에서 pam_tally2와 pam_faillock이 선택적으로 사용이 가능하기에 pam_tally2를 사용해 왔습니다.
/etc/pam.d/system-auth 및 /etc/pam.d/password-auth에 pam_tally2 설정
2) RHEL8/9에서는 pam_faillock 사용
RHEL8/9에서는 pam_faillock을 사용해야 합니다. 하지만 RHEL7과 RHEL8/9의 pam_faillock 사용법이 다릅니다. 이에 대해서는 아래에 설명하도록 하겠습니다.
2. pam_faillock 설정
RHEL8 이상부터 계정 잠금 제어 시 사용하던 PAM 패키지의 pam_faillock 사용법이 변경되었습니다. 기존의 authconfig를 대체한 authselect를 사용하여 pam_faillock 모듈을 활성화할 수 있습니다.
1) RHEL7 pam_faillock 설정
RHEL7에서는 /etc/pam.d/system-auth 및 /etc/pam.d/password-auth에 pam_faillock을 설정합니다. 두 파일 모두 변경해야 적용됩니다.
위 RHEL7과 동일하게 설정하여 제어할 수도 있습니다. 하지만 RHEL8은 RHEL7과 달리 /etc/pam.d/system-auth 및 /etc/pam.d/password-auth를 수동으로 편집하는 것은 권장하지 않습니다. RHEL 8/9는 authselect 명령어를 사용하여 제어가 가능합니다.
명령어 예시: # authselect enable-feature with-faillock → faillock 활성화
설정 파일 : /etc/security/faillock.conf
3) RHEL9 system-auth, password-auth 파일 설정
RHEL9의 /etc/pam.d/system-auth 와 /etc/pam.d/password-auth 파일 내용은 아래와 같습니다.
[ system-auth 와 password-auth 파일 내용 ]
파일 내용 수정 후 /etc/pam.d/password-auth 화면은 아래와 같습니다. /etc/pam.d/system-auth 내용도 동일합니다.
[ password-auth 수정 후 화면 ]
※ 주의사항
이렇게 수정하는 방법은 RedHat에서 권장하는 방법이 아니므로 주의가 필요합니다.
4) /etc/security_faillock.conf 파일
/etc/security_faillock.conf 화면은 아래와 같습니다. 해당 설정에 대한 내용 확인 후 주석을 해제하여 설정하면 됩니다.
[ /etc/security/faillock.conf 파일 내용 ]
5) pam_faillock 활용
1. sexyguy 계정에 대한 실패한 로그인 정보 확인
# faillock --user sexyguy
2. sexyguy 계정 잠금 해제
# faillock --reset --user sexyguy
[ faillock 로그인 정보 확인 및 잠금해제 ]
3. 마치며
지난 리눅스 계정 잠금 임계값 설정 포스팅은 CentOS7 기준으로 작성이 되었습니다. 기존에 사용하던 설정들을 RHEL9에 적용하려다 보니 수정해야 될 부분이 조금 있었습니다. 저는 위 방법들을 토대로 스크립트를 작성할 예정입니다. 지금까지 제가 RHEL9 도입을 준비하면서, 계정 잠금 설정에는 기존에 사용하던 OS와 어떠한 차이가 있는지 정리한 내용을 포스팅했습니다.
[root@localhost faillock]#faillock test: When Type Source Valid 2020-06-16 02:02:14 RHOST 192.168.232.1 V 2020-06-16 02:02:19 RHOST 192.168.232.1 V 2020-06-16 02:02:37 RHOST 192.168.232.1 V 2020-06-16 02:05:17 RHOST 192.168.232.1 V 2020-06-16 02:05:25 RHOST 192.168.232.1 V
test2: When Type Source Valid 2020-06-16 02:08:00 RHOST 192.168.232.1 V
특정 사용자만 확인
[root@localhost faillock]# faillock --user test
수동 차단 해제
[root@localhost faillock]# faillock --user test --reset
로그인 한 번이라도 실패한 계정은 아래의 경로에 관리됨 [root@localhost faillock]#ls /var/run/faillock/ test
Red Hat Enterprise Linux에서 파생된 리눅스 배포판 CentOS가 2021년 12월 31일 기준으로 수명이 다 되었다고 합니다. CentOS는 RHEL의 소스를 기반으로 철저하게 최신 버전의 RHEL을 포킹하는데 중점을 두어 사용되었으나 이제부터는 RHEL배포 이전에 테스트 기반(Stream버전)만 지원하므로 더이상 우리가 안정적으로 사용했던 CentOS의 장점이 사라졌다.
다행스럽게 새롭게 RHEL을 포킹하는 Rocky Linux가 생겨났고, 기존 CentOS를 Rocky로 대체하는 분위기가 형성되어있다.
Rocky Linux는 RHEL8 버전을 포킹하는 프로젝트라 기존 7버전까지 잘 사용하던 보안 설정과 tcp_wrappers부분 (host.allow설정)이 미지원되어 새로운 방법으로 보안설정이 필요로 하게 되었다.
[보안 설정]
보안 설정에서 /etc/pam.d/ 이하 system-auth 설정으로 계정 보안 설정이 필요했으나, 8버전 부터 해당 설정 파일을 수동으로 변경하기보다 명령어를 통해 변경하는 것을 권장한다고 합니다. 패스워드 길이 정책은 아래 경로에서 (기본은 전부 주석) 주석을 해제하고, 필요한 값으로 대체해야 합니다.
1. pam_pwquality 모듈 설정
[root@localhost ~]# vi /etc/security/pwquality.conf
minlen = 8 (최소 패스워드 길이 8로 설정) dcredit = 1 (최소 1개 이상 숫자 포함) ucredit = 1 (최소 1개 이상 대문자 포함) lcredit = 1 (최소 1개 이상 소문자 포함) ocredit = 1 (최소 1개 이상 특수문자 포함) maxrepeat =3 (최대 연속된 동일한 숫자 또는 문자 3회 이상 안됨) 111 maxclassrepeat = 3 (최대 연속된 숫자 또는 문자 반복 3회 이상 안됨) 123 usercheck = 1 (패스워드에 사용자ID 포함 여부- 1 체크, 0 No체크)
2. vi /etc/pam.d/system-auth
아래와 같이 system-auth 파일을 수정하였고, root 또는 사용자 계정으로 접속할 때 특이사항은 없었다. 파란색으로 표기한 내용이 보안 설정을 위해 추가한 내용이며, 그 외는 기본 Default 설정이다.
#%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authselect is run. auth required pam_env.so auth required pam_faillock.so preauth silent audit deny=5 even_deny_root unlock_time=600 auth required pam_faillock.so delay=2000000 auth sufficient pam_fprintd.so auth [default=1 ignore=ignore success=ok] pam_succeed_if.so uid>=1000 quiet auth [default=1 ignore=ignore success=ok] pam_localuser.so auth sufficient pam_unix.so nullok try_first_pass auth [default=die] pam_faillock.so authfail audit deny=5 even_deny_root unlock_time=600 auth requisite pam_succeed_if.so uid>=1000 quiet_success auth sufficient pam_sss.so forward_pass auth required pam_deny.so
3. tcp_wrappers 대신 firewall 모듈 사용으로 ssh접근 호스트 정책 제어
아래와 같이 파란색표기된 zone에 IP를 넣어두지 않으면 외부에서 SSH접근 불가
RHEL 7버전 이하에서는 hosts.allow, hosts.deny 파일에 접근 허용할 호스트 IP를 등록하면 되었으나 8버전부터는 모듈이 지원되지 않아 사용이 불가능하다. firewalld 패키지를 사용하여 특정 호스트에 대한 접속 허용을 아래와 같이 지정하면 됩니다.## ssh 서비스를 기본 방화벽에서 제거 # firewall-cmd --permanent --remove-service=ssh ## newzone 이름으로 새로운 zone 추가 # firewall-cmd --permanent --new-zone=newzone # firewall-cmd --permanent --zone=newzone --add-source=10.0.0.0/24 ## 추가된 newzone에 ssh서비스를 추가 # firewall-cmd --permanent --zone=newzone --add-service=ssh ## 방화벽 다시 로드 # firewall-cmd --reload
5. 기본 셋팅(Application 성격에 맞게) ulimits 제한 설정 --- 보안설정은 아님
* soft core unlimited * hard core unlimited 사용자ID soft nproc 16384 사용자ID hard nproc 16384 사용자ID soft nofile 131072 사용자ID hard nofile 131072 root soft nofile 131072 root hard nofile 131072
6. 패스워드 만료일 설정 (이후 설정된 계정에만 적용되며 기존 계정에는 적용 안됨) 아래와 같이 적용해야 보안 심사에서 귀찮게 안함.
# vi /etc/login.defs PASS_MAX_DAYS 90 (90~180일 권장) PASS_MIN_DAYS 90 (MAX값과 동일하게 설정) PASS_MIN_LEN 8 (패스워드 최소 길이 설정) PASS_WARN_AGE 7
* 특정 계정에는 패스워드 만료를 안먹이도록 설정이 필요할 수 있음. (스케줄링에 의한 계정 등) # chage -l 사용자ID (사용자ID에 대한 패스워드 정책 조회) # chage -E -1 -I 0 -m 0 -M 99999 사용자ID (사용자ID에 대해 패스워드 만료 안되게 설정)
7. 로그인 접속 세션 시간 설정 및 History 조회 시 타임라인 설정
# vi /etc/profile
HISTSIZE=2000 (기본 1000) HISTTIMEFORMAT="%F %T "(%T뒤에 스페이스 붙여야 시간과 명령어가 떨어져서 보임) TMOUT=600 (세션 타임아웃 설정- 보안 가이드에 맞게 설정) export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL HISTTIMEFORMAT TMOUT
History 명령어 시 날짜 시간 표기
8. 부팅 시 서비스 자동 시작
# systemctl -t service list-unit-files # systemctl enable "서비스 Unit"
1. virbr0는 가상 네트워크 스위치의 개념으로 사용될 때 사용되는 인터페이스입니다. libvirtd 데몬 (libvirtd)을 처음 설치하고 시작하면 가상 네트워크 스위치를 나타내는 기본 네트워크 인터페이스는 virbr0입니다.
2. virbr0 네트워크 인터페이스는 Guest(가상머신)가 네트워크 서비스에 접근하는 것을 허락하기 위해서 네트워크 주소 전송(NAT)을 위해 사용됩니다.
3. 호스트가 하이퍼바이저로 운영되는 시스템이 아니라면 굳이 필요하지 않은 인터페이스입니다.
[root@Linux net]# ip addr | grep -i vir
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:e4:bb:ae brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:e4:bb:ae brd ff:ff:ff:ff:ff:ff
▶ 리눅스 시스템에서 서비스용 인터페이스 외에 bonding 구성시 기본적으로 생성이 되는 virbr0 어댑터에 랜덤 하게 IP가 부여되고 해당 인터페이스는 DNS 서비스로 dnsmasq 사용에 보안취약점으로 지적되는 동시에 서비스에 임의적으로 영향을 줄 수 있는 IP로 가상환경으로 사용하지 않을 경우 삭제를 하도록 합니다.
[root@Linux net]# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.525400e4bbae yes virbr0-nic
▶ brctl show 명령어를 통해서 해당 virbr0 서비스가 활성화되어 있는지 확인합니다.
[root@Linux net]# systemctl stop libvirtd.service
▶ systemctl stop libvirtd.service 명령어를 통해서 해당 서비스에 대해서 중지하도록 합니다.
▶ libvirtd.service 서비스를 중지하게 되면 재부팅 시 활성화되지 않도록 disable 설정을 하도록 합니다.
[root@Linux net]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ifcfg-eno1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000
link/ether b4:96:91:40:98:57 brd ff:ff:ff:ff:ff:ff
3: ifcfg-eno2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000
link/ether b4:96:91:40:98:57 brd ff:ff:ff:ff:ff:ff
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
link/ether 52:54:00:e4:bb:ae brd ff:ff:ff:ff:ff:ff
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN mode DEFAULT group default qlen 1000
link/ether 52:54:00:e4:bb:ae brd ff:ff:ff:ff:ff:ff
6: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether b4:96:91:40:98:57 brd ff:ff:ff:ff:ff:ff
▶ libvirtd.service 서비스를 중지하고 비활성화시켰다면 virbr0 어댑터를 삭제해 보도록 하겠습니다.
[root@Linux net]# ip link set virbr0 down
▶ ip link set virbr0 down 명령어를 통해서 해당 vibr0 인터페이스에 대해서 down 하도록 합니다.
[root@Linux net]# ip link delete virbr0
▶ down 된 virbr0 인터페이스를 삭제합니다.
[root@Linux net]# ip addr
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether 52:54:00:e4:bb:ae brd ff:ff:ff:ff:ff:ff
6: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether b4:96:91:40:98:57 brd ff:ff:ff:ff:ff:ff
inet 192.168.111.111/24 brd 211.226.143.255 scope global noprefixroute bond0
valid_lft forever preferred_lft forever
기본적으로 Ubuntu 20인가부터 netplan을 사용하기 시작했기때문에 설정방법은 모두 대동소이하나 기록용으로 남겨봅니다.
최초에 dhcp로 설정한 경우에는 헷갈릴수도있으니까요.
기본 vi 에디터가 없으면 apt install vim 으로 설치해주시면됩니다.
vi /etc/netplan/50-cloud-init.yaml
복사
DHCP로 설치하신경우 기본적으로 아래와같이 되어있는데요.
해당 값들을 아래처럼 바꿔주시면 됩니다.
인터페이스는 ifconfig 명령어로 확인해주시고 설정해주세요.
address: 는 ip와 서브넷마스크를 의미합니다.
nameservers:는 dns이고
routes:는 디폴트라우팅 설정입니다.
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
ens18:
addresses:
- 192.168.1.23/24
nameservers:
addresses:
- 1.1.1.1
search:
- 8.8.4.4
routes:
- to: default
via: 192.168.1.1
version: 2
Proxmox에서가상 머신 내보내기 및 가져오기는 가상화된 환경을 관리하는 주요 작업 중 하나입니다. VM을 백업하든, 다른 노드로 마이그레이션하든, VM 이미지를 공유하든 관계없이 내보내기 및 가져오기 작업을 올바르게 수행하는 것이 중요합니다.
Proxmox에서 VM 내보내기 및 가져오기의 이점
Proxmox에서 VM 내보내기 및 가져오기를 수행할 때 얻을 수 있는 네 가지 주요 이점은 다음과 같습니다.
유연성: Proxmox는 서로 다른 Proxmox 호스트 간에 가상 머신을 쉽게 마이그레이션할 수 있도록 하여 뛰어난 유연성을 제공합니다. 필요에 따라 VM 리소스를 재할당하고 관리할 수 있습니다.
단순성: Proxmox는 직관적인 사용자 인터페이스와명령줄 도구를제공하므로 Proxmox VM 내보내기 및 가져오기 작업을 쉽게 사용할 수 있습니다. 하나의 Proxmox 환경에서 다른 환경으로 VM을 쉽게 내보내고 내보낸 VM 파일에서 VM을 빠르게 가져올 수 있습니다.
데이터 보안: Proxmox VM을 내보내면 안정적인 백업을 생성하여 VM의 중요한 데이터를 효과적으로 보호할 수 있습니다. 필요한 경우 Proxmox VM 가져오기 작업을 통해 빠르고 제어된 복구가 가능합니다.
노드 마이그레이션 및 부하 분산: Proxmox VM을 내보내면 Proxmox 클러스터의 노드를 쉽게 마이그레이션할 수 있습니다. 이는 로드 밸런싱, 리소스 최적화, 유지 관리 및 업그레이드에 유용합니다. 더 나은 리소스 할당 및 관리를 위해 필요한 경우 Proxmox VM을 다른 노드로 내보내고 Proxmox VM을 대상 노드로 가져올 수 있습니다.
Proxmox VM을 내보내고 가져오는 방법은 무엇입니까?
WinSCP는Proxmox Virtual Environment (Proxmox VE) 에서 가상 머신을 내보내고 가져오는 프로세스를 단순화하는 강력한 그래픽 파일 전송 도구입니다 .전체 프로세스에는 Proxmox VM 백업, 나중에 사용하기 위해 VM 백업 내보내기, 필요할 때 VM 가져오기가 포함됩니다.
2. 원격 디렉터리를 백업 디렉터리로 전환합니다(로컬 저장소의 백업 디렉터리는/var/lib/vz/dump입니다 ) > VM 백업 파일 찾기 > 마우스 오른쪽 버튼을 클릭하여 다운로드
3. vma 백업 파일을 로컬 디렉터리에 다운로드하고확인을 누르세요.
백업 업로드
1.새 탭을클릭 하고 위의 로그인 단계를 반복하여 다른 노드에 로그인합니다.
2. 로컬 디렉터리를 방금 다운로드하고 백업한 디렉터리로 전환하고 > VM을 마우스 오른쪽 버튼으로 클릭한 후 >업로드를 선택합니다.
3. 업로드 경로를 입력하십시오: /var/lib/vz/dump/. (로컬 저장소의 백업 디렉토리는:/var/lib/vz/dump)>확인을 클릭하십시오.
WinSCP에서 백업이 성공적으로 업로드되었음을 확인할 수 있습니다.
가상 머신 복구
1. Proxmox VE에서 다른 노드에 로그인 > 적절한 업로드 저장소로 전환(로컬)
2. 방금 업로드한 vma 백업 파일 선택 >복원클릭 > 관련 복원 매개변수 구성 > 복원 버튼 누르기
여기에서 복구가 성공적으로 완료되었음을 확인할 수 있습니다.
Vinchin을 사용하여 Proxmox VM을 백업하고 복원하는 방법은 무엇입니까?
WinSCP를 사용하여 Proxmox VM을 가져오고 내보내는 것은 간단한 방법입니다. 그러나 업무상 중요한 환경에서는 데이터 무결성과 신뢰성을 보장하기 위해 전문적인 백업 솔루션을 권장합니다.
데이터 백업 솔루션이 필요하든 가상 머신 마이그레이션 솔루션이 필요하든Vinchin Backup & Recovery 는 이상적인 선택입니다. 전문적인 백업 및 마이그레이션 솔루션으로서 Proxmox, VMware, Hyper-V, XenServer, XCP-ng, oVirt, RHV 및 기타 VM 플랫폼을 포함한 광범위한 가상 환경에 널리 적용 가능합니다.
에이전트 없는 백업 기술, 즉각적인 복구 및V2V 마이그레이션 지원을 통해 Vinchin Backup & Recovery는 가상화된 환경에서 중요한 데이터를 포괄적으로 보호하고 효율적으로 관리하는 데 전념하고 있습니다.
Vinchin Backup & Recovery의 작동은 몇 가지 간단한 단계만으로 매우 간단합니다.
Proxmox에서 가상 머신 내보내기 및 가져오기를 이해하는 것은 가상화된 환경을 효과적으로 관리하는 데 중요합니다. WinSCP는 중요한 비즈니스 요구 사항에 있어 작동 용이성을 제공하는 반면, Vinchin 백업 및 복구는 데이터 무결성과 신뢰성을 보장하는 전문가급 솔루션을 제공합니다.
이번에는 Proxmox의 핵심기능중 하나인 Cluster입니다. ESXi에서 vMotion으로 할수있는 데이터센터에서 데이터센터로 노드간 VM이동등 서버여러대의 관리부터 각종 기능까지 사용할 수 있는 좋은 기능입니다.
Proxmox Cluster란?
pvecm 를 사용하여 새 클러스터를 만들고, 노드를 클러스터에 가입하고, 클러스터를 떠나고, 상태 정보를 얻고, 기타 다양한 클러스터 관련 작업을 수행할 수 있습니다. Proxmo x C 클러스터 파일 시스템 ( " pmxcfs ")은 클러스터 구성을 모든 클러스터 노드에 투명하게 배포하는 데 사용됩니다.
노드를 클러스터로 그룹화하면 다음과 같은 이점이 있습니다.
중앙 집중식 웹 기반 관리 다중 마스터 클러스터: 각 노드가 모든 관리 작업을 수행할 수 있습니다. corosync 를 사용하여 모든 노드에서 실시간으로 복제되는 구성 파일 저장을 위한 데이터베이스 기반 파일 시스템인 pmxcfs 사용 물리적 호스트 간에 가상 머신 및 컨테이너의 손쉬운 마이그레이션 빠른 배포 방화벽 및 HA와 같은 클러스터 전체 서비스
쉽게말해 여러 서버를 웹 사이트에 하나로 통합하여 관리할 수 있다는 뜻입니다. 단순히 서버의 상태만 볼수있는게 아닌 각 VM의 가상머신 LXC 컨테이너등의 생성/삭제 등등 모두 가능합니다
가장 핵심기능은 노드간 가상 머신 및 컨테이너의 복제입니다. 노드1에서 사용하다가 노드2로 옮길 수 있고 뭐 그런거죠 ㅎㅎ
여기서는 간단하게 Proxmox에서 클러스터를 만들고 노드를 가입시켜보겠습니다.
테스트환경
Proxmox 7.1-7 2대
Cluster 생성하기
클러스터 생성은 매우 간단합니다.
이렇게 클릭 두번으로 클러스터 생성은 끝납니다 ㅎㅎ
클러스터 가입하기
이제 만든 클러스터의 가입정보를 눌러주세요. 클러스터의 가입정보를 가지고 노드의 클러스터 가입이 가능합니다.
이제 가입하고자 하는 노드에서 클러스터 가입을 누른뒤에 위 정보를 복붙해주면
아래처럼 피어주소가 나오며 연결하는 노드의 PW를 입력 후 가입을 누르면 클러스터 가입이 됩니다. *주의할점은 가입하는 노드에 VM이 있으면 가입이 불가능합니다.
domain skbroadband //skbroadband를 사용하고있기에 이렇게 적어주는 것
search skbroadband
nameserver [해당통신사의 DNS주소]
/etc/network/interfaces
auto lo
iface lo inet loopback
iface [인터페이스 이름] inet manual
auto [가상 인터페이스 이름]
iface [가상 인터페이스 이름] inet dhcp //dhcp로 설정할것
bridge-ports [인터페이스 이름]
bridge-stp off
bridge-fd 0
$ sudo apt update
기존:1 http://deb.debian.org/debian bullseye InRelease
기존:2 http://deb.debian.org/debian bullseye-updates InRelease
받기:3 http://security.debian.org/debian-security bullseye-security InRelease [48.4 kB]
기존:4 https://downloads.plex.tv/repo/deb public InRelease
무시:5 https://repo.vivaldi.com/stable/deb stable InRelease
기존:6 https://repo.vivaldi.com/stable/deb stable Release
기존:7 http://archive.raspberrypi.org/debian bullseye InRelease
내려받기 48.4 k바이트, 소요시간 2초 (21.4 k바이트/초)
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다... 완료
상태 정보를 읽는 중입니다... 완료
All packages are up to date.
$ sudo apt full-upgrade
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다... 완료
상태 정보를 읽는 중입니다... 완료
업그레이드를 계산하는 중입니다... 완료
0개 업그레이드, 0개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
라즈베리파이 펌웨어 업데이트
$ sudo rpi-update
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
*** Performing self-update
*** Relaunching after update
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
*** We're running for the first time
*** Backing up files (this will take a few minutes)
*** Backing up firmware
*** Backing up modules 6.1.21-v8+
#############################################################
WARNING: This update bumps to rpi-6.1.y linux tree
See: https://forums.raspberrypi.com/viewtopic.php?t=344246
'rpi-update' should only be used if there is a specific
reason to do so - for example, a request by a Raspberry Pi
engineer or if you want to help the testing effort
and are comfortable with restoring if there are regressions.
DO NOT use 'rpi-update' as part of a regular update process.
##############################################################
Would you like to proceed? (y/N)
*** Downloading specific firmware revision (this will take a few minutes)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:- 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-100 8860k 0 8860k 0 0 7162k 0 --:--:-100 28.3M 0 28.3M 0 0 12.6M 0 --:--:-100 51.8M 0 51.8M 0 0 16.0M 0 --:--:-100 74.1M 0 74.1M 0 0 17.4M 0 --:--:-100 93.8M 0 93.8M 0 0 17.9M 0 --:--:-100 116M 0 116M 0 0 18.7M 0 --:--:-100 128M 0 128M 0 0 17.2M 0 --:--:-100 136M 0 136M 0 0 16.5M 0 --:--:-100 144M 0 144M 0 0 16.1M 0 --:--:-- 0:00:08 --:--:-- 14.9M
*** Updating firmware
*** Updating kernel modules
*** depmod 6.1.54+
*** depmod 6.1.54-v8_16k+
*** depmod 6.1.54-v8+
*** depmod 6.1.54-v7+
*** depmod 6.1.54-v7l+
*** Updating VideoCore libraries
*** Using SoftFP libraries
*** Updating SDK
*** Running ldconfig
*** Storing current firmware revision
*** Deleting downloaded files
*** Syncing changes to disk
*** If no errors appeared, your firmware was successfully updated to cac01bed1224743104cb2a4103605f269f207b1a
*** A reboot is needed to activate the new firmware
최신 부트로더 설치
$ sudo rpi-eeprom-update -d -a
*** INSTALLING EEPROM UPDATES ***
BOOTLOADER: update available
CURRENT: 2020. 09. 03. (목) 12:11:43 UTC (1599135103)
LATEST: 2023. 01. 11. (수) 17:40:52 UTC (1673458852)
RELEASE: default (/lib/firmware/raspberrypi/bootloader/default)
Use raspi-config to change the release.
VL805_FW: Dedicated VL805 EEPROM
VL805: up to date
CURRENT: 000138c0
LATEST: 000138c0
CURRENT: 2020. 09. 03. (목) 12:11:43 UTC (1599135103)
UPDATE: 2023. 01. 11. (수) 17:40:52 UTC (1673458852)
BOOTFS: /boot
Using recovery.bin for EEPROM update
EEPROM updates pending. Please reboot to apply the update.
To cancel a pending update run "sudo rpi-eeprom-update -r".