728x90

원문출처 : https://hmw0908.tistory.com/50

 

[Linux] Apache 보안 설정 (ServerTokens, ServerSignature)

서버정보 노출 방지 [권장] ServerTokens Prod ServerSignature Off ServerTokens 설정 종류 #웹 서버 이름만 공개 [Apache] ServerTokens Prod #웹 서버 이름 + Major 버전 [Apache2] ServerTokens Major #웹 서버 이름 + Major + Minor

hmw0908.tistory.com

 

 

728x90

원문출처 : https://m.blog.naver.com/godgodmin/221851224176

 

Apache 웹서버 보안 설정

불필요한 파일 삭제 DocumentRoot 폴더는 웹문서가 위치하는 디렉토리로 불필요한 파일이 있을시에 삭제 ...

blog.naver.com

 

불필요한 파일 삭제

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 옵션을 지우고 웹서버를 재시작 하면 심볼릭 링크를 이용하여 파일시스템에 접근 할 수 없게 된다.

728x90

원문출처 : https://atl.kr/dokuwiki/doku.php/%EA%B3%84%EC%A0%95%EA%B4%80%EB%A6%AC

 

계정관리 [AllThatLinux!]

항목 중요도 상 점검목적 관리자계정 탈취로 인한 시스템 장악을 방지하기 위해 외부 비인가자의 root 계정 접근 시도를 원천적으로 차단하기 위함 보안위협 root 계정은 운영체제의 모든기능을

atl.kr

 

root 계정 원격 접속 제한

항목 중요도 상

점검목적
관리자계정 탈취로 인한 시스템 장악을 방지하기 위해 외부 비인가자의 root 계정 접근 시도를 원천적으로 차단하기 위함

보안위협
root 계정은 운영체제의 모든기능을 설정 및 변경이 가능하여(프로세스, 커널변경 등) root 계정을 탈취하여 외부에서 원격을 이용한 시스템 장악 및 각종 공격으로(무작위 대입 공격) 인한 root 계정 사용 불가 위협

점검방법

RHEL 6, 7

[Telnet]

#cat /etc/pam.d/login
auth required /lib/security/pam_securetty.so
#cat /etc/securetty
pts/0 ~ pts/x 관련 설정이 존재하지 않음

[Telnet 서비스 사용시]
Step 1) /etc/securetty 파일에서 pts/0 ~ pts/x 설정 제거 또는, 주석 처리
Step 2) /etc/pam.d/login 파일 수정 또는, 신규 삽입

(수정 전) #auth required /lib/security/pam_securetty.so
(수정 후) auth required /lib/security/pam_securetty.so

※ /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 지원을 활성화하려면 다음 행을 추가하십시오.

auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so

위 설정을 적용하기 위한 파일들은 다음과 같습니다.

/etc/pam.d/gdm
/etc/pam.d/gdm-autologin
/etc/pam.d/gdm-fingerprint
/etc/pam.d/gdm-password
/etc/pam.d/gdm-smartcard
/etc/pam.d/kdm
/etc/pam.d/kdm-np
/etc/pam.d/xdm

참조링크
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html-single/security_guide/index#s2-wstation-privileges-noroot

RHEL 8 이후 시스템에서 tty 장치 파일의 동적 특성으로 인해 securetty PAM 모듈은 기본적으로 비활성화되었으며 /etc/securetty 구성 파일은 더 이상 RHEL에 포함되지 않습니다.
/etc/securetty는 가능한 많은 장치를 나열하므로 대부분의 경우 실질적인 효과는 기본적으로 허용되는 것이므로 이 변경은 약간의 영향만 미칩니다.
그러나 보다 제한적인 구성을 사용하는 경우 /etc/pam.d 디렉토리의 해당 파일에 pam_securetty.so 모듈을 활성화하는 행을 추가하고 새 /etc/securetty 파일을 생성해야 합니다.

참조링크
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/considerations_in_adopting_rhel_8/security_considerations-in-adopting-rhel-8#securetty_security

 

Root ssh login 제한

RHEL 6, 7

SSH 프로토콜을 사용한 루트 로그인을 방지하려면 SSH 데몬의 구성 파일 /etc/ssh/sshd_config를 편집하고 다음 행을 변경하십시오.

#PermitRootLogin yes
PermitRootLogin no

참조링크
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html-single/security_guide/index#s2-wstation-privileges-noroot

RHEL 8

#PermitRootLogin yes
PermitRootLogin no

PermitRootLogin 옵션
no - root 계정의 모든 접근 방법을 차단
prohibit-password - root 계정의 암호를 사용하는 대신 키 기반 인증은 가능함

참조링크
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/securing_networks/index

패스워드 복잡성 설정

RHEL 6

네 가지 문자 클래스를 모두 포함하여 최소 길이가 8자인 암호를 요구하려면 /etc/pam.d/passwd 파일의 암호 섹션에 다음 줄을 추가하십시오.

password   required     pam_cracklib.so retry=3 minlen=8 minclass=4

연속 또는 반복 문자에 대한 암호 강도 검사를 설정하려면 /etc/pam.d/passwd 파일의 암호 섹션에 다음 줄을 추가합니다.

password   required     pam_cracklib.so retry=3 maxsequence=3 maxrepeat=3

참조링크
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html-single/security_guide/index#sect-Security_Guide-Workstation_Security-Password_Security

RHEL 7

pam_quality 사용을 활성화하려면 /etc/pam.d/passwd 파일의 암호 스택에 다음 줄을 추가합니다.

password    required    pam_pwquality.so retry=3

네 가지 문자 클래스를 모두 포함하여 최소 길이가 8자인 암호를 요구하려면 /etc/security/pwquality.conf 파일에 다음 행을 추가하십시오.

minlen = 8
minclass = 4

문자 시퀀스 및 동일한 연속 문자에 대한 암호 강도 검사를 설정하려면 /etc/security/pwquality.conf에 다음 행을 추가하십시오.

maxsequence = 3
maxrepeat = 3

참조문서
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html-single/security_guide/index

RHEL 8

Red Hat Enterprise Linux 8에서는 authconfig명령이 authselect 유틸리티로 대체되었습니다.
/etc/pam.d/ 디렉토리에 있는 PAM 전역 파일 system-auth 및 password-auth에서 직접 수정하지 않는 것이 좋습니다.

Red Hat Enterprise Linux 8에서 암호 복잡성에 대한 기본 구성 파일은 /etc/security/pwquality.conf
비밀번호 정책/복잡성을 구성하기 전에 아래와 같이 authselect를 사용하여 사용자 정의 프로파일을 작성하십시오.

1. 사용 가능한 프로필 나열

# authselect list

2. 현재 프로필 및 활성화된 기능 나열

# authselect current

3. 현재 프로필/변경 사항 백업

# authselect apply-changes -b --backup=sssd.backup

4. 기존 프로필 sssd에서 복사한 새 사용자 지정 프로필 이름 password-policy 생성

#  authselect create-profile password-policy -b sssd

- 새로 생성된 프로필은 /etc/authselect/custom/password-policy/ 위치에서 사용할 수 있습니다.

5. 새 사용자 정의 프로필을 현재 프로필로 설정

# authselect select custom/password-policy
# authselect current

6. 예를 들어 기능을 활성화하려면 사용자 로그인 시 홈 디렉토리가 아직 없는 경우 생성하고 faillock을 사용하여 계정 잠금을 활성화하려면 다음 명령을 실행합니다.

# authselect enable-feature with-mkhomedir
# authselect enable-feature with-faillock

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를 수정하십시오.

# Edit {system,password,fingerprint,smartcard}-auth in /etc/authselect/custom/password-policy/

(Before)
auth        required                                     pam_env.so
auth        required                                     pam_faildelay.so delay=2000000
auth        required                                     pam_faillock.so preauth silent deny=4 unlock_time=1200
...snip...
auth        required                                     pam_faillock.so authfail deny=4 unlock_time=1200
auth        required                                     pam_deny.so
↓  
(After)
auth        required                                     pam_env.so
auth        required                                     pam_faildelay.so delay=2000000
auth        required                                     pam_faillock.so preauth
...snip...
auth        required                                     pam_faillock.so authfail
auth        required                                     pam_deny.so

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 줄 뒤에)

