'OpenVPN'에 해당되는 글 6건

  1. 2017.05.15 openvpn 2.3.10 pam 오류
  2. 2016.06.09 openvpn 서버 여러개 실행
  3. 2016.04.11 openvpn id, pw 인증 설정
  4. 2016.02.29 openvpn 자동접속
  5. 2015.11.16 openvpn ovpn에 인증서 포함하기
  6. 2015.03.21 OpenVPN 설치 및 사용 (2)
2017.05.15 23:14


오렌지 파이에 openvpn 2.3.10 버젼 설치를 했더니 pam.so 어쩌고 오류가 난다.


좀 검색해 봤더니 이번 버젼의 패지에 포함된 so 파일에 문제가 있는 듯 하다.


그래서...


이전에 설치해둔 2.2.1 버전 설치하면서 들어온 모듈로 갈아치워서 동작 시켰다 -_-;;



openvpn-auth-pam.so


(arm 아키텍처 버전 입니다)



파일의 위치는 아래와 같다 (... 아마도)

/usr/lib/openvpn/openvpn-auth-pam.so


저기가 아닌경우는 root 계정으로 / 부터 뒤져보자~

find / -name (파일명)


하드디스크라면 버러러러러럭~~~~ 좀 걸리겠지만...


쓷 유저라면 수 초내에 바로 표시 될 것이다


Posted by 해비
2016.06.09 01:17



/etc/openvpn/vpn1.conf

/etc/openvpn/vpn2.conf

...

이런식으로 서버 환경설정을 여러 개 준비.


/etc/init.d/openvpn start vpn1

/etc/init.d/openvpn start vpn2

...

서버 실행 시에는 이렇게 여러개 실행이 가능하다.


openvpn 2.x버젼 현재  멀티코어가 지원되지 않는다.


고로 멀티 코어 활용을 위해 서버를 여러개 띄어두고 로드밸런싱을 활용하면 좋을 것 같다.


그리고...

# /etc/init.d/openvpn start 또는 stop 명령으로 한번에 처리하고자 한다면


/etc/default/openvpn 파일을 열어서 AUTOSTART= 이라고 되어있는 부분에 아래와 같이 설정하면 된다.

AUTOSTART="vpn1 vpn2"


3개 4개 가 되어도 한칸씩 띄고 conf 파일의 이름만 나열해 주면 된다.


- 끝 -






[참고]

http://serverfault.com/questions/168487/how-to-control-multiple-openvpn-instances-on-the-same-server

Posted by 해비
2016.04.11 01:15

사용자별 인증서 발급이 보안에 더 좋기는 한데, 일일이 발급 하기도 귀차니즘으로 인하여

최근에 ID, PW 인증으로 바꾸면서 이에 대해 정리 하고자 한다.



앞의 OpenVPN 설치 부분 참고.


여기서는 바뀔부분만 정리한다.



server.conf

 client-cert-not-required
 plugin /usr/lib/openvpn/openvpn-auth-pam.so login

- 위 2줄 추가 한다.


client.ovpn

 ;ca ca.crt
 ;cert haebi.crt
 ;key haebi.key

- 인증서 부분 주석 처리 (세미콜론 ; 을 붙이면 된다)


 auth-user-pass
 
 <ca>
 -----BEGIN CERTIFICATE-----
 ...

 -----END CERTIFICATE-----
 </ca>

- auth-user-pass 추가

- <ca> ~ </ca> 안에 ca.crt 부분의 BEGIN ~ END 부분 통째로 복사 & 붙여넣기 하면 된다.


그리고 이 파일을 web 서버를 통해 공유 하면 편리하게 사용할 수 있다.


open 파일을 OpenVPN 앱에서 열기

프로파일 추가

ID, PW 입력 후 로그인~


여기서 입력하는 ID, PW는 리눅스 시스템의 ID, PW 이다.


예)

useradd -s /bin/false userid

passwd userid


디폴트 쉘을 /bin/false 로 설정하면 쉘 로그인을 차단 할 수 있다.

(단순 vpn 인증 용도로 쓰기위한 계정 생성 시 사용)



Posted by 해비
2016.02.29 03:01

매번 실행하고 트레이 아이콘 찾아다가 연결 클릭하고...


