본문 바로가기
Blockchain/Ethereum

[ Geth ] RPC 통신 Nginx 인증 보안 처리

by 기저귀찬개발자 2019. 10. 29.

geth rpc 통신을 사용할 경우 외부에 노출되어 해커들의 목표가 된다. 

토큰, 이더리움을 빼가기 위해 RPC 통신이 노출된 노드들을 수없이 찾고 찾을 경우 

지갑의 계정에 대하여 토큰, 이더리움 전송 트랜잭션을 계속하여 요청한다.

지갑이 잠겨있는 경우와 geth 최신 버전을 사용하여 암호를 파라미터로 트랜잭션 처리를 했다면 문제가 없겠지만

예전 버전의 geth를 사용할 경우 전송 전 지갑을 열고 전송 후 지갑을 닫는 과정에서 해커가 요청한

전송 트랜잭션이 들어올 경우 지갑에 있던 자원이 해커에게 넘어가버리는 상황이 발생하게 된다. 

 

되도록이면 RPC 통신을 사용하지 않는 것이 중요하겠지만 특정 외부 서버와 RPC 통신을 할 경우 

해당 서버만 RPC 통신이 가능하도록 하는 대안책을 제시하도록 한다.

 

사용 서비스 

OS : ubuntu 

Web Server : nginx

Service : Basic Auth

 

설정 단계 

1. htpasswd 를 사용하여 로그인할 유저를 생성하자

#디렉토리 위치, 사용자 이름은 임의로 지정하자
htpasswd -c /home/test/.htpasswd test

#htpasswd가 설치되지 않았을 경우 apache2-utils 를 설치 후 위 명령어를 실행
#apt-get install apache2-utils 

 

2. nigx 설치 

apt-get install nginx

 

 

3. proxy 설정

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        auth_basic on;
        auth_basic_user_file /home/test/.htpasswd;

        server_name nginx;

        location / {
            proxy_pass http://localhost:8545;
            proxy_set_header Host $host;

            #proxy 버퍼 관련 설정
            proxy_buffer_size               128k;
            proxy_buffers                   4 256k;
            proxy_busy_buffers_size         256k;

        }
}

 

4. geth 구동 명령어

 

- docker 사용시

#rpcaddr을 외부에 모두 열어두었지만 docker port에서 자기자신 8545 port 접근만 허용하기 
#때문에 외부에서 접근이 불가능하고 nginx proxy를 통한 rpc 통신만 허락하게 된다.

docker run --name=geth_mainnet  -d -it  -p 127.0.0.1:8545:8545 -p 30303:30303 -v 
/home/docker/data/eth_mainnet:/root/.ethereum ethereum/client-go:v1.9.3   
--rpc --rpcaddr "0.0.0.0" --rpcapi "personal,net,eth,web3,admin" --rpcport 8545  

 

- docker 사용안하는 구동 명령어

geth --rpc --rpcapi "personal,net,eth,web3,admin" --rpcport 8545  

 

 

 

RPC 통신을 하거나 WS 통신을 할때는 외부에서 접근을 할 수 있는 루트를 없애놔야 소중한 자산을 지킬 수 있다.

아래는 실제로 외부 오픈시 끊임없이 내 노드의 지갑을 건들이는 모습이다 (나쁜놈들)

 

댓글