'GUI'에 해당되는 글 3건

  1. 2010.07.15 설치프로그램 제작 (Program Installer)
  2. 2009.10.09 netsh를 사용한 네트워크 및 방화벽 구성
  3. 2009.05.20 OpenVPN 설정 for Windows
2010. 7. 15. 13:47

설치프로그램 제작 (Program Installer)

1. 상용 인스톨러
  - InstallShield
    http://www.installshield.com/
  - InstallFactory
    http://www.installfactory.com/
    - InstallFactory - 공개용, 버젼 2.70

2. 공개용 인스톨러
  - NSIS ( Nullsoft Scriptable Install System )
    http://nsis.sourceforge.net/
  - Dia for Windows
    http://dia-installer.sourceforge.net/
  - Inno Setup
    http://www.jrsoftware.org/isinfo.php

3. HM NIS EDIT: A Free NSIS Editor/IDE
   http://hmne.sourceforge.net/



4. NSIS 소개와 패치/샘플
   http://www.kippler.com/doc/nsis/


Trackback 0 Comment 0
2009. 10. 9. 10:28

netsh를 사용한 네트워크 및 방화벽 구성

참고: http://technet.microsoft.com/ko-kr/library/cc778925.aspx


1. netsh를 사용해보자 (CLI=Dos Commanand Mode, GUI=윈도우 화면)

GUI 로 친숙한 방화벽 정책 설정을 하면 되는 것을 왜 궂이 CLI로 하려고 하는지 묻는다면 설정에 대한 재미도 있을 수 있고 GUI로 보지만 가끔 시스템 상에 문제가 되었을 때 GUI가 열리지 않는다거나 숨겨진 방화벽 설정을 볼 때에는 이 netsh 를 이용하여 설정하는 방법도 매우 빠르며 유용 할 수 있다.

netsh 는 비단 방화벽만 설정 할 수 있는 것이 아닌 RAS, NAT, OSPF도 설정을 할 수 있다. 요즘 들어 MS 운영체제의 취약성을 이용하여 웜 감염 후 netsh를 이용하여 네트워크를 조작하는 수법도 존재한다. 그 이유는 GUI를 통하지 않고도 명령어를 통한 배치 파일로 DNS 조작도 시도 할 수 있으며, 악의적인 DNS 서버에 Domain Name 을 Query 할 때 악의적인 사용자가 미리 지정한 IP로 접속을 유도도 할 수 도 있기 때문이다. 이러한 기법은 파밍(Pharming) 기법으로도 응용할 수 있는 부분이다.

Window Support Tool 로 사용하는 ipseccmd 를 (GUI로는 secpol.msc) 사용하여 in, outbound 로 포트에 대한 차단을 할 수 있다면, netsh 는 윈도우 XP 방화벽은 IP및 포트에 대한 inbound 그리고 어플리케이션 프로그램에 대한 in, outbound에 대한 차단 및 허용이 가능하다. 엄밀히 따져보면 Stateful Inspection 방화벽이라고 말하지만 Outbound에 대한 IP 및 포트 정책이 없는 방화벽이 과연 데이터 스트림까지 지원하는 Stateful inspection 방화벽이라고 하기엔 조금 미흡한 점이 있지 않나 싶다.


netsh 를 사용하는 것은 위의 그림처럼 클릭 할 때의 설정과 그 결과값이 똑같다. CLI 를 싫어하시는 분들이 많을지 모르나 시간, 속도, GUI로 볼 수 없는 숨겨진 기능을 볼 수 있다는 장점이 있다. 즉 한눈에 일목요연하게 보고 싶거나 정보 수집용으로도 손색이 없을 것이다.

각 구문만 쉽게 눈에 들어오고 익힌다면 빠른 설정을 할 수 있을 것이다. 네트워크 방화벽처럼 윈도우 방화벽 설정시에 기본적인 정책은 Deny 이다. (방화벽을 enable 시켰을 때) 윈도우 시작->실행->cmd->netsh 를 TYPE 해 보자.

여기서는 CD (Change Directory)가 안 되므로, 각 디렉토리 이동은 (..) Double Dot 또는 (.) Single Dot 를 이용하여 이동하자. 또한 모든 명령어는 ? 로 확인한다. 이렇게 설정하지 않아도 직접적으로 명령어를 이어서 사용함으로써 한 번에 설정이 가능하다.

