
다음 작업을 위해 어떤 구현 경로를 취해야 하는지 알아내도록 도와주세요.
웹서버 역할을 하는 블랙박스 장치가 있습니다(브라우저의 주소 필드에 IP 주소를 입력하여 로컬로 연결할 수 있습니다.). 이 상자는 간단한 사용자 이름과 비밀번호를 제외하고는 어떠한 보안 조치도 구현하지 않습니다. 이 서버가 격리된 네트워크에 있는 경우에는 확실히 문제가 없지만 인터넷, 즉 세계 어디에서나 액세스할 수 있기를 바랍니다. 이를 통해 데이터 암호화에 TLS 보안을 사용하고 싶습니다.
Rasbperry PI(및 openVPN 소프트웨어)를 사용할 수 있으므로 이 애플리케이션에 적합할 것이라고 생각했습니다. Raspberry PI를 사용하여 VPN, 브리지, 라우터 및 방화벽을 구현하는 방법에 대한 다양한 튜토리얼이 있지만 네 가지 기능 중 어느 것이 내 애플리케이션에 적합한지 알 수 없습니다. 개념도는 아래와 같습니다.
Raspberry Pi에는 인터넷 액세스를 위한 두 개의 네트워크 인터페이스가 있습니다. 하나는 지상 이더넷(eth0)을 통하고, 다른 하나는 셀룰러 인터넷(eth1)을 사용하며 지상 인터넷 연결을 선호하는 인터페이스입니다. 두 인터페이스의 IP 주소가 모두 알려집니다. 세 번째 이더넷 인터페이스(eth2)는 스위치를 통해 로컬 네트워크에 연결됩니다. 서버도 스위치에 연결됩니다. 저는 서버를 제어할 수 없습니다(블랙박스입니다). 저는 서버의 IP 주소만 알고 있습니다.
아이디어는 Raspberry PI가 나와 서버 사이의 중개자 역할을 하도록 하여 웹 브라우저를 사용하여 해당 웹 애플리케이션에 안전하게 연결할 수 있도록 하는 것입니다.하지만 Raspberry Pi가 VPN, 라우터, 브리지 또는 방화벽 중 어떤 기능을 구현해야 할까요?
편집하다:
위에서 언급한 작업은 나에게 너무 가파르고(능력 부족) 처음부터 설정을 단순화하기로 결정했습니다. 누군가가 질문과 해당 답변이 유용하다고 생각할 경우를 대비하여 질문의 윗부분을 제거하고 싶지 않았습니다. 대신, 새로운 (간단화된) 설정은 다음과 같습니다:
RP는 다음을 통해 셀룰러 인터넷에 연결됩니다.ppp0인터페이스하고 모든 트래픽을 다음으로 라우팅합니다.eth0인터페이스는곧장서버에 연결됨:
1. dynamic ppp0 IP address (given by cell service provider)
2. static eth0 IP address (assigned by me)
3. non-secure internet connection
4. RP is connected to the server directly (no switch needed)
나는 다음과 같은 몇 가지 해결책을 찾았습니다.이것그리고이것, 그러나 왜 일이 그런 식으로 이루어지는지 명확하게 설명하지 않습니다. 또한 어떻게 해야 할지 모르는 명령줄 지시문도 제공합니다.실행 취소. 대신, 필요한 경우 편집하고 되돌릴 수 있는 실제 시스템/구성 파일을 누군가 참조해줬으면 좋겠습니다.
현재는 RPi를 웹서버에 연결하면 웹브라우저에서 찾아볼 수 있습니다. 목표는 RPi를 통해 인터넷에서 웹 서버에 액세스할 수 있도록 하는 것입니다. ppp0 인터페이스가 셀룰러 연결에 따라 위아래로 이동하고 해당 IP 주소가 매번 다르고 알 수 없다는 점을 고려하여 라우팅을 올바르게 설정하는 방법에 대한 교육 튜토리얼을 제공할 수 있습니까?
답변1
TLDR;
웹 서버를 보호하려면 방화벽이 필요하며 아마도 라우터가 이미 이 기능을 제공하고 있을 것입니다.
세부
실제로 필요한 것은 웹 서버를 보호하기 위한 방화벽과 SSL뿐입니다. 홈 라우터가 이미 이를 제공하는 경우 Raspberry Pi는 더 이상 보안을 제공하지 않습니다.
웹 서버와의 통신을 보호하려면 SSL을 사용해야 합니다. SSL 기능을 제공하기 위해 Raspberry Pi를 역방향 프록시로 사용할 수도 있지만 SSL 암호화는 계산량이 많고 프록시가 웹 서버에서 SSL 부하를 덜어주기 때문에 역방향 프록시가 존재합니다. 하지만 Pi는 아마도 웹 서버보다 컴퓨팅 성능이 훨씬 낮을 것입니다. 하지만 Pi 프로젝트를 찾고 있다면 재미있을 수 있습니다.
일반적인 오해는 VPN이 없는 것보다 "더 안전하다"는 것입니다. VPN은 단순히 암호화 + 터널링입니다. 터널링을 통해 두 네트워크 모두가 동일한 네트워크에 있다고 믿게 됩니다. 두 네트워크를 "결합"하려는 것이 아니라면 VPN이 필요하지 않습니다. SSL + 방화벽은 괜찮을 것입니다.
답변2
가장 간단한 해결책은 Pi를 라우터/방화벽 장치로 구성하는 것입니다. 즉, 웹 서버에 대한 요청을 방화벽으로 설정하여 VPN 인터페이스를 통해 종료되는 경우에만 PI를 통과하지만 PI를 통과하지 않도록 할 수 있습니다. LAN의 다른 장치로부터 Pi를 격리하십시오. 이는 다이어그램에 따라 Pi를 통해 강제로 모든 인터넷 연결이 작동한다는 것을 의미합니다. LAN의 다른 장치가 손상된 경우 이를 통해 웹 서버에 액세스할 수 있습니다.
(간단한 솔루션과 적당히 안전한 솔루션을 찾고 있다면 아래의 모든 내용을 무시해도 됩니다.)
대신 사용할 수 있는 더 복잡하고 비용이 많이 드는 시나리오가 있습니다. 일반 스위치를 사용하는 대신 관리되는 스위치를 사용하고 Pi에만 표시되는 자체 VLAN에서 웹 서버를 구성할 수 있습니다(즉, Pi는 여러 VLAN에서 통신합니다). 또한 웹 서버를 자체 IP 주소에 배치하면 LAN의 다른 장치가 Pi를 통해서만 웹 서버와 통신할 수 있습니다.
PI의 VLAN 인터페이스에서 시작된 패킷만 포트 80에서 통신할 수 있도록 웹 서버가 있는 VLAN을 방화벽으로 설정하여 위의 스위치 아이디어를 더욱 확장할 수 있습니다. 그런 다음 역방향 프록시를 추가할 수 있습니다(예: Apache 사용). )를 포트 443에서 응답한 다음 포트 80의 웹 서버에서 요청을 가져올 수 있는 Pi에 연결합니다. 클라이언트 측 및 일반 인증서를 사용하면 라우터에 액세스할 수 있는 사람과 클라이언트 인증서가 있는 사람만 액세스할 수 있도록 보장할 수 있습니다. 연결할 수 있습니다.