문제를 엄격하게 정의하십시오.

문제를 엄격하게 정의하십시오.

내 목표는 서버의 공용 IP에 있는 단일 포트에 VPN 터널을 두고 추가 VPN 암호화 계층을 사용하여 서버에 SSH로 연결할 수 있는 것입니다.

서버 구성의 세부 사항:

서버와 클라이언트 모두에서 CentOS 7을 실행하고 있습니다. 지금까지 읽은 문서는 브라우저를 통해 실행되고 인터넷 트래픽을 중계하는 구성에 초점을 맞춘 것 같습니다. 아무것도 중계하기 위해 서버가 필요하지 않습니다. VPN을 통해 서버의 SSH 포트에 액세스하고 인터넷 트래픽(80/443)을 서버와 클라이언트에만 둘 수 있나요? 서버는 정상적으로 Apache 및 클라이언트 액세스 인터넷을 통해 대중에게 80/443을 제공할 수 있어야 합니다.

답변1

가능하다면 귀하의 질문을 분해하고, 한 걸음 물러서서, 귀하에게 실행 가능한 솔루션을 결정할 수 있도록 전체 솔루션 설계 프로세스를 단계별로 진행하는 데 도움을 드리겠습니다. 귀하의 질문에는 SSH 프로토콜, VPN 및 일반적인 보안 시스템 설계 방법과 관련하여 부정확한 내용이 많이 있습니다. 여기에서 이를 살펴보겠습니다.


현재 귀하의 질문에서는 특정 기술을 구현하는 지침을 요청하고 있습니다. 그러나 문제 설명은 직면하고 있는 특정 위협을 평가하지 않으므로 솔루션을 설계하는 것은 시기상조입니다. 이 점에 있어서 당신은XY 문제우리를.

구현하면 문제가 해결되지 않거나(실제로 문제는 다른 곳에 있기 때문에) 더 간단한 솔루션이 적합한 경우 복잡성이 추가됩니다. 더욱이, 불필요한 복잡성은 추가적인 보안 취약점의 원인이 될 수 있으므로 바람직하지 않습니다.

문제를 엄격하게 정의하십시오.

우리는 그래야 한다객관적인,해결 중심이 아님. 우리는 문제 영역의 대상을 정의하고, 고려해야 할 기여 요소를 확인하고, 직면한 위협을 이해해야 합니다. 그런 다음에만 문제를 해결하기 위해 어떤 기술과 프로세스를 선택할 수 있는지 결정하기 시작할 수 있습니다. 우리가 따를 수 있는 프로세스는 다음과 같습니다.

  • 문제 식별– 우리가 해결하고자 하는 구체적인 어려움은 무엇입니까? 난이도는 객관적이고 측정 가능한 문제여야 하며, 현장에서 관찰한 내용을 통해 그 존재에 대한 확실한 증거가 뒷받침되어야 합니다.
  • 가정 및 제약 조건 결정– 특정 상태에 있다고 가정할 수 있는 특정 항목이 있습니까? 제안된 솔루션에 부과되는 다른 조건이 있습니까? 중요한 제약에는 솔루션 구현에 드는 직접 비용(하드웨어, 소프트웨어 구매 또는 컨설팅 시간)과 간접 비용(프로세스 변경, 직원 교육, 생산성 손실 수용)이 포함되어야 합니다.
  • 위협 행위자 식별(보안 문제로) –어떤 시스템이나 프로세스도 100% 안전하지 않습니다. 우리의 솔루션이 그러한 공격을 적절하게 예방하는지 여부를 결정하려면 공격을 시작할 가능성이 있는 모든 공격자의 특성을 신중하게 판단해야 합니다. 이는 기술적 결과를 위한 설계뿐만 아니라 실제 물리적 보안 시스템 설계에도 적용됩니다.

    예를 들어 평가 시 다음과 같은 요소를 고려할 수 있습니다.

    • 적의 능력– 얼마나 지식이 풍부한지, 공격을 지원하기 위해 특정 리소스에 액세스할 수 있는지 등.
    • 그들의 위치– 주거용 인터넷 서비스의 마지막 마일에 있는 스크립트 키디와 중간자 공격이 가능한 네트워크 위치에 액세스할 수 있는 국가 행위자 사이에는 상당한 차이가 있습니다.
    • 당신의위험 및 위험 온도 조절기– 공격자가 귀하 또는 귀하의 조직을 구체적으로 공격하도록 동기를 부여하는 것은 무엇입니까? 예를 들어, 귀하의 시스템은 일반적으로 제한된 성격을 가지며 다른 사람에게 가치가 있을 수 있는 민감한 데이터(개인 데이터, 회사 비밀 등)를 저장하거나 처리합니까? 추가 분석이나 공격이 시작될 수 있는 네트워크에서 특권적인 위치를 갖고 있습니까(예: ISP의 코어 라우터, 대기업의 민감한 네트워크 경계에 있는 경계 게이트웨이)?

      이는 우리가 다음을 표적으로 삼으려는 지능형 지속 위협(APT) 공격자를 상대하고 있는지 식별하는 데 도움이 됩니다.구체적으로, 아니면 우리가 기회주의자들을 옹호하고 있는지 말이죠. 경쟁사에 비해 안전해 보이도록 적당한 보호 조치를 취함으로써 지나가는 기회주의자를 방어하는 것이 훨씬 쉽습니다.

      또한 위험에 대한 귀하의 성향을 파악하는 것(귀하의위험 온도 조절기)는 확인된 위험을 과도하게 다루지 않고 적절하게 처리할 수 있도록 결과를 최적화하는 데 기여합니다.

  • 구현 결정– 이 프로세스에서 수집된 정보를 사용하고 설명된 제약 조건과 위험에 대한 당사의 입장을 고려하여 적합한 기술을 식별합니다.그리고 처리문제를 해결하기 위한 변화,또는 솔루션을 식별할 수 없는 경우 제약 조건이나 위험 프로필을 수정합니다..

