OpenBlocks를 사용하여 원격지의 인터넷 공개되지 않은 내부 도메인의 웹 서버를 SSL-VPN 장치를 사용하지 않고 안전하게 이용하려면(OpenBlocks를 간이 VPN 기기처럼 사용)

내부 도메인의 웹 서버를 원격지에서 안전하게 이용하기 위한 전제 조건


  • 원격지에 설치하는 가정의 OpenBlocks 상의 ssh 를 사용해, 목적의 웹 서버와 같은 네트워크의 밟드 서버, 또는 Web 서버 자신에 접속할 수 있는 것.
  • OpenBlocks에서 Dnsmasq가 실행 중입니다.

  • 이 절차의 장점은 추가 소프트웨어를 설치하지 않고도 기본 OpenBlocks에서만 비교적 안전하고 쉽게 웹 서버를 원격으로 사용할 수 있다는 것입니다.

    완전한 VPN처럼 모든 TCP 포트나 프로토콜을 사용할 수 있는 것은 아니지만 반대로 OpenBlocks 측의 네트워크 보안 위험을 전반적으로 피할 필요가 없기 때문에 어떤 의미에서 VPN보다 안전성이 높다. 라고 생각할 수도 있습니다.


    1. OpenBlocks에 ssh로 루트 로그인하여 키 쌍을 만듭니다.



    OpenBlocks 루트에서 ssh-keygen을 사용하여 암호 문구가없는 키 쌍을 만듭니다.
    root@ob_skurioka:~# ls -la .ssh/
    total 20
    drwx------ 2 root root 4096 Mar  8 16:03 .
    drwx------ 4 root root 4096 Mar  8 21:10 ..
    -rw------- 1 root root 1679 Mar  8 16:03 id_rsa
    -rw-r--r-- 1 root root  414 Mar  8 16:03 id_rsa.pub
    root@ob_skurioka:~#
    

    2. 웹서버와 동일한 네트워크의 로그인처의 서버(반대서버)에서 작성한 공개키를 추가한다.


    [user@Server ~]$ vim .ssh/authorized_keys
    

    3. OpenBlocks에 ssh로 루트 로그인하고 포트 포워드에 대한 스크립트를 작성합니다.



    /root/auto_session_wrap.sh
    #!/bin/sh
    ulimit -n 1006500   # ssh のバグ?により、ファイルディスクリプタを 食い尽くすバージョンがある為、念の為の暫定処置
    while(true) do
            if [ `ps ax | grep auto_session_to_xx.sh | grep -v grep | wc -l` = "0" ]; then
                    /root/auto_session_to_xx.sh &   # 任意のファイル名に変更する
            fi
            sleep 10
    done
    

    /root/auto_session_to_xx.sh는 임의의 파일 이름으로 변경합니다.
    두 파일 모두 chmod에서 실행 권한을 부여합니다.

    /root/auto_session_to_xx.sh
    #!/bin/sh
    sleep 10
    ssh -t -t -o 'ExitOnForwardFailure=yes' -o 'ServerAliveInterval=10' -o 'ConnectTimeout=10' -L 192.168.0.xxx:80:192.168.yyy.zzz:80 -R ttttt:192.168.0.xxx:880 -R sssss:localhost:22 [email protected]
    exit $?
    



    지정하는 파라미터
    설명


    192.168.0.xxx
    OpenBlocks 자신의 비공개 IP

    192.168.yyy.zzz
    게시하려는 웹 서버의 내부 IP 주소

    ttttt
    발판 서버에서 OpenBlocks 관리 화면 (WEB UI)을 열 때의 포트

    sssss
    발판 서버에서 OpenBlocks에 ssh 로그인 할 때의 포트

    aaa.bbb.ccc.ddd
    OpenBlocks에서 본 발판 서버의 글로벌 IP

    사용자
    발판 서버의 로그인 계정


    4. auto_session_to_xx.sh를 실행하여 OpenBlocks에서 발판 서버로 자동 ssh 로그인 할 수 있는지 확인하십시오.


    root@ob_skurioka:~# ./auto_session_to_xx.sh
    Last login: Sat Mar 14 20:10:23 2020 from xxx.xxx.xxx.xxx
    [user@Server ~]$
    

    5. OpenBlocks 관리 화면 (WEB UI)에 로그인하고 [확장] => [스크립트 편집]에서 시작 스크립트를 편집합니다.


    echo "192.168.0.xxx   hoge.fuga.jp" >>/etc/hosts
    /etc/init.d/dnsmasq restart
    iptables -A INPUT -s 192.168.0.0/16 -d 192.168.0.xxx -p tcp --dport 80 -j ACCEPT
    nohup /root/auto_session_wrap.sh &
    


    지정하는 파라미터
    설명


    192.168.0.xxx
    OpenBlocks 자신의 비공개 IP

    hoge.fuga.jp
    게시하려는 웹 서버의 내부 FQDN

    192.168.0.0/16
    OpenBlocks에서 서비스하고 싶은 내부 IP 주소 대역



    OpenBlocks를 다시 시작하면 OpenBlocks 내부의 모든 PC에 웹 서버 서비스를 제공하고 원격지에서 안전하게 사용할 수 있습니다.

    개요는 알았지만 Dnsmasq를 사용하여 OpenBlocks를 내부 FQDN으로 작동합니다.
    단순히 ssh 포트 포워드로 자신을 향한 http(80번)를 전송하고 있을 뿐입니다.

    좋은 웹페이지 즐겨찾기