블로그 이미지
훅크선장

카테고리

분류 전체보기 (362)
사진이야기 (23)
펭귄컴퓨팅 (121)
컴퓨터보안 (84)
돼지털세상 (12)
네트웍세상 (68)
신기한것들 (4)
절름발이 프로그래머 (59)
하드웨어개조 (23)
멀알려줄까 (35)
홈베이킹&홈쿠킹 (2)
잡다한것들 (15)
Total
Today
Yesterday

달력

« » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

공지사항

태그목록

최근에 올라온 글

VPN 설치 및 설정에서 자주 질문되는 FAQ 중의 하나인

Routed 모드와 Bridged 모드의 차이점을 외국 문서들을 몇 가지 보면서, 간단히 정리해보았습니다.


 

Routed 모드

Bridged 모드

설명

접속되는 서버가 Router(Gateway)로 동작하는 방식으로 클라이언트가 보내는 트래픽을 정해진 규칙에 따라 포워딩(전달)

동일한 두 네트워크를 연결하는 방식으로 원격으로 떨어진 두 네트워크를 동일한 네트워크로 묶음

설정 및 기능

가장 일반적인 방식으로, 설정이 간단하지만 특정한 기능 제한이 존재

설정이 좀 더 어렵고 모든 운영체제에서 지원되지 않지만, 네트워크상의 모든 기능이 가능

IP Broadcast

허용하지 않음 (전달하지 않음)

허용 (전달)

장점

- 효율적이고, 확장성이 뛰어남

- 효율성을 위해 보다 좋은 MTU의 조정이 가능

- BroadcastVPN을 가로지름 - Windows NetBIOS 파일 공유와 네트워크 인접 검색과 같은 LAN Broadcast가 가능

- 라우팅 설정이 별도로 필요하지 않음

- Ethernet 상의 모든 프로토콜이 동작

- 상대적으로 전문가들은 설정하기 쉬움

단점

- 다른 VPN 네트워크상의 검색이 동작하려면, WINS 서버를 반드시 사용해야 함

- 개별 서브넷에 대한 라우팅 설정이 필요

- Broadcast 기반의 소프트웨어 기능은 동작하지 않음

- 현재 IPv4에서만 동작하며, IPv6를 사용하려면 서버와 클라이언트 양단에서 명백하게 명시해야만 함

- 라우팅 방식에 비해 효율적이지 않고, 쉽게 확장성이 지원되지 않음


Posted by 훅크선장
, |

위험한 telnet 접속 서비스보다는 안전한 ssh 접속 서비스를 설정합니다.

이것은 Services -> Services 메뉴에서 설정합니다.

 

telnet 항목을 disable로 선택하고,

Secure Shell 항목에서 SSHd, SSH TCP Forwarding, Password Loginenable로 선택합니다.

Port22번 디폴트를 그대로 두고(필요에 따라 포트번호를 선택할 수 있습니다.)

Authorized Keys는 비워둡니다. 만약, 공개키 기반의 로그인을 선택하려면, 위의 Password Logindisable로 선택하고, Authorized Keysssh 로그인용 공개키를 입력하면 됩니다. (고급 사용자에게 권장합니다.)

 

SSH TCP Forwarding을 선택하면, SSH Tunneling 기능을 사용할 수 있으므로, 매우 유용합니다만, 필요없다면 disable로 선택해도 무방합니다.



Posted by 훅크선장
, |
DIR-825를 비롯한 공유기들은 USB 포트를 가지고 있어서, 추가 디스크 및 프린터등을 연결해서 사용할 수 있습니다.

USB 포트에 구형 IDE 하드디스크 80GB를 ext3 파티션으로 포맷한 다음, IDE-USB 컨버터를 중간에 끼워서 연결합니다.
IDE 하드디스크가 USB 디스크로 연결되면, 자동으로 그 공간을 인식합니다. 그 공간은 NAS 기능이라고 불리는 서비스를 통해서, FTP 서버로 만들어보았습니다.

USB 기능을 사용하려면,

DD-WRT 상단 메뉴에서 Services -> USB를 선택합니다.

 

USB Support 항목에서,

Core USB Support, USB 2.0 Support, USB Storage Support, ext2 / ext3 File System Support, FAT File System Support, Automatic Drive Mount 의 6개 옵션을 Enable로 선택합니다.

USB 1.1 Support (UHCI), USB 1.1 Support (OHCI), USB Printer Support 의 3개 옵션은 Disable로 선택합니다만, USB 포트에 연결하는 장비가 USB 1.1 장비이거나, USB 프린터인 경우에는 Enable로 바꾸어 선택하여야 합니다.



USB 포트에 USB 스토리지 장비를 연결하면, Disk Info 항목에서 연결된 디스크의 정보가 정상적으로 마운트되는 것을 확인할 수 있습니다. 일반적인 USB 메모리 스틱이나 USB 변환 어댑터를 중간에 끼운 SATA, IDE 하드디스크들이 잘 연결됩니다. 단, 주의할 점은 디스크를 포맷할 때, FAT16/32 또는 리눅스의 ext2/ext3 파일시스템으로 포맷해야 합니다. NTFS 파일시스템은 지원되지 않습니다.


디스크가 마운트되었다면, FTP 서버의 공간으로 활용할 수 있습니다.

FTP 기능을 사용하려면,

DD-WRT 상단 메뉴에서 Services -> NAS를 선택합니다.

 

ProFTPD 항목에서,

ProFTPD 옵션은 Enable 로,

Server Port는 21 로, (다른 포트번호를 선택해도 됩니다. 뒤에 방화벽 설정에서 포트번호 설정을 맞추어야 합니다.)

Files Directory는 /mnt 로 선택하고,

Allow Write는 Enable로 선택하고,(사용자들이 파일 업로드할 수 있도록 하려면, 여기서 Enable로 선택하고, 단순히 사용자들이 파일을 받아가기만 한다면, disable로 선택하는 것이 좋습니다.)

Anonymous Login (Read-only)는 Disable 로 선택합니다.(이건 절대로 Enable 하지 마세요~. 보안상 좋지 않습니다.)


User Password List에는 FTP를 사용할 수 있는 사용자 계정과 패스워드를 지정합니다.

형식은 [사용자 ID] 스페이스 문자 [사용자 패스워드] 입니다.




설정이 완료되었다면, 공유기 내부와 외부에서 각각 FTP 서비스로의 로그인이 정상적으로 이루어지고 파일들의 업로드/다운로드를 테스트해보면 됩니다.


Posted by 훅크선장
, |

요즘 누구나 스마트폰 하나씩은 가지고 있습니다.(안그러면 서민 아니잖아요~ ^ ^ 호호호, 농담입니다.)

그런데, 신문이나 뉴스에서 스마트폰의 무선랜 네트워크 통신(WiFi 네트워크)이 보안에 취약하다면서 연신 경고를 하고 있습니다. 개인적인 경험상, 아무에게나 공개된(규모 큰 통신사업자들이 제공하는 ShowBasic 이나 T wifi zone 같은) 무선랜은 스니핑이나 쿠키 도용 등에 매우 취약합니다. 보안 기능이 없는 무선랜 네트워크를 사용하는 것은 내 개인정보와 나의 네트워크 활동을 아무에게나 막 노출시키는 행위입니다.

 

그것을 막을 수 있는 유일한 방법은 나만의 네트워크 즉, VPN을 사용하는 것입니다.(VPN을 사용한다고 모든 해킹 문제를 해결할 수는 없지만, 최소한 공개된 무선랜에서의 안전은 보장할 수 있습니다.)

 

DD-WRT는 기본적으로 PPTP VPN 서버 기능을 제공하고 있으며, Windows 운영체제 대부분(2000, XP, Vista, Win 7)에서 PPTP 클라이언트 기능이 지원됩니다. 그리고, 아이폰과 안드로이드 OS기반의 대부분의 안드로이드폰에서도 PPTP 클라이언트 기능은 디폴트로 지원됩니다.

 

PPTP VPN 서버 설정하기

 

DD-WRT 상단 메뉴에서 Services -> VPN을 선택합니다.

 