아래의 실제 방화벽 설정의 예제들을 보자.

2. netsh로 방화벽 설정 보기 및 방화벽 설정하기

다음의 명령어를 보자.

C:\>netsh firewall show ?
다음 명령을 사용할 수 있습니다.

이 컨텍스트에 있는 명령:
show allowedprogram - 방화벽 허용 프로그램 구성을 표시합니다.
show config - 방화벽 구성 정보를 표시합니다.
show currentprofile - 현재 방화벽 프로필을 표시합니다.
show icmpsetting - 방화벽 ICMP 구성을 표시합니다.
show logging - 방화벽 로깅 구성을 표시합니다.
show multicastbroadcastresponse - 방화벽 멀티캐스트/브로드캐스트 응답 구성을 표시합니다.
show notifications - 방화벽 알림 구성을 표시합니다.
show opmode - 방화벽 작동 구성을 표시합니다.
show portopening - 방화벽 포트 구성을 표시합니다.
show service - 방화벽 서비스 구성을 표시합니다.
show state - 현재 방화벽 상태를 표시합니다.

눈여겨 볼 만한 명령어는 위 굵은 글씨체를 참고하라.
그럼 방화벽 정책을 설정하기 위한 Steb-by-Step을 해보자.

■ 현재 열려져 있거나 열려져 있지 않은 포트를 상세히 보려면 아래의 명령어를 사용.

netsh firewall show portopening verbose = enable
netsh firewall show config verbose = enable
netsh firewall show state verbose = enable

netsh firewall show portopening verbose = enable | findstr VNC

특정한 부분이 열렸는지만 볼 때.

물론 verbose = disable 도 있지만, 궂이 상세하게 보지 않겠다는 옵션을 줄 필요는 없다.
이 중에서 한가지 기본 규칙만을 지킨다면 응용은 그렇게 어렵지만은 않다.

실제, netstat 로 확인한 결과 Listening 된 포트가 있다 하더라도, 실제 열려진 포트를 보려면 위의 세 가지 명령어를 통하여 확연히 구분 지을 수 있다. 중복되는 내용들이 많지만 정확한 설정 값 및 포트 오픈 및 현재의 방화벽 상태를 확인하려면, 위의 세 명령어를 사용해도 무방할 것 같다.

아래의 규칙을 기억하자. (순서는 바뀌어도 상관은 없지만 대부분 이런 수순)


Scope 이 생소하겠지만 여기서 Scope은 Subnet , Custom , All 이 있다. 보안상 이 부분 역시 좋은 부분인 것 같다. Netbios 같은 경우 인터넷 외부에서의 연결은 보안상 위험하다. 그래서 이러한 Netbios 포트는 기본적으로 자기 네트워크에 속한 대역(서브넷)만을 액세스 할 수 있게 설정하는 것이 좋다.

때론 Access List 처럼 작용하는 것으로 보일 수 있으나, subnet을 선택할 경우 자신의 속한 네트워크 브로드캐스트 영역을 보므로 자신의 전체 내부 네트워크에서는 이러한 프로그램 및 포트는 접근 가능할 수 있다. 그러므로 Custom 에서의 선택을 하여 일일이 네트워크 및 IP Address 및 네트워크 대역을 지정하는 것이 보안상 좋은 방법일 것이다.


- Subnet : 자신이 속한 네트워크 대역
- Custom : 일일이 접근 IP 또는 접근 네트워크 대역을 지정할 수 있다.
- All : 모든 IP 및 네트워크 주소
본격적으로 방화벽 정책을 설정해 보자. set 은 현설정에 대한 편집이거나 추가이며, add 는 추가만 할 수 있다. 아래 예들은 모두 set 으로 설정했다.

■ 포트 오픈 하기 ≠ 서비스 오픈 ( set portopening 또는 add portopening )
C:\>netsh firewall set portopening TCP 5900 VNC_ServerPort
확인됨.

아래 그림을 보면 생성이 되어져 있음을 볼 수 있다.
또한 findstr 구문을 통하여 현재 설정 상태도 확인을 할 수 있다.

- netsh firewall show portopening | findstr VNC