귀찮아서 찾아봤더니 역시나... 있었다.


바로가기 아이콘 만들어서 아래 내용을 넣고 저장.

"C:\Program Files (x86)\OpenVPN\bin\openvpn-gui.exe" --connect client.ovpn


OpenVPN 설치 폴더 내에 config폴더

C:\Program Files (x86)\OpenVPN\config


위 경로에 있는 인증서 중 하나 적어 주면 되는 것 같다.


ID, PW 자동입력 추가 [2016.09.09]


ovpn 파일 내부에 다음 내용을 추가

auth-user-pass user.txt


그리고 user.txt 에는 다음 내용을 추가

userid

userpassword

(앞에 뭐 구분자 그런거 없이 1번째 줄에 아이디, 2번째 줄에 패스워드 넣으면 된다)



당연히 실행 할 때 그냥 실행하면 안된다.


관리자권한으로 실행 <<---!! 요거 젤 중요하다!



정상 연결시 예를 들어 [로컬 영역 연결2] 같이 떠야 하는데, 관리자권한 이 아닌 상태로 실행되면 이상 한 글자로 오류뜨면서 안됨.


Posted by 해비
2015.11.16 21:51


openvpn 을 인증서 로그인 기반의 경우, 인증서 파일 key, crt 를 함께 넣어야 하는데 이거 은근히 귀찮다.


그리고 openvpn access server (?) 형태로 웹에서 ovpn 을 내려받아 사용하고자 하는경우는 반드시 해야 하는 것이기도 하다.


기 설정된 ovpn 파일의 맨 아래에 아래 내용을 추가한다.



<ca>

-----BEGIN CERTIFICATE-----

...(인증서 데이터)

-----END CERTIFICATE-----

</ca>


<cert>

-----BEGIN CERTIFICATE-----

...(인증서 데이터)

-----END CERTIFICATE-----

</cert>


<key>

-----BEGIN PRIVATE KEY-----

...(사용자 개인키 데이터)

-----END PRIVATE KEY-----

</key>


key-direction 1 



끝~


ca.crt, user.crt, user.key 파일 내용 중 BEGIN ~ END 로 끝나는 부분이 있는데 이 부분만을 복사하여 위와 같은 형태로 만들어 ovpn 제일 밑에 넣어주면 끝~

Posted by 해비
2015.03.21 10:03


이 글은 OpenVPN 을 설치 하여 모든 트래픽을 VPN서버로 우회 하여 사용하는 것을 목적으로 설명합니다.


서버로 Rasbian (Raspberry Pi), 클라이언트는 iOS 의 OpenVPN App을 사용했습니다.

(안드로이드에도 구글 플레이스토어에 동일한 앱이 있습니다)



[진행 순서]

1. 서버 설치

2. 인증서 생성

3. 서버 설정

    3-1. server.conf

    3-2. conf 파일명 설정

4. 클라이언트 접속설정

5. 연결

6. 마무리 작업

7. 방화벽 설정 [추가 2015.04.10]




('#'은 root 권한을 의미 합니다.)


1. 서버 설치

# sudo apt-get install openvpn






2. 인증서 생성

1

 # cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn

2

 # cd /etc/openvpn

3

 # source vars

4

 # ./clean-all

5

 # ./build-ca

6

 # ./build-key-server server

7

 # ./build-key haebi

8

 # ./build-dh


- 1. 필요한 설정파일들을 /etc/openvpn 으로 복사합니다.

- 2. 현재 워킹 디렉토리 이동

- 3. 인증서 생성에 필요한 환경변수 등록

- 4. 새로 생성할 것이므로 /etc/openvpn/keys 의 내용을 모두 제거 (진행 중 잘못된 경우에 필요함)

- 5. CA 인증서 생성. (대충 엔터키만 눌러주시면 됩니다)

- 6. 서버 인증서 생성. (엔터키 눌러주다가 y? 라고 묻는 부분에 반드시 y 입력 후 엔터. y는 2번 물어봅니다.)

- 7. 사용자 인증서 생성. (OpenVPN에 접속할 사용자 수 만큼 생성합니다.)

- 8. 디피헬먼 암호화를 위한 키 생성


