# 나/!nfra

[Nessus] PostgreSQL Default Unpassworded Account

SaltLee 2025. 5. 14. 13:35

PostgreSQL 디폴트 계정 postgres 인데 비밀번호 설정 안되어 있어서

Nessus 가 로그인 시도 해보고 로그인 성공해서 취약점으로 잡은것 같다

 

postgres 계정에 대해 비밀번호 설정 하면 안잡힐 것이다

# 리눅스에서 postgres 사용자로 전환
sudo -u postgres psql

# psql 안에서 비밀번호 설정
\password postgres

# 확인 방법:
select usename, passwd from pg_shadow where username = 'postgres';

# 예시 화면:
username             passwd
postgres               md5cfc624e0d299bf25e3a6d7f0b1234567

 

근데 비밀번호 설정 하더라도

trust 나 peer 설정이 되어 있으면 취약으로 잡힐 수 있다

trust : 아무나 접속 허용 (비밀번호 없이)

peer : OS 사용자 이름 = DB 사용자 이름 이면 접속 허용 (비밀번호 없이)

 

그래서 trust, peer 설정도 없애줘야 한다

# 설정파일 위치:
/var/lib/pgsql/data/pg_hba.conf 
또는
/etc/postgresql/<version>/main/pg_hba.conf

# 제거해야 하는 예시:
host    all     all    0.0.0.0/0     trust
local   all     all                       peer

# 안전한 예시 설정:
host    all     all    0.0.0.0/0     md5 또는 scram-sha-256
local   all     all                       md5 또는 scram-sha-256

# 변경 후 재시작:
sudo systemctl restart postgresql
또는
sudo service postgresql restart

# 변경 적용 확인
psql -U postgres -h <DB_IP>
→ 비밀번호를 요구해야 정상

 

근데 scram-sha-256 은 postgreSQL 10 이상부터 지원한다

인증 방식                     PostgreSQL 9.6 이하                   PostgreSQL 10 이상
md5                                       O (지원)                                         O (지원)
scram-sha-256                    X (미지원)                                       O (지원)
trust, peer                              O (지원)                                         O (지원)