EOS Core(Ghostbusters) 아키텍쳐에대한 생각.

in #kr6 years ago

KakaoTalk_20180523_214107353.png

해당 포스팅은 EOS core (Ghostbusters)에 많은 기여를 하고 있는 @jemxpat가 자신의 스팀잇에 포스팅한 글을 번역한 글입니다. 원본보기

Core(Ghostbusters) 시스템에서 VPN 소프트웨어는 보안 레이어로 사용됩니다. 이 VPN은 일반적으로 우리가이해하고 있는 VPN 네트워크가 아닙니다. 많은 유저들은 일반기업에서 사용하는 VPN에 익숙합니다. 이런 일반 기업형 VPN은 지리적 마스킹 또는 방화벽 침투 기능을 제공합니다. Core(Ghostbusters)에서 VPN은 이것과 전혀 다릅니다.

Core(Ghostbusters)에서는 중앙 권한이 없습니다. 프라이빗 네트워크(Private network)에는 패킷 라우팅(Packet routing)이 없습니다. 누구나 새로운 피어의 멤버로써 참여할 수 있습니다. 아무도 개인 터널을 따로 사용할 필요가 없습니다. 모든 구성원은 퍼블릭 액세스 권한을 가질 수 있고 연결을 허용할 수 있습니다.

우리가 사용하는 VPN은 (Virtual Private Network) 단어 의미 자체입니다. Core(Ghostbusters)의 VPN은, 일반적인 IP트래픽을 캡슐화 할 수 있는 두 호스트 사이에 가상의(Virtual) UDP/IP터널을 생성합니다. 캡슐화 된 모든 트래픽은 전달 보안 및 Elliptic Curve Diffie-Hellman Ephemeral key agreement (ECDHE) 및 ChaCha20-Poly1305 블록 암호화를 사용하여 강력하게 암호화되어 두 호스트만의 (Private)연결 입니다. 두 개의 IP주소 사이에 오직 Layer 3의 연결만 허용/지원한다는 점에서는 가능한 제일 작은 네트워크(Network)라 할 수 있습니다. 이 네트웍 인터페이스는 (Layer 2)의 기능을 지원하지 않습니다.