PPTP Server 항목에서,

PPTP Server, Broadcast Support, Force MPPE Encryption 3개 옵션을 Enable로 선택합니다.

DNS1, DNS2, WINS1, WINS2 옵션의 입력을 그대로 비워둡니다.

Server IP 옵션에는 192.168.44.2를 입력합니다. (공유기의 LAN IP 중에서 PC나 노트북에 할당되지 않은 IP를 선정합니다. 일반적으로, LAN IP1번은 공유기의 IP이므로, 바로 그 다음의 2번이나 3번을 선택하는 것이 좋습니다. 여기 예제에서는 공유기의 LAN IP 대역이 192.168.44.x 대역으로 지정되었으므로, 192.168.44.2라고 설정했습니다. 만약 공유기 LAN IP 대역을 다르게 설정했다면, IP 대역에서 적당한 IP를 선정하면 됩니다.)


Client IP(s) 옵션에는 192.168.44.240-250이라고 입력합니다. (공유기의 LAN IP 중에서 PC나 노트북에 할당되지 않고, PPTP 클라이언트들이 사용하게 될 IP 대역을 선정합니다. 일반적으로, 공유기 LAN IP들중에서 240번에서 250번까지는 잘 할당되거나 사용되지 않으므로, 그러한 IP 대역을 선택하는 것이 좋습니다. 여기 예제에서는 공유기의 LAN IP 대역이 192.168.44.x 대역으로 지정되었으므로, 192.168.44.240-250이라고 설정했습니다. 만약 공유기 LAN IP 대역을 다르게 설정했다면, IP 대역에서 적당한 IP 대역을 선정하면 됩니다.)


CHAP-Secrets 옵션에는 클라이언트들이 서버에 접속할 때, 사용할 사용자명과 패스워드를 입력합니다. 형식은 사용자명 [빈칸] * [빈칸] 패스워드 [빈칸] *”입니다. 사용자명과 패스워드 사이에 빈칸과 * 별문자, 빈칸의 3개 문자가 한 쌍으로 구분자로 사용되는 것에 주의하기 바랍니다. 그리고 패스워드에는 # 문자가 들어가면 안됩니다.(# 문자 뒤부분이 주석으로 인식될 수 있습니다.)



그리고, PPTP VPN 서버를 공유기 IP와는 다르게 별도로 설정하였으므로, 포트 포워딩을 추가하여야 합니다. (공유기 IPPPTP VPN 서버 IP로 설정하면 정상적인 동작이 되지 않는 것으로 알려져 있고, 인터넷상의 설명에 보면, PPTP 서비스 데몬은 접속한 클라이언트와 Point To Point 접속을 하기 때문에 별도의 내부 IP를 가지고 동작하며, 패킷들이 정상적으로 공유기 내부 LAN으로 전달되기 위해서는 포트 포워딩을 추가해야 한다고 합니다.)

 

DD-WRT 상단 메뉴에서 NAT/QoS -> Port Forwarding을 선택합니다.

 

Forwards 항목에서, Add 버튼을 누르면 새로운 입력항목이 생성됩니다.

새로운 입력항목에, “PPTP, 1723, TCP, 192.168.44.1,1723”을 입력하고, Enable을 체크합니다.

Save 버튼을 눌러 내용을 저장한 다음, Apply Setting 버튼을 눌러 공유기에 적용시키면 됩니다.




PPTP 접속하기 (iPhone에서 VPN 설정하기)

 

1) 아이폰의 첫 화면에서 설정아이콘을 선택하고, “설정화면에서 아래쪽으로 한 페이지 정도 내려가면 일반항목이 보입니다, “일반항목으로 들어갑니다.

2) “일반화면에서 네트워크항목으로 들어갑니다.

3) “일반화면에서 네트워크항목으로 들어갑니다.

4) “네트워크화면에서 “VPN”항목으로 들어갑니다.

5) “VPN”화면에서 “VPN구성 추가...”항목으로 들어갑니다.

6) “구성 추가화면에서 먼저 PPTP를 선택하고(파란색으로), 설명은 적당한 이름으로 설정하고, 서버와 계정, 암호를 각각 공유기에서 설정한 정보와 동일하게 입력합니다.

7) RSA SecurID, 암호화 단계, 모든 트래픽 보내기, 그리고 프록시 항목은 원래 설정을 그대로 사용합니다.

 

이것으로 설정은 완료되었습니다.

 

PPTP VPN의 사용은

아이폰의 첫 화면에서 설정아이콘을 선택하면, VPN 항목이 보입니다. VPN 항목의 슬라이드 버튼을 오른쪽으로 이동시키면(파란색이 드러납니다.), VPN 접속이 시작됩니다.

VPN이 정상적으로 연결되면, 아이폰의 첫 화면 상단에서 3G 표시 또는 Wifi 표시 바의 옆에 사각형으로 VPN이라는 아이콘이 표시됩니다. (“설정화면에서는 배터리 잔량 표시 옆에 파란색 바탕의 사각형으로 VPN이라는 아이콘이 표시됩니다.)

 

PC나 노트북에서의 설정방법은 다음 링크를 참고하세요~.

http://chunun.com/252


 

Posted by 훅크선장
, |

공유기는 대부분 유동 IP를 사용할 수밖에 없습니다.(고정 IP는 비용이 비싸기 때문입니다.)

그리고, 유동 IP는 공유기가 꺼지다든지 하는 상황에서 바뀌는 경우가 많습니다. 이런 이유로 도메인 명으로 공유기를 접근하는 것이 쉬운 일은 아닙니다만, 이런 문제점은 해결해 주는 것이 바로 DDNS(Dynamic DNS) 서비스입니다.


DD-WRT 펌웨어는 다음과 같은,

DynDNS.org

freedns.afraid.org

ZoneEdit.com

No-IP.com

3322.org

easyDNS.com

TZO.com

DynSIP.org

8개 업체의 DDNS 설정을 지원합니다.(확인 결과, 일부 업체는 문 닫았습니다.)


제일 유명한 곳이 DynDNS.org 이지만, 개인적 선호에 의해서(2위 업체가 항상 서비스 정신이 좋다는 믿음 때문에), freedns.afraid.org를 선택해서 사용하고 있습니다. 2010년 말부터 현재까지는 아무런 문제없이, 아주 잘 동작하고 있습니다.


DD-WRT 상단 메뉴에서 Setup -> DDNS를 선택합니다.

DDNS 항목에서,

DDNS Service 옵션을 freedns.afraid.org로 선택하고,

User Name에 가입한 사용자 ID

Password에 가입할 때 설정한 패스워드를 입력합니다.(입력한 패스워드는 그림과 같이, 검은 동그라미로 가려져서 표시됩니다.)

 

Host Name에 공유기에 할당할 도메인 명을 입력합니다.

freedns.afraid.org에서는 도메인 명뿐만 아니라, 특별한 인증코드를 뒤에 추가하여야 합니다.

(콤마“,” 기호로 분리하여, freedns.afraid.org에서 지정해준 인증코드를 추가합니다. - 인증코드는 freedns.afraid.org에서 가입한 사용자와 도메인명마다 다르게 생성되며, freedns.afraid.orgDynamic DNS 메뉴를 선택하고, 각 도메인/서브도메인의 Direct URL이나 Wget Script 파일 내용에서 볼 수 있습니다.)

 

Do not user external ip check 옵션은 No로 지정합니다.

 

Options 항목에서

Force Update Interval은 기본은 10으로 10일마다 한번씩 IP 변경 상황을 점검하도록 되어있지만, 안정적인 운영을 위해서 1로 설정하는 것이 좋다고 생각합니다.

 

위와 같은 설정을 하고, 적용시키면 바로 DDNS Status 항목에서 Syslog 형태의 로그를 볼 수 있습니다. 정상적인 설정이 이루어졌는지 확인하거나, 문제가 생겼을 때 참고할 수 있습니다.


Posted by 훅크선장
, |