password    requisite     pam_pwhistory.so remember=5 use_authtok

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: 새 암호에 해당 문자 클래스를 포함해야 하는 필수 요구 사항이 없습니다.

참조링크
https://access.redhat.com/solutions/5027331

계정 잠금 임계값 설정

RHEL 6

3번의 실패한 시도 후에 루트가 아닌 사용자를 잠그고 10분 후에 해당 사용자의 잠금을 해제하려면 /etc/pam.d/system-auth 및 /etc/pam.d/password-의 auth 섹션에 다음 행을 추가하십시오.

auth        required       pam_faillock.so preauth silent audit deny=3 unlock_time=600
auth        sufficient     pam_unix.so nullok try_first_pass
auth        [default=die]  pam_faillock.so authfail audit deny=3 unlock_time=600

이전 단계에서 지정한 두 파일의 계정 섹션에 다음 줄을 추가합니다.

account     required      pam_faillock.so

루트 사용자에게도 계정 잠금을 적용하려면 /etc/pam.d/system-auth 및 /etc/pam.d/password-auth 파일의 pam_faillock 항목에 even_deny_root 옵션을 추가합니다.

auth        required      pam_faillock.so preauth silent audit deny=3 even_deny_root unlock_time=600
auth        sufficient    pam_unix.so nullok try_first_pass
auth        [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=600

account     required      pam_faillock.so

사용자 계정의 잠금을 해제하려면 루트로 다음 명령을 실행합니다.

# faillock --user <username> --reset

참조문서
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html-single/security_guide/index#sect-Security_Guide-Workstation_Security-Account_Locking

RHEL 7

3번의 실패한 시도 후에 루트가 아닌 사용자를 잠그고 10분 후에 해당 사용자의 잠금을 해제하려면 /etc/pam.d/system-auth 및 /etc/pam.d/password-auth의 auth 섹션에 두 줄을 추가합니다. 파일. 편집 후 두 파일의 전체 인증 섹션은 다음과 같아야 합니다.

1 auth        required      pam_env.so
2 auth        required      pam_faillock.so preauth silent audit deny=3 unlock_time=600  <- 추가
3 auth        sufficient    pam_unix.so nullok try_first_pass
4 auth        [default=die] pam_faillock.so authfail audit deny=3 unlock_time=600  <- 추가
5 auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
6 auth        required      pam_deny.so

이전 단계에서 지정한 두 파일의 계정 섹션에 다음 줄을 추가합니다.

account     required      pam_faillock.so

루트 사용자에게도 계정 잠금을 적용하려면 /etc/pam.d/system-auth 및 /etc/pam.d/password-auth 파일의 auth required pam_faillock.so 항목에 even_deny_root 옵션을 추가합니다.

auth        required      pam_faillock.so preauth silent audit deny=3 even_deny_root unlock_time=600
auth        sufficient    pam_unix.so nullok try_first_pass
auth        [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=600

account     required      pam_faillock.so

사용자 계정의 잠금을 해제하려면 루트로 다음 명령을 실행합니다.

#faillock --user <username> --reset

참조문서
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html-single/security_guide/index#sect-Security_Guide-Workstation_Security-Account_Locking
https://access.redhat.com/solutions/62949

RHEL 8

/etc/pam.d/system-auth  /etc/pam.d/password-auth를 수동으로 편집하는 것은 권장되지 않습니다. authselect를 사용하여 pam_faillock을 활성화/비활성화합니다.

To enable faillock

# authselect enable-feature with-faillock

To disable faillock

# authselect disable-feature with-faillock

faillock 구성
faillock 옵션은 /etc/security/faillock.conf에 저장해야 합니다.

deny=4
unlock_time=1200
silent

인증 실패 기록을 재설정하거나 보려면 다음과 같은 명령을 사용하십시오.
사용자 이름에 대한 인증 실패 기록을 표시하려면

# faillock --user username

사용자 이름에 대한 인증 실패 기록을 재설정하려면

# faillock --user username --reset

SSHD 구성 조정
pam_faillock.so가 예상대로 작동하지 않으면 SSHD 구성을 다음과 같이 변경해야 할 수 있습니다.

# vi /etc/ssh/sshd_config
ChallengeResponseAuthentication yes
PasswordAuthentication no

그런 다음 이러한 구성 변경 사항을 적용하려면 sshd 서비스를 다시 시작합니다.

# systemctl restart sshd

참조문서
https://access.redhat.com/solutions/62949

패스워드 파일 보호

/etc/shadow 파일의 패스워드 암호화 존재 확인
/etc/passwd 파일 내 두 번째 필드가 “ X ” 표시되는지 확인

참조문서
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html-single/security_guide/index

root 이외에 UID가 '0' 금지

/etc/passwd 파일 내 UID (세 번째 필드 값) 확인
root 이외의 계정이 “UID=0”인 경우 0이 아닌 적절한 UID 부여

참조문서
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html-single/security_guide/index

root 계정 su 제한

“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

참조문서
https://access.redhat.com/solutions/452213

패스워드 최소 길이, 최대 사용 기간, 최소 사용기간 설정

/etc/login.defs 내 패스워드 관련 파일 수정

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  # 환경변수 적용
 

 

728x90

원문출처 : https://tech.chhanz.xyz/linux/2021/07/16/authselect-use-faillock/

 

[Linux] authselect 을 이용하여 faillock module 적용

RHEL v8 이후 변경점 RHEL v8 계열(CentOS/Oracle Linux/Rocky Linux) 부터는 이전과 같이 PAM 을 수정하여 설정하는 것을 권장하지 않습니다. [root@chhanz-c8-vm ~]# cat /etc/pam.d/system-auth ... # Generated by authselect on Fri J

tech.chhanz.xyz

 

RHEL v8 이후 변경점

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_tally2 module 이 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

faillock module 활성화.

[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

sssd Profile 를 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.

faillock module 을 이용한 보안 설정

기존에 pam_tally2등으로 주로 이용되던 계정 인증 실패에 대한 계정 잠금 정설이 faillock 으로 변경되면서 기능 활성화 및 정책 설정은 아래와 같이 해야됩니다.

faillock module 활성화

아래 명령을 통해 faillock module 을 활성화 합니다.

[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.conf is available from pam-1.3.1-8.el8.)

[root@chhanz-c8-vm ~]# cat /etc/security/faillock.conf | grep -v "#"
dir = /var/run/faillock
audit
silent
deny = 4

faillock.conf 가 수정이 되면 변경된 profile을 적용합니다.

[root@chhanz-c8-vm ~]# authselect apply-changes 
Changes were successfully applied.

faillock 보안 설정 테스트

현재 적용한 정책은 기본적으로 4회 계정 인증 실패시 계정이 LOCK 되고 600s(Default value) 후에 UNLOCK 됩니다.

[root@chhanz-c8-vm ~]# ssh test@localhost
test@localhost's password: 
Permission denied, please try again.

위와 같이 계정 인증 실패시 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.
without-nullock Do not add the nullock parameter to pam_unix

참고 자료

728x90

원문출처 : https://junu19.tistory.com/17

 

[리눅스/보안취약점] 계정 잠금 임계값 설정

참고 : 주요정보통신기반시설 기술적 취약점 분석ㆍ평가 방법 상세가이드 https://www.krcert.or.kr/data/guideView.do?bulletin_writing_sequence=35988&queryString=cGFnZT0yJnNvcnRfY29kZT0mc29ydF9jb2RlX25hbWU9JnNlYXJjaF9zb3J0PXRpdGxlX2

junu19.tistory.com

 

참고 :

주요정보통신기반시설 기술적 취약점 분석ㆍ평가 방법 상세가이드

https://www.krcert.or.kr/data/guideView.do?bulletin_writing_sequence=35988&queryString=cGFnZT0yJnNvcnRfY29kZT0mc29ydF9jb2RlX25hbWU9JnNlYXJjaF9zb3J0PXRpdGxlX25hbWUmc2VhcmNoX3dvcmQ9 

 

KISA 인터넷 보호나라&KrCERT

KISA 인터넷 보호나라&KrCERT

www.boho.or.kr

 

적용 OS : RHEL 8.6

 

U-03 (상) 1. 계정관리 > 1.3 계정 잠금 임계값 설정

 

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

 

728x90

원문출처 : https://sexyguylab.com/entry/rhel9pamfaillock

 

[RHEL9] 계정 잠금(pam_faillock) 설정

제가 근무하고 있는 회사는 CentOS 7을 대체하기 위한 Next OS로 상용 OS인 RHEL(Red Hat Enterprise Linux) 9를 준비하고 있습니다. 아래 내용은 RHEL9 도입을 위한 사전 체크 중 기존 CentOS 7 기반 설정에서 변경

sexyguylab.com

 

제가 근무하고 있는 회사는 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을 설정합니다. 두 파일 모두 변경해야 적용됩니다.

auth        required      pam_faillock.so preauth silent audit deny=5 unlock_time=300
...
auth        [default=die] pam_faillock.so authfail audit deny=5 unlock_time=300
...
account     required      pam_faillock.so

 2) RHEL8/9 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와 어떠한 차이가 있는지 정리한 내용을 포스팅했습니다.

728x90

원문출처 : https://prolinux.kr/52

 

Enterprise Linux 8 보안취약점 점검 변경 부분 정리

2. 패스워드 복잡도 OS 8부터는 pam_cracklib 대신에 pam_pwquality 모듈이 적용됩니다. 아래 정책을 꼭 따를 필요는 없으며 필요한 정책만 적용할 것 설정 파일[수정 후 저장] [root@localhost ~]# vi /etc/security/

prolinux.kr

 

OS 8부터는 pam_cracklib 대신에 pam_pwquality 모듈이 적용됩니다.
아래 정책을 꼭 따를 필요는 없으며 필요한 정책만 적용할 것

 

설정 파일[수정 후 저장]

[root@localhost ~]# vi /etc/security/pwquality.conf

minlen = 8 [주석(#) 제거] - 최소 패스워드 길이 설정 [6자 이하는 설정 안 됨, 최소 8 이상 권장]

dcredit = 1 [주석(#) 제거, 0 → 1] - 최소 필요한 숫자 수 [최소 1 이상 권장]

ucredit = 1 [주석(#) 제거, 0 → 1] - 최소 필요한 대문자 수 [최소 1 이상 권장]

lcredit = 1 [주석(#) 제거, 0 → 1] - 최소 필요한 소문자 수 [최소 1 이상 권장]

ocredit = 1 [주석(#) 제거, 0 → 1] - 최소 필요한 특수문자 수 [최소 1 이상 권장]

maxrepeat = 3  [주석(#) 제거, 0 → 3] - 최대 연속된 동일한 반복 수 [최소 3 이상 권장] (예 aaa,111 형태를 사용 못함)

maxclassrepeat = 3 [주석(#) 제거, 0 → 3] - 최대 연속 문자 반복 수 [최소 3 이상 권장] (예 abc,123 형태를 사용 못함)

usercheck = 1 [주석(#) 제거, 그대로] - 패스워드에 유저 ID가 포함되어 있는지 점검 [1 권장/0 체크 안 함]

(예 ID:LOVE PASS:LOVE123 형태를 사용 못함)

 

 

pwquality.conf 정보를 불러올 수 있게 PAM 모듈 추가 [이미 존재]

[ ROOT도 적용 시local_users_only → enforce_for_root 변경 ]

[root@localhost pam.d]# vi /etc/pam.d/system-auth

password requisite pam_pwquality.so try_first_pass local_users_only

 

 

 

[root@localhost pam.d]# vi /etc/pam.d/password-auth

password requisite pam_pwquality.so try_first_pass local_users_only

※ 이 설정은 ROOT 권한이 있는 사용자가 수정할 시에는 무시합니다.

일반계정 사용자가 패스워드가 만료 후 패스워드를 재설정했을 때 적용되는 정책입니다.

 


 

OS 8부터는 pam_tally2 더 이상 기본으로 사용되지 않으며 faillock으로 이용하게 됩니다.

동일하게 pam_faillock.so 모듈을 이용하며 일정 간격 동안 사용자별로 실패한 인증 시도 목록을 유지 관리하고 인증 실패가 연속적으로 거부될 경우 계정을 잠급니다.

 

 

설정 파일 [수정 후 저장](※ 이 줄의 순서는 매우 중요하므로 꼭 해당 라인 사이에 추가할 것)

[root@localhost pam.d]# vi /etc/pam.d/system-auth

# Generated by authselect on Mon Jun 15 04:15:03 2020
# 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_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 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

 

account     required        pam_unix.so

account     sufficient       pam_localuser.so

account     sufficient       pam_succeed_if.so uid < 1000 quiet

account     [default=bad success=ok user_unknown=ignore] pam_sss.so

account     required        pam_permit.so

account     required        pam_faillock.so [라인 추가]

..

 

※[옵션 설명]

audit - 사용자(일반계정) 감사를 활성화

deny - 실패 횟수를 의미하며 설정상 [=5]되어 있을 경우 5회 로그인 실패 시 계정 잠금

unlock_time - 계정이 잠길 시 유지되는 시간 [=600(10분)]초 단위이며 시간이 지나면 자동 해제됩니다. 설정하지 않으면 무조건 잠기게 되므로 [faillock] 명령어를 이용해 수동으로 해제

 

 

 

ROOT의 계정도 적용하고 싶을 경우는 아래의 옵션 추가

even_deny_root [예시]

auth        required        pam_faillock.so preauth silent audit deny=5 even_deny_root unlock_time=600

auth        [default=die]   pam_faillock.so authfail audit deny=5 even_deny_root unlock_time=600

설정 파일 [수정 후 저장](동일)

[root@localhost pam.d]# vi /etc/pam.d/password-auth

# Generated by authselect on Mon Jun 15 04:15:03 2020
# 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_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 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

 

account     required        pam_unix.so

account     sufficient       pam_localuser.so

account     sufficient       pam_succeed_if.so uid < 1000 quiet

account     [default=bad success=ok user_unknown=ignore] pam_sss.so

account     required        pam_permit.so

account     required        pam_faillock.so [라인 추가]

..

faillock 명령어를 통해 로그인 실패 확인 여부

전체 사용자 확인

[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

728x90

원문출처 : https://sa2da-sac.tistory.com/75

 

[U - 03a] 계정 잠금 임계값 설정 (가이드에 없는 내용)

[U - 03] 계정 잠금 임계값 설정 점검 필요성 로그인 실패에 대한 임계값이 설정되어 있지 않으면 반복되는 로그인 시도를 통해 비인가 사용자에게 비밀번호 유추 및 각종 공격에 취약해질 수 있

sa2da-sac.tistory.com

 

개요

  • 취약점 분석 [U - 03] 해당 내용에 대해 보안조치 사항을 추가적으로 기술함
  • <주요정보통신기반시설 기술적 취약점 분석 평가 방법 가이드>에는 기술되지 않은 내용
  • 해당 게시물은 Linux(RHEL)를 기준으로 기술함

 

목차

  1. 운영체제 버전에 따른 system-auth 설정 (pam_tally.so / pam_tally2.so 차이)

  2. pam 모듈 계정 임계 값 설정 순서

  3. system-auth, password-auth 차이
    콘솔 기반 계정 잠금 설정은 system-auth
    GUI 즉 x-window(GNOME ,KDE) 기반의 계정 잠금 설정은 password-auth 

 

 

 

1. 운영체제 버전에 따른 system-auth 설정

  • 주요정보통신기반시설 기술적 취약점 분석 평가 방법 가이드>에는 계정 임계 값 설정 시 pam_tally.so에 대한 설정 내용만 존재 

 

 

 

  • 하지만, 해당 내용은 OS 버전에 따라 다르게 설정되어야 함
    Cent OS 5 이하(RHEL 5) : pam_tally.so
    Cent OS 6 이상(RHEL 6) : pam_tally2.so

 

 

  • Cent OS 6 버전에 pam_tally.so 설정 시 모듈 오류 발생 (password-auth)

 

 

(오류 해결은 single 모드로 실행하여 password-auth 파일 수정)

 

 

 

  • 또한, 로그가 기록되는 파일도 다름
    pam_tally.so : /var/log/faillog
    (로그 출력 명령: pam_tally)

    pam_tally2.so : /var/log/tallylog
    (로그 출력 명령: pam_tally2)

 

 

 

 

 

  • 사용자 잠금 해제 (root 권한으로 수행)
    # pam_tally2 --user <사용자명> --reset

 

 

 

 

 

 

2. 비밀번호 임계값 설정 pam 모듈 순서

  • pam 모듈은 위에서 아래로 순차적으로 수행
  • 같은 모듈로 구성, 설정되어 있어도 순서가 바뀌면 전혀 다른 결과를 발생
  • 따라 순서에 맞게 모듈을 구성해야 함
  • 비밀번호 임계 값 설정은 각 섹션의 2번째 Line에 설정해야 함

 

 

 

 

 

 

 

3. system-auth, password-auth 차이

  • <주요정보통신기반시설 기술적 취약점 분석 평가 방법 가이드>에는 system-auth에 대해서만 기술 
  • system-auth 뿐 아니라 password-auth 설정에 대해서도 고려해야하며, 설정 내용 방법은 system-auth와 동일
  • system-auth, password-auth는 서로 다른 영역의 계정 임계 값을 설정하는 곳으로 임계 값 설정 시 상황에 맞게 설정해야 함

 

/etc/pam.d/system-auth

  • console 기반 로그인 시 계정에 대한 임계 값 설정
  • /etc/pam.d/su 의 인증에 대한 모듈로 su 인증 시 system-auth를 참조

 

/etc/pam.d/passwd-auth

  • GUI 즉 x-window(GNOME ,KDE) 기반 로그인 시 계정에 대한 임계 값 설정
  • /etc/pam.d/sshd 의 인증에 대한 모듈로 sshd 인증 시 password-auth를 참조

 

출처: https://sa2da-sac.tistory.com/75 [사2다의 보안공부 기록:티스토리]

728x90

원문출처 : https://infraboy.tistory.com/94

 

[Linux] RHEL 8 / Rocky 8 | OS 보안 설정 방법

Red Hat Enterprise Linux에서 파생된 리눅스 배포판 CentOS가 2021년 12월 31일 기준으로 수명이 다 되었다고 합니다. CentOS는 RHEL의 소스를 기반으로 철저하게 최신 버전의 RHEL을 포킹하는데 중점을 두어

infraboy.tistory.com

 

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

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid<1000 quiet
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 try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so try_first_pass use_authtok nullok sha512 shadow
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

 

 

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

등록된 Zone 정보를 보고 싶을 때 조회 명령어

# firewall-cmd --list-all-zone
# firewall-cmd --get-zones
# firewall-cmd --get-active-zones

등록된 source를 제거하고 싶을 때 (10.10.10.30 IP를 등록된 zone에서 제거할 때)
# firewall-cmd --permanent --zone=newzone --remove-service=10.10.10.30

4. root 계정 su 제한 설정

 # /etc/pam.d/su  파일에 주석 처리되어 있는 아래 부분 주석 해제 

(수정전) #auth           required        pam_wheel.so use_uid
(수정후) auth           required        pam_wheel.so use_uid

위와같이 저장 후 사용자 계정에서 root접속을 허여할 사용자 계정ID에 아래와 같이 명령어 실행

# usermod --groups wheel 사용자ID
(예시) # usermod --groups wheel infraboy

 

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"

728x90

.원문출처 : https://pinetreeday.tistory.com/219

 

LINUX Virbr0 어댑터 삭제하는 방법

LINUX Virbr0 어댑터 삭제하는 방법 1. virbr0는 가상 네트워크 스위치의 개념으로 사용될 때 사용되는 인터페이스입니다. libvirtd 데몬 (libvirtd)을 처음 설치하고 시작하면 가상 네트워크 스위치를 나

pinetreeday.tistory.com

 

LINUX Virbr0 어댑터 삭제하는 방법

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 명령어를 통해서 해당 서비스에 대해서 중지하도록 합니다.
[root@Linux net]# systemctl disable libvirtd.service
Removed symlink /etc/systemd/system/multi-user.target.wants/libvirtd.service.
Removed symlink /etc/systemd/system/sockets.target.wants/virtlogd.socket.
Removed symlink /etc/systemd/system/sockets.target.wants/virtlockd.socket.
▶ 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
▶ip addr을 통해서 해당 인터페이스의 IP가 삭제되었는지 확인하도록 합니다.
728x90

원문출처 : https://svrforum.com/recent/1396636?page=3

 

Ubuntu 24.04 LTS Desktop 원격 접속 설정하기(SSH,RDP)

안녕하세요 달소입니다. 앞서 Ubuntu 24 Desktop 버전을 설치해봤는데 설치후에 원격으로 접속하기 위한 셋팅방법입니다. 기본설치로 진행할경우 ssh도 없고 RDP도 없어서 설치후에 바로 진행해주는

svrforum.com

 

앞서 Ubuntu 24 Desktop 버전을 설치해봤는데 설치후에 원격으로 접속하기 위한 셋팅방법입니다.

 

기본설치로 진행할경우 ssh도 없고 RDP도 없어서 설치후에 바로 진행해주는게 가장좋습니다.

 

ssh 설치하기

터미널 실행 -> sudo su로 root 권한 획득 후 아래명령어로 패키지들을 설치해줍니다.
편의성을 위해 net-tools도 같이해주세요.

apt install ssh net-tools
복사

 

그리고 ifconfig를 통해 ip를 확인해주고 ssh로 접속해주시면됩니다.

 

 

 

Desktop 원격접속(RDP)

사실 이것때문에 Desktop 버전을 설치해봤습니다.

그전에는 추가적으로 귀찮은부분이 많았는데 이제 별도세션으로 연결된다고해서요!

 

 설정 -> 원격 데스크톱에서 설정가능합니다.

 

데스크탑공유랑 화면공유가 있습니다.

 

데스크탑 공유는 콘솔과 같은화면을 보는 세션이고 원격 로그인은 별도의 세션이 연결되는 원격데스크탑입니다.

 

 

둘다 접속은 RDP를 통해합니다.

 

 

화면이 공유되어 컨트롤 됩니다.

 

 

 

 

원격로그인이 별도의 세션으로 접속됩니다.

 

 

 셋팅해놓고 윈도우에서 접속을 시도합니다.

 

 

 

 

 확실히 CPU를 많이먹긴하네요..

 

세션은 하나만 유지되기때문에 기존 VM의 콘솔은 끊겨있습니다.

 

 

 

확실히 깔끔하게 잘바뀌었네요.

패스워드도 개별로 지정할 수 있고 옵션이 많은것도 인상적입니다.

728x90

원문출처 : https://svrforum.com/recent/1396755?page=3

 

Ubuntu 24.04 LTS 고정 IP설정하기

안녕하세요. 달소입니다. 이번글에서는 앞서 설치한 Ubuntu 24에서 고정 ip를 설정하는방법입니다. 기본적으로 Ubuntu 20인가부터 netplan을 사용하기 시작했기때문에 설정방법은 모두 대동소이하나

svrforum.com

 

이번글에서는 앞서 설치한 Ubuntu 24에서 고정 ip를 설정하는방법입니다.

기본적으로 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
복사

 

설정 후 netplan apply로 적용을 해주시면되는데

주의할점은 기존연결한 ip가 구 ip라면 연결이 끊기기때문에 가급적 콘솔에서 작업해주시는게 좋습니다.

 

 

ip가 바뀌면 아래처럼 다시 로그인하실 수 있습니다.

 

728x90

원문출처 : https://yongeekd01.tistory.com/103

 

Rockylinux rc.local 설정하기(rc-local.service, WantedBy)

rc.local은 리눅스 시스템에서 부팅 시 자동으로 실행되는 스크립트 파일입니다. 이 파일은 시스템이 부팅될 때마다 지정된 명령이나 스크립트를 실행하도록 설정할 수 있으며 초기 부팅 시에 필

yongeekd01.tistory.com

 

rc.local은 리눅스 시스템에서 부팅 시 자동으로 실행되는 스크립트 파일입니다.

이 파일은 시스템이 부팅될 때마다 지정된 명령이나 스크립트를 실행하도록 설정할 수 있으며 초기 부팅 시에 필요한 설정이나 사용자 정의 작업을 수행하기 위해 자주 사용됩니다.

 

rc.local 파일의 경로는 주로 /etc/rc.local 이고 루트 권한을 가진 사용자만 수정할 수 있습니다.

 

이 파일은 시스템의 멀티유저 런레벨에서 실행되는 마지막 스크립트로 실행됩니다.

 

최신 리눅스 시스템에서는 보안 및 성능 문제로 인해 rc.local의 사용을 권장하지 않는 경우가 있습니다.

대신 systemd를 사용하여 서비스를 관리하거나 cron 작업을 이용하여 작업을 예약하고 실행하는 것이 더 일반적으로 권장하고 있다고 합니다.

 

rockylinux에서도 기본적으로 rc.local은 동작하지 않도록 되어 있기 때문에 이를 수동으로 enable 해주어야 이 스크립트를 사용할 수 있습니다.

 

여기서는 rc.local 설정하고 자동으로 docker container하나를 기동시키는 스크립트를 실행 해보도록 하겠습니다.

 

1. 설정 확인

 

>systemctl status rc-local.service

 

 

데몬이 active 되어 있지 않은걸 확인할  있습니다.

 

2. 권한 설정 

 

다음 2 파일의 실행 권한을 할당합니다.

/etc/rc.local

/etc/rc.d/rc.local

 

>ll /etc/rc.local

lrwxrwxrwx. 1 root root 13  2 22 01:52 /etc/rc.local -> rc.d/rc.local

 

> ll /etc/rc.d/rc.local

-rw-r--r--. 1 root root 530  8 23 10:58 /etc/rc.d/rc.local

 

>chmod 777 /etc/rc.d/rc.local

>ll /etc/rc.d/rc.local

-rwxrwxrwx. 1 root root 530  8 23 10:58 /etc/rc.d/rc.local

 

이제 enable 시켜보겠습니다.

 

[root@localhost docker]# systemctl enable rc-local.service

 

뭐라고 잔뜩 나옵니다.

 

The unit files have no installation config (WantedBy, RequiredBy, Also, Alias

settings in the [Install] section, and DefaultInstance for template units).

This means they are not meant to be enabled using systemctl.

Possible reasons for having this kind of units are:

1) A unit may be statically enabled by being symlinked from another unit's

   .wants/ or .requires/ directory.

2) A unit's purpose may be to act as a helper for some other unit which has

   a requirement dependency on it.

3) A unit may be started when needed via activation (socket, path, timer,

   D-Bus, udev, scripted systemctl call, ...).

4) In case of template units, the unit is meant to be enabled with some

   instance name specified.

 

WantedBy 설정해줘야한다는 이야기입니다.

 

3. WantedBy 설정 추가 

/usr/lib/systemd/system/rc-local.service 파일에 다음을 추가해 줍니다.

 

[Install]

WantedBy=multi-user.target

 

 

다시 enaable 등록하고 확인해 봅니다.

 

> systemctl enable rc-local.service

 

systemctl enable rc-local.service

Created symlink /etc/systemd/system/multi-user.target.wants/rc-local.service → /usr/lib/systemd/system/rc-local.service.

 

> systemctl list-unit-files |grep rc.local

rc-local.service                           enabled

 

정상 적으로 등록 되었습니다. 이제 재부팅 후에도 데몬이 실행될 것입니다.

 

4. 스크립트에 실행할 내용 등록해보기 

 

rc.local 파일에 docker container 실행시키는 스크립트를 하나 만들어서 추가 하였습니다.

 

 

 

5.재부팅  확인

 

아래 처럼 재부팅후에 스크립트를 통해  실행 되었습니다.

 

728x90

728x90

참고 URL : https://pve.proxmox.com/wiki/User_Management

 

User Management - Proxmox VE

A resource pool is a set of virtual machines, containers, and storage devices. It is useful for permission handling in cases where certain users should have controlled access to a specific set of resources, as it allows for a single permission to be applie

pve.proxmox.com

 

# pveum user add <ID>@pve -comment "<ID>"

# pveum passwd <ID>@pve

# pveum group add admin -comment "System Administrators"

# pveum acl modify / -group admin -role Administrator

# pveum user modify <ID>@pve -group admin

 

728x90

원문출처 : https://www.vinchin.com/vm-backup/export-import-proxmox-vm.html

 

How to Export and Import VM in Proxmox? | Vinchin Backup

This post talks about Benefits of exporting and importing VM in Proxmox and How to export and import a Proxmox VM.

www.vinchin.com

 

목차
  • Proxmox에서 VM 내보내기 및 가져오기의 이점
  • Proxmox VM을 내보내고 가져오는 방법은 무엇입니까?
  • Vinchin을 사용하여 Proxmox VM을 백업하고 복원하는 방법은 무엇입니까?
  • Proxmox 내보내기 및 가져오기 FAQ
  • 결론
강력한 VM 백업 솔루션을 찾고 계십니까? Vinchin 백업 및 복구를 사용해 보세요 !↘ 무료 평가판 다운로드

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 가져오기가 포함됩니다.

자세한 단계는 다음과 같습니다.

가상 머신 백업

1. VM 선택 >  백업 클릭 > 지금 백업 누르기

2. 백업 디자인 > 백업 클릭

TASK OK가  나타나면  백업 작업이 완료된 것입니다.

WinSCP를 사용하여 백업 다운로드

1. WinSCP를 두 번 클릭하고   팝업 페이지에  호스트 이름 , 사용자 이름 , 비밀번호를 입력하고 > 로그인을 클릭합니다.

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의 작동은 몇 가지 간단한 단계만으로 매우 간단합니다. 

Vinchin Backup & Recovery에서 VM을 백업하려면

1. 호스트에서 VM을 선택하기만 하면 됩니다.

2.그런 다음 백업 대상을 선택합니다. 

3.전략 선택

4.마지막으로 작업을 제출합니다.

Vinchin Backup & Recovery에서 VM을 복원하려면

1. 복원 지점 선택

2. 복원 대상 선택

3. 복원 전략 선택

4. 마지막으로 작업을 제출합니다.

위의 단계 중 하나라도 확실하지 않은 경우 Proxmox VM을 백업  하고 대상 호스트에서 VM을 복원하는 방법을 보여주는 비디오 자습서가 있습니다 . 또한 Vinchin은 사용자가 실제 환경에서 백업 및 마이그레이션 기능을 완벽하게 경험할 수 있도록  60일 무료 평가판을  제공합니다. 자세한 내용은 Vinchin에  직접 문의하거나  현지 파트너에게 문의 하세요 .

Proxmox 내보내기 및 가져오기 FAQ

1. 가상 머신을 다른 형식으로 내보낼 수 있나요?

A: 예, 다양한 가상화 플랫폼은 다양한 내보내기 형식을 지원합니다. 일반적인 형식에는 OVF(개방형 가상화 형식) 및 VMDK(VMware 가상 디스크 형식)가 있습니다. 가져오려는 대상 플랫폼에 따라 적절한 내보내기 형식을 선택할 수 있습니다.

2. 가져오고 내보낸 가상 머신이 다른 가상화 플랫폼과 호환됩니까?

A: 가상 머신 가져오기 및 내보내기는 일반적으로 가상화 플랫폼에 따라 다릅니다. 다양한 가상화 플랫폼은 다양한 VM 구성과 디스크 형식을 사용합니다. 따라서 한 플랫폼에서 다른 플랫폼으로 VM을 직접 가져오려면 형식 변환이나 기타 호환성 조정이 필요할 수 있습니다.

결론

Proxmox에서 가상 머신 내보내기 및 가져오기를 이해하는 것은 가상화된 환경을 효과적으로 관리하는 데 중요합니다. WinSCP는 중요한 비즈니스 요구 사항에 있어 작동 용이성을 제공하는 반면, Vinchin 백업 및 복구는 데이터 무결성과 신뢰성을 보장하는 전문가급 솔루션을 제공합니다.

728x90

원문출처 : https://ploz.tistory.com/entry/proxmox-%EB%8B%A4%EB%A5%B8-%EC%84%9C%EB%B2%84%EB%A1%9C-VM-migration%EC%9D%B4%EC%A0%84%ED%95%98%EA%B8%B0

 

[proxmox] 다른 proxmox 서버로 VM migration(이전)하기

Cluster 되어 있지 않거나 PBS(proxmox backup server)를 통하지 않고 vzdump & qmrestore 를 이용하여 다른 proxmox 서버로 VM을 이전한다. vm dump GUI 상에 Backup을 사용하여 dump를 뜨거나 CLI상에서 dump를 뜰 수 있다.

ploz.tistory.com

 

Cluster 되어 있지 않거나 PBS(proxmox backup server)를 통하지 않고 vzdump & qmrestore 를 이용하여 다른 proxmox 서버로 VM을 이전한다.

 

 

 

vm dump

GUI 상에 Backup을 사용하여 dump를 뜨거나 CLI상에서 dump를 뜰 수 있다.

방식은 동일 하므로 GUI에서 Backup 하는 방법으로 진행한다.

 

VM - Backup - Backup now

 

 

Backup이 진행 될 때 상태창에 JOB 명령어와 저장되는 위치를 확인 할 수 있다.

 

 

 

 

dump 파일 복사

'/var/lib/vz/dump/vzdump-qemu-103-2023_04_25-17_21_32.vma.zst' 경로에 파일을 이전하고자 하는 서버에 복사한다.

위치는 아무곳이나 상관없다.

 

scp vzdump-qemu-103-2023_04_25-17_21_32.vma.zst root@<another proxmox ip>:<path/to/directory>

 

 

 

vm dump restore

이전하고자 하는 proxmox 에 사용하지 않는 VM ID 로 restore 한다.

주의. 스토리지 경로가 다르다면 옵션을 이용하여 스토리지를 지정하여 준다.

qmrestore vzdump-qemu-103-2023_04_25-17_21_32.vma.zst <VM ID> -- storage <storege ID>

 

 

 

restore 가 완료 된 후 'vzdump-qemu-103-2023_04_25-17_21_32.vma.zst' 파일은 삭제해도 된다.

728x90

원문출처 : https://blog.dalso.org/article/proxmox-cluster-not-ready-no-quorum-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0

 

Proxmox Cluster not ready - no quorum? 해결하기 - 달소씨의 하루

안녕하세요. 달소입니다. 이번글은 Proxmox에서 Cluster를 이용한 환경구성에서 Node 한개가 꺼져있을때 아래와같이 발생하는 문제 해결방법입니다. Proxmox에서는 node수에 따라서 아래처럼 vote수와 quo

blog.dalso.org

 

이번글은 Proxmox에서 Cluster를 이용한 환경구성에서 Node 한개가 꺼져있을때 아래와같이 발생하는 문제 해결방법입니다.

Proxmox에서는 node수에 따라서 아래처럼 vote수와 quorum이 존재하는데요.

quorum은 분산시스템. 즉, 클러스터에서 작업을 수행하기위해 분산트랜잭션이 획득해야하는 최소 투표수를 의미합니다.

그러니까 Proxmox에서 Cluster에 Node 2대가 있다면 이 quorum도 당연히 2가 설정되어 두 노드가 온라인 상태여야만 명령을 내릴수있다는게 됩니다.

근데 저의 환경에서는 굳이 Sub Proxmox를 24시간 온라인 상태로 켜놓을 이유가 없습니다.. 전기세만 들어가지..

해결방법

구글링해보니 해당 Qourum을 1로 설정하는방법이 있더군요.!

이렇게 설정을하게되면 Node가 하나만 켜있더라도 정상적으로 명령을 실행할 수 있습니다.

Proxmox 의 쉘로 진입해서 아래와같이 명령어를 입력해줍니다.

pvecm expected 1

명령 후 pvecm status 로 확인해보면 quorum이 1로 바뀐걸 확인하실 수 있고 

 

vm 실행/종료 등과 같이 모든 명령이 잘 작동하는걸 확인하실 수 있습니다.

 

728x90

원문출처 : https://it-svr.com/proxmox-ve-node-to-node-migration/

 

Proxmox VE 노드간 VM/LXC 이전(복제)하기.

안녕하세요. 달소입니다 ZFS 관련 글을 쓰려다가.. 앞서 클러스터를 미리 만들어놨기때문에 이어서 노드에서 노드간에 VM 이전 / 복제를 한번 진행해보려고 합니다. 클러스터 구성을 위해 ESXi 밑

it-svr.com

 

ZFS 관련 글을 쓰려다가.. 앞서 클러스터를 미리 만들어놨기때문에 이어서 노드에서 노드간에 VM 이전 / 복제를 한번 진행해보려고 합니다.

클러스터 구성을 위해 ESXi 밑에 테스트서버로 구성한 Proxmox Node 2대이기때문에 중첩가상화로 VM생성은 하지않고 LXC Container를 통해서 에제를 진행해보겠습니다.

사전 준비사항

Proxmox Cluster 구성(Node 1,2)

 

 

LXC 컨테이너 생성

 

 

노드간 VM(LXC) 이전하기.

먼저 가장중요한점은 노드간 VM/LXC 이전의 경우 라이브로 이전이 불가능합니다.(공식포럼에서도 데이터 무결성을 위해 반드시 정지 후 이전을 강조합니다.)

혹 무중단으로 이전해야된다고한다면 복제 -> 이전 과정으로 복제됐을때의 기록으로 무중단 이전이 가능하긴 합니다.(혹은 스냅샷 백업 후 복구)
물론 이경우에는 복제 후 쌓이는 데이터에 대해서 약간의 데이터 손실이 있을 수 있습니다.

이전방법은 매우 쉽습니다.

운영중인 VM/LXC 컨테이너를 중지시키고 우클릭 후 이전을 눌러주시면 자연스럽게 해당 컨테이너가 종료되고 노드간 이전이 완료되면 자동으로 그 노드에서 컨테이너가 바로 실행됩니다.

소스노드와 대상노드 확인

자동으로 다시시작되기 때문에 따로 해줄건없습니다 ㅎㅎ
마찬가지로 백업 복구도 가능하기때문에
여러대의 서버를 운영중이라면 아주 유용하게 사용할수있을듯합니다.

백업 복구 응용하면 이렇게 무중단으로도 이전가능합니다

728x90

원문출처 : https://it-svr.com/proxmox-qemu-agent-install/

 

Proxmox 에서 QEMU Agent 설치하기.

안녕하세요. 달소입니다. ESXi에서 Proxmox 로 넘어오신분들이라면 아마 VM-Tools에 대해서 많이들어보셨을거라 생각합니다. 기본적으로 가상머신을 좀더 효율적으로 사용할 수 있게 도와주는 툴인

it-svr.com

 

ESXi에서 Proxmox 로 넘어오신분들이라면 아마 VM-Tools에 대해서 많이들어보셨을거라 생각합니다.

기본적으로 가상머신을 좀더 효율적으로 사용할 수 있게 도와주는 툴인데요. 이를통해서 Host 와 Guest 간에 여러가지 기능들을 할 수 있도록 지원해줍니다.(ACPI,Monitoring 등등)

qemu-guest-agent란?

qemu-guest-agent는 게스트에 설치되는 도우미 데몬입니다. 호스트와 게스트 간에 정보를 교환하고 게스트에서 명령을 실행하는 데 사용됩니다.

Proxmox VE에서 qemu-guest-agent는 주로 두 가지 용도로 사용됩니다.

  1. ACPI 명령이나 Windows 정책에 의존하는 대신 게스트를 올바르게 종료하려면
  2. 백업을 만들 때 게스트 파일 시스템을 고정하려면(Windows의 경우 볼륨 섀도 복사본 서비스 VSS 사용)

설치방법은 OS별로 상이하나 Ubuntu 기준으로 말씀드리겠습니다.

먼저 Guest에서 QEMU Agent를 사용할수있도록 옵션에서 활성화시켜주세요!

VM -> 옵션 -> QEMU GuestAgent를 사용설정.

그리고 플랫폼에 따라 설정을 진행합니다.

Ubuntu의 경우 apt-get install qemu-guest-agent

Redhat 계열 OS의 경우 yum install qemu-guest-agent

입니다. 윈도우는 맨아래 출처에서 드라이버를 다운로드받고설치해주셔야합니다.

설치후에는 agent를 실행시켜주시면 자동으로 인식합니다.

systemctl start qemu-guest-agent

다시 VM 대시보드를 확인해보면 아래처럼 안보이던 ip도 보이고 시스템 종료를 눌렀을때 안정적으로 시스템이 종료됩니다.

종료도 잘됩니다.

728x90

원문출처 : https://it-svr.com/proxmox-cluster-node/

 

Proxmox Cluster를 이용한 Node 연결하기.

안녕하세요. 달소입니다. 이번에는 Proxmox의 핵심기능중 하나인 Cluster입니다. ESXi에서 vMotion으로 할수있는  데이터센터에서 데이터센터로 노드간 VM이동등 서버여러대의 관리부터 각종 기능까지

it-svr.com

 

이번에는 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이 있으면 가입이 불가능합니다.

쉽게 클러스터가 연결되는걸 확인하실수있습니다.

728x90

원문출처 : https://babo-it.tistory.com/89

 

Proxmox Cluster 제거

이번에는 Proxmox Cluster 제거 방법에 대해서 알아보겠습니다 Proxmox에서 클러스터 제거는 웹에서 불가합니다. 버튼 역시 찾아 볼수 없습니다. 다른 하나는 제가 못찾은 거 일 수도 있습니다. 하지만

babo-it.tistory.com

 

Proxmox에서 클러스터 제거는 웹에서 불가합니다. 버튼 역시 찾아 볼수 없습니다. 다른 하나는 제가 못찾은 거 일 수도 있습니다. 하지만 일단 찾지 못하였으니. 명령어로 제거 하는 방법을 행하여 보도록 하겠습니다.

아래 명령어로 proxmox의 클러스터 정보를 확인 할 수 있습니다.

pvecm status

노드 정보를 확인 했으면 아래와 같이 노드를 보겠습니다.

이중 우리는 4번째 노드를 제거 할 것입니다.

root@empathize:~# pvecm nodes

Membership information
----------------------
    Nodeid      Votes Name
         1          1 empathize (local)
         2          1 empathize2
         3          1 empathize3
         4          1 empathize4

 

제거 명령어는 아래와 같습니다.

4번째 노드는 제거 되었습니다. 이제 확인을 해봐야 겠죠

root@empathize:~# pvecm delnode empathize4
Killing node 4
root@empathize:~# pvecm nodes

Membership information
----------------------
    Nodeid      Votes Name
         1          1 empathize (local)
         2          1 empathize2
         3          1 empathize3

제거된 화면

지금까지 proxmox에서의 노드 제거 방법에 대해 알아 봤습니다.

여기서 알아야 할 명령어는 몇개 되지 않습니다.

  • 클러스터의 상태 정보 : pvecm status
  • 클러스터 노드 : pvecm nodes
  • 클러스터에서 노드 제거 : pvecm delnode [노드명]

proxmox 사용하시는 분들에게 유용한 자료가 되었으면 합니다.

 

그리고 전체 클러스터 삭제에대해서도  잠시 알고 넘어 가도록 하겠습니다.

systemctl stop pve-cluster corosync
pmxcfs -l
rm /etc/corosync/*
rm /etc/pve/corosync.conf
killall pmxcfs
systemctl start pve-cluster

위와 같이 해 주시면 전체 클러스터가 삭제 될 것입니다.

728x90

원문출처 : https://babo-it.tistory.com/88

 

proxmox 클러스터 연결

안녕하세요. TED입니다. 이번에는 proxmox의 클러스터 연결을 하는 방법을 알아보려 합니다. 클러스터 연결은 상당히 쉽습니다. 웹에서 연결을 하는 방법에 대해서 알아 보겠습니다. 우선 먼저 아

babo-it.tistory.com

 

클러스터 연결은 상당히 쉽습니다. 웹에서 연결을 하는 방법에 대해서 알아 보겠습니다. 우선 먼저 아래와 같은 경로로 찾아 들어갑니다.

Datacenter > Cluster > Create Cluster

아래와 같이 클러스터 연결을 만들어 볼 수 있습니다. 만들고 나면 이제 다른 Nodes를 연결해 주면 됩니다.

이제 그럼 다른 노드에서 어떻게 붙여야 하는지 보겠습니다.

저는 4개의 노드를 사용한다고 지난번에 한번 이야 했던 적이있습니다. 3개는 이미 클러드터로 연결되었고 1대만 남겨둔 상황이였는데요

그럼 이 한대 마저도 클러스터 연결을 하겠습니다. Datacenter > Cluster > Join Information 을 눌러주면 아래와 같은 화면이 나옵니다. 

그리고 Copy Informaiton을 해줍니다. 그런 이후 신규로 추가해줄 노드로 돌아 갑니다.

DataCenter > Cluster > Join Cluster 로 가서 아까 복사해준 Cluster Information 을 아래와 같이 붙여 넣어 연결해 줍니다.

cluster 명은 empathize로 하였습니다 해당 클러스터에 연결해주기를 누르면 끝납니다.

아래와 같이 3개의 node에서 4개의 node로 변경 된 것을 확인 할 수 있습니다.

추가 전

추가 후

클러스터 추가는 글로 쓰니 조금 복잡해 보이는데 한두번 해보면 아주 쉽게 하실 수 있습니다.

하지만 클러스터를 제거 하려면 웹에서 제가가 불가능 합니다.

728x90

원문출처 : https://it-svr.com/proxmox-backup-server-nfs-datastore/

 

Proxmox Backup Server 에서 시놀로지/헤놀로지 NFS 데이터 저장소 사용 설정하기.

안녕하세요. 달소입니다. 이번글은 앞서 설치한 PBS 에서 데이터스토어로 NFS를 사용하는방법입니다. Proxmox 백업을 위한 PBS(Proxmox Backup Server)설치하기.안녕하세요. 달소입니다. 앞서 Proxmox 를 설명

it-svr.com

 

과정이 꽤나 복잡하나 잘 따라만 하신다면 크게 어려움없이 설정하실 수 있을거라 생각합니다.

시놀로지/헤놀로지에서 NFS 저장소 만들기

먼저 사용하고 계신 시놀/헤놀에서 NFS 저장소를 만들어주세요.

공유폴더를 만들고 NFS 접근권한셋팅을해주겠습니다.

생성한 공유폴더에 편집 -> NFS 권한 -> PBS 서버의 ip를 입력해주고 설정합니다.

그리고 아래 NFS 마운트 경로를 미리 확인해주세요.

이제 PBS에서 해당 NFS를 마운트하겠습니다.

PBS에서 NFS 마운트하기

먼저 shell로 이동한뒤 기본패키지를 설치해줍니다.

기본적으로 패키지가 설치되어있긴하나 이왕이면 최신버전으로 ㅎㅎ

그리고 아래 과정들을 통해 마운트할 디렉터리를 만들고 NFS를 마운트해주세요.
*volume2 이하 경로는 개인마다 다릅니다.

mkdir -p /data/PBS_NFS
chown backup:backup /data/PBS_NFS
chmod 775 /data/PBS_NFS
mount 192.168.1.30:/volume2/Proxmox_PBS /data/PBS_NFS
touch /data/PBS_NFS/test.txt

시놀/헤놀에서도 아래처럼 test.txt 파일이 생성된걸 확인하실 수 있습니다.

이제 재부팅시에도 NFS가 자동으로 마운트 되도록  아래 명령어로 fstab에 추가설정을진행해줍니다.

echo "192.168.1.30:/volume2/Proxmox_PBS /data/PBS_NFS nfs defaults 0 0" >> /etc/fstab

PBS에 NFS 데이터 저장소 추가하기

PBS 메인 UI로 가서 데이터스토어 추가를 해주신뒤 아래처럼 내용을 작성해줍니다.

Backing Path 는 마운트된 경로입니다.

이렇게 데이터스토어를 생성해도 아래처럼 Permission deined가 나오신다면 chmod 755로 NFS쪽 권한부여를 추가로해주시면됩니다

사용자계정을만들어서 권한부여를 진행하겠습니다.

구성 -> 접근관리 -> 사용자 관리 -> 추가 -> 계정 추가.

계정이 생성되었으니 이제 권한부여를 진행하겠습니다.

이제 Proxmox Backup Server를 Proxmox VE 에 추가할수있도록 셋팅해보겠습니다.

미리 쉘에서 아래 명령어를 통해 인증서의 Fingerprint값을 미리 복사해주세요.

proxmox-backup-manager cert info | grep Fingerprint

Proxmox VE에 PBS 서버 추가하기

아래처럼 내용을 잘 추가해주세요.

요렇게 잘 보이시면됩니다!

백업은 항상그렇듯 VM에서 데이터스토어만 지정해주시면 잘됩니다.

증분백업도 잘되는군요 ㅎㅎ

참조 : https://crepaldi.us/2021/03/07/how-to-setup-nfs-on-synology-nas-for-proxmox-backup-server-to-use-as-datastore/

728x90

Proxmox를 처음 설치하고나서 네트워크 설정을 해줘야 정상적으로 작동한다

/etc/resolv.conf

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
728x90

 

라즈베리파이 업데이트

$ 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".



라즈베리파이 재부팅

$ sudo reboot
728x90

How to set or change the MAC addresses associated with a FortiGate interface

Description
The following instructions can be used to set or change the MAC address associated with a FortiGate interface:
 
Set the MAC Address on the Interface

Execute the commands:

FGT# config sys int
FGT# edit <interface>
FGT# set macaddr <MAC address>
FGT# end

Restart the routing engine on the FortiGate.

FGT# exec router restart

<아래는 설정된 MAC 확인 명령어>


FGT# diagnose hardware deviceinfo nic wan1 | grep HW
Current_HWaddr           90:6c:ac:4c:d4:da
Permanent_HWaddr           90:6c:ac:4c:d4:da

728x90

원문출처 : https://ebt-forti.tistory.com/396

 

VIP에서 Service 설정 (Virtual IP with services)

VIP 설정에서 "Optional Filter"에 "Service" 설정이 있다. 위와 같이 설정한 경우, 외부에서 [192.168.170.55:8000], [192.168.170.55:8008], [192.168.170.55:8080]으로 접속하면 내부의 [192.168.11.110:80]으로 전달한다. 만약

ebt-forti.tistory.com

 

VIP 설정에서 "Optional Filter" "Service" 설정이 있다.

위와 같이 설정한 경우, 외부에서 [192.168.170.55:8000], [192.168.170.55:8008], [192.168.170.55:8080]으로 접속하면 내부의 [192.168.11.110:80]으로 전달한다.

 

만약 아래 처럼 "Port Forwarding" 설정이 없다면 다음과 같이 전달된다. (단. 방화벽 정책에 해당  port에 대한 허용 정책은 필요하다)

[192.168.170.55:8000] → [192.168.11.110:8000]

[192.168.170.55:8008]  [192.168.11.110:8008] 

[192.168.170.55:8080]  [192.168.11.110:8080]

단, "Service" 항목에서 설정한 port외의 다른 port로 접근하면 VIP는 동작하지 않는다. 

728x90

원문출처 : https://ebt-forti.tistory.com/426

 

Static URL Filter를 사용하여 Youtube 차단

WebFIlter 프로파일에서 사용자가 직접 설정할 수 있는 Static URL Filter 기능을 이용하여 Youtube를 차단하는 방법 이다. 브라우저 캐시로 우회하거나 검색 엔진을 통해 YouTube 동영상을 검색하는 것을

ebt-forti.tistory.com

 

WebFIlter 프로파일에서 사용자가 직접 설정할 수 있는 Static URL Filter 기능을 이용하여 Youtube를 차단하는 방법 이다. 

브라우저 캐시로 우회하거나 검색 엔진을 통해 YouTube 동영상을 검색하는 것을 피하기 위해 아래의 두 URL을 regex 방식으로 추가해야 한다.

".*googlevideo.*" 

".*youtube.*"

YouTube 웹사이트는 계속 접속가능하더라도, 동영상이 플레이 되지 않는다.

 

Google 크롬 브라우저의 경우 아래의 링크를 참조하여 QUIC를 차단해야 한다.

https://ebt-forti.tistory.com/57

 

Youtube가 차단되면 webfilter 로그에서 확인 가능하다.

 

728x90

원문출처 : https://ebt-forti.tistory.com/489

 

메일보내는 SMTP 서버를 Gmail로 설정하는 방법

FortiGate가 FortiToken 발급이나 alert email 또는 Automation Stitch 기능을 이용하여 메일을 보낼때 default로는 FortiNet의 "notification.fortinet.net" 메일서버를 이용하여 보낸다. 가끔 "notification.fortinet.net" 메일 서

ebt-forti.tistory.com

 

FortiGate가 FortiToken 발급이나 alert email 또는 Automation Stitch 기능을 이용하여 메일을 보낼때 default로는 FortiNet의 "notification.fortinet.net" 메일서버를 이용하여 보낸다.

가끔 "notification.fortinet.net" 메일 서버를 스팸으로 판단하여 수신하지 못하는 경우가 있다.

이를 경우, 다른 메일서버를 이용하여 메일을 보낼 수 있도록 메일서버를 변경할수 있는데 gmail로 변경하는 방법이다.

 

FortiGate가 메일을 보내기 위해 Gmail에 접속할때 보안이 낮게 설정되어 있어 접속이 불가능 하기 때문에 메일을 보낼수 없다. 

보내고자 하는 Gmail 계정을 '앱 비밀번호'를 사용하도록 수정하여야한다. 이렇게 하기위해서는 먼저 Gmail 계정에 2-factor 인증을 사용해야만 한다.

 

1. 먼저 GMail에 로그인해서, 아래 링크를 통해 "보안 > 앱 비밀번호" 를 접속한다.

    https://myaccount.google.com/security

 

2.  앱은 "메일"을 선택하고, 기기는 아래와 같이 선택한다.

 

3. 앱에서 사용할 16자리 비밀번호를 표시하는데, FortiGate설정에서 사용할것이기 때문에 꼭 기억해 놓아야 한다.

 

4. FortiGate의 System > Setting 메뉴에서 메일서버를 Gmail로 설정한다. 이때 사용자의 비밀번호를 위에서 받은 16자리 앱 비밀번호를 사용한다.

 

 

위와 같이 설정하면 FortiGate가 Gmail을 통해 FortiToken 발급이나 alert email 또는 Automation Stitch  메일을 보낼수 있다.

+ Recent posts