Infra/Postgresql

[PostgreSQL] Credcheck 라이브러리 설치

연양 2023. 11. 26. 14:39

 

데이터베이스 취약점 점검 시 계정관리 항목 쪽에서 Postgresql의 경우 일부 패스워드 정책에 대한 설정 기능을 제공하지 않는 것을 알 수 있는데, 이는 별도의 확장 프로그램을 사용하면 해결할 수 있다. passwordpolicy 프로그램도 있지만, 그보다는 credcheck를 사용하면 계정 패스워드에 대한 복잡도 뿐만 아니라 reuse(재사용), max_days(만료일) 등을 설정할 수 있어서 해당 플러그인을 사용할 수 있다면 효율적으로 사용이 가능할 것 같다.  

                                                                                                     

 


 

  • 실습 환경 : (OS) oracle linux 8 / (DB) postgresql 15.5 

※ redhat linux 8 부터는 패치지 관리도구로 dnf를 기본 패키지로 제공하고 있다. 기존 패키지 관리자인 yum의 단점인 느린 속도, 과한 메모리 사용, 의존성 결정 느림과 같은 단점을 개선한 도구이다.  7버전인 경우는 dnf 대신 yum 명령어를 이용하여 설치하면 된다. 설치는 모두 root 권한으로 진행했다. 

 

1. 필요한 패키지 설치

# su - 
# dnf install pgxnclient
# dnf -y install git
# dnf install make gcc
# dnf -y redhat-rpm-config
# dnf install -y openssl-devel

 

우선, 설치 시 필요한 패키지들을 설치 해 줘야 한다. git 플러그인은 credcheck를 설치하기 위해서 필요한 부분들이고 나머지 부분들은 credcheck 설치 후 Makefile을 수정해 주고나서 make와 make install 과정에서 해당 플러그인을 설치해 주지 않으면 정상적으로 컴파일 및 설치가 되지 않기 때문에 에러를 만날 수 있다. 

 

이렇게 설치 했는데도 에러가 난다면 아마 사용하고 있는 postgresql 개발자용 라이브러리가 설치되어 있지 않아서 오류가 발생할 수 있다. 아래는 본인이 환경 구성 시 사용했던  postgresql 15버전 install 명령어이다. 여기서 4~ 5번째 명령어를 통해서 설치 해 주면 된다. 

 

※ postgres install command

# dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# sudo dnf -qy module disable postgresql
# dnf install -y postgresql15-server 
# dnf install -y postgresql15-contrib (없을 경우 진행) 
# dnf install -y postgresql15-devel --nobest (없을 경우 진행) 

# /usr/pgsql-15/bin/postgresql-15-setup initdb
# sudo systemctl enable postgresql-15
# sudo systemctl start postgresql-15

 

2. cracklib 설치 

# dnf install -y cracklib cracklib-devel cracklib-dicts words

// cracklib-devel error 시 아래 방법으로 설치 진행
# dnf install -y cracklib cracklib-dicts words
# curl -o cracklib-devel-2.9.6-15.el8.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL8/codeready/builder/developer/x86_64/getPackage/cracklib-devel-2.9.6-15.el8.x86_64.rpm
# yum -y install cracklib-devel-2.9.6-15.el8.x86_64.rpm

 

여기서 주의할 부분이 cracklib-devel 설치할 때 조심해야 한다. 잘 설치가 되면 상관이 없는데 나같은 경우는 cracklib-devel 에서 에러가 났다. 

 

이를 해결하기 위해서 cracklib-devel에 관한 rpm 파일을 다운로드 받아 설치를 진행했다. 

rpm을 다운로드 받고 설치할 떄는 dnf 사용해서 설치 진행 시 에러가 났다. 그래서 yum으로 설치를 마저 진행했다. 

설치 완료 후 아래 명령어를 통해서 cracklib 설치가 완료되었는지 확인한다. 

# rpm -qa | grep cracklib

 

 

cracklib 관련한 패키지 설치가 완료되면, 아래 명령어를 입력해준다. 배포에 따라 사용할 사전을 구축하는 거라고 하는데 잘 모르겠다. 

# systemctl restart postgresql-15
# mkdict /usr/share/dict/* | sudo packer /usr/lib/cracklib_dict

 

3. credcheck 확장 프로그램 다운로드

참고 : https://github.com/MigOpsRepos/credcheck 에서 다운로드 가능하며, 설정가능한 사용자명, 패스워드에 대한 정책도 확인할 수 있다. 

 

credcheck 프로그램은 /usr/pgsql-15/share/contrib 파일에서 설치를 진행해 줘야 하며, 설치 후 ls 명령어를 하면 credcheck라는 디렉터리가 생성되었을 것이다.

 

# cd /usr/pgsql-15/share/contrib/
# git clone https://github.com/MigOpsRepos/credcheck
# cd credcheck/

 

확장 프로그램 설치 완료 후, credcheck 디렉터리로 이동해서 ls 명령어를 입력하면 Makefile이 보인다. vi 명령어를 이용하여 아래처럼  Makefile에서 pg_config 경로를 지정 한다. 

# vi Makefile

 

설치 후 make와 make install를 순서대로 진행해 줘야하는데 아래 처럼 나오면 정상적으로 컴파일 및 설치가 완료된 것이다. 

# make
# make install

 

4. credcheck 설정

credcheck 설치가 완료 되면, postgresql.conf 파일에서 shared_preload_libraries 설정값으로 '$libdir/credchek'로 지정하고 postgresql restart 한다. 

# cd var/lib/pgsql/15/data //postgresql.conf 파일이 있는 위치로 이동 
# vi postgresql.conf //vi 편집기로 파일 열기 

<!-- shared_preload_libraires에 $$libdir/credcheck 추가 --> 
/shared_preload  //shared_preload 구문 검색 
shared_preload_libraries = '$libdir/credcheck' //credcheck 라이브러리 추가

wq //저장 후 빠져나오기 

<!-- DB 재시작 -->
# systemctl restart postgresql-15

 

 

5. 데이터베이스 설정

postgresql restart 후, 데이터베이스에 접근하여 extension 기능을 이용하여 credchck 플러그인을 연동해준다. 

create extension credcheck;
select * from pg_extension;

 

 

 

이제 패스워드 정책을 설정하기 위한 환경 셋팅이 완료되었다. 

다음 글에서 패스워드 정책 설정을 진행하겠습니다. 

 

 

참고 : https://github.com/MigOpsRepos/credcheck

'Infra > Postgresql' 카테고리의 다른 글

[PostgreSQL] 패스워드 정책 설정 by. credcheck  (1) 2024.01.29