Windows 7 이나 Vista 의 경우에는 프로그램을 관리자 권한으로 실행하여야만, 시스템의 라우팅 테이블을 변경할 수 있다. 그래야만, 모든 네트워크 트래픽을 OpenVPN 서버측, 즉 공유기로 보낼 수 있다.


인터넷 망에서 원격으로 공유기의
OpenVPN 서비스로 접속하려면, 클라이언트(아마도 노트북이거나, 또는 원격지의 어떤 컴퓨터)OpenVPN 접속 프로그램을 설치하고, 설정파일을 통하여, 접속과 관련된 클라이언트 설정이 반드시 필요합니다.

 

http://openvpn.net/index.php/open-source/downloads.html

에서 Windows Installer(20112월 현재 openvpn-2.1.4-install.exe 파일)를 다운받아서 설치합니다.

 

전 단계에서 생성한 인증서 파일중에서 ca.crt, client1.crt, client1.key 파일을 OpenVPN 클라이언트가 설치된 디렉토리의 하위 설정 디렉토리로 복사합니다.(WinXP에서 일반적으로 C:\Program Files\OpenVPN\config)

클라이언트의 설정파일인 openvpn.ovpn 파일을 다음과 같이 수정합니다.

remote 210.132.245.97 1194


client

remote-cert-tls server

dev tun0

proto tcp

resolv-retry infinite

nobind

persist-key

persist-tun

float

 

ca ca.crt

cert client.crt

key client.key

 

redirect-gateway def1

dhcp-option DNS 168.126.63.1


 

설정파일 내용

설명

remote 210.132.245.97 1194

클라이언트가 접속할 OpenVPN 서버의 도메인명 또는 IP와 포트번호를 지정한다.

서버의 IP(여기서는 210.132.254.97)를 지정하거나, 또는 공유기에 무료 DDNS 설정으로 인터넷 상에서 접속가능한 도메인명을 할당하였다면, 그 도메인명을 지정할 수 있다.

공유기에서 OpenVPN 서버 설정에서 설정한 포트번호를 동일하게 지정하여야 한다.

client

현재 설정파일이 클라이언트용임을 지정한다. 바꾸지 말고, 그대로 사용하면 됩니다.

remote-cert-tls server

접속할 OpenVPN 서버가 인증서 기반의 TLS 통신을 사용함을 지정한다.

바꾸지 말고, 그대로 사용하면 됩니다.

dev tun0

OpenVPN이 사용하는 네트워크 디바이스 명을 지정합니다. 바꾸지 말고, 그대로 사용하면 됩니다.

proto tcp

OpenVPN이 사용하는 기반 프로토콜을 지정합니다.

공유기에서 OpenVPN 서버 설정에서 설정한 프로토콜(udp/tcp)을 동일하게 지정하여야 한다.

resolv-retry infinite

도메인 resolve 재시도를 무한히 계속한다고 지정합니다. 바꾸지 말고, 그대로 사용하면 됩니다.

nobind

소켓 바인드 기능(서버 역할)을 하지 않는다고 지정합니다. 바꾸지 말고, 그대로 사용하면 됩니다.

persist-key

재연결 시에도 동일한 키를 그대로 사용한다고 지정합니다. 바꾸지 말고, 그대로 사용하면 됩니다.

persist-tun

재연결 시에도 동일한 디바이스를 그대로 사용한다고 지정합니다. 바꾸지 말고, 그대로 사용하면 됩니다.

float

클라이언트가 고정된 IP를 사용하지 않는다고 지정합니다. 바꾸지 말고, 그대로 사용하면 됩니다.

ca ca.crt

CA 인증서 파일명을 지정합니다. 바꾸지 말고, 그대로 사용하면 됩니다. (전 단계에서 이미 CA 인증서 파일명을 ca.crt라고 지정하였습니다.)

cert client1.crt

클라이언트 인증서 파일명을 지정합니다.

바꾸지 말고, 그대로 사용하면 됩니다. (전 단계에서 이미 클라이언트 인증서 파일명을 client1.crt라고 지정하였습니다. 만약 다른 인증서를 사용한다면, 그 파일명을 바꿔 적어주면 됩니다.)

key client1.key

클라이언트 비밀키 파일명을 지정합니다.

바꾸지 말고, 그대로 사용하면 됩니다. (전 단계에서 이미 클라이언트 비밀키 파일명을 client1.key라고 지정하였습니다. 만약 다른 비밀키를 사용한다면, 그 파일명을 바꿔 적어주면 됩니다.)

redirect-gateway def1

OpenVPN 가상 네트워크에 접속된 경우, 서버의 게이트웨이 정보를 클라이어트로 가져와서 적용합니다.

바꾸지 말고, 그대로 사용하면 됩니다.

dhcp-option DNS 168.126.63.1

OpenVPN 가상 네트워크에 접속된 경우, 사용하게 될 DNS 서버의 IP 주소를 지정합니다.

공유기에 설정되어 있는 DNS 서버의 IP 주소를 지정하는 것이 가장 좋습니다만, 만약 확실하지 않거나, 잘 모른다면 예와 같이 한국의 기본 DNS 서버인 KT의 제 1 DNS 서버 IP(168.126.63.1)로 설정합니다.



클라이언트 프로그램을 실행하면, 컴퓨터의 오른쪽 하단 메뉴에 두대의 컴퓨터가 겹쳐진 모양의 아이콘이 생긴다.
아이콘 내의 겹쳐진 컴퓨터 화면은 빨간색이다. 이 아이콘에 마우스의 오른쪽 버튼을 클릭하면 메뉴가 나온다.
설정파일을 수정하거나, 로그를 보거나, 접속 및 접속 해제, 재접속등을 할 수 있다.

Connect를 시도하면, 아이콘 내의 겹쳐진 컴퓨터 화면이 노란색으로 바뀌었다가, 접속이 정상적으로 연결되면, 녹색으로 된다. (녹색이 정상이며, 접속 중 문제가 생기면 다시 노란색으로 변경된다.)

클라이언트가 서버에 정상적으로 접속한 경우, 로그의 내용은 다음과 같다.

Sun Feb 20 03:14:19 2011 OpenVPN 2.1.4 i686-pc-mingw32 [SSL] [LZO2] [PKCS11] built on Nov  8 2010
Sun Feb 20 03:14:19 2011 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables
Sun Feb 20 03:14:19 2011 Attempting to establish TCP connection with 59.26.166.208:1194
Sun Feb 20 03:14:19 2011 TCP connection established with 59.26.166.208:1194
Sun Feb 20 03:14:19 2011 TCPv4_CLIENT link local: [undef]
Sun Feb 20 03:14:19 2011 TCPv4_CLIENT link remote: 59.26.166.208:1194
Sun Feb 20 03:14:21 2011 [server] Peer Connection Initiated with 59.26.166.208:1194
Sun Feb 20 03:14:24 2011 TAP-WIN32 device [로컬 영역 연결 4] opened: \\.\Global\{6F8BCE95-DEC8-4312-B75C-0ACA19D8C739}.tap
Sun Feb 20 03:14:24 2011 Notified TAP-Win32 driver to set a DHCP IP/netmask of 10.100.200.10/255.255.255.252 on interface {6F8BCE95-DEC8-4312-B75C-0ACA19D8C739} [DHCP-serv: 10.100.200.9, lease-time: 31536000]
Sun Feb 20 03:14:24 2011 Successful ARP Flush on interface [4] {6F8BCE95-DEC8-4312-B75C-0ACA19D8C739}
Sun Feb 20 03:14:29 2011 Initialization Sequence Completed

Posted by 훅크선장
, |

제가 설치한 펌웨어 버전은 DD-WRT v24-sp2 (08/07/10) std입니다.

Dlink DIR-825 제품의 기본 펌웨어에는 VPN(PPTP, OpenVPN)freeRADIUS가 탑재되어 있습니다.


로컬 LAN 상에서 사용하는 IP 대역은 디폴트 설정인 192.168.1.1이 아닌, 192.168.44.1을 선택해서 사용하고 있습니다. 가능하면 C-class 대역을 일반적인 공유기가 사용하는 0, 1, 10, 100 등은 피하는 것이 좋습니다. 그래야 iptables를 이용한 패킷 라우팅에서 혼동이 적고, VPN등을 구축할 때도 혼선이 생기는 것을 피할 수 있습니다.