그 과정에서 우리는 기억합니다.보안은 목적지가 아닌 프로세스이다. 우리는 증권을 기성 상품으로 "구매"할 수 없으며, 그렇게 많은 금액을 제안하는 사람은 거짓말을 하거나 숨은(아마도 금전적 이득) 동기를 갖고 있는 것입니다.


귀하의 특정 문제

귀하의 질문은 매우 포괄적이므로 귀하의 특정 문제에 대해 대략적으로 프로세스를 따를 수 있습니다.

문제

나는 rkhunter 분석을 기반으로 한 서버 손상을 경험했으며 이러한 일이 다시 발생할 가능성을 완화하고 싶습니다.

구체적인 문제는 재발을 최소화하려는 시스템의 과거 손상입니다.

귀하의 질문에서 제가 확인할 수 있는 주요 목표는 공용 네트워크(예: 인터넷)를 통해 발생할 수 있는 원격 손상 이벤트에 대해 시스템을 강화하는 것입니다. 두 번째 목표는 원격 시스템에 대한 원격 셸 세션의 기밀성과 무결성을 보장하는 것입니다.

가정과 제약

솔루션을 안내하기 위해 다음 사항을 문서화해 보겠습니다.

  • 머신에서 노출되는 공개 웹사이트 서비스는 안전합니다.
  • 원격 연결을 시작하는 워크스테이션은 문제의 서버 시스템을 공격하기 위한 프록시가 아닙니다. 예를 들어, 그 자체로는 침투되지 않습니다(따라서 키가 누출되거나 수정되는 벡터 또는 변조될 연결을 만드는 데 사용되는 바이너리에 대한 벡터가 아닙니다). 클라이언트 시스템의 보안 약점을 개별적으로 탐색하거나 단일 평가로 통합할 수 있습니다.
  • 서버 시스템은 물리적으로 안전하며 시스템에 실제로 참석하는 사람이 하드웨어나 소프트웨어 구성을 변조할 가능성은 거의 없습니다. (공격자가 물리적으로 접근할 수 있는 머신은 더 이상 귀하의 머신이 아닐 가능성이 높습니다.)
  • 네트워크가 손상된 것으로 간주됩니다. 패킷을 가로채거나 우회할 수 있는 행위자가 있을 수 있습니다.
  • 우리는 솔루션의 기술적 측면을 달성하기 위해 무료로 제공되는 소프트웨어를 사용하고 싶습니다.
  • 우리는 사용자가 웨트웨어(인간 운영자)에 대한 공격을 무시할 수 있도록 적절하게 교육을 받았다고 가정합니다(예: 사회 공학적 위협). 다시 말하지만, 원칙적으로 이러한 문제는 적절하게 완화되는 경우가 거의 없으며 대부분의 조직에 약점이지만 이는 서버 결함이므로 지나가는 언급 외에 공격 모델의 비기술적 측면을 무시하겠습니다.
  • 솔루션에 첫 번째 연결 전에 오프라인 배포 또는 키 확인이 필요한 경우 허용됩니다.
  • 잘 알려진 암호화 기본 요소는 백도어 또는 비공개 공격에 면역인 것으로 간주됩니다.

위협 모델

나는 귀하의 조직 및 인프라에 대한 가시성이 없고 귀하가 처리하는 데이터 포트폴리오 또는 귀하가 내부적으로 연결될 수 있는 개인 네트워크에 대한 개요를 보유하지 않기 때문에 귀하의 위협 모델을 적절하게 판단할 수 없습니다. 귀하의 프로필에 있는 공개 정보를 통해 귀하는 다른 사람을 대신하여 민감한 지적 재산을 처리하는 장소에서 근무할 수 있다는 것을 알 수 있습니다. 이는 특정 공격 위협에 대한 중~고위험 데이터 수집을 구성합니다. (이 위협은 귀하가 운영하는 개인 시스템까지 확장될 수 있습니다.)

구현