구체적으로 이러한 포트 오픈은 내가 속한 네트워크 대역 서브넷(subnet)안에서만 허용하고 싶다면 조금 다르게 옵션을 설정을 해 주어야 한다.
C:\>netsh firewall set portopening protocol = TCP port = 5800 name = VNC_HTTP scope = subnet mode = enable
확인됨


C:\>netsh firewall set portopening protocol = TCP port = 23456 name = Ahnlabcoconut_FTP scope = CUSTOM addresses = 192.168.1.3,LocalSubnet
확인됨
이것은 로컬 서브넷에서만 접근 가능하고, 외부 192.168.1.3 에서 이 서비스를 사용할 수 있다라는 뜻이다. GUI 에서는 아래와 같다.


참고
URL :http://www.microsoft.com/technet/prodtechnol/winxppro/deploy/depfwset/wfsp2apb.mspx

■ 서비스 설정하기 ( set service 또는 add service)
서비스 종류는 아래와 같은 종류로 국한하기 때문에 서비스를 생성(포트 오픈)해야 할 필요성은 느끼지 못한다. (터미널 서비스 : TCP 3389 )

위에서 설명했듯이 이 netsh 의 포트 오픈과 서비스 오픈과는 약간의 차이가 있다.아래는 서비스 Open에 관련된 서비스 내용 들이다. 실제 이 서비스들도 설정해야 하고 시스템 등록 정보의 [원격] 탭에서 설정을 해야만 비로서 아래와 같은 서비스들을 정상적으로 사용 할 수가 있다.

FILEANDPRINT 파일 및 프린터 공유
REMOTEADMIN 원격 관리
REMOTEDESKTOP 원격 지원 및 원격 데스크톱
UPNP UPnP 프레임워크
ALL 모든 종류

이 윈도우 XP 방화벽에서의 서비스는 말 그대로 윈도우가 제공해 주는 서비스를 말하고 실제 포트 오픈은 이전에 Bulit-in 된 원격데스크톱 및 원격지원 서비스에 V 체크만 하면 된다.


그림에서 보듯이 원격 데스크탑 및 원격 지원은 Windows 방화벽에서 삭제(D) 버튼을 누를 수 없다. 이는 아래 그림처럼 [내컴퓨터] ▶ [오른쪽 마우스 클릭] ▶ [속성] ▶ [원격] 부분.


이 부분에 속해 있기 때문이다. 왜 이렇게 설정을 했는지는 잘 모르겠지만, 어쨌든 이 원격지원 부분과 원격 데스크톱 부분의 체크박스에 체크를 하지 않으면 아래 그림처럼


자동적으로 체크 박스에 v 체크가 없어지는 것을 볼 수 있다.
하지만 이는 역으로는 성립이 되지 않는다. 즉 이 윈도우 방화벽에서의 원격 데스크톱이나 원격지원을 v 체크를 한다 하더라도, 시스템 등록정보에서의 [원격] 탭에서는 v 체크가 되지 않으면 외부에서 접속을 하지 못하게 된다. 결론적으로 이러한 서비스를 사용하기 위해서는 당연히 RDP 서비스는 띄워져 있어야 하며, 우선적용이 되는 시스템 등록정보에 대한 체크박스에 V 체크가 되어져 있어야 하는 것이다. 이 시스템 등록정보에 V 체크가 되지 않으면 TCP 3389 포트에 대하여 Listening 이 보이지를 않는다.

그런 이유에서 만약 외부에서 RDP 를 사용할 수 없거나, 원격지원을 사용할 수 없을 경우에는 이러한 서비스들이 윈도우 방화벽에서는 열려 있음에도 불구하고 서비스가 안 되면 시스템 등록 정보에서 확인을 하면 될 것이다.

1. Remote Desktop 서비스를 사용하려면
netsh firewall set serv REMOTEDESKTOP enable 또는
netsh firewall set serv type = REMOTEDESKTOP mode = enable scope = all

2. 원격 접속 관리를 사용하기 위해서는
netsh firewall set REMOTEADMIN enable 또는
netsh firewall set serv type = REMOTEADMIN mode = enable scope = all

■ Application Program 오픈 하기 ( set allowedprogram 또는 add allowdprogram )

set allowedprogram program = C:\Temp\AhnSV.exe name = AntiVirus mode =
ENABLE scope = CUSTOM addresses = 192.168.1.1,LocalSubnet


