반응형

 

Linux Debian 계열인 우분투 시스템 위에 ELK 스택(Elastic search + Logstash + Kinbana) 설치 방법을 공유드리겠습니다.

 

1. ELK 스택 설치 전 Ubuntu 시스템에서 사전 세팅

# 1) APT 업데이트

$ sudo apt update

 

# 2) Java SDK 설치

$ sudo apt install default-jdk

 

 

2. Elastic Search 설치

1.1) <최신 버전 설치 시> : google에서 elastic download 검색 후 "DEB x86_64" 다운로드

1.2) <특정 버전 설치 시> : google에서 elastic <버전> download 검색 후 "DEB x86_64" 다운로드

2) $ cd Downloads

3) $ sudo dpkg -i <elastic file>

4) $ sudo systemctl start elasticsearch

5) 서비스 확인 : 인터넷 브라우저 > http://localhost:9200/

설치 완료 후 화면

 

3. Kibana 설치

1.1) <최신 버전 설치 시> : google에서 kibana download 검색 후 "DEB x86_64" 다운로드

1.2) <특정 버전 설치 시> : google에서 kibana <버전> download 검색 후 "DEB x86_64" 다운로드

2) $ cd Downloads

3) $ sudo dpkg -i <kibana file>

4) $ sudo systemctl start kibana

5) 서비스 확인 : 인터넷 브라우저 > http://localhost:5601/

설치 완료 후 화면

 

 

반응형

'IT' 카테고리의 다른 글

DDoS(Distributed Denial of Service) 종류와 대응방법  (341) 2018.08.05
반응형

Selenium wire 모듈을 사용하다보면 가끔 POST 요청으로 백그라운드에서 XHR 요청이 발생하는 경우 있습니다.

 

하지만 문제는 POST 요청에 대한 파라미터를 변경한 값을 결과 값으로 가져오고 싶은데 그게 어렵다는 문제입니다ㅠㅠ

 

이런 경우 아래와 같은 코드를 사용하면 Selenium wire 모듈을 통해서도 얼마든지 세션을 유지하면서 Post 요청을 사용할 수 있습니다.

 

  해결책 - Python 코드

from seleniumwire import webdriver
import requests

# WebDriver 설정
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(seleniumwire_options={}, options=options)

# Selenium 모듈로 홈페이지 요청
url = 'https://example.com'
driver.get(url)