Core(Ghostbusters)에서 사용되는 와이어 가드(https://www.wireguard.com/)는 한 가지만 수행합니다. 두 호스트 간의 암호화 된 지점 간 터널 연결을 설정하여 두 호스트 사이의 패킷에 대해서만 트래픽을 허용합니다. 그 이상의 네트워크가 없습니다. 트래픽 포워딩도 없습니다 (라우터 없음). 핵심 노력은 대부분 이러한 연결을 관리하는 데 도움이되는 도구를 만드는 데 있습니다. 와이어 가드에서 사용되는 기술은 호스트의 IP주소와 공개 키(Public Key)가 내 호스트에 설정된 것과 정확히 일치 할 때만 연결을 허용하는 점에서 매우 강력한 spoofing 방지 기능을 제공합니다. 일치하지 않는 연결은 request/ challenge/response 유형의 오버헤드가 없이 즉시 삭제됩니다. 프로토콜 협상도 없게 됩니다. 만약 nodeos가 VPN 인터페이스에서만 수신 대기하도록 설정된 경우 해당 인터페이스를 통해 올바르게 연결된 peer 만이 데몬과 통신 할 수 있습니다.

터널 내부의 트래픽에는 DDOS위험, DOS 위험이 없습니다. DDOS 위험은 퍼블릭 IP연결로부터 시작됩니다. 업스트림 링크에 대한 공격으로 리소스의 포화를 일으킬 수 있습니다.. 정교한 업스트림 인터셉션이 없다면 이것은 예방할 수 없습니다. 한가지 방법은 호스트의 실제 IP 주소를 난독화하여 위험을 최소화 시키는 것입니다. 숨기는 것은 보안이 아니라는 것을 알고 있지만 이것은 공격의 비용과 어려움을 크게 증가 시키는 요소 입니다. 우리가 보안을 위해 하는 모든 일들은 보안을 완벽하게 만들지 않지만 공격자의 비용을 크게 증가 시키는 것입니다.

nodeos 호스트중 누구든 모든 swarm 노드에 연결할 필요는 없습니다. 목표는 최상의 성능을 위해 네트워크 대기 시간이 낮고 잘 알려진 신뢰할 수 있는 다수의 노드에 연결하는 것입니다. 신뢰할 수 있는 peer 만 내 노드의 실제 공용 IP를 알 수 있습니다. API 서비스를 지원하도록 구성된 nodeos 시스템은 웹서버에 내장 된 nodeos입니다. 일반 공용 서비스를 제공하려면 모든 인터넷 사용이 웹 서버에 TCP 연결을 만들고 API 요청을 제출하고 응답을 수신 할 수 있어야 합니다.

Nodeos는 알려지지 않은 미지로 가득 차 있는 새로운 소프트웨어입니다. 우리는 현재 어떤 문제와 취약점이 존재하는지 알 수 있는 방법이 없습니다. Fuzzy input로 테스트 되거나 감사 되지 않았습니다. 코너 케이스 오버 플로우에 대해서 면밀히 조사되지 않았습니다. 코드를 검토해보면 기능에 중점을 두어 신속하게 구축된 것을 알 수 있습니다. Variable scope는 체크되지 않았고 overflow는 테스트 되지 않았으며 error traps는 누락되었으며 function calls는 최적화 되지 않았습니다. 저는 이러한 미 심사 된 코드를 일반 대중에 노출하는 것을 권하지 않습니다. API 서버가 공격에 당하면 EOS P2P 서비스와 API 서버가 연결된 모든 피어가 공개됩니다. 비록 블록을 생산 하지 않아도 API노드는 공격하기에 매력적인 타깃입니다.

BPinfra4.jpg

Reverse Proxy 웹 서버를 공용 액세스 노드로 지정함으로써 하기의 많은 이점을 얻을 수 있습니다.

  1. 프록시는 여러 클라우드 서비스에 분산되어 로드 밸런싱을 조정할 수 있으므로 성능, 복원력 및 안정성이 극대화됩니다.

  2. DDOS 프로텍션은 단순하고 분산 된 웹 서버를 보호하기 위해 수행됩니다.

  3. 다량의 부적절한 형식의 요청들을 선택적으로 API서버에 접근이 제외 되도록 필터(Patroneos)를 추가 할 수 있습니다. 이러한 필터는 시간이 지남에 따라 더 정교해 져야합니다.

  4. 프록시는 커널 레벨에서 쉽게 접근요청의 제한을 조절 할 수 있으므로 모든 범위의 공격을 완화합니다.

  5. 프록시는 API 서버에 대한 자체 비공개 지점 간 연결을 가질 수 있으며 API 노드의 퍼블릭 IP주소 노출을 어느정도 숨기고 API 노드가 프록시에 연결된 VPN 인터페이스에서만 수신 하도록 허용하여 다른 포트로부터 서비스를 완전히 차단할 수 있습니다. 따라서 API노드는 VPN peer의 신원을 절대적으로 확신 하므로 IP 스푸핑 공격을 받지 않습니다.

이것들은 Ghostbusters / Core 팀이 제안한 아키텍처에 대한 저의 생각들 중 일부입니다. 소프트웨어 툴은 https://github.com/HKEOS/Ghostbusters-Testnet 에 있습니다.

CONTACT

email [email protected]
Steemit https://steemit.com/@acroeos
Medium https://medium.com/acroeos
Twitter https://twitter.com/acroeos
Telegram https://t.me/AcroEOS
Wechat AcroEOS

Coin Marketplace

STEEM 0.17
TRX 0.13
JST 0.027
BTC 61152.47
ETH 2665.18
USDT 1.00
SBD 2.55