1. netsh로 네트워크 설정하기
이러한 네트워크 설정은 여러 인터넷 검색 엔진 사이트에서 찾아 보며 참고하면 될 것 같다.네트워크 설정은 설명이 필요한 것 보단 이러한 환경이 필요한 곳에서 사용하면 더 할 나위 없이 유용하다. 같이 사용하는 IDC에서의 공유형 노트북(?)에서의 자신만의 고유 정적 IP가 있는 곳, 또는 DHCP로 사용해야만 하는 곳, 네트워크의 일부 GUI로 변경 없이 다음과 같은 명령어 행만으로 네트워크 설정을 쉽게 바꿀 수 있다.

■ 시스템 정보 및 네트워크 정보를 GUI로 결과를 보고 싶다!
netsh diag gui

■ IP 수동 변경 (Static)
netsh -c int ip set address name="AhnlabCoCoNut" source=static addr=192.168.1.2 mask=255.255.255.0 gateway=192.168.1.1 gwmetric=0
■ IP 수동 변경 (로컬)
netsh -c int ip set address localhost static 192.168.1.2 mask 255.255.255.0 1

■ IP 자동 변경 ( DHCP )
netsh -c int ip set address name="AhnlabCoCoNut" source=dhcp

■ DNS 수동 변경(Static)
netsh -c int ip set dns name="AhnlabCoCoNut" source=static addr=168.126.63.2 register=PRIMARY
add dns name="AhnlabCoCoNut" addr=168.126.63.2 index=2


■ DNS 자동 변경 ( DHCP )
netsh -c int ip set dns name="AhnlabCoCoNut" source=dhcp

■ 위와 같이 설정된 현재 네트워크 설정 저장
netsh -c interface dump > AhnlabCoCoNut.txt

■ 위 설정 그대로 사용
netsh exec AhnlabCoCoNut.txt

이러한 DOS Command 모드로써의 중요한 점은 GUI로 된 네트워크 설정의 마우스를 사용하지 못할 때 유용하다고 할 수 있다

[TIP 1]
1. 내 컴퓨터에서 과연 어떠한 트래픽이 들어오고 나가고 Drop이 되는가?
이벤트 뷰어(eventvwr.msc)에서도 보안 설정을 하면 볼 수 있지만 더욱 상세하게 보여주는 것은 이 방화벽 로그일 것이다.
방화벽의 로깅 기능을 사용한다.물론 GUI도 있지만 여기선 netsh 만을 위주로 말하겠다.

■ 현재 로깅 설정 현황 보기

netsh firewall show logging

■ 로깅 설정하기 ( Drop 패킷 및 Connection 패킷 모두)
(손실된 패킷 ,성공한 연결 이 두가지를 로깅한다.)
어떠한 패킷이 손실되는지만 본다면 droppedpackets = enable 옵션만 주면 될 것이다.

netsh firewall set logging droppedpackets = enable connections = enable filelocation = 2nd.txt 4096

■ 현재 로깅 되는 로그 보기

윈도우에서 로깅 되는 로그는 아래와 같다. 엑셀로 편집하여 나온 결과이다.
인바운드인지 아웃바운드 패킷인지의 구분은 없으며 단지 자신의 IP가 외부로 나가면 아웃바운드 자신의 IP가 Dst-IP로 로깅되어져 있으면 인바운드로 구분 할 수 밖에 없다.
(실제 로깅 정보를 볼 때는 구분이 좀 어렵다.) 



- 위에서 본 결과처럼 Action 부분에서 Open, Drop, Close 로 현재의 방화벽에서 패킷이 어떻게 취해지는가에 대한 판단을 할 수 도 있을 것이다. 특히 TCP 의 Flag 를 볼 경우 Syn 을 보냈음에도 ACK가 Drop이 되지 않는지 혹은 ACK 자체를 볼 수 없는지에 대하여 판단 할 때, 내 자체 윈도우 방화벽에서 막혔는지 혹은 그 앞단의 방화벽 및 네트워크 장비에서 막혔는지도 판단을 할 수 있을 것이다.

2. 윈도우 XP에서의 트래픽 흐름을 전혀 볼 수 없고 알 수 없을 때 트러블 슈팅 할 때 가장 먼저 윈도우 자체 내장 방화벽을 Disable 한 상태로 확인을 한다.
netsh firewall set opmode enable [방화벽을 설정할 때]
netsh firewall set opmode disable [방화벽을 설정하지 않을 때]

