유닉스 / 리눅스 환경에서 계정의 비밀번호는 hash 로 암호화 된다.
hash 로 저장된 값은 /etc/shadow 에 저장된다.
과거 리눅스 시스템은 md5 로 hash 된 값을 기본으로 사용하였는데, md5 자체의 취약성과 더 높은 보안성을 위해 sha512 를 기본으로 사요하고 있다.
같은 길이의 평문을 sha512, sha256, md5 로 암호화 한다면 길이가 다르다.
[root@~]# echo 'passw0rd' | sha512sum
b8290cb0fe43d4e274787e39af74df240c2cd180b9b6db04d2ccce13c200333d3504a79eeea3d21a1b850aba8bb03068c959eba5f227f97724c55d86debdab14 -
[root@~]# echo 'passw0rd' | sha256sum
cc10ba3e72e09f1e742e4155968aa081fd309c76b6acf28eea1e3046438f005e -
[root@~]# echo 'passw0rd' | md5sum
71d00b760d017b2999eb54e32f41f592 -
이러한 길이는 결국 hash 된 암호를 해독해보려는 사람에게는 짐이 될 수 있다.
길이가 32인 것과 128인 것의 문자를 처리하는데 어쨌든 더 많은 성능을 필요로 하는 것이니까.
hash 암호화는 매번 같은 결과를 가져다 준다.
위에 언급된 명령어는 시간과 횟수에 상관없이 매번 같은 값을 가져다 준다.
이러한 점을 이용한다면 비밀번호를 알아내는 것은 결국 시간 문제라는 것이다.
시간 문제를 해결하고자 여러 방법들이 있는데, 가장 무식한 방법이 존더리퍼와 같은 툴을 사용하여 한땀한땀 대입해보거나, 사전에 정의되어 있는 리스트를 사용한다거나(사전에 정의되어 있는 리스트가 대부분 영어권에서 작성되어져 있기 때문에 한글을 사용하는 입장에서 결국 알파벳으로 입력되지만, 한글 단어를 그대로 입력하는 것이 이러한 사전정의 공격에서는 강점을 갖게된다. 예를 들어, 영어를 의미하는 english 는 사전적으로 정의되어 있지만, 한글을 의미하는 영어로 [구지 hangeul로 적는다면 모를까..] gksrmf 이라고 입력하면 영어권에서는 사전 대입을 하기에는 너무 엉뚱한 단어 아닌가)
해쉬와 평문이 이미 매칭되어 있는 레인보우 테이블과 DB를 사용하는 방법이 있다.(다만 해쉬와 평문이 이미 매칭되어 있는 수많은 정보를 갖고 있는 DB의 저장 용량은 어마어마 하다)
어쨌든 관리라는 측면에서 비밀번호가 풀리는 것은 결국 시간 싸움일 것이다.
비밀번호 복잡성은 크게 두가지 관점의 공격에 대비할 수 있는 것 같다.
1. 원격에서 시도되는 무차별 대입
2. 내부에 접근하게 되었을 때의 비밀번호 hash 값 보호
내 경험상 (과거 20년 전 이야기다) 4자리 숫자의 복호화는 3초 내로, 8자리는 5분 내로(대문자,특수문자 추가에 따라서 시간은 지연됨) 가능했다. 20년이 더 지나서 고성능의 GPU로도 복호화가 가능한 이 시점에 8자리로 비밀번호가 과연 안전할까?
어쨌든 그런 면에서 비밀번호를 강제로 복잡성을 만든다면, 무차별 대입 및 내부 시스템의 비밀번호를 보호할 수 있게 된다.
아래의 파일을 수정하여 복잡성을 기호에 맞게 수정한다.
/etc/security/pwquality.conf
minlen 패스워드 최소 길이
difok 이전 패스워드와 최소 N개 이상 다른 문자 사용
dcredit 숫자 입력 갯수, -1이면 최소 1개 숫자 입력
ucredit 대문자 입력 갯수, -1이면 최소 1개의 대문자 입력
lcredit 소문자 입력 갯수, -1이면 최소 1개의 소문자 입력
ocredit 영어 / 숫자 제외한 문자 갯수, -1이면 최소 1개의 특수문자
'IT > 보안' 카테고리의 다른 글
[보안점검] /etc/hosts 권한 (0) | 2022.05.13 |
---|---|
[보안점검] 홈 PATH 디렉터리 권한 및 PATH 설정 (0) | 2022.05.12 |
[보안점검] root 계정 원격 접속 제한 (0) | 2022.05.10 |
해킹 당하지 말자[종류 - phishing 피싱 편] (0) | 2020.04.15 |
해킹 당하지 말자[종류 - 원격제어 편] (0) | 2020.04.15 |