OpenVPN 익명으로 내부 서버에 대한 SSH 액세스 허용


10

익명 VPN을 사용하고 있지만 내부 컴퓨터에 대한 SSH 액세스를 원합니다.

SSH를 통해 내부 컴퓨터에 어떻게 액세스합니까? 나는 할 때 ssh를 98.123.45.6 , 연결 시간을.

  • 케이블 공급 업체의 IP 주소 : 98.123.45.6
  • VPN을 통한 익명 IP : 50.1.2.3
  • 내부 컴퓨터 : 192.168.1.123

주변을 검색 할 때 iptables 규칙, 라우팅 규칙을 설정하거나 sshd_config에 ListenAddress를 추가 할 것을 권장합니다. 이 중 어느 것이 내 사건에 적용됩니까?

경로 는 다음과 같습니다 .

커널 IP 라우팅 테이블
대상 게이트웨이 Genmask 플래그 지표 참조 사용 Iface
10.115.81.1 10.115.81.9 255.255.255.255 UGH 0 0 tun0
10.115.81.9 * 255.255.255.255 UH 00 tun0
50.1.2.3-sta ddwrt 255.255.255.255 UGH 0 eth0
192.168.1.0 * 255.255.255.0 U 202 0 eth0
169.254.0.0 * 255.255.0.0 U 204 0 vboxnet0
루프백 * 255.0.0.0 U 0 0 lo
기본 10.115.81.9 128.0.0.0 UG 0 0 tun0
128.0.0.0 10.115.81.9 128.0.0.0 UG tun0
기본 ddwrt 0.0.0.0 UG 202 0 eth0

답변:


15

이 문제를 해결하려면 iptables와 라우팅 규칙을 모두 설정해야합니다 . 발생한 특정 문제는 나가는 SSH 패킷이 이더넷 인터페이스 대신 익명의 VPN 터널 인터페이스를 통해 라우팅되고 있다는 것입니다. VPN 소프트웨어가 터널 인터페이스를 통해 처리되지 않은 모든 트래픽을 보내도록 라우팅 규칙을 설정했기 때문에 이런 일이 발생합니다. 네트워크 트래픽을 익명화하는 데 좋습니다. 컴퓨터에 SSH 연결을 설정하는 데 좋지 않습니다.

이 문제를 해결하는 몇 가지 방법이 있지만 동일한 상황에서 나를 위해 일한 방법을 알려 드리겠습니다. 우리가해야 할 일은 다음과 같습니다.

  1. 비 VPN 트래픽을 처리하기 위해 새로운 IP 규칙 테이블 생성
  2. 특정 넷 필터 마스크로 표시된 패킷에 대한 VPN이없는 테이블을 조회하기 위해 IP 규칙 추가
  3. VPN이없는 테이블의 모든 트래픽이 터널 대신 이더넷 인터페이스를 사용하도록 지시하는 IP 경로 추가
  4. 지정된 netfilter 마스크로 모든 SSH 트래픽을 표시하기 위해 iptables 규칙을 추가하십시오.

참고 : 다음을 수행하는 동안 Raspbian과 함께 작업했기 때문에 배포판에 맞게 명령을 약간 조정해야 할 수도 있습니다 .

새로운 IP 규칙 테이블 생성

iproute2의 테이블 정의 파일을 검사하여 시작하십시오. 기존 규칙 테이블의 이름이나 번호를 사용하지 않기를 원합니다.

cat /etc/iproute2/rt_tables

다음 라인을 따라 뭔가를 보게 될 것입니다.

# reserved values
255      local 
254      main
253      default   
0        unspec
#
# local
#
#1      inr.ruhep

위에서 사용하지 않은 새 규칙 테이블의 임의의 숫자와 이름을 선택하십시오. novpn이 답변의 나머지 부분에 번호 201과 이름 을 사용합니다.

정의를 정의 파일에 직접 추가하거나 선택한 텍스트 편집기에서 편집하십시오.

echo "201 novpn" >> /etc/iproute2/rt_tables

VPN이없는 테이블을 조회하기 위해 새 IP 규칙 추가

넷 필터 마스크를 다루는 기존의 IP 규칙을 확인하십시오.

ip rule show | grep fwmark

grep이 아무 것도 나타나지 않으면 분명합니다. 일부 줄이 인쇄되면 fwmark각 줄 의 단어 오른쪽에있는 16 진수를 기록해 두십시오 . 현재 사용하지 않는 번호를 선택해야합니다. 기존의 fwmark 규칙이 없으므로 숫자 65를 선택했습니다.

ip rule add fwmark 65 table novpn

이 작업을 수행하면 netfilter 마스크 65가있는 모든 패킷이 새 novpn테이블 을 조회 하여 패킷을 라우팅하는 방법에 대한 지침을 찾습니다.

이더넷 인터페이스를 사용하도록 새 테이블의 모든 트래픽을 지시하십시오.

ip route add default via YOUR.GATEWAY.IP.HERE dev eth0 table novpn

여기서주의해야 할 것은입니다 dev eth0. 이렇게하면 novpn테이블을 통과하는 모든 트래픽이 VPN에서 생성 한 가상 터널 인터페이스 대신 하드웨어 이더넷 인터페이스 만 사용하도록합니다.

이제 새로운 규칙과 경로가 즉시 적용되도록 iproute 캐시를 비울 수있는 좋은시기입니다.

ip route flush cache

지정된 Netfilter 마스크로 모든 SSH 트래픽을 표시하도록 방화벽 규칙에 지시

iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 65

여기에 너무 깊이 설명 할 수있는 옵션이 너무 많습니다. iptables에 대한 매뉴얼 페이지를 읽고 여기에서 무슨 일이 일어나고 있는지 이해하는 것이 좋습니다.

man iptables

간단히 말해, 방화벽의 맹글 테이블 (특수 패킷 처리를 위해)에 출력 규칙을 추가하여 소스 포트 22에서 발생하는 모든 TCP 패킷을 지정된 넷 필터 마스크 65로 표시하도록 지시합니다.

다음은?

이제 SSH를 테스트 할 준비가되었습니다. 모든 것이 잘되면, "로그인"메시지가 나타납니다.

보안을 위해 방화벽 인터페이스에서 들어오는 SSH 요청을 터널 인터페이스에서 삭제하도록 방화벽에 지시하는 것이 좋습니다.

iptables -A INPUT -i tun0 -p tcp -m tcp --dport 22 -j DROP

위의 모든 지시 사항은 일시적이며 (규칙 테이블 ID 작성 제외) 다음에 컴퓨터를 다시 시작할 때 지워집니다. 그것들을 영구적으로 만드는 것은 내가 당신에게 맡기는 운동입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.