그룹
명령
설명
Add
netsh firewall add allowedprogram Windows 방화벽에 허용된 프로그램 구성 추가
netsh firewall add portopening Windows 방화벽에 포트 구성 추가
delete
netsh firewall delete allowedprogram Windows 방화벽에서 허용된 프로그램 구성 삭제
netsh firewall delete portopening Windows 방화벽에서 포트 구성 삭제
reset
netsh firewall reset Windows 방화벽 구성을 기본값으로 다시 설정
Set
netsh firewall set allowedprogram Windows 방화벽의 허용된 프로그램 구성 편집
netsh firewall set icmpsettings Windows 방화벽의 ICMP 구성 편집
netsh firewall set logging Windows 방화벽의 로깅 구성 편집
netsh firewall set notifications Windows 방화벽의 알림 구성 편집
netsh firewall set opmode Windows 방화벽의 작동 구성 편집
netsh firewall set portopening Windows 방화벽의 포트 구성 편집
netsh firewall set service Windows 방화벽의 서비스 구성 편집
show
netsh firewall show allowedprogram Windows 방화벽에서 허용된 프로그램 구성 표시
netsh firewall show config Windows 방화벽 구성 표시
netsh firewall show currentprofile Windows 방화벽의 현재 프로필 표시
netsh firewall show icmpsettings Windows 방화벽의 ICMP 구성 표시
netsh firewall show logging Windows 방화벽의 로깅 구성 표시
netsh firewall show notifications Windows 방화벽의 알림 구성 표시
netsh firewall show opmode Windows 방화벽의 작동 구성 표시
netsh firewall show portopening Windows 방화벽의 포트 구성 표시
netsh firewall show service Windows 방화벽의 서비스 구성 표시
netsh firewall show state Windows 방화벽의 현재 상태 표시

[TIP 2]
■ TCP/UDP/ICMP Connection 및 통계 체크
우선 서비스에 Remote Access Service 가 시작되어 있어야 한다.
net start remoteaccess로 서비스를 시작 하자.

그런 후 아래와 같은 명령어로 현재의 연결 상태를 알아보자.

- netsh interface ip show tcpstat : TCP 통계를 표시 ( netstat -s -v -p tcp )
- netsh interface ip show udpstat : UDP 통계를 표시 ( netstat -s -v -p udp )
- netsh interface ip show tcpconn : TCP 연결을 표시 ( netstat -an -p tcp )
- netsh interface ip show udpconn : UDP 연결을 표시 ( netstat -an -p udp )
- netsh interface ip show config : 현재 네트워크 설정 상태 표시
( ipconfig /all 과 같은 결과)
- netsh interface ip show address : ipconfig 결과
- netsh interface ip show interface : 상세한 인터페이스 정보
- netsh interface ip show dns
- netsh interface ip show icmp :ICMP 통계 자료 ( netstat -s -p icmp )

- netsh interface dump : 인터페이스에 대한 현재 방화벽 설정 전체를 보여준다.


한글윈도우 XP Pro (SP2)에서의 netstat 와 netsh 의 차이점이 무엇이냐 하면, 결과를 보면 알겠지만 netstat 는 영문으로 결과를 보여주고 , netsh 는 친절하게도 한글로 보여준다는 것이다.


출처 : 안랩코코넛 시큐레터 2006년 5월호
저자 : ㈜안랩코코넛 SM사업부 시큐리티엔지니어, 송진호주임


Trackback 0 Comment 0
2009. 5. 20. 13:57

OpenVPN 설정 for Windows

1 프로그램 다운로드
윈도우즈 용은 OpenVPN GUI로, 다운로드는 다음과 같다.
http://openvpn.se/download.html
프로그램 다운로드 : http://openvpn.se/files/install_packages/openvpn-2.0.9-gui-1.0.3-install.exe

2. 설치
기본 설치로 하면 Program FileOpenVPN에 깔린다.

3. 키 설정 (http://openvpn.net/howto.html#pki)
1) 준비
- 커맨드 쉘로 C:\Program Files\OpenVPN\easy-rsa 폴더로 이동
init-config
vars
clean-all