추후 사용자 인증서가 추가로 필요한 경우, [3번]과 [7번]을 반복해 주시면 되겠습니다.

4번 ./clean-all 해서 다 날려버리면 처음부터 다시 작업 & 기존 사용자의 인증서까지 무효가 됩니다. <-- 조심!!






3. 서버 설정

3-1. server.conf

1

 # cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/

2

 # gunzip server.conf.gz


- 1. 서버 설정파일을 /etc/openvpn 으로 복사.

- 2. 압축해제



# vim server.conf

1

 port 1194

2

 proto udp

3

 dev tun

4

 ca /etc/openvpn/keys/ca.crt

5

 cert /etc/openvpn/keys/server.crt

6

 key /etc/openvpn/keys/server.key  # This file should be kept secret

7

 dh /etc/openvpn/keys/dh1024.pem

8

 server 10.8.0.0 255.255.255.0

9

 push "route 10.8.0.0 255.255.255.0"

10

 push "redirect-gateway def1"

11

 push "dhcp-option DNS 10.8.0.1"

12

 push "dhcp-option DNS 168.126.63.1"


- 1. 포트설정

- 2. 프로토콜 설정 tcp 또는 udp 중에서 선택

- 3. tun 디바이스 사용. (tap 도 있는데 차이점은 모르겠다. 그냥 디폴트로 이거 쓰자)

- 4. CA 인증서 경로 지정

- 5. 서버 인증서 경로 지정

- 6. 서버 개인키 경로 지정

      (이 파일은 비밀리에 지켜져야 한다. 라고 되어있죠? 유출되지 않도록 각별히 신경을 써 줍니다^^)

- 7. 디피헬먼 키 경로 지정

- 8. VPN 서버가 사용할 IP 대역 설정

- 9. 라우팅 경로 설정

     (VPN서버 네트워크의 상위 레벨에 여러 서브넷이 존재하는 경우, 여기서 등록해줘야 접근이 가능한가 봅니다.)

- 10. 패킷의 리 다이렉션 설정. (중요!)

     (이 옵션이 있으면 접속된 클라이언트의 모든 트래픽이 VPN을 거쳐 갑니다. 인터넷은 기존연결로 가고 내부 망 접속만 하고자 한다면 설정하지 않습니다.)

- 11 ~ 12. DNS 설정입니다.

      (모든 패킷을 리다이렉션 하는 경우에, 12번 라인이 없으면 인터넷이 안됩니다. 12번의 DNS 주소는 꼭 저 주소일 필요는 없습니다. 사용하는 다른 DNS 주소가 있다는 그것을 기입합니다.)




3-2. conf 파일명 설정

# vim /etc/default/openvpn

1

 AUTOSTART="openvpn"


- 1. openvpn config 파일명이 openvpn 임을 /etc/init.d/openvpn 에게 알려줍니다.

     ( 이제 /etc/init.d/openvpn start 하게 되면, /etc/openvpn/openvpn.conf 파일을 찾아서 읽게 됩니다.)



# mv server.conf openvpn.conf

- config 파일명을 변경하여 준다.



서버시작

# /etc/init.d/openvpn restart


- 만약 서버 로그가 보고 싶다면, stop 시키고 아래의 명령을 실행하면 실시간 로그를 확인할 수 있습니다.

openvpn --config /etc/openvpn/openvpn.conf 






4. 클라이언트 접속설정

# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn

- 클라이언트 접속 설정 샘플을 복사합니다.



# vim /etc/openvpn/client.conf

1

 client

2

 dev tun

3

 proto udp

4

 remote 0.0.0.0 1194

5

 ca ca.crt

6

 cert haebi.crt

7

 key haebi.key


- 1. client 모드임을 의미. (서버 설정파일에는 server 이라고 되어있다)

- 2. tun 디바이스 사용

- 3. udp 프로토콜 사용

- 4. 서버 접속 주소, 포트 설정 (0.0.0.0 대신 서버 IP나 도메인을 적는다)

- 5. ca 인증서 파일명 설정

- 6. 사용자 인증서 파일명 설정

- 7. 사용자 개인키 파일명 설정


2~4번 항목은 서버와 동일하게 설정해야 합니다.

