상세 컨텐츠

본문 제목

[PostgreSQL] Linux/PostgreSQL 외부 접속 설정 하기

DBMS/PostgreSQL

by Array 2013. 11. 25. 15:26

본문

리눅스에서 PostgreSQL 외부접속 설정하기!


방법은 매우 간단한다! 

- vi /var/lib/pgsql/9.3/data/postgresql.conf 를 vi 편집기로 연다음에.


listen_addresses = '*'                 

port = 5432                




- vi /var/lib/pgsql/9.3/data/pg_hba.conf



 HostType

 Database Nmae

UserName 

 CIDR-addsredd or IP-Mask

 Authentication Method

 host

 all

 all

 클라이언트ip/32

 trust




                                                                                                               

* HostType * 


    Host타입은 접근자의 접근 위치(Unix Domain Socket 또는 TCP/IP와 SSL TCP)와 통신의 암호화 관련 설정입니다. 
    local , host , hostssl , hostnossl 을 지원한다. 

    local은 자칫 locahost로 생각할수 있겠지만 local은 Unix Domain Socket을 통한 
    접속에 해당하는 것으로 다소 해깔릴수 있으니 주의 하시기 바랍니다. 

    잠깐! : 기존에 DB Application에서 PostgreSQL에 접속시 host 명을 주지 않으며, 
    Unix Domain Socket으로 통신을하였으나 PostgreSQL 8.0이상부터는  

    host=/tmp 또는 host=/tmp/.s.PGSQL.포트번호 로 접근을 하셔야만 pg_hba.conf에 설정한 local 설정에 해당됩니다. 
    주의 하시기 바랍니다. 

    hostssl은 ssl인증서를 통한 암호화 통신만 지원하면 localhost , 127.0.0.1 식의 즉 TCP/IP접속에 해당된다. 

    hostnossl은 ssl 접속은 불가능 하며, TCP/IP통신을 지원합니다. 

    host나 hostssl 로 설정한 상태에서 SSL기능을 사용하실려면 PostgreSQL 컴파일시 --with-openssl 옵션을 주어야 하며, 
    postgresql.conf에 ssl=true로 설정을 해주셔야만 합니다. 
    ssl통신을 위한 인증서 생성및관련 정보는 아래주소를 통해 미리보시기 바랍니다. 
    [url]http://www.postgresql.org/docs/8.0/static/ssl-tcp.html[url] 


* DataBase Name * 

    특정한 디비에 대한 접속을 제한할수있으며 ,(콤마)로 여러개의 디비로 접근 제어가 가능합니다. 
    모든 디비에 대한 접근을 풀려면 all로 설정하시면 됩니다. 
    만약에 설정할 디비가 수십개라면 기재하기 불편하실경우 @dblist.txt 식으로 설정하고 dblist.txt을 
    PGDATA로 설정한 폴더의 안에 넣어 두시면됩니다. 


* username * 

    계정설정으로 ,(콤마)구분으로 할수 있으며,Database의 @파일명 식으로 따로 파일을 만들어서 처리하실수도 있습니다. 
    PostgreSQL의 계정 그룹 카탈로그 테이블인 pg_group 또는 create group 명령으로 그룹을 만들어 계정들은 하위(SYSID)에 묶어두었을때는 
    +(플러스) 키를 붙인 그룹명으로 설정하면 해당 그룹에 대한 모든 접근이 가능해집니다. 


* [CIDR-addsredd or IP-Mask] * 

    이 부분으로 접근에 대한 IP나 IP Block을 차단하는것보다는 Kernel Level의 Packet filter로 막는것이 전체적인 성능향상에 도움이 됩니다. 
    다만 다중사용(웹호스팅,ASP등)의 경우를 제외하고는 이부분 사용을 자재해주시기 바랍니다. PortgreSQL의 기본 Service Port는 5432입니다. 

    IPv4 CIDR 구분으로 
    해당 C Class에 대해 모두 접근처리를 할떄는 : xxxx.xxxx.xxxx.0/24 
    해당 IP에 대한 접근처리를 하실떄는 : xxxx.xxxx.xxxx.xxxx/32 

    위의 식으로 설정하시면 되면 아래 예제에서 좀더 자세히 알려드리겠습니다. 


* Authentication Method * 

    이 부분은 실제적인 계정의 패스워드에 대한 서버로의 전송을 어찌할것인가를 정하는것입니다. 
    PostgreSQL Sever와 Client와의 접속에는 처음 Client가 접속을 하게 되면 pg_hba.conf에 대해 검색해서 
    해당 접속에 대한 접근허용을 확인하고 확인이 되면 이 Auth.Method에 설정된 암호화 방식으로 패스워드를 전송하라고, 
    응답메세지를 보내고 다시 CLient가 Server로 로그인을 하게 되는 방식입니다. 

    인용 또는 결과 : 

    trust : 패스워드 없이 접근 가능.주위할것은 local(Unix Domain Socket)이외에는 적극 비추천.! 

    reject : 당돌히 거부.!! 

    md5 : 패스워드를 md5로 암호화 해서 전송 (기본 적극 추천) 

    crypt : cryppt 로 암호화 해서 전송 PostgreSQL 7.2 이후부터는 사용되지 않습니다.(이전 버전설정 호환용) 

    password : 이건 그냥 text로 패스워드를 전송하는건데 사실 하느니 못합니다. 스니핑에 바로 보이니 

    krb4,krb5 : KerberOS V4,5를 지원한다. 

    ident : IDent Map방식은 추천드리지는 않습니다. 로그인후 접속유지되는 구조가 아닌경우는 

    pam : PAM(Pluggable Authentication Modules) 서비스를 사용한 인증입니다.ident와 마찬가지로 비추 

    [root@good /root]$ _


    위에서 설명드린것중 SSL TCP/IP, KerberOS와 Ident,Pam인증을 따로 다른 장에서 설명을 드리겠습니다. 
    추천드리지않는 다고하나 이는 일반적인 평준화되어진 시스템에서는 비추천이지만 특정서비스에서는 필요한것이므로 

    테스트하여 완벽해지게 스스로 이해하고나면 올려드리겠습니다.(시간이 좀 나면요 ^^) 
    위중 TCP/IP를 통한 접속의 경우는 기본은 md5로 하시기 바랍니다. 최소한의 보안을 위해 md5를 쓰시기 바랍니다.

그럼 이제 pgAdmin 으로 접속해보자!


관련글 더보기

댓글 영역