로컬 LAN 설정시, 피해야 할 IP 대역은

192.168.0.1

192.168.1.1

192.168.10.1

192.168.100.1

등입니다.

C-class 대역을 자기만의 번호를 선정해서 사용하기 바랍니다. (, 192.168.132.1)



DD-WRT 상단 메뉴에서 Services -> VPN을 선택합니다.

OpenVPN Daemon 항목을 찾아서,

Start OpenVPN Daemon 옵션을 Enable로 선택하고,

Start TypeSystem으로 선택합니다. (WAN Up을 선택해서, 공유기 리소스를 아낄 수도 있지만, 동작 안정성이 떨어진다고 하는 이야기가 있습니다.)

그림과 같은 인증서와 관련된 여러 입력 항목들이 나옵니다. (전 단계에서 생성하였던 인증서들의 내용이 필요합니다.)

 

일단, Certificate Revoke ListOpenVPN TLS Auth에는 아무 것도 입력하지 않습니다. 필요없는 부분이니 비워두면 됩니다.

 

CA Cert 부분에는 전 단계에서 생성한 ca.crt 파일 내용을 넣습니다.

인증서의 파일 내용을 넣을 때는 반드시, , 항상 “-----BEGIN CERTIFICATE-----” 행부터 “-----END CERTIFICATE-----” 행까지를 포함해서 넣습니다. 제외시키면 절대로 안됩니다. 반드시 포함시켜야 합니다.

 

Public Client Cert 부분에는 전 단계에서 생성한 server.crt 파일 내용을 넣습니다.

Private Client Key 부분에는 전 단계에서 생성한 server.key 파일 내용을 넣습니다.

DH PEM 부분에는 전 단계에서 생성한 dh2048.pem 파일 내용을 넣습니다. ( dh2048.pem 파일이 없고, 대신 dh1024.pem 파일이 있다면, 그 파일 내용을 넣습니다. 이것은 기본 키 크기에 따라 파일명이 달라지기 때문입니다. 1024 bits 키를 사용하면, dh1024.pem 파일이 생기고, 2048 bits 키를 사용하면, dh2048.pem 파일이 생성됩니다.)

 

OpenVPN Config 부분에는 OpenVPN을 서버로 사용하기 위한 설정 파일 내용을 넣습니다.

다음과 같은 내용인데, 현재 공유기 설정 및 사용할 환경에 따라 조금씩 달라질 수 있습니다.

예제로 보이는 다음의 내용은 아주 잘 동작하는 기본 형태입니다.


push "route 192.168.44.0 255.255.255.0"

server 10.100.200.0 255.255.255.0

 

dev tun0

proto tcp

port 1194

keepalive 10 120

 

dh /tmp/openvpn/dh.pem

ca /tmp/openvpn/ca.crt

cert /tmp/openvpn/cert.pem

key /tmp/openvpn/key.pem

 

management localhost 5001

 

 

설정파일 내용

설명

push "route 192.168.44.0 255.255.255.0"

OpenVPN의 가상 네트워크가 기본으로 사용할 라우트 정보를 지정합니다. 192.168.44.0는 각 공유기의 로컬 LAN IP 대역으로 바꾸어 사용해야 합니다.

server 10.100.200.0 255.255.255.0

OpenVPN의 가상 네트워크가 사용할 네트워크 대역을 지정합니다. 192.168.x.x 대역을 사용해도 됩니다만, 일반적인 사설 네트워크 망과의 혼동을 가급적 피하기 위해서, 10.x.x.x 대역으로 지정하는 것이 좋습니다. 혼동을 피할 수 있는 적절한 IP 대역을 선정해서 사용하면 됩니다.

dev tun0

OpenVPN이 사용하는 네트워크 디바이스 명을 지정합니다.

바꾸지 말고, 그대로 사용하면 됩니다.

proto tcp

OpenVPN이 사용하는 기반 프로토콜을 지정합니다.

성능을 위해서는 udp를 지정해서 사용할 수 있습니다만, 일반적인 인터넷 망에서 udp가 손실되는 경우가 많으므로, 먼저 udp로 설정해서 사용해보고, 끊김 현상이 많다면, tcp를 지정하면 됩니다.

국내 인터넷 환경에서 테스트해 본 경험에 의하면, 좀 느리더라도 tcp를 쓰는 것이 안정적입니다.(그렇게 느리지 않습니다.)

port 1194

OpenVPN이 사용하는 포트 번호를 지정합니다.

기본 포트는 UDP/TCP 모두 1194번 입니다만, 기호에 따라서 얼마든지 다른 포트 번호를 지정할 수 있습니다.

keepalive 10 120

OpenVPN이 사용하는 네트워크 연결의 상태를 확인하는 확인메시지의 옵션을 지정합니다. 10초 마다 확인 메시지를 보내고, 120초 동안 응답이 없으면, 연결이 끊어진 것으로 인식합니다.

바꾸지 말고, 그대로 사용하면 됩니다.

dh /tmp/openvpn/dh.pem

인증서가 저장되는 경로 및 파일명을 지정합니다. dh 키를 저장하는 파일입니다. (전 단계에서 생성하여, 인증서 입력항목으로 입력한 dh2048.pem 또는 dh1024.pem 파일입니다.)

ca /tmp/openvpn/ca.crt

인증서가 저장되는 경로 및 파일명을 지정합니다. dh 키를 저장하는 파일입니다. (전 단계에서 생성하여, 인증서 입력항목으로 입력한 ca.crt 파일입니다.)

cert /tmp/openvpn/cert.pem

인증서가 저장되는 경로 및 파일명을 지정합니다. dh 키를 저장하는 파일입니다. (전 단계에서 생성하여, 인증서 입력항목으로 입력한 server.crt 파일입니다.)

key /tmp/openvpn/key.pem

인증서가 저장되는 경로 및 파일명을 지정합니다. dh 키를 저장하는 파일입니다. (전 단계에서 생성하여, 인증서 입력항목으로 입력한 server.key 파일입니다.)

management localhost 5001

OpenVPN의 현황을 웹 상에서 보여주는 기능을 지정합니다.

바꾸지 말고, 그대로 사용하면 됩니다.

(DD-WRT 화면의 상단 메뉴에서 Status -> OpenVPN을 선택하면, 현재 접속된 OpenVPN의 클라이언트 현황을 볼 수 있습니다.)

현재 공유기에 설정한 OpenVPN Config 파일 내용은 공유기에 접속하는 OpenVPN 클라이언트들의 설정파일과 항목별로 동일한 값을 사용해야 하는 것들이 있습니다.

 

입력된 형태는 다음 그림과 같습니다.



다음으로 또한 중요한 설정이 남아있습니다.

OpenVPN에 의해서, 가상적으로 생성되는 VPN 네트워크가 실제 물리적인 로컬 네트워크와 연결될 수 있도록, iptables를 이용한 포워딩 라우팅을 설정해야 합니다.

 

이것은 Services -> VPN 메뉴에서가 아니라, Administration -> Commands 메뉴에서 설정합니다.

Administration -> Commands 메뉴를 선택합니다.

Command Shell 항목의 Commands 입력창에 다음과 같이 입력한 다음,

iptables -I INPUT 1 -p udp --dport 1194 -j ACCEPT

iptables -I INPUT 1 -p tcp --dport 1194 -j ACCEPT

iptables -I FORWARD 1 --source 10.100.200.0/24 -j ACCEPT

iptables -I FORWARD -i br0 -o tun0 -j ACCEPT

iptables -I FORWARD -i tun0 -o br0 -j ACCEPT

iptables -t nat -A POSTROUTING -s 10.100.200.0/24 -o eth0 -j MASQUERADE

iptables -I INPUT 1 -i tun0 -p tcp --dport 80 -j ACCEPT


Save Firewall 버튼을 클릭합니다.

그러면, 하단에 Firewall 항목이 추가되면서, 입력한 내용이 보입니다.

 

iptables 명령어