5번은 서버의 ca 인증서와 동일한 것이어야 합니다.


현재 클라이언트 설정에 필요한 Key의 위치

 /etc/openvpn/keys/ca.crt

 /etc/openvpn/keys/haebi.crt

 /etc/openvpn/keys/haebi.key

 /etc/openvpn/client.conf






5. 연결

앱스토어에 OpenVPN 으로 검색하면 어플이 나옵니다.

제작자가 OpenVpn Technologies 라고 된것으로 다운 받습니다.




iTunes 에 연결 후, OpenVPN 앱의 도큐먼트에 4개 파일을 넣어줍니다.

ca.crt

haebi.crt

haebi.key

client.ovpn


(client.ovpn 은 client.conf 파일명을 변경한 것 입니다)


앱을 실행하면 + 버튼이 생기고 눌러서 추가하면 저 4개 파일이 사라지면서 설정이 추가 됩니다.


인 / 아웃 용량까지 제공하므로, 간에 데이터 사용량 측정? 도 가능하겠군요~호호호...(???)


팁 한가지 : 서버측 말고 클라이언트 측 로고를 볼수 있는 방법... 조기 위에 Connected 옆에 우측에 꺽쇠괄호 보이죠?

저거 누르면 클라이언트측 로그가 주욱~~~ 나옵니다




연결은 됐는데 인터넷이 안되면...?

NAT설정, ipforward 설정이 필요하다.


NAT 설정

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


ipforward 허용 설정

# vim /etc/sysctl.conf

 net.ipv4.ip_forward=1






6. 마무리 작업

이 설정을 재부팅 시에도 그대로 될수 있도록 하겠다.

openvpn은 알아서 시작하는데 nat 설정이 날아가 버려서 문제가 되었다.


그래서 찾아본 해결책이 외국 포럼에서 본것으로 iptables-save 로 현재 상태를 저장하고, 부팅시 불러오는 방법


# iptables-save > /etc/iptables.conf 

- 일단 현재 nat 상태를 저장한다.



# vim /etc/network/interfaces

 iface eth0 inet dhcp

    pre-up iptables-restore < /etc/iptables.conf

- eth0 바로 아래부분에 iptables-restore 를 적용해 준다.






7. 방화벽 설정

iptables를 활용하여 방화벽 규칙을 적용한다. [추가 2015.04.10][변경1 2015.04.22]

iptables -P INPUT ACCEPT
iptables -F

iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP


iptables -A INPUT -i lo -j ACCEPT


iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT


iptables -A INPUT -p tcp -m tcp --dport 1194 -j ACCEPT



iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT



iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
iptables -P INPUT DROP


iptables -P OUTPUT ACCEPT


iptables -nL



iptables -t nat -F
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -t nat -nL

- 차단된 접속시도는 /var/log/syslog 에 "iptables denied:" 으로 시작하는 로그가 쌓이게 된다.

- iptables -nL, iptables -t nat -nL 은 현재 규칙을 화면에 표시하여 주는 역할을 한다.

- INPUT (들어오는) 규칙은 기본적으로 DROP (갖다버림) 이며, -j ACCEPT 에 명시된 항목만 허용한다.



부팅시 이 방화벽 규칙을 유지 시키기 위해서 아래 작업을 추가한다.

# sudo iptables-save > iptables.conf

# sudo cp iptables.conf /etc/



#sudo vim /etc/network/interfaces

 auto lo

iface lo inet loopback
iface eth0 inet dhcp
pre-up iptables-restore < /etc/iptables.conf

- eth0 아래에 iptables-restore 명령으로 방화벽 규칙을 적용 시켜준다.






[변경사항]

- 2015.04.22 : iptables 설정 중 deny 로그 남기는 부분의 설정 위치에 대한 오류가 있어 정정합니다.






[참고]

https://www.debian-administration.org/article/445/Getting_IPTables_to_survive_a_reboot

http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/System_management/VPN/OpenVPN

https://openvpn.net/index.php/open-source/documentation/howto.html


openvpn.net 의 링크에서 Routing all client traffic (including web-traffic) through the VPN 항목을 찾아 보면

모든 트래픽 보내기에 대한 설정 예시와 함께 상세한 설명이 있다.





Posted by 해비