2) 기본 ca 작성
(입력을 편하게 하려면 vars.bat파일의 set KEY_COUNTRY=US등의 내용을 변경하세요... 안해도 무방)
build-ca
다음과 같이 물어봅니다.
Country Name (2 letter code) [KG]:
State or Province Name (full name) [NA]:
Locality Name (eg, city) [BISHKEK]:
Organization Name (eg, company) [OpenVPN-TEST]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:OpenVPN-CA
Email Address [me@myhost.mydomain]:

여기는 적당히 채우세요~
다만 Common Name은 앞으로 만들 키에서 전체적으로 중복되면 안됩니다.

3) 서버 키 작성
build-key-server server
앞에 입력한 것과 비슷하게 나옵니다. Common Name만 다르게 하시고
나머지는 똑같이 입력하세요.
y/n 묻는 건 당연히 y겠죠.

4)클라이언트 키 작성
build-key client1
동시에 여러 클라이언트가 접속한다면 동접 갯수만큼 client1를 숫자나 적당한 것으로 바꿔서 키를 만들면 됩니다. client1를 원하는 이름으로 바꾸세요.
예를 들어 세명이 동시에 사용한다면
build-key client1
build-key client2build-key client3
이런식으로 만들어 주면 되겠죠.
그리고 처음 키를 만들때와 같은 걸 물어보는데 Common name에 client1같은 각각의 이름을 넣어주면 됩니다.

4. DH parameter 생성
build-dh

5. ta 키 생성
keys 디렉토리로 이동해서..
openvpn --genkey --secret ta.key 라고 하면 ta.key가 만들어집니다.

6. key 파일 복사.
config 폴더에 다음과 같은 파일을 복사합니다.
ca.crt
ca.key
dh1024.pem
server.crt
server.key
ta.key

7. Server config 설정
1) sample-config 폴더에서 server.ovpn 파일을 config 폴더로 복사합니다.
2) 복사한 server.ovpn 파일을 메모장으로 열어서 다음 항목을 찾아 필요한 값을 설정합니다.
port
proto
tls-auth ta.key 0
cipher BF-CBC

port는 원하는 포트번호를 proto는 udp나 tcp를 설정합니다.
tls-auth, cipher 는 앞에 있는 커맨트 ; 를 지워줍니다.
설정이 되었으면 저장하세요.

8. 서버 실행
config 폴더에서 openvpn server.ovpn 이라고 입력합니다.
나오는 내용을 확인해 보시고..에러가 없으면 F3인가 F4인가를 눌러 종료합니다.
그리고 제어판->관리도구->서비스 에서 OpenVPN 서비스를 자동으로 하시고 시작 하시면 컴퓨터가 부팅될 경우 자동으로 실행이 됩니다.

9. 클라이언트 설정
1) 서버와 똑같이 프로그램을 설치합니다. (같은 프로그램으로 서버와 클라이언트를 사용함)

2) 위의 서버에서 만든 다음과 같은 키 파일을 config 폴더에 복사합니다.
ca.crt
ca.key
client1.key
client1.crt
ta.key

3) sample-config 폴더에서 client.ovpn을 config 폴더로 복사합니다.
이때 client.ovpn을 client1.ovpn으로 이름을 맞춰 주는 게 좋습니다.
(여러곳의 연결설정을 할때 편함)

4) client.ovpn을 메모장으로 열어서 다음 항목을 수정합니다.
proto
remote
cert
key
tls-auth
cipher

; proto는 서버에서 설정한 것으로 udp/tcp로 맞춰주시고, remote는 remote 서버ip 포트번호 로 하시면 됩니다.
cert는 client1.crt
key는 client1.key 로 파일 이름을 맞춰 주세요.
tls-auth는 앞의 ;를 지워주시고
cipher도 서버와 같이 cipher BF-CBC로 맞춰 주시면 됩니다.

5) 연결 확인
openvpn client1.ovpn으로 해보시면 되고
평상시에는 오른쪽 아래의 트레이에 있는 OpenVPN GUI의 오른쪽 클릭을 하면
Connect가 나옵니다. 문제없이 연결되면 아이콘이 초록색으로 변경됩니다.

6) 서버 접속
서버의 ip를 변경할수 있지만 여기서는 기본 설정이므로 10.8.0.1이 서버의 ip입니다.


출처 : http://sglsh82.x-y.net

Trackback 0 Comment 0