설명

iptables -I INPUT 1 -p udp --dport 1194 -j ACCEPT

iptables -I INPUT 1 -p tcp --dport 1194 -j ACCEPT

인터넷 망에서 공유기로 OpenVPN 서비스 포트(1194)로 접속을 허용하도록 합니다. 만약 OpveVPN 설정에서 포트번호를 바꾸었다면, 그 포트번호를 지정하여야 합니다. OpenVPN의 사용 프로토콜에 따라, tcp/udp 어느 한 쪽만 지정하여도 무방합니다.

iptables -I FORWARD 1 --source 10.100.200.0/24 -j ACCEPT

OpenVPN의 가상 네트워크가 사용하는 네트워크 대역(10.100.200.0/24)에서 오는 트래픽을 우선적으로 포워딩합니다.

만약 OpveVPN 설정에서 가상 네트워크 대역을 별도로 지정하였다면, 그 가상 네트워크 대역을 바꿔 써주면 됩니다.

iptables -I FORWARD -i br0 -o tun0 -j ACCEPT

iptables -I FORWARD -i tun0 -o br0 -j ACCEPT

공유기의 로컬 LAN 네트워크 디바이스(br0)OpenVPN 네트워크의 가상 디바이스(tun0) 사이에 트래픽이 상호간 포워딩되도록 합니다.

공유기에 쉘 로그인 상태에서 #ifconfig 명령어를 실행하였을 때, 각각 로컬 LAN 네트워크 IP를 가진 디바이스와 OpenVPN 가상 네트워크 IP를 가진 디바이스를 지정한 것입니다. DD-WRT에서 디바이스 명들이 거의 동일하다고 볼 수 있지만, 확인해서 다르다면 디바이스명들을 알맞게 수정해야 합니다.

(D-Link DIR-825 제품과 Linksys WRT54G 제품의 경우 모두에서br0tun0 입니다.)

iptables -t nat -A POSTROUTING -s 10.100.200.0/24 -o eth0 -j MASQUERADE

OpenVPN의 가상 네트워크가 사용하는 네트워크 대역(10.100.200.0/24)에서 오는 트래픽을 NAT 형태로 매스커레이딩해서 라우팅합니다.

eth0WAN , 인터넷과 연결된 물리적 디바이스 명입니다. DD-WRT에서 인터넷과 연결된 디바이스는 일반적으로 eth0 이지만, 확인해서 다르다면 해당 디바이스명으로 수정해야 합니다.

(D-Link DIR-825 제품의 경우에는 eth0, Linksys WRT54G 제품의 경우에는 vlan1입니다.)

iptables -I INPUT 1 -i tun0 -p tcp --dport 80 -j ACCEPT

OpenVPN의 가상 네트워크가 사용하는 디바이스를 통해서(당연히 가상 네트워크 대역일 것입니다.) 들어오는 접속중에서 웹 접속을 우선적으로 허용합니다. 이 명령어를 설정해야만, OpenVPN의 가상 네트워크를 통하여 접속한 클라이언트들이 공유기의 웹 인터페이스 화면에 접속할 수 있습니다.

인터넷 망에서 원격으로 가상 네트워크를 통해서, 공유기를 제어/설정하고자 할 때에만 사용합니다.

 


Posted by 훅크선장
, |

OpenVPN 서버를 만들기 위해서 가장 중요한 부분이 바로 인증서를 만드는 것이다.

인증서는 OpenWRT가 설치된 공유기에서도 가능하지만, 가능하면 Ubuntu 리눅스 시스템에서 하는 것을 권장한다.

훅크선장이 한글화하여 배포하는 BackTrack 배포판은 Ubuntu 리눅스 기반이고, 게다가 CD로 부팅하는 CD Boot Linux 이므로, 어떤 컴퓨터에서든 사용할 수 있다.

http://hook.tistory.com/ 에 가서

http://hook.tistory.com/entry/Backtrack-4-R2-VMware-%EC%9D%B4%EB%AF%B8%EC%A7%80-%ED%95%9C%EA%B8%80%ED%8C%90-%EB%B0%B0%ED%8F%AC

신청하면 받을 수 있다.

VMware 같은 가상머신 프로그램을 이용하면, 아주 쉽고 편리하게 Ubuntu 리눅스를 사용할 수 있다.


인증서를 만들기 위해서, 서버에 가장 먼저 필요한 작업은 NTP를 이용한 시간 맞추기이다.

인증서의 시간이 제대로 설정되지 않으면, 발행한 인증서는 적어도 6시간에서 많게는 하루정도의 기간을 기다려야만 사용할 수 있게 된다. 사용 허가가 나기 전의 인증서는 인증 실패로 나오기 때문에, 디버깅하기 어렵다.

 

먼저 Backtrack 4 R2 버전 한글판에서 NTP 시간 맞추기부터 보인다.

CD를 넣고 부팅하면, 로그인 프롬프트가 뜬다.

Login IDroot, 패스워드에는 toor를 넣으면 로그인된다.

 

그리고 바로, X-Windows 화면을 띄우면 된다.

root@bt: # startx

명령어를 치면 된다. 그러면, 시간이 좀 지나면, 익숙해보이는 GUI 화면이 보이게 된다.

 

Command 창을 하나 열고,

root@bt: # dhclient eth0

명령어를 치면, DHCP환경에서 유선 네트워크로 연결된다.

Static IP를 설정해야 된다면, 다음을 참고한다.

http://hook.tistory.com/entry/BackTrack-4-%EB%98%90%EB%8A%94-Ubuntu-%EB%A6%AC%EB%88%85%EC%8A%A4%EC%97%90%EC%84%9C-%EA%B3%A0%EC%A0%95-IP-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0


NTP 관련 패키지들을 설치한다.

root@bt: # aptitude install ntp ntp-simple ntpdate

 

NTP 관련 패키지들을 설치한 후, 한국의 표준시간을 가지고 있는 NTP 서버를 지정한다.

NTP 서버를 지정하는 설정파일은 /etc/ntp.conf 이다.

 

/etc/ntp.conf 파일을 수정한다. 편집기는 어떤 것으로 사용해도 상관없다.

여기서는 nano 프로그램을 사용한다.

 

