이전 글(아치리눅스 설치 과정 16 - 콘솔창 기본 에디터 nano로 설정)에 이어...

 

https://wiki.archlinux.org/title/General_recommendations

의 내용을 따라갈 겁니다.

 

이번 글은 General recommendations 문서 내용 중

1-2. Security 항목에서 꼭 필요해 보이는 것만 골라 따라합니다.
중요치 않은 것들은 나중에 아치위키 문서 보면서 직접 해보세요.

 

Security(보안)

(참고 문서 : https://wiki.archlinux.org/title/Security )

 

아치리눅스는 설치 과정이든 설치 직후든 root 계정부터 출발합니다.
저는 인터넷공유기 방화벽이 막아주기 때문에 루트계정 비밀번호를 쉽게 해뒀는데,
아치위키의 추천은 "긴 암호를 사용하는 것이 중요합니다. 취약한 해시 알고리즘으로 인해 8자 암호 해시가 단 몇 시간 만에 손상될 수 있습니다." 라고 되어 있더군요. 니모닉 구문(mnemonic phrase)을 쓰지는 못하겠지만 이런저런 조치를 해둘 겁니다.

 

▲ /etc/shadow 경로에 패스워드가 암호화되어 저장되어 있지만 불안하다 이거죠.

 

리눅스 root / 로컬계정 비밀번호 강력하게 바꾸기

참고문서 2.3 에 나온 설명을 따라 하겠습니다.

리눅스 계정의 패스워드를 바꾸는 명령어는 passwd 지요.
위 스샷에서 보셨듯이, 명령어를 쓰면 패스워드가 /etc/shadow 파일에 암호화되어 저장됩니다.

 

passwd root

passwd 계정명

식으로 입력해서 root 계정, 로컬계정(사용자) 비밀번호를 강력하게 설정합니다.

 

root계정 로그인 못하게 잠그기

(참고 문서 : See also #Restricting root(7.2). https://wiki.archlinux.org/title/Security#Restricting_root )

 

아래 스샷을 보면 passwd 명령어에 --lock 옵션을 주면 해당 계정은 비밀번호 입력하더라도 로그인 안되도록 잠긴다고 합니다. 루트계정 로그인 막는 용도로 쓰기에 딱이죠.

 

passwd --lock root

(반대로 락을 풀고 싶으면 passwd --unlock root 라고 치면 되겠지요.)

 

이 설정을 하더라도 일반계정(로컬계정)에서 sudo 명령을 쓸 수 있기 때문에, 큰 불편함은 없을 것 같습니다.

 

사실, 이 설정은 세팅을 전부 마치고 마지막에 하는 것을 추천하고 싶습니다.

passwd --unlock root

입력해서 풀어두시고, GUI 설치까지 끝나고 생각 나면 처리하세요.

 

로그인 실패시 지연시간 강제하기

무차별 대입 공격(brute force attack) 시도를 귀찮게 만들 수 있을 것 같습니다.

로그인 실패시 4초가 지나야 새로운 로그인 시도가 가능하도록 설정하는 방법이 6.2 항목에 나와 있었습니다.

https://wiki.archlinux.org/title/Security#Enforce_a_delay_after_a_failed_login_attempt

 

▼ /etc/pam.d/system-login 파일에 auth optional pam_faildelay.so delay=4000000 이라는 내용을 추가하는 것이었죠.

echo -e "\nauth optional pam_faildelay.so delay=4000000" >> /etc/pam.d/system-login

라고 입렸했고요, 어려우면 nano 에디터로 /etc/pam.d/system-login 파일을 직접 열어 처리해도 됩니다. (4000000 마이크로초 = 4초)

 

로그인시도 3회 실패시 10분간 잠김 이해하기

https://wiki.archlinux.org/title/Security#Lock_out_user_after_three_failed_login_attempts

6.3의 내용을 이해해둘 필요가 있습니다.

 

pambase라는 패키지가 기본 설치되어 있는데, pam_faillock.so라는 것이 15분 동안 3번의 로그인 시도 실패하면 10분간 사용자를 잠그도록 기본 설정하고 있다고 합니다.

 

▲ 작동 사례를 보여드리기 위해 aaa라는 계정을 이용해 봤습니다.

 

 

faillock --user 계정명 --reset

Lock이 걸린 계정은 위의 명령어를 입력함으로써 풀 수 있는데, /run/faillock/ 내의 파일들은 각각 소유자가 해당 계정으로 되어 있기 때문에 sudo를 앞에 안 붙여도 됩니다.

 

모든 서비스 거부를 방지하기 위해 root 계정은 로그인시도 3회 실패시 10분간 잠기는 기능이 비활성화되어 있는데요(기본값),

 

/etc/security/faillock.conf 파일에서 even_deny_root 옵션의 주석(#)을 풀면 root 계정에도 적용시킬 수 있더군요. 그래서 적용해 줬습니다. (안전제일 ㅎ)

 

로그인 실패 잠금은 재부팅하면 초기화 되는데요, 공격자가 재부팅 권한을 탈취했다면 재부팅으로 실패 카운트 초기화 시켜가면서 무한 로그인 시도할 수 있겠죠?

 

faillock.conf 내용에서 잠금 시간이나 횟수 옵션들은 쉽게 파악할 수 있을 거예요.

잠금의 주요 목적은 무차별 암호 대입 공격을 실행 불가능하게 만드는 것이므로,
암호를 잘못 입력해서 잠금이 너무 자주 발생한다면
잠금시간(unlock_time 옵션)을 줄이는 것보다 잠금시도 횟수(deny 옵션)를 느슨하게 하는 것이 좋다고 합니다.

 

결과적으로 저는 아래 값들을 주석 해제하고 지정했습니다.

 

dir = /var/run/faillock

silent

deny = 10

fail_interval = 900

unlock_time = 600

even_deny_root

 

다음글 : 아치리눅스 설치 과정 18 - 일반 추천사항 : pacman 병렬 다운로드 활성화

반응형