우리의 목표에 맞는 솔루션을 설계해 봅시다. 시스템을 강화하려면 공개 공격 경로를 고려해야 합니다. 이는 두 가지 서비스를 노출하며 웹 서비스는 취약하지 않다고 가정했습니다. 따라서 원격 셸 연결을 고려해야 합니다.

이 목적을 위해,SSH는 그 이상입니다VPN 세션 래퍼를 추가하지 않고도 요구 사항을 충족할 수 있습니다. 거의 모든 Unix 상자는 SSH 데몬을 실행할 수 있으며 상당수가 침투 없이 적대적인 네트워크에 직간접적으로 노출됩니다.

SSH는 우리 목표에 어떻게 부합합니까?

SSH(Secure Shell)는 원격 셸 세션의 기밀성과 무결성을 제공하도록 설계되었습니다. 이는 암호화 접근 방식을 사용하여 수행됩니다. 특히, 호스트에는 연결된 클라이언트 시스템에 대해 호스트를 확실하게 식별하는 데 사용할 수 있는 하나 이상의 호스트 키가 할당됩니다.

SSH에 대한 중간자 공격

올바르게 식별한 것처럼 SSH는 특정 시나리오에서 중간자 공격에 취약합니다. 대부분의 사용자는 초기 연결 시 시스템에서 제공하는 호스트 키를 검사하지 않습니다. 그들은 배포처음 사용할 때 신뢰정책. MitM이 이 시점에서 대체 호스트 키를 제공할 수 있는 경우 추가 감지 없이 ​​현재 및 향후 연결에서 SSH 세션을 가로채는 것이 가능합니다. 캐시된 호스트 키를 검사하지 않고 탐지하려면 MitM 위협을 무력화하거나 원격 호스트의 실제 호스트 키가 표시될 수 있도록 손상되지 않은 네트워크에서 연결해야 합니다.

MitM이 우려되므로 이를 완화할 수 있는 솔루션을 설계해야 합니다. 사용 가능한 옵션은 다음과 같습니다(일부).

  • 신뢰할 수 있는 네트워크를 통해서만 연결합니다. 이는 공용 네트워크를 통한 연결에 대한 우리의 목표나 가정을 충족하지 않기 때문에 실행 가능하지 않습니다.
  • 초기 연결 전에 호스트 키의 지문(또는 전체 공개 키)을 배포합니다. 서버에서 명령을 사용하여 ssh-keygen지문을 획득하고 이를 사용자에게 배포한 후 처음 연결 시 제시된 지문과 서버 버전을 비교하게 합니다. 지문이 일치하는 경우에만 로그인해야 합니다.
  • DNS에 호스트 키를 게시하고 DNSSEC를 사용하여 영역에 서명합니다. 모든 연결 클라이언트가 DNSSEC 검증 확인자를 사용하는지 확인하고 DNS 기반 호스트 키를 확인하세요.자세한 내용은 여기를 참조하세요. 이 접근 방식은 호스트 키를 배포하고 수동으로 확인하는 부담을 피하지만 아직 많은 네트워크에 널리 보급되지 않은 특정 기술 구성 요소가 필요합니다.

무차별 비밀번호 공격

실행 중인 SSH 데몬의 또 다른 취약점은 무차별 암호 공격입니다. 공격자가 SSH 서비스에 대해 상자를 조사하고 공통 사용자 이름 및 비밀번호 목록을 사용하여 인증을 시도하는 것이 일반적입니다. 공개 목록에 사용자 이름이 있고 비밀번호가 취약한 상자는 손상될 가능성이 높습니다. 이를 완화하는 방법은 다음과 같습니다.

  • 키 기반 인증을 사용하도록 SSH 데몬을 전환하고 공용 인터넷에서 비밀번호 인증을 비활성화합니다. ssh-keygen큰(예: >2048) 비트 수 또는 다른 암호화 시스템으로 서명된 키 쌍에 대한 적절한 비트 수를 사용하여 사용자 계정에 대한 RSA 키 쌍을 생성합니다 .
  • fail2ban로그를 관찰하고 방화벽 규칙을 추가하여 실패한 로그인 임계값에 도달한 후 동일한 주소에서 추가 연결 시도를 차단하는 것과 같은 소프트웨어를 사용합니다 .

VPN이 도움이 될까요?

VPN 솔루션은 SSH 터널로 해결하려는 것과 동일한 문제를 해결할 수 있습니다. 그들은 다른 기술적 접근 방식이나 다른 암호화 시스템을 사용할 수 있지만 둘 다 보안 의무를 이행하는 데 적합합니다. 두 가지 모두 유사한 오버헤드가 발생합니다(예: 사전에 각 당사자에게 키를 사전 배포하거나 확인해야 하는 의무는 동일합니다).

작동하려는 것이 원격 셸 서버뿐인 경우 VPN에서 제공하는 추가 기능은 이 특정 인스턴스에서는 불필요한 것으로 보입니다. VPN을 실행하면 추가적인 위험이 발생할 수 있습니다.또 다른머신에서 실행되는 데몬과 더 큰 공격 벡터.

관련 정보