# POST 요청을 하는 특정 페이지 요청 값을 수정하여 requests 모듈로 재요청
for idx, request in enumerate(driver.requests):
	if '</api와 같은 홈페이지 uri 값>' in request.url and request.method == 'POST':
		post_url = request.url
		headers = request.headers
		params = {
			'key1': 'val1',
			'key2': 'val2'
		params_json = json.dumps(params)
		response = requests.post(post_url, data=params_json, headers=headers)
		print(response.text)
		break

 

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

반응형
반응형

 

Python으로 Selenium 모듈을 사용하다가 요청 트래픽과 응답 트래픽을 보기 위해 위해 Selenium Wire를 알게되어

Selenium Wire 모듈을 사용했는데 사용하자마자 역시나 다음과 같은 문제가 이어졌다.

 

Selenium Wire 모듈을 사용하며 특정 사이트에 접속했을 때 아래와 같이 "주의 요함" 또는 "Not Sure" 메시지가 뜬다면...

 

 

 

해결책

1. Selenium wire 홈페이지(https://pypi.org/project/selenium-wire/) 접속

 

 

2. here 클릭하여 ca.crt 파일 다운로드

 

3. 브라우저에 다운받은 인증서 추가

(Chrome 브라우져의 경우) : 설정 > 개인 정보 보호 및 보안 > 보안 > 인증서 관리 > 신뢰할 수 있는 루트 인증 기관 > 가져오기 > 인증서 가져오기 마법사 시작 > 다음 > 파일 경로에 다운 받았던 ca.crt 경로 추가 > 다음

 

 

4. Selenium Wire 재실행 및 확인

인증서를 넣으면! 아래 사진과 같이 "주의 요함" 또는 "Not Sure"메시지가 사라지게 됩니다

 

 

 

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

반응형
반응형

 

syslog 설정하고 Log파일 이름을 원하는 경로에 원하는 파일명으로 설정하는 방법에 대하여 공유드리겠습니다.

해당 명령어 실행은 CentOS 7.9 버전에서 수행되었습니다.

가장 우선적으로 yum 패키지 업데이트 이후 syslog 패키지를 다운로드하여 설치합니다.

1
2
3
#=== 패키지 설치 ===#
sudo yum update
sudo yum install -y rsyslog
cs

 

설치가 모두 완료되었으면 Log를 저장 할 위치를 선정하고 폴더를 생성하여 줍니다.

저는 /data/log/remote 경로에 저장하겠습니다.

1
2
#=== 폴더 생성 ===#
sudo mkdir -/data/log/remote
cs

 

syslog를 원하는 파일명으로 저장하기 위해 아래 $ModLoad부터 ~ 514 까지 2줄의 주석 제거하고

$template 부터 시작하는 아래 2줄을 추가해 줍니다.

UDP/514만 저장하기 원하는 경우 위에 2줄만 주석 제거하고

TCP/514만 저장하기 원하는 경우 아래 2줄만 주석 제거해줍니다.

저의 경우 UDP/514, TCP/514 모두를 파일로 저장하기 위해 아래와 같이 총 4줄을 주석제거 했습니다.

Log 파일 이름 포맷을 변경하실 분은 %로 시작하는 Format의 순서를 변경하시면 됩니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#=== 주석 삭제 및 라인 추가1 ===#
sudo vi /etc/rsyslog.conf
$ModLoad imudp
$UDPServerRun 514
 
$template FILENAME, "/data/log/remote/%fromhost-ip%/%$YEAR%-%$MONTH%-%$DAY%_%fromhost-ip%.log"
*.* ?FILENAME
 
 
#=== 주석 삭제 및 라인 추가2 ===#
$ModLoad imtcp
$InputTCPServerRun 514
 
$template FILENAME, "/data/log/remote/%fromhost-ip%/%$YEAR%-%$MONTH%-%$DAY%_%fromhost-ip%.log"
*.* ?FILENAME
cs

 

설정파일을 저장하였으면 syslog 서비스를 시작하여 줍니다.

1
2
#=== 서비스 시작 ===#
sudo systemctl start rsyslog
cs

 

서비스가 잘 시작되었는지 netstat 명령어로 포트 리스닝을 확인합니다.

1
2
#=== 포트 오픈 확인 ===#
sudo netstat -anp
cs

 

netstat 명령어로 확인해보니 TCP, UDP 모두 정상적으로 514 포트를 리스닝하고 있습니다.

 

syslog client에서 syslog를 전송하게 되면 아래 경로에 다음과 같이 IP 이름으로 폴더가 생성됩니다.

 

폴더에 들어가보면 <%날짜%>_<%IP주소%>.log 형태의 로그가 저장됩니다.

 

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

caul334@gmail.com

 

반응형
반응형

AWS 자격증을 준비하면서 개념 파악을 위해 AWS Fargate와 ECS를 사용해 보고자 AWS Docs를 보면서 따라하던 중

ECR 레포지토리를 생성하고 인증 부분에서 아래와 같은 에러를 만났습니다.

 

  에러메시지 내용

error during connect: this error may indicate that the docker daemon is not running: Post "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/auth": open //./pipe/docker_engine: The system cannot find the file specified.

 

  원인

Windows Docker Desktop이 정상적으로 실행되지 않아서 그렇습니다.

제 경우는 Hyper-V 관련 에러 메시지가 출력되면서 Docker Desktop이 정상적으로 동작하지 않고 있었습니다.

 

혹시 Windows Docker Desktop이 실행될 때 Hyper-V 관련 에러가 나온다면 아래 URL을 참고하면 바로 해결 가능합니다.

Powershell을 통해 명령어 한 줄 넣으니 바로 해결 되었습니다.

https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v

 

Enable Hyper-V on Windows 10

Install Hyper-V on Windows 10

learn.microsoft.com

 

  해결책

Windows Docker Desktop이 아래 사진과 같이 정상적으로 실행되면 에러 원인도 해결됩니다.

[인증 성공!]

 

 

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

caul334@gmail.com

반응형
반응형

Part 3에서는 Kibana와 Elastic을 연동하고 Dev Tool을 통해 Index를 생성하는 내용에 대해 다루겠습니다.

Ubuntu에 XRDP로 접속하여 kibana (5601/tcp)에 접근하니 아래와 같은 화면이 뜹니다.

 

  Step1. Enrollment Token 생성 및 입력

 

우선적으로 Enroolment Token을 발행해야 합니다. Ubuntu(Linux) 명령어로 아래와 같이 입력합니다.

*실행 경로가 다르신 분은 find 명령어로 elasticsearch-create-enrollment-token 프로그램의 위치를 찾으면 됩니다.

1
sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana --url "https://<내부IP>:9200"
cs

 

그러면 긴 문자열의 Token이 발행되는데 그것을 위 화면에 붙여넣고 Confiture Elastic을 클릭합니다.

 

 

  Step2. Verification required 생성 및 입력

 

아래와 같이 인증코드 6자리를 입력하라는 화면이 나오면 아래 명령어를 입력합니다.

1
sudo /usr/share/kibana/bin/kibana-verification-code
cs

인증번호가 출력되면 인증번호를 입력합니다.

 

 

  Step3. ElasitcSearch 로그인

 

드디어 마지막 단계입니다.

ElasticSearch 계정으로 로그인을 하면됩니다. 혹시 PW가 기억나지 않으시는분들은 password reset이 필요합니다.

그 방법은 https://betterinvesting.tistory.com/315 링크를 참고하시면 됩니다.

 

  Step4. Index 생성

 

로그인까지 완료했으면 DashBoard가 보이실텐데 그곳에서 Management > Dev Tools로 들어가줍니다.

 

가장 첫줄로 GET /_cat/indices?v 를 입력하여 모든 Index를 출력해줍니다.

ElasticSearch에서 Index는 Database에서 DB이름과 같은 개념입니다.

이번에는 customer 이름의 index를 생성해보도록 하겠습니다. 명령어는 아랫줄과 같습니다.

PUT /customer

이후 다시 GET /_cat/indices?v 명령어로 모든 Index를 출력하여 보면 customer index가 생성되었음을 확인 가능합니다.

 

 

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

caul334@gmail.com

반응형

'IT > ELK' 카테고리의 다른 글

[ELK] 간단한 ELK 설치 환경 구축 방법 (Part 2)  (1229) 2023.05.14
[ELK] 간단한 ELK 설치 환경 구축 방법 (Part 1)  (1235) 2023.05.12
반응형

Part1에서는 설치를 완료하고 프로세스와 포트오픈되는 것까지 확인하였습니다.

구체적인 설치 방법이 궁금하신 분은 아래 글을 먼저 참고하시고 오세요~!

https://betterinvesting.tistory.com/314

 

[ELK] 간단한 ELK 설치 환경 구축 방법 (Part 1)

ELK란 ElasticSearch + Logstash + Kibana 의 첫 글자 조합으로 Elastic stack, ELK stack으로도 불립니다. 각각의 역할로는 ElasticSearch는 분석 및 검색, Logstash는 로그 수집, Kibana는 분석 결과 시각화를 담당합니다.

betterinvesting.tistory.com

 

이번 글인 ELK 설치 환경 구축 방법 Part2에서는 패스워드 설정과 UI 확인하는 법을 공유드리겠습니다.

설치 완료 후 서비스를 실행하여 아래 링크로 접속하여 접속이 잘 되는지 확인해 보았습니다.

https://<IP주소>:9200 그러니 아래와 같은 화면이 뜨면서 인증 정보를 입력하하는 화면을 맞닥드리게 됩니다.

하지만 저는 ELK Stack을 설치하면서 ID/PW를 설정한 적이 없는데.....

 

 

확인을 해보니 Elastic Search 6.x 버전 이후 부터는 ID/PW를 별도의 프로그램으로 따로 설정해 줘야 합니다.

설정하는 방법은 아래와 같이 /usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive 명령어를 입력하면 됩니다. elasticsearch-setup-passwords 프로그램의 정확한 위치는 아래 명령어를 통해 찾을 수 있습니다.

sudo find / -name "elasticsearch-setup-passwords"

하지만 저는 이미 설정이 되어 있는지 실패 메시지가 뜨면서 password를 reset 하라는 메시지가 나오더라구요.

 

 

안내와 같이 elasticsearch-reset-password 파일을 실행하면서 -u 옵션과 사용자이름(elastic)을 같이 인자로 전달합니다.

그러면 아래와 같이 성공 메시지가 뜨면서 패스워드가 성공적으로 초기화 됩니다.

 

초기화된 패스워드를 아까와 같이 로그인 창에  넣어주면 성공적으로 로그인 할 수 있습니다.

인증정보 : elastic / <초기화패스워드>

ELK 로그인 화면

 

 

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

caul334@gmail.com

반응형

'IT > ELK' 카테고리의 다른 글

[ELK] 간단한 ELK 설치 환경 구축 방법 (Part 3)  (1232) 2023.05.15
[ELK] 간단한 ELK 설치 환경 구축 방법 (Part 1)  (1235) 2023.05.12
반응형

ELK란 ElasticSearch + Logstash + Kibana 의 첫 글자 조합으로 Elastic stack, ELK stack으로도 불립니다.

각각의 역할로는 ElasticSearch는 분석 및 검색, Logstash는 로그 수집, Kibana는 분석 결과 시각화를 담당합니다.

 

ELK를 간단하게 설치하는 방법에 대해 공유드리겠습니다.

 

1. VM 환경 구축 (VMware, Virtual Box, Cloud 등)

OS는 Ubuntu를 추천드리며 테스트 환경 스펙은 원활환 환경을 위해서 vCPU 4개, Memory 8 GB, SSD 100 GB 스펙으로 구축하였습니다.

VM환경은 NHN Cloud를 이용하였습니다. (VMware, Virtual Box, AWS, Azure, NCP 모두 상관 없음)

 

인스턴스 생성
VM환경 접속 사진

 

 

 

2. 패키지(.deb) 업데이트 및 설치 파일 다운로드

ELK Stack을 다운받을 수 있는 다운로드 페이지로 이동합니다.

https://www.elastic.co/kr/downloads/

 

Elastic 제품 다운로드

Elasticsearch, Logstash, Kibana 및 Beats를 무료로 다운로드하고 몇 분 내에 Elastic APM, Elastic App Search, Elastic Workplace Search 등을 시작하세요.

www.elastic.co

 

이동 하였으면 원하는 패키지에 대하여 다운로드 버튼을 클릭합니다

Linux 환경에서 패키지를 다운로드 할 것이기 때문에 다운로드 페이지에서 deb 패키지로 전환 후 오른쪽 클릭을 하여 링크 주소를 복사해둡니다. (추후 wget 명령어와 링크 주소를 활용하여 다운로드 하기 위함)

ElasticSearch, Kibana, Logstash에 대한 링크를 확보하였으면 Linux에는 아래와 같이 명령어를 입력할 수 있습니다.

제가 설치한 버전은 8.7.1 버전입니다. 설치 시 주의사항은 ELK 각각의 버전이 모두 통일되어야 합니다.

1
2
3
4
5
6
7
8
# 패키지 업데이트
sudo apt-get update && sudo apt-get upgrade
# Elasticsearch 패키지 다운로드
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.7.1-amd64.deb
# Kibana 패키지 다운로드
wget https://artifacts.elastic.co/downloads/kibana/kibana-8.7.1-amd64.deb
# Logstash 패키지 다운로드
wget https://artifacts.elastic.co/downloads/logstash/logstash-8.7.1-amd64.deb
cs

 

 

 

3. 패키지(.deb) 설치 및 서비스 실행

ELK Stack 패키지의 다운로드가 모두 완료되었으면 아래 명령어를 입력하여 설치를 해줍니다. (순서 상관 없음)

1
2
3
4
5
6
# Elastic Search 설치
sudo dpkg -i elasticsearch-8.7.1-amd64.deb
# Kibana 설치
sudo dpkg -i kibana-8.7.1-amd64.deb
# Logstash 설치
sudo dpkg -i logstash-8.7.1-amd64.deb
cs

 

설치가 정상적으로 완료되면 elasticsearch 서비스를 실행해줍니다.

기본 설정으로 실행 된 경우 9200/tcp 포트가 열리게 됩니다.

 

 

 

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

caul334@gmail.com

반응형

'IT > ELK' 카테고리의 다른 글

[ELK] 간단한 ELK 설치 환경 구축 방법 (Part 3)  (1232) 2023.05.15
[ELK] 간단한 ELK 설치 환경 구축 방법 (Part 2)  (1229) 2023.05.14
반응형

AWS EC2 인스턴스 비용에 관해 고민해보신 분이라면 RI(Reserved Instances) 또는 Savings Plans에 대해 들어보셨을 겁니다.

하지만 이 둘의 차이점을 알지 못하는 분들이 많아 특징을 간단히 정리 후 차이점을 공유드리겠습니다.

 

RI (Rserved Instances)

  • 인스턴스 패밀리, 크기, 지역, 운영체제, 테넌시가 일치해야 함
    • 단, 크기가 다른 경우 정규화 인자만큼 적용
    • 참고) 패밀리 : (ex. t2, m5), 크기 : (ex. medium, large), 테넌시 : (전용 호스트, 전용 인스턴스)
  • 사용량 종료 시 갱신되지 않으며 온디맨드 요금 부과

 

* 정규화 인자만큼 적용되는 개념은 복잡하기 때문에 여기서 설명드리지 않겠습니다. 궁금하신분은 아래 링크를 달아드릴테니 확인하시면 됩니다.

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/apply_ri.html#ri-normalization-factor

 

 

Savings Plans

  • 인스턴스 패밀리, 크기, OS, 테넌시, 지역 상관없음
  • AWS Fargate, Lambda에도 적용 가능
  • Savings Plans 종류(3가지)에 따라 최대 64%~72% 절약 가능
  • 사용량 종료 시 EventBridge를 통해 알림 가능

 

Savings Plans을 PC방에 비유하자면 정액권을 끊으면 그 금액 안에서 라면도 시켜먹고 PC방도 이용할 수 있는 개념인데 반해 RI는 PC방에 대한 사용권만 이용할 수 있는 것과 같습니다.

AWS에서는 RI보다는 Savings Plans를 더욱 권장하는 느낌입니다.

 

 

Savings Plans은 3종류로 나뉩니다.

 

Savings Plans 종류(3가지) 및 차이

Compute Savings Plans : 가장 유연한 요금제 - 최대 66% 할인

  • 지역, 인스턴스 패밀리, 크기, 운영체제, 테넌시 관계 없이 자동 적용 가능
  • Fargate 및 Lambda 사용량에 적용

EC2 Instance Savings Plans : 특정 지역의 인스턴스만 할인 - 최대 72% 할인

  • 인스턴스 패밀리, 크기, 운영체제, 테넌시 관계 없이 자동 적용 가능

SageMaker Savings Plans - 최대 64% 할인

  • 지역, 인스턴스 패밀리, 크기, 구성 요소(예: 노트북, 교육 등)에 관계 없이 자동 적용 가능

 

 

RI를 구매했는데 Savings Plans 구매를 고민하시는 분이라면 아래 사용량 적용 우선순위를 참고해주세요

 

 

사용량 적용 우선순위

  1. RI vs Savings Plans : RI가 우선 적용
  2. EC2 Instance Savings Plans vs Compute Savings Plans : EC2 Instance Savings Plans
  3. 소유자 계정 Savings Plan vs 다른 계정 Savings Plan : 소유자 계정이 우선 적용

 

 

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

caul334@gmail.com

반응형
반응형

 

AWS를 운영하면서 Root 계정과 IAM계정의 대표적인 차이는 "결제정보를 확인할 수 있냐 없냐" 입니다.

 

Root 계정과 IAM계정의 대표적인 차이점은 아래 글에서 확인이 가능합니다. 

https://betterinvesting.tistory.com/307

 

[AWS] Root 계정 vs IAM(Adminitrator) 권한 차이

AWS 계정 관리에 대한 IAM Root 계정에 대한 Best Practice 찾아 보면 Root 계정을 만들면 MFA 2단계 인증을 설정한 후 Root 계정을 사용하지 말고 IAM 계정에 Admin 권한을 부여하여 IAM 계정을 사용하라고 합

betterinvesting.tistory.com

 

일반적으로 AWS 기본 설정에서는 아래 사진과 같이 IAM 계정에서 청구서(결제)에 대한 정보 확인이 불가능합니다.

따라서 청구서 정보를 확인하기 위해서는 Root 계정에서만 확인 가능하다는 불편함이 존재합니다.

 

하지만 IAM 계정이라 하더라도 정책 설정을 변경하면 청구서 정보를 확인할 수 있습니다.

해당 정보는 AWS IAM(Identity and Access Management)에 관한 Docs에서 확인 하였습니다.

 

https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/tutorial_billing.html

 

IAM 자습서: 결제 콘솔에 대한 액세스 권한 위임 - AWS Identity and Access Management

사용자 편의를 위해 AWS 로그인 페이지는 브라우저 쿠키를 사용하여 IAM 사용자 이름 및 계정 정보를 기억합니다. 이전에 다른 사용자로 로그인한 경우 페이지 하단 근처의 다른 계정에 로그인(Sig

docs.aws.amazon.com

 

  청구서 확인을 위한 IAM 계정 설정 변경 방법

1. Root 계정으로 로그인하여 결제 정보에 대한 IAM 사용자 엑세스를 활성화 해줍니다.

방법 : 자신의 계정명 (클릭) > 계정 > 결제 정보에 대한 IAM 사용자 및 역할 엑세스 > 편집 > IAM 엑세스 활성화 (선택) > 업데이트 (클릭)

 

그러면 결제 정보에 대한 IAM 사용자/역할 엑세스가 활성화되었습니다. 라는 문구를 확인할 수 있습니다.

 

2. (기존에 IAM 사용자가 있다는 전제) IAM 사용자에게 billing 권한을 부여

IAM 계정이 없으시다면 만드셔서 테스트 하시면 되고 있다면 아래 방법대로 그대로 따라하면 됩니다.

 

방법 : IAM > (청구서를 보기 위한) 사용자 또는 사용자 그룹 > 선택 > 권한 > 권한 추가 > 정책연결 > billing 검색 후 권한 추가

 

참고로 아래 사진은 보여드리기 위해 두 개의 권한(Billing, AWSBillingReadOnlyAccess)을 모두 추가한 상태이고 실제 사용을 위해서는 Billing 또는 AWSBillingReadOnlyAccess 두개의 권한 중 하나만 선택하시면 됩니다.

저는 안전하게 이용하기 위해 최소 권한인 AWSBillingReadOnlyAccess 권한을 추가했습니다.

 

3. 이제 다시 IAM 계정에 로그인 하여 청구서를 확인해 보니 아래 사진과 같이 결제 정보를 확인할 수 있습니다.

 

 

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

caul334@gmail.com

반응형

+ Recent posts