파일의 중간에 기존 서버들을 주석으로 처리하고(라인 맨 앞에 # 기호를 추가),

server time.kriss.re.kr을 추가한다.

time.kriss.re.kr 서버는 한국표준시간을 지정하고 있는, 국립표준과학연구원의 시간 서버이다.


ntp 데몬을 재시작하여, 현재 시스템의 시간을 대한민국 표준시간으로 설정한다.

root@bt: # /etc/init.d/ntp restart


root@bt: # date

명령으로 대한민국 표준시간으로 잘 설정된 것을 확인한다.

표준시간은 여러분의 휴대폰 시간과 비교해보면 바로 알 수 있다.


우분투 리눅스 환경에서 인증서 생성하기

(Creating Certificates using Ubuntu Linux)

 

인증서는 CA 인증서와 Server 인증서, Client 인증서를 생성해야 하는데, CA 인증서와 Server 인증서는 하나씩만 생성하면 되지만, Client 인증서는 사용할 클라이언트 개수(컴퓨터나 노트북)만큼 생성해야 한다. 미리 넉넉하게 만들어두는 것을 권장한다.(그래봐야 5개 이내)

 

다음의 모든 과정은 Backtrack 4 R2 버전 한글판에서 실행된 것이다.


인증서 생성을 위한 예제 디렉토리로 이동합니다. 

root@bt:~# cd /usr/share/doc/openvpn/

root@bt:/usr/share/doc/openvpn# ls

AUTHORS PORTS README.Debian.gz README.down-root changelog.gz examples

NEWS.Debian.gz README README.auth-pam changelog.Debian.gz copyright

root@bt:/usr/share/doc/openvpn# cd examples/easy-rsa/2.0

root@bt:/usr/share/doc/openvpn/examples/easy-rsa/2.0# ll

합계 39

drwxr-xr-x 2 root root 411 2009-05-28 08:08 .

drwxr-xr-x 4 root root 37 2009-05-28 08:08 ..

-rw-r--r-- 1 root root 389 2008-08-10 18:35 Makefile

-rw-r--r-- 1 root root 3745 2008-08-10 18:35 README.gz

-rwxr-xr-x 1 root root 121 2008-08-10 18:35 build-ca

-rwxr-xr-x 1 root root 354 2008-08-10 18:35 build-dh

-rwxr-xr-x 1 root root 190 2008-08-10 18:35 build-inter

-rwxr-xr-x 1 root root 165 2008-08-10 18:35 build-key

-rwxr-xr-x 1 root root 159 2008-08-10 18:35 build-key-pass

-rwxr-xr-x 1 root root 251 2008-08-10 18:35 build-key-pkcs12

-rwxr-xr-x 1 root root 270 2008-08-10 18:35 build-key-server

-rwxr-xr-x 1 root root 215 2008-08-10 18:35 build-req

-rwxr-xr-x 1 root root 160 2008-08-10 18:35 build-req-pass

-rwxr-xr-x 1 root root 430 2008-08-10 18:35 clean-all

-rwxr-xr-x 1 root root 1459 2008-08-10 18:35 inherit-inter

-rwxr-xr-x 1 root root 297 2008-08-10 18:35 list-crl

-rw-r--r-- 1 root root 2976 2008-08-10 18:35 openssl-0.9.6.cnf.gz

-rwxr-xr-x 1 root root 8230 2008-08-10 18:35 openssl.cnf

-rwxr-xr-x 1 root root 12222 2008-08-10 18:35 pkitool

-rwxr-xr-x 1 root root 894 2008-08-10 18:35 revoke-full

-rwxr-xr-x 1 root root 180 2008-08-10 18:35 sign-req

-rwxr-xr-x 1 root root 1678 2008-08-10 18:35 vars

-rwxr-xr-x 1 root root 190 2008-08-10 18:35 whichopensslcnf

root@bt:/usr/share/doc/openvpn/examples/easy-rsa/2.0# cat vars

# easy-rsa parameter settings

# NOTE: If you installed from an RPM,

# don't edit this file in place in

# /usr/share/openvpn/easy-rsa --

# instead, you should copy the whole

# easy-rsa directory to another location

# (such as /etc/openvpn) so that your

# edits will not be wiped out by a future

# OpenVPN package upgrade.

# This variable should point to

# the top level of the easy-rsa

# tree.

export EASY_RSA="`pwd`"

## This variable should point to

# the requested executables

#export OPENSSL="openssl"

export PKCS11TOOL="pkcs11-tool"

export GREP="grep"

# This variable should point to

# the openssl.cnf file included

# with easy-rsa.

export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`

# Edit this variable to point to

# your soon-to-be-created key

# directory.

## WARNING: clean-all will do

# a rm -rf on this directory

# so make sure you define

# it correctly!

export KEY_DIR="$EASY_RSA/keys"

# Issue rm -rf warning

echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR

# PKCS11 fixes

export PKCS11_MODULE_PATH="dummy"

export PKCS11_PIN="dummy"

# Increase this to 2048 if you

# are paranoid. This will slow

# down TLS negotiation performance

# as well as the one-time DH parms

# generation process.

export KEY_SIZE=1024

# In how many days should the root CA key expire?

export CA_EXPIRE=3650

# In how many days should certificates expire?

export KEY_EXPIRE=3650

# These are the default values for fields

# which will be placed in the certificate.

# Don't leave any of these fields blank.

export KEY_COUNTRY="US"

export KEY_PROVINCE="CA"

export KEY_CITY="SanFrancisco"

export KEY_ORG="Fort-Funston"

export KEY_EMAIL="me@myhost.mydomain"


인증서 생성을 위한 예제 설정 파일의 내용을 확인한 다음, 내용을 본인에 맞게 수정합니다.

수정되는 모든 내용은 임의대로 설정할 수 있습니다.

인증서의 안전성을 높이기 위해서, 키의 크기를 2048 비트로 만듭니다.(1024 비트의 설정 그대로 사용해도 괜찮습니다.)

root@bt:/usr/share/doc/openvpn/examples/easy-rsa/2.0# vim vars

...

...

export KEY_SIZE=2048

...

export KEY_COUNTRY="US"

export KEY_PROVINCE="CA"

export KEY_CITY="SanFrancisco"

export KEY_ORG="Hackers' Community"

export KEY_EMAIL="hacker@anywhere.net"


인증서를 만들기 위한 설정파일의 환경을 시스템에 적용합니다. 

root@bt:/usr/share/doc/openvpn/examples/easy-rsa/2.0# . ./vars

NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys


기존에 생성되었던 필요없는 인증서 관련 정보를 제거합니다.(처음 생성하는 상황에서 한번만 실행하면 됩니다. 생성을 시작한 이후에는 함부러 실행하면, 기존 생성된 인증서 정보가 모두 지워집니다.)

root@bt:/usr/share/doc/openvpn/examples/easy-rsa/2.0# ./clean-all


CA 인증서를 생성합니다. 

과정중에, 이미 설정파일 vars에서 입력하였던 내용들을 다시 입력하도록 물어보는데, 내용만 확인하고 계속 Enter 키를 치면 넘어갑니다.

root@bt:/usr/share/doc/openvpn/examples/easy-rsa/2.0# ./build-ca

Generating a 2048 bit RSA private key

.....................+++

...+++

writing new private key to 'ca.key'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [US]:

State or Province Name (full name) [CA]:

Locality Name (eg, city) [SanFrancisco]:

Organization Name (eg, company) [Hackers' Community]:

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server's hostname) [Hackers' Community CA]:

Email Address [hacker@anywhere.net]:

 

서버용 인증서를 생성합니다.

과정중에, 이미 설정파일 vars에서 입력하였던 내용들을 다시 입력하도록 물어보는데, 내용만 확인하고 계속 Enter 키를 치면 넘어갑니다.

root@bt:/usr/share/doc/openvpn/examples/easy-rsa/2.0# ./build-key-server server

Generating a 2048 bit RSA private key

..........................................+++

.................................................................................................................................................+++

writing new private key to 'server.key'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [US]:

State or Province Name (full name) [CA]:

Locality Name (eg, city) [SanFrancisco]:

Organization Name (eg, company) [Hackers' Community]:

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server's hostname) [server]:

Email Address [hacker@anywhere.net]:

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

Using configuration from /usr/share/doc/openvpn/examples/easy-rsa/2.0/openssl.cnf

Check that the request matches the signature

Signature ok

The Subject's Distinguished Name is as follows

countryName :PRINTABLE:'US'

stateOrProvinceName :PRINTABLE:'CA'

localityName :PRINTABLE:'SanFrancisco'

organizationName :PRINTABLE:'Hackers' Community'

commonName :PRINTABLE:'server'

emailAddress :IA5STRING:'hacker@anywhere.net'

Certificate is to be certified until Dec 11 15:34:26 2020 GMT (3650 days)

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

 

첫번째 클라이언트용 인증서를 생성합니다.

과정중에, 이미 설정파일 vars에서 입력하였던 내용들을 다시 입력하도록 물어보는데, 내용만 확인하고 계속 Enter 키를 치면 넘어갑니다.

그리고 추가적인 정보로 챌린지 패스워드와 별도 회사 정보를 물어봅니다만, 그냥 Enter 키를 치고 입력하지 않아도 됩니다.

root@bt:/usr/share/doc/openvpn/examples/easy-rsa/2.0# ./build-key client1

Generating a 2048 bit RSA private key

..............................+++

.........................+++

writing new private key to 'client1.key'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [US]:

State or Province Name (full name) [CA]:

Locality Name (eg, city) [SanFrancisco]:

Organization Name (eg, company) [Hackers' Community]:

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server's hostname) [client1]:

Email Address [hacker@anywhere.net]:

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

Using configuration from /usr/share/doc/openvpn/examples/easy-rsa/2.0/openssl.cnf

Check that the request matches the signature

Signature ok

The Subject's Distinguished Name is as follows

countryName :PRINTABLE:'US'

stateOrProvinceName :PRINTABLE:'CA'

localityName :PRINTABLE:'SanFrancisco'

organizationName :PRINTABLE:'Hackers' Community'

commonName :PRINTABLE:'client1'

emailAddress :IA5STRING:'hacker@anywhere.net'

Certificate is to be certified until Dec 11 15:34:49 2020 GMT (3650 days)

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

 

두번째 클라이언트용 인증서를 생성합니다.

과정중에, 이미 설정파일 vars에서 입력하였던 내용들을 다시 입력하도록 물어보는데, 내용만 확인하고 계속 Enter 키를 치면 넘어갑니다.

그리고 추가적인 정보로 챌린지 패스워드와 별도 회사 정보를 물어봅니다만, 그냥 Enter 키를 치고 입력하지 않아도 됩니다.

root@bt:/usr/share/doc/openvpn/examples/easy-rsa/2.0# ./build-key client2

Generating a 2048 bit RSA private key

.+++

.......................................................................................+++

writing new private key to 'client2.key'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [US]:

State or Province Name (full name) [CA]:

Locality Name (eg, city) [SanFrancisco]:

Organization Name (eg, company) [Hackers' Community]:

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server's hostname) [client2]:

Email Address [hacker@anywhere.net]:

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

Using configuration from /usr/share/doc/openvpn/examples/easy-rsa/2.0/openssl.cnf

Check that the request matches the signature

Signature ok

The Subject's Distinguished Name is as follows

countryName :PRINTABLE:'US'

stateOrProvinceName :PRINTABLE:'CA'

localityName :PRINTABLE:'SanFrancisco'

organizationName :PRINTABLE:'Hackers' Community'

commonName :PRINTABLE:'client2'

emailAddress :IA5STRING:'hacker@anywhere.net'

Certificate is to be certified until Dec 11 15:35:02 2020 GMT (3650 days)

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

 

세번째 클라이언트용 인증서를 생성합니다.

과정중에, 이미 설정파일 vars에서 입력하였던 내용들을 다시 입력하도록 물어보는데, 내용만 확인하고 계속 Enter 키를 치면 넘어갑니다.

그리고 추가적인 정보로 챌린지 패스워드와 별도 회사 정보를 물어봅니다만, 그냥 Enter 키를 치고 입력하지 않아도 됩니다.

root@bt:/usr/share/doc/openvpn/examples/easy-rsa/2.0# ./build-key client3

Generating a 2048 bit RSA private key

...............................................................................................................+++

.......+++

writing new private key to 'client3.key'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [US]:

State or Province Name (full name) [CA]:

Locality Name (eg, city) [SanFrancisco]:

Organization Name (eg, company) [Hackers' Community]:

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server's hostname) [client3]:

Email Address [hacker@anywhere.net]:

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

Using configuration from /usr/share/doc/openvpn/examples/easy-rsa/2.0/openssl.cnf

Check that the request matches the signature

Signature ok

The Subject's Distinguished Name is as follows

countryName :PRINTABLE:'US'

stateOrProvinceName :PRINTABLE:'CA'

localityName :PRINTABLE:'SanFrancisco'

organizationName :PRINTABLE:'Hackers' Community'

commonName :PRINTABLE:'client3'

emailAddress :IA5STRING:'hacker@anywhere.net'

Certificate is to be certified until Dec 11 15:35:11 2020 GMT (3650 days)

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

 

네번째 클라이언트용 인증서를 생성합니다.

과정중에, 이미 설정파일 vars에서 입력하였던 내용들을 다시 입력하도록 물어보는데, 내용만 확인하고 계속 Enter 키를 치면 넘어갑니다.

그리고 추가적인 정보로 챌린지 패스워드와 별도 회사 정보를 물어봅니다만, 그냥 Enter 키를 치고 입력하지 않아도 됩니다.

root@bt:/usr/share/doc/openvpn/examples/easy-rsa/2.0# ./build-key client4

Generating a 2048 bit RSA private key

.....................+++

...................................................................+++

writing new private key to 'client4.key'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [US]:

State or Province Name (full name) [CA]:

Locality Name (eg, city) [SanFrancisco]:

Organization Name (eg, company) [Hackers' Community]:

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server's hostname) [client4]:

Email Address [hacker@anywhere.net]:

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

Using configuration from /usr/share/doc/openvpn/examples/easy-rsa/2.0/openssl.cnf

Check that the request matches the signature

Signature ok

The Subject's Distinguished Name is as follows

countryName :PRINTABLE:'US'

stateOrProvinceName :PRINTABLE:'CA'

localityName :PRINTABLE:'SanFrancisco'

organizationName :PRINTABLE:'Hackers' Community'

commonName :PRINTABLE:'client4'

emailAddress :IA5STRING:'hacker@anywhere.net'

Certificate is to be certified until Dec 11 15:35:22 2020 GMT (3650 days)

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

 

다섯번째 클라이언트용 인증서를 생성합니다.

과정중에, 이미 설정파일 vars에서 입력하였던 내용들을 다시 입력하도록 물어보는데, 내용만 확인하고 계속 Enter 키를 치면 넘어갑니다.

그리고 추가적인 정보로 챌린지 패스워드와 별도 회사 정보를 물어봅니다만, 그냥 Enter 키를 치고 입력하지 않아도 됩니다.

root@bt:/usr/share/doc/openvpn/examples/easy-rsa/2.0# ./build-key client5

Generating a 2048 bit RSA private key

..................+++

............................................+++

writing new private key to 'client5.key'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [US]:

State or Province Name (full name) [CA]:

Locality Name (eg, city) [SanFrancisco]:

Organization Name (eg, company) [Hackers' Community]:

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server's hostname) [client5]:

Email Address [hacker@anywhere.net]:

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

Using configuration from /usr/share/doc/openvpn/examples/easy-rsa/2.0/openssl.cnf

Check that the request matches the signature

Signature ok

The Subject's Distinguished Name is as follows

countryName :PRINTABLE:'US'

stateOrProvinceName :PRINTABLE:'CA'

localityName :PRINTABLE:'SanFrancisco'

organizationName :PRINTABLE:'Hackers' Community'

commonName :PRINTABLE:'client5'

emailAddress :IA5STRING:'hacker@anywhere.net'

Certificate is to be certified until Dec 11 15:35:32 2020 GMT (3650 days)

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

 

root@bt:/usr/share/doc/openvpn/examples/easy-rsa/2.0# ./build-dh

Generating DH parameters, 2048 bit long safe prime, generator 2

This is going to take a long time

....................................+................................................................................................................+...........+............................................................................................+.........................................................+............................................................................................................................................................................................................................................................................................+..............................................................................................++*++*


추가적으로 더 클라이언트용 인증서가 필요하다면, 클라이언트 번호를 추가해서 계속 생성하면 됩니다. 

 
생성된 키들을 확인합니다.

root@bt:/usr/share/doc/openvpn/examples/easy-rsa/2.0# cd keys

root@bt:/usr/share/doc/openvpn/examples/easy-rsa/2.0/keys# ls

01.pem ca.crt client2.csr client4.csr index.txt server.crt

02.pem ca.key client2.key client4.key index.txt.attr server.csr

03.pem client1.crt client3.crt client5.crt index.txt.attr.old server.key

04.pem client1.csr client3.csr client5.csr index.txt.old

05.pem client1.key client3.key client5.key serial

06.pem client2.crt client4.crt dh2048.pem serial.old

----------------------------------------


위와 같은 과정에서 생성된 키들 중에서 사용되는 것은 다음과 같습니다.

ca.crt

dh2048.pem

server.key

server.crt

client1.key

client1.crt

client2.key

client2.crt

clientx.key

clientx.crt

...

아주 잘 저장하고 백업용 저장본들도 만들어 두는 것이 좋습니다.


Posted by 훅크선장
, |

두어달가량 생업을 제쳐두고, 삽질 작업을 한 공유기를 서버로 만드는 프로젝트가 대충 마무리가 되어서, 문서로 만들어봤습니다.

우선 테스트한 공유기는 다음과 같습니다.

이 공유기들을 대상으로, DD-WRT 펌웨어와 OpenWRT 펌웨어를 올려서, OpenVPN 서버로 만드는 것이 목표였습니다.

이전에 Linksys WRT54G 제품을 대상으로 OpenWRT 펌웨어 커스터마이징을 했다가 실패한 경험이 있어서, 망설였지만, DD-WRT 때문에 다시 시작해서, 두 펌웨어 계열의 차이를 이해하는 기회가 되었습니다.

굳이 공유기를 OpenVPN 서버로 만들려고 한 이유는 국외(중국)에 사는 후배가 통제되는 웹 페이지를 볼 수 없는 것을 유일하게 해결할 수 있는 방안이었기 때문입니다. 현재 중국에 사는 한국 교민들은 VPN 서비스를 사용하는 것이 매우 통상적입니다. 왜냐면 통제되어 볼 수 없는 홈페이지들도 많고, 또한 인터넷 전화를 사용하려면, VPN을 사용해야만 하기 때문에...

하지만, 현재로써는 새롭게 개조된 공유기들은 주로 저의 회사 내에서 네트워크 트래픽을 숨기거나, 공용 무선랜망에서 해킹 위협으로부터 지키는 역할을 하고 있습니다. (현재로 커피샵등의 공용 무선랜 환경에서 해킹에 노출되지 않는 유일한 방법은 VPN을 사용하는 것입니다. - 다만 VPN이 무선랜 해킹을 포함한 모든 해킹을 막는 만능 솔루션은 아닙니다.)

Buffalo WZR-HP-G300NH

Model

WZR-HP-G300NH

Version

v1

Status

10.03

Target(s)

ar71xx

Platform

Atheros AR9132

CPU Speed (MHz)

400

Flash (MB)

32

RAM (MB)

64

Wireless NIC

AR9103

Wireless Standard

11b/g/n

Wired Ports

5 gigE

VLAN Config

Yes

USB

Yes

D-Link DIR-825

Model

DIR-615

DIR-615

DIR-825

Version

C1, C2

E1/E3/E4

B1, B2

Status

10.03

 

10.03

Target(s)

ar71xx

ar71xx

ar71xx

Platform

Atheros AR9130

Atheros AR7241

Atheros AR7161

CPU Speed (MHz)

400

400

680

Flash (MB)

4

4

8

RAM (MB)

32

32

64

Wireless NIC

Atheros AR9100 (integrated)

Atheros AR9100 (integrated)

Atheros AR922x (onboard)

Wireless Standard

802.11b/g/n

802.11b/g/n

802. 11a/b/g/n

Wired Ports

5

5

5 gigE

VLAN Config

No

No

Yes

USB

No

No

Yes

Linksys WRT54G v2.0

Model

WRT54G

WRT54G

WRT54G

WRT54G

WRT54G

WRT54GL

WRT54GS

WRT54G3GV2(-VF)

Version

1

1.1

2.0, 2.2, 3.0

3.1

4

1.0, 1.1

2

1

Status

0.9

0.9

0.9

0.9

0.9

0.9

0.9

10.03

Target(s)

brcm-2.4 brcm47xx

brcm-2.4 brcm47xx

brcm-2.4 brcm47xx

brcm-2.4 brcm47xx

brcm-2.4 brcm47xx

brcm-2.4 brcm47xx

brcm-2.4 brcm47xx

brcm47xx

Platform

Broadcom 4710

Broadcom 4710

Broadcom 4712

Broadcom 4712

Broadcom 5352

Broadcom 5352

Broadcom 4712

Broadcom 5350

CPU Speed (MHz)

125

125

200

216

200

200

200

264

Flash (MB)

4

4

4

4

4

4

8

16

RAM (MB)

16

16

16

16

16

16

32

32

Wireless NIC

Broadcom (mini-PCI)

Broadcom (integrated)

Broadcom (integrated)

Broadcom (integrated)

Broadcom (integrated)

Broadcom (integrated)

Broadcom (integrated)

Broadcom (integrated)

Wireless Standard

11b/g

11b/g

11b/g

11b/g

11b/g

11b/g

11b/g

11b/g

Wired Ports

5

5

5

5

5

5

5

5

VLAN Config

?

?

Yes

Yes

Yes

Yes

Yes

Yes

USB

No

No

No

No

No

No

No

3x 2.0


DD-WRTOpenWRT의 차이점에 대해서 간단히 알아보면,

http://www.openwrt.org/

http://www.dd-wrt.com/site/index


OpenWRT가 먼저 시작한 공유기 장비의 오픈 펌웨어 개발은 공유기와 같은 임베디드 장비에 리눅스 운영체제가 사용되면서 개발이 시작되었다고 볼 수 있습니다.

DD-WRT 펌웨어는 미리 정해진 기능이 종합선물셋트로 주어진다고 볼 수 있습니다. 리눅스 커널을 기반으로 이미 원하는 기능과 인터페이스가 모두 주어지는 방식에 가까워서, 바로 사용할 수 있지만, 사용자가 시스템에 특정 기능을 더하거나 빼기 어려운 형태이다.

반면, OpenWRT 펌웨어는 기본 기능만 있고, 나머지는 모두 패키지 형태로 제공된다. 사용자는 시스템에 필요한 기능을 추가하거나, 필요없는 기능을 제거할 수 있다.

각각은 장단점이 있다고 볼 수 있고, 특별히 어느 쪽이 좋다고 비교할 수 있는 대상은 아니다.

 

리눅스 시스템에서 서버 설정등을 해보지 않은 초보적인 사용자들과 귀찮은 것을 싫어하는 사용자라면, DD-WRT가 어울린다고 볼 수 있고, 진정한 리눅서로서 리눅스 사용이 불편하지 않는 고급 사용자라면 OpenWRT가 더 어울린다고 볼 수 있다.


하드웨어를 선정하는 것은 전적으로 사용자의 몫이다.

WRT54G 제품은 DD-WRTOpenVPN 포함된 펌웨어가 있으므로, 그것만을 사용해야 한다. DD-WRT 펌웨어가 지원되는 리비전 종류가 정해져 있으므로(최근 출시된 7.0 리비전은 지원되지 않는다.), 하드웨어의 리비전을 잘 살펴야 한다.

 

DIR-825WZR-HP-G300NH는 하드웨어 사양도 충분하고, 성능도 좋은 제품이지만, CPU 성능과 Flash 롬 크기, 그리고 제일 중요한 가격 차이가 존재하므로 알아서 맘에 드는 것으로 선택하면 된다. 두 제품은 모두 DD-WRT 펌웨어와 OpenWRT 펌웨어가 잘 동작한다.

 

DIR-825WZR-HP-G300NH, WRT54G 제품은 각각 펌웨어 업데이트 방법을 숙지하고, 웹 인터페이스에서 또는 tftp를 사용하여 펌웨어를 업데이트하면 된다.

펌웨어 업데이트 과정에서 특별하게 어려운 점은 없다. 펌웨어 업데이트가 실패하더라도 복구하는 방법이 있으므로, 너무 긴장하지 말기 바란다.


Posted by 훅크선장
, |
요즘 관심을 가지고 하고 있는 일은,
유무선 공유기에 펌웨어를 교체하여, OpenVPN 서버를 만드는 일.

그래서 찾은 궁극의 유무선 공유기 D-Link DIR-825 rev B1 

그리고, 이 하드웨어를 기반으로 OpenVPN 까지 모두 갖추어진 펌웨어는 DD-WRT

OpenWRT가 더 유명하지만, 테스트해본 결과, OpenWRT는 참 펌웨어가 올리기 어렵다는...(정말 잘 안 올려져서, 때로는 긴급 복구를 해야 한다는...)

아무튼 USB 프린터를 연결하여, 프린터 서버로 사용할 수도 있고, SSH 터널링 프락시로도 쓸 수도 있고, OpenVPN을 사용하면, 원격 업무 서비스?도 가능한 만능의 공유기, 만세~

곧 있으면, OpenVPN 설치 매뉴얼을 만들겁니다. 개봉박두 ~~~~
Posted by 훅크선장
, |