Difference between revisions of "가상 전용 써버"

From Hidden Wiki
Jump to navigation Jump to search
Line 362: Line 362:


=== 커스텀 주소 사용 ===
=== 커스텀 주소 사용 ===
[[우분투]] [[VPS]]의 경우 자신의 컴퓨터에 새로 연 터미널에서
[[우분투]] [[VPS]]의 경우 먼저 VPS에서
mkdir /var/lib/tor/hs1/
하여 hs1 폴더를 만든다.
 
그리고 자신의 컴퓨터에 새로 연 터미널에서
  scp hostname private_key root@123.123.123.123:/var/lib/tor/hs1/
  scp hostname private_key root@123.123.123.123:/var/lib/tor/hs1/
하여 자신의 컴퓨터에 있던 hostname과 private_key 파일을 VPS의 hs1 디렉터리로 복사하여 거기 원래 있던 파일에 덮어씌운다. 그리고
하여 자신의 컴퓨터에 있던 hostname과 private_key 파일을 VPS의 hs1 디렉터리로 복사하여 거기 원래 있던 파일에 덮어씌운다. 그리고

Revision as of 00:44, 1 November 2017

개요

가상 사설 써버(virtual private server, VPS) 혹은 가상 전용 써버는 하나의 물리적 써버를 나누어 여러 개의 가상 써버로 사용하는 가상화 방법의 한 형태이다. 이것은 메인 프레임과 같이 예전부터 익히 알려진 것이었으나 최근 VMware, , FreeBSD Jail, 유저 모드 리눅스(UML), 리눅스-V써버, FreeVPS, OpenVZ, 그리고 Virtuozzo와 같은 기술들이 발전함에 따라 다시 주목을 받게 되었다.


인터넷 호스팅 서비스 산업에서, 가상 사설 서버는 공유 웹 호스팅 서비스전용 호스팅 서비스 사이의 간극을 메꿀 수 있는 방법이며, 여러 호스팅 회사가 주요 서비스로 빠르게 받아들이고 있다.

회사는 각 사용자들이 물리적으로 서버를 건드리지 않도록 하면서 슈퍼 유저 수준의 접근을 제공할 수 있다. 그래서 다른 사람들과 서버를 공유하는 환경에서 운영하기 힘든 환경을 가진 개인이나 회사에 의해 널리 사용된다.


보안

가상 사설 서버가 널리 알려지는 또 하나의 까닭은 샌드박스를 만들 수 있기 때문이다. 예를 들어, 어떤 하나의 물리적인 서버가 두 개의 사설 서버를 운영하고 있다고 하자. 하나는 실제 운영되는 웹 사이트를 맡고 있고 나머지 하나는 그것의 복사본을 운영한다. 만약 아주 중대한 소프트웨어 업데이트를 해야 한다면 그들은 두 번째 복사본 서버에서 테스트해 볼 수 있다.

가상 사설 서버는 또 허니팟을 위해 사용되는데, 허니팟은 보안문제가 있는 소프트웨어를 일부러 운영하는 것이다. 하나의 서버에 여러 개의 가상 서버를 운영하기 쉽기 때문에 허니팟을 운용하는 데에 편리하다.

체포를 피하기 위해 리눅스 마스터 1급과 정보보안 기사정도는 따고 운영하자.

체포

해외 VPS 쓰고, 페이퍼 컴퍼니돈 세탁 한다고 체포가 안 되는 것은 아니다.


  • 1조원대 불법 스포츠 도박사이트... 700억 챙긴 조폭 등 50명 적발

2016.06.30

http://www.hankookilbo.com/v/e657b2b3ed274acda47dd7fb36c5bb5a


  • 3조원대 불법 스포츠 도박 사이트 운영조직 적발

2016-07-28

http://www.hankyung.com/news/app/newsview.php?aid=201607281260i


  • 1조원대 도박사이트 적발…피의자 바꿔친 가수 구속

2016-11-14

http://www.yonhapnewstv.co.kr/myh20161114018200038/


  • '1조원대' 불법 도박 사이트 기업형으로 운영한 조직 적발

2017-04-27

회원만 4만3천여명…범죄수익으로 천억원 넘게 챙겨

페이퍼 컴퍼니를 차려놓고 무려 1조원대 불법 도박 사이트를 운영해온 조직이 검찰에 적발됐다.

페이퍼컴퍼니(서류상 회사)를 차려놓고 총 판돈이 1조원이 넘는 불법 도박 사이트를 운영해온 기업형 조직이 검찰에 적발됐다.

부산지검 형사3부(박억수 부장검사)는 총 베팅 규모 1조 3천억원대 불법 도박 사이트를 운영해 1천억원이 넘는 수익을 올린 조직을 적발해 국민체육진흥법 위반(도박개장 등)과 도박공간 개설 혐의로 자금관리책 A(40) 씨와 현금 인출책 B(43) 씨 등 11명을 구속기소 하고 홍보담당 등을 불구속 기소했다고 27일 밝혔다.

검찰은 또 외국으로 달아난 총책 C(38) 씨와 서버관리자 등 3명은 지명수배했다.

검찰에 따르면 이들은 지난해 10월부터 올해 4월까지 홍콩일본서버를 두고 불법 온라인 도박사이트를 개설했다.

이들은 인천지역 PC방과 수십곳과 연계하는 등 온·오프라인을 통해 광범위하게 회원을 모집했다.

PC방 이용자들이 불법 도박 사이트에서 잃은 돈의 12%는 PC방 주인에게 인센티브로 돌아가는 구조여서 업주 또한 회원모집에 나섰다.

검찰이 파악한 불법 도박 사이트 회원만 4만 3천여명에 이른다.

특히 A씨 등은 수사기관 단속을 피하려고 서버를 일본과 홍콩에 둔 호스팅 업체를 통해 도메인 주소(URL)와 아이피 주소를 할당받은 뒤 단기간 사용하고 교체하는 치밀함을 보였다.

또, 서버관리자총책대포폰을 사용하면서 수시로 전화를 바꾸고, 거주지도 서울 강남지역에서 오피스텔월세임차해 수시로 이사했다.

검찰조사결과 이들은 여러 개의 페이퍼컴퍼니를 세우고 계좌를 만들어 상호 계좌이체를 되풀이하면서 도박 수익금을 정상적인 회사 수익인 것처럼 세탁한 것으로 드러났다.

A씨 등은 페이퍼 컴퍼티의 등기부상 목적사항에 '비트코인 중개업'이라고 써 넣었고, 도박수입금이 비트코인 중개업을 통해 발생한 것처럼 위장했다.

게다가 검찰에 붙잡혀 조사를 받는 와중에도 비트코인 중개업을 운영한 것이라고 입을 맞춰 혐의를 전면 부인하기도 했다.

검찰 관계자는 "불법 도박사이트는 국가적, 사회적으로 큰 폐해를 낳고 있는 대표적인 서민생활침해사범"이라며 "이들이 세운 페이퍼컴퍼니 계좌와 조직원들이 소유한 부동산에 대해 추징 보전조치를 통해 범죄수익으로 환수할 방침"이라고 밝혔다.

https://nocutnews.co.kr/news/4775824

VPS에 웹 써버 설치

이 문서는 리눅스 민트에서 우분투 16.04 x64 VPS 또는 센트OS 7 64비트 VPS에 SSH로 접속하는 경우를 기준으로 설명합니다. 또한 root로 접속하는 상황을 기준으로 설명하므로 일반 사용자 계정으로 접속시 우분투이건 센트OS이건, 관리자 권한이 필요한 상황에서는 명령어 앞에 sudo를 붙여야 합니다.


웹 싸이트를 만드는 전반적인 방법은 표면 웹 싸이트 제작 문서와 다크 웹 싸이트 제작 문서를 참조하면 된다. VPS 접속자의 실제 아이피 주소를 숨기기 위해 써버 접속시 가상 사설 망(VPN)을 쓰기도 한다.


일단 빝코인으로 결제할 수 있는 도메인 네임 업체에서 가명과 가짜 주소로 도메인 네임을 구입한다. 그리고 역시 빝코인으로 결제할 수 있는 VPS 업체에서 가명과 가짜 주소로 VPS를 결제한다. 그 후 VPS의 IP 주소와 도메인 네임을 연결해주는 도메인 네임 서버(DNS) 업체에 가입해서 VPS와 도메인을 연결한다. 클라우드플레어(Cloudflare)처럼 익명으로 가입할 수 있는 무료 네임 서버 업체도 있다. 클라우드플레어는 디도스(DDoS) 방어와 컨텐트 전송 넽워크(CDN, content delivery network) 역할도 해준다.


VPS에 접속하여 뭔가 작업을 할 때는 씨큐어 셸(SSH, Secure Shell)을 사용한다.

'SSH+Tor'로 VPS에 접속

SSH를 이용하여 VPS에 접속할 때는 Tor Browser가 제공하는 SOCKS5 proxy를 사용하여 실제 IP 주소가 드러나지 않게 한다. 일단 자신의 컴퓨터에서 Tor를 켜고 터미널에서

ssh 123.123.123.123 -l root -o ProxyCommand="nc -X 5 -x localhost:9150 %h %p"

와 같이 입력하여 접속한 후 나중에 VPS 써버 로그를 확인해보면 접속한 컴퓨터의 IP 주소라고 찍힌 것이 자신의 실제 IP 주소가 아니라 Tor exit node의 IP 주소인 걸 확인할 수 있다. 여기서 123.123.123.123 자리에는 자신의 VPS의 IP 주소를 적어주면 되고, root 자리에는 root면 root라고 적어주고, 일반 사용자면 계정명을 적어주면 된다. 이렇게 rapevirgins.com이나 gangbanggirls.net 등의 웹 싸이트 주소 대신에 IP 주소를 사용하여 VPS에 접속하면 DNS leak이라는 자신의 실제 정체가 드러날 수 있는, Tor 사용자에게는 상당히 심각한 보안 위협을 막을 수 있다.

써버 로그에 보면

Feb 5 16:34:34 host-172-20-0-101 sshd[11269]: Accepted password for root from 65.19.167.131 port 22323 ssh2

와 같은 식으로 기록되어 있을 것이다. 접속에 사용된 아이피 주소인 65.19.167.131는 Tor Atlas에서 확인해보면 Tor exit node라는 것을 알 수 있다.


일단 토어(Tor)가 써버에 설치되면, SSH를 Tor로 접속하도록 설정할 수 있고, 그러면 .onion 주소로 접속하는 것도 가능해진다. 그러면 SSH의 로그에 로컬호스트(localhost)의 IP 주소인 127.0.0.1이 접속자 IP 주소로 찍히게 된다. 자신의 .onion 주소가 fuckyourdaughter.onion라고 가정하고, 터미널

ssh fuckyourdaughter.onion -l root -o ProxyCommand="nc -X 5 -x localhost:9150 %h %p" 

와 같이 입력하면

root@fuckyourdaaughter.onion's password: 

가 뜨고, 비밀번호를 입력하여 접속하면

Last login: Sun Feb 5 20:47:10 2017 from 127.0.0.1

와 같이 뜰 것이다.


자세한 내용은 https://www.comparitech.com/blog/vpn-privacy/how-to-set-up-a-tor-hidden-service/ 참조.

VPS에 Tor 설치

씨큐어 셸(SSH)로 가상 사설 써버(VPS)에 접속하려면 우선 터미널을 띄우고

ssh root@123.123.123.123

을 입력하여 VPS에 접속한다. root는 계정 아이디, 123.123.123.123은 VPS의 IP 주소로 자신에게 맞는 값으로 바꿔서 입력한다. 그리고

root@123.123.123.123's password: 

라고 뜨면 해당 계정의 비밀번호를 입력하여 접속한다.


우분투 가상 사설 써버(VPS)의 경우 우선 터미널에서

apt update

apt 패키지 목록을 최신으로 업데이트하고, 그 업데이트 목록을

apt upgrade

로 설치해준다.


센트OS의 경우

yum update

로 컴퓨터에 설치된 패키지들을 모두 최신 버전으로 업데이트해준다. 중간에 총 몇 MB인데 다운로드 및 설치할 거냐고 [y/d/N]으로 물어보면 y로 대답한다. y는 yes, d는 download only, N은 no이다. 자신의 VPS에 설치된 모든 패키지 업데이트라 꽤 오래 걸린다.


우분투에서는 터미널에서

apt install tor

해서 토어 설치 후

tor &

백그라운드(background)로 실행하면 된다. 만약 실수로 포어그라운드(foreground)로 실행한 경우 Ctrl + C 인터럽트 키로 종료시키면 된다.


CentOS에서 Toryum으로 설치는 안 되고, 소스 코드컴파일해야 한다.

소스 코드로 Tor 설치

https://www.torproject.org/download/download.html.en 에서 토어(Tor)의 소스 코드를 다운로드 받는다.


"Ctrl + Shift + T"로 터미널내에서 새 탭으로 터미널을 실행하여 터미널을 두 개 띄운다. 우분투리눅스 민트라면 바탕화면에서 "Ctrl + Alt + T"로 터미널을 실행하는 것도 되겠지만 칼리 리눅스에서는 먹지 않는 단축키이다. 하나는 씨큐어셸(SSH)용이고, 하나는 SCP용이다.


터미널에서 Tor의 소스 코드의 압축 파일이 있는 디렉터리로 이동한 후

scp tor-0.3.1.7.tar.gz root@123.123.123.123:/root

를 입력하여 자신의 컴퓨터의 tar.gz 파일을 VPS의 /root 디렉터리로 업로드한다. 여기의 파일 이름은 예시일뿐이니, 자신이 갖고 있는 파일 이름에 맞춰서 입력한다.


우분투의 경우 터미널에서

cd /root/

를 하여 /root 디렉터리로 이동 후

ls

를 하면

tor-0.3.1.7.tar.gz

파일이 보일 것이다. tar.gz 파일의 압축을 풀기 위해 tar 명령어를 사용할 것이다.

tar --help

를 해서 도움말을 보면

-?, --help                 give this help list
-x, --extract, --get       extract files from an archive
-z, --gzip, --gunzip, --ungzip   filter the archive through gzip
-f, --file=ARCHIVE         use archive file or device ARCHIVE
-c, --create               create a new archive

가 보일 것이다.

tar xzf tor-0.3.1.7.tar.gz

을 하여 압축 파일을 풀어낸다. 만약 girls이라는 폴더나 파일을 rapeyou.tar.gz라는 이름으로 압축을 하려면

tar fzc rapeyou.tar.gz girls

라는 명령어를 입력하면 된다. xzcf 등 옵션의 순서는 상관없다. tar는 여러 파일을 묶어주기만 할 뿐 압축 기능이 없으므로 일단 tar로 묶어주고, gzip(gz)으로 압축을 한다. 위 옵션은 그 기능을 한 번에 해주는 것이다. 이제

ls

를 하면

tor-0.3.1.7  tor-0.3.1.7.tar.gz

이렇게 새로운 폴더가 생긴 것이 보일 것이다. 이제

cd tor-0.3.1.7

하여 tor-0.3.1.7 디렉터리로 이동한다. 거기서

./configure

를 해준다. 만약 gcc가 없어서 안 되면

apt install gcc

를 해서 gcc를 설치한다. 그리고 libevent 때문에 설치가 안 된다고 뜨면

apt install libevent-dev

해서 설치한다. 이제

./configure

가 될 것이다. 그 후

make

를 해서 마친다. ./configure와 make를 한 번에 하려면

./configure && make

를 하면 된다. 여기서는 "make install" 명령어가 필요없지만 아예 세 개의 명령어를 순서대로 한번에 실행시키는

./configure && make && make install

형태로도 많이 쓰인다. ./configure는 소스 코드로부터 프로그램을 컴파일(소스 코드를 실행 가능한 프로그램으로 만듦.)하는데 필요한 것이나 에러가 없는 지 점검하고, make는 실질적으로 컴파일을 하며, make install은 컴파일의 구성 요소로 필요한 라이브러리(작은 프로그램으로, 큰 프로그램의 일부분으로서 작동한다.)를 불러와 컴파일되는 프로그램에 집어넣는다.


센트OS VPS에서도 scp로 tor-0.3.1.7.tar.gz 파일을 /root 디렉터리로 업로드한다. ssh로 VPS에 접속한 후

tar xzf tor-0.3.1.7.tar.gz 

로 root 딜렉터리에 위 압축파일을 푼다.

cd tor-0.3.1.7
./configure

역시 C 언어 컴파일러가 없어서 설치가 안 된다. gcc를 설치해준다.

yum install gcc

를 해준다. 중간에 y (yes) 또는 n (no)을 물어보는 게 나오면 무조건 y나 yes를 입력해주면 된다. 그리고

./configure

하고 make를 하려고 하면 make 파일이 없다고 뜬다. 그리고 그 위에 보면

configure: WARNING:    You will probably need to install libevent-devel too.

라고 떠있는 것이 보일 것이다. 그리고

yum install libevent-devel

를 입력하여 libevent-devel을 설치해준다. 중간에 [y/d/N] 중에서 선택하라고 물어보면 무조건 y로 대답한다. y는 yes, d는 download only, N은 no이다.

./configure

하여 설정해주고

make

하려고 하니 open-ssl을 설치하라고 한다.

yum install openssl-devel

로 open-ssl을 설치하고

./configure

하고

make

한다.

tor 파일을 셸 스크맆트로

소스 코드로 Tor를 설치할 경우에 tor라는 명령어로는 Tor가 실행되지 않으며 반드시 or 디렉터리에 있는 Tor 실행 파일인 tor를 실행시켜줘야 한다. 터미널에서

/root/tor-0.3.1.7/src/or/tor &

해서 실행시켜도 되지만 너무 기니 다 치기 귀찮을 것이다. 이것을 /root/ 에서

./tor

만 치면 실행할 수 있는 셸 스크맆트로 만들어보자. 토어 실행시

/root/tor-0.3.1.7/src/or/tor

를 하면 Tor가 포어그라운드(foreground)로 실행되어 터미널은 더 이상 명령어를 받을 수 없는 상태가 되어 다른 명령어를 내리려면 Ctrl + C 인터럽트 키로 지금 실행되고 있는 명령을 취소하거나, 새 터미널을 띄우고 ssh로 다시 접속해야 한다. 그럼 귀찮으니 명령어 뒤에 &을 붙여서 백그라운드(background)로 실행시키는 것이다. & 띄어쓰기는

/root/tor-0.3.1.7/src/or/tor &

/root/tor-0.3.1.7/src/or/tor&

둘 중 아무거나 상관없다. 위와 같이 입력하면 토어가 실행되고, 엔터(enter) 키를 누르면 다시 명령 프롬프트(command prompt)가 떠서 다른 명령을 받아들일 수 있는 상태가 된다.


이제 이 명령어를 셸 스크맆트(shell script)로 만들 것이다. 리눅스는 대부분 bash 셸을 쓰니 bash 셸 스크맆트를 만들 것이다. 스크맆트(script)는 소스 코드컴파일하여 만들어진 바이너리(binary) 실행 파일인 프로그램과는 달리 인터프리터(interpreter)에서 한 줄씩 해석해서 바로 실행하는 것이다. 파이썬같은 게 스크맆트 언어이고, C 언어같은 게 컴파일 언어이다.


cd /root

로 /root 디렉터리로 이동.

vim tor

로 tor라는 파일을 만들고 vim 편집기로 편집.

i

a

를 입력하여 편집 가능 상태로 만든다.

#!/bin/sh

를 맨 위에 입력하여 bash shell script임을 알려준다.

/root/tor-0.3.1.7/or/src/tor &

를 그 밑에 입력하여 위 명령어를 백그라운드로 실행할 것임을 적어준다. Esc 키를 눌러 명령어 상태로 간 후

:wq

를 입력하여 저장(w)하고, 종료(q)한다.


그리고

ls -l tor

해서 권한을 본다.

-rw-r--r--

일 것이다.

chmod +x tor

해서

-rwxr-xr-x

로 만들어 실행 가능하게 만들어준다.


이제 /root 에서

./tor

만 입력하면 Tor가 백그라운드로 실행될 것이다.

ps -A

해서 실행 중인 모든 프로세스의 목록을 보자. tor가 보일 것이다.


왜 /root 디렉터리셸 스크맆트 파일을 만들었냐하면 root로 로그인하면 root의 홈 디렉터리인 /root로 들어가지기 때문이다. 즉, 써버리부트(reboot)하면 토어(Tor)가 종료된다. 그리고 SSHVPS에 다시 접속하면 Tor는 여전히 종료된 상태다. 즉, 리부팅(rebooting) 후 SSH로 VPS에 접속하면 뜨는 게 /root이므로 여기서 ./tor만 입력해서 바로 실행할 수 있게 /root에 tor 셸 스크맆트 파일을 만든 것이다. 또한 다른 경로에 있더라도

cd ~

만 입력하면 홈 디렉터리인 /root로 이동하므로 tor 셸 스크맆트는 /root 디렉터리에 있는 게 사용하기 편하다.

torrc 설정

cd /etc/tor/ 

로 tor 디렉터리로 이동 후

vim torrc

해서 문서 편집기 vim으로 torrc 파일을 불러와서 키보드 방향 키로

#HiddenServiceDir /var/lib/tor/hidden_service/
#HiddenServicePort 80 127.0.0.1:80

#HiddenServiceDir /var/lib/tor/other_hidden_service/
#HiddenServicePort 80 127.0.0.1:80
#HiddenServicePort 22 127.0.0.1:22

를 찾은 후 i나 a를 눌러 입력 모드로 들어간 후

HiddenServiceDir /var/lib/tor/hs1/
HiddenServicePort 80 127.0.0.1:892

HiddenServiceDir /var/lib/tor/hs2/
HiddenServicePort 80 127.0.0.1:1004
#HiddenServicePort 22 127.0.0.1:22

로 바꿔준다. 그리고 Esc 키를 눌러 명령 모드로 나온 후

:wq

를 눌러 변경 내용을 쓰기(write)한 후 종료(quit)한다. 그리고

/etc/init.d/tor restart

를 하여 토어를 재시작한다.


아래는 소스 코드컴파일해서 설치했을 경우의 torrc 설정 방법이다.

cd /root/tor-0.3.1.7/src/config/

로 config 디렉터리로 이동

cp torrc.sample torrc

로 torrc.sample 파일 복사 후 torrc로 이름 바꾸기


vim torrc

로 vim 편집기에서 i나 a 키를 눌러 torrc 파일 편집

#HiddenServiceDir /usr/local/var/lib/tor/hidden_service/
#HiddenServicePort 80 127.0.0.1:80

#HiddenServiceDir /usr/local/var/lib/tor/other_hidden_service/
#HiddenServicePort 80 127.0.0.1:80
#HiddenServicePort 22 127.0.0.1:22

HiddenServiceDir /usr/local/etc/tor/hs1/
HiddenServicePort 80 127.0.0.1:892

HiddenServiceDir /usr/local/etc/tor/hs2/
HiddenServicePort 80 127.0.0.1:1004
#HiddenServicePort 22 127.0.0.1:22

로 바꿔준다. HiddenServicePort의 의미는 80번 포트(port)로 들어온 요청(request)을 127.0.0.1:892와 127.0.0.1:1004로 돌린다(redirect)는 의미이다. 자세한 설정 방법은 https://www.torproject.org/docs/tor-hidden-service.html.en 을 참고한다. 이제 Esc 키 누르고 :wq로 저장하고 나온다. w는 쓰기(write), q는 종료(quit)이다.

만약 저장하지 않고 나오려면

:q!

를 입력한다. 편집을 하지 않았을 경우

:q

만으로도 종료가 가능하지만 문서를 수정을 했을 경우 :q!를 사용해야 종료가 가능하다.


mkdir /usr/local/etc/tor

로 디렉터리를 만들고

mv torrc /usr/local/etc/tor/

로 torrc 파일을 거기로 옮겨준다.


/root/tor-0.3.1.7/src/or/tor &

처럼 &를 붙여서 tor 파일을 백그라운드로 실행한다. 그리고 tor-0.3.1.7 부분은 t만 입력하고 뒷부분은 Tab 키로 자동완성시키면 된다. 이전에 실행했던 명령어를 다시 실행하려면 키보드의 위 아래 화살표 키를 눌러주면 된다.


torrc를 수정한 후에는 tor 프로세스를 종료 후 재시작해야 torrc의 수정 내용이 반영된다.

터미널에서

ps -A

를 입력하여 실행 중인 모든 프로세스를 본다. 그리고 CMD 항목에서 tor라는 프로세스의 PID를 확인한다. 만약 tor의 PID가 890이라면

kill -15 890

를 입력하여 tor를 종료한다. 그리고

cd /root/tor-0.3.1.7/src/or/

로 or 디렉터리로 이동 후

./tor

로 tor 파일을 실행시킨다.

커스텀 주소 사용

우분투 VPS의 경우 먼저 VPS에서

mkdir /var/lib/tor/hs1/

하여 hs1 폴더를 만든다.

그리고 자신의 컴퓨터에 새로 연 터미널에서

scp hostname private_key root@123.123.123.123:/var/lib/tor/hs1/

하여 자신의 컴퓨터에 있던 hostname과 private_key 파일을 VPS의 hs1 디렉터리로 복사하여 거기 원래 있던 파일에 덮어씌운다. 그리고

/etc/init.d/tor restart

하여 토어를 재시작한다. 이제 이 새로운 onion 주소가 토어 네트워크에 등록될 때까지 몇 분 기다리면 새로운 onion 주소로 접속이 가능할 것이다.


아래는 소스 코드로 설치했을 때의 커스텀 주소 적용 방법이다.

cd /root/tor-0.3.1.7/src/or/

해서 or 디렉터리로 돌아간 후

./tor &

해서 tor 파일을 실행시킨다. 현재 디렉터리에 있는 tor라는 파일을 실행시키라는 의미이다. 만약 뒤에 &을 안 붙이면 tor가 포어그라운드(foreground)로 실행되기 때문에 다른 작업을 할 수 없다. ssh에 접속된 터미널은 Tor가 실행 중이고, 터미널에서는 멀티 태스킹이 안 되기 때문이다. 따라서 뒤에 &을 붙여 백그라운드(background)로 실행시킨다. Bootstrapped 100%: Done이라고 뜨면 엔터를 쳐준다. 그러면 명령 프롬프트가 다시 나와서 다른 명령을 실행시킬 수 있는 상태가 된다.


그리고

cd /usr/local/etc/tor/
ls

하면

hs1  hs2  torrc

hs1과 hs2라는 2개의 디렉터리가 생긴 것이 보일 것이다.

cd hs1
ls

를 해서 hs1 디렉터리에 가보면 원래 없었던

hostname  private_key

라는 두 개의 파일이 보일 것이다. hostname 파일에는 자신의 다크 웹 싸이트의 onion 주소가 있고, private_key 파일에는 자신의 onion 주소를 소유하고 사용할 수 있는 개인 키가 들어있다. hs2 폴더에도 같은 이름의 파일들이 있을 것이다.


vim hostname

해서 보면

loliniissexslave.onion

이런 식으로 생겼다. Tor Browser로 이 새로 생긴 onion 주소로 들어가보면 접속이 되는 것을 볼 수 있을 것이다. 그리고 private_key는 자신이 해당 onion 주소의 주인임을 인증하는 개인 키이다.


다른 터미널을 열고

scp hostname private_key root@123.123.123.123:/usr/local/etc/tor/hs1/

하여 내가 컴퓨터에서 Eschalot으로 생성한 hostname과 private_key 파일을 업로드하여 VPS의 hs1 폴더에 있던 파일들에 덮어씌운다. 그러면 자신이 직접 만든 onion 주소를 사용할 수 있다.


터미널에

scp root@123.123.123.123:/usr/local/etc/tor/hs2/* /home/username/

하여 이 두개의 파일을 자신의 컴퓨터로 다운로드 한다. *은 모든 파일명을 의미하고, username에는 자신의 컴퓨터의 계정명을 적어주면 된다.


그리고 원래 실행되던 Tor를 종료하고 재실행시키면 된다. ssh 명령어로 접속한 후 실행 중인 프로세스를 확인하는 명령어인 ps에 모든 프로세스를 보여주라는 옵션인 -A를 붙여

ps -A

를 실행하여 tor의 PID를 알아낸다. 예를 들어 tor의 PID가 747이라면

kill -15 747

를 입력한다. 그러면 tor에 종료 명령이 가고, 해당 프로그램은 프로그램을 종료하려고 시도한다. 만약 15 옵션이 듣지 않으면 9 옵션을 시도해본다.

kill -9 747

9 옵션은 커널(kernel)에서 해당 프로세스를 강제 종료시키는 것이다. 같은 프로그램이라도 매번 실행시킬 때마다 PID 번호가 바뀐다. 그 후 다시

cd /root/tor-0.3.1.7/src/or/

해서 or 디렉터리로 간 후

./tor

해서 Tor를 재실행시킨다. 그리고 Tor Browser로 자신이 Eschalot으로 만든 onion 주소로 접속해보면 접속이 되는 것을 볼 수 있을 것이다. tor 프로세스를 끄면 사람들이 자신의 웹 사이트로 접속할 수 없으므로 tor 프로세스는 계속 켜놓아야 한다.


./tor

를 입력하면 포그라운드(foreground)로 실행되며, 포그라운드라 명령 프롬프트가 뜨지 않아 터미널에는 어떤 키보드 입력도 할 수 없는 상태이며, 터미널 상태에서 "Ctrl + C"를 누르면 종료된다.

./tor &

를 하면 백그라운드(background)로 실행되기 때문에 프로그램만 실행시키고 명령 프롬프트가 바로 뜨며, 터미널에서 다른 명령을 실행시킬 수 있다. 백그라운드 상태에서는 터미널에서 "Ctrl + C" 인터럽트 키를 눌러도 종료되지 않는다.

Apache, MariaDB, PHP 설치

아파치 설치

우분투에서는

apache2 -v

로 아파치 버전 확인. 아파치가 안 깔려있을 경우

apt install apache2

로 apache2를 설치한다.


센트OS의 경우

httpd -v

로 자신의 VPS에 설치되어있는 아파치 버전을 확인한다.

Server version: Apache/2.4.6 (CentOS)
Server built:   Oct 12 2013 21:56:39

와 같은 식으로 나올 것이다. 만약 아파치 2가 설치되어있지 않다면

yum install httpd

로 아파치 2를 설치한다.


systemctl start httpd.service

를 입력하여 아파치를 시작하고

systemctl enable httpd.service

로 아파치를 센트OS의 서비스로 등록하여 리부트(reboot)시마다 자동으로 시작하게 만든다.

마리아DB 설치

우분투에서는

mysql --version

으로 마이SQL이 설치됐나 확인한다. 이 명령어는 마리아DB 버전 확인하는 경우에도 동일하게 사용된다. 만약 설치되어 있으면

apt purge mysql-server

로 mysql-server를 삭제한다. 만약 mysql-client도 설치되어있으면 그것도 삭제한다.

그리고

apt install mariadb-server

로 mariadb-server를 설치한다.

사용 방법은 mysql-server와 99.9% 동일하다.

마리아DB는 mysql이란 이름으로 등록되어있으니

/etc/init.d/mysql start

로 MariaDB를 시작한다. 하지만 systemctl로 시작할 경우

systemctl start mariadb

mariadb라고 원래 이름으로 적어줘야 한다.

mariadb 상태 확인은

systemctl status mariadb

로 하면 되고, 정지는

systemctl stop mariadb

로 하고, 재시작은

systemctl restart mariadb

로 하면 된다.

root 사용자가 아닌 경우 마리아DB를 시작한 후

sudo /usr/bin/mysql_secure_installation

를 해준다. 리눅스 민트의 일반 사용자 계정에서 시험해본 결과

mysql_secure_installation

이나

/usr/bin/mysql_secure_installation

를 입력하면 되지 않았다. 이제 아래와 같은 내용이 나온다.


Enter current password for root (enter for none): 엔터를 쳐준다.

Set root password? [Y/n]: Y

New password: DB root용 비밀번호로 쓸 것을 적어준다.

Re-enter new password: 위에 적은 비번을 다시 적어준다.

Remove anonymous users? [Y/n]: Y

Disallow root login remotely? [Y/n]: Y

Remove test database and access to it? [Y/n]: Y

Reload privilege tables now? [Y/n]: Y

그러면 설치가 끝난다.

이제

sudo mysql -u root -p

로 로그인하면 된다. 참고라 아까 sudo로 설치했더니 그냥 mysql -u root -p로 로그인하려고 하니 로그인이 되지 않았다. 그리고

show databases;

로 데이터베이스 목록을 볼 수 있으며

create database dbname;

으로 dbname이라는 DB를 생성할 수 있고

drop database dbname;

으로 dbname이라는 DB를 삭제할 수 있으며

exit

으로 DBMS를 종료할 수 있다.


MariaDB는 서비스 등록도 mysql이란 이름으로 되어 있고, 포트도 3306, 데몬이름도 mysqld이다.

부팅시 자동시작 설정은 기본으로 설정되어 있지만 만약 안 되어 있으면

systemctl enable mariadb

해준다.

MariaDB는 일단 설치되면 부팅시마다 자동 실행되며 이것을 꺼주고싶다면

systemctl disable mariadb

해주면 된다.


센트OS에서도 MySQL이 설치되어있으면 지운다. 그리고 vim /etc/yum.repos.d/MariaDB.repo 해서

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

내용 추가하고,

yum install MariaDB-server

로 MariaDB-server를 설치한다.


/etc/init.d/mysql start

로 MariaDB를 시작하고

mysql_secure_installation

로 보안 설정하면 된다. 그 다음부터는 우분투와 동일하다.


만약 DB root 비밀번호 입력 과정에서 엔터를 쳤는데 안 넘어가면 다음과 같이 한다.

grep 'temporary password' /var/log/mysqld.log

를 해서

2016-12-01T00:22:31.416107Z 1 [Note] A temporary password is generated for root@localhost: mqRfBU_3Xk>r

와 같이 나오면 맨 끝의 12자리를 비밀번호 입력 자리에 넣으면 된다.

PHP 설치

우분투에서는

php -v

PHP 버전 확인. 안 깔려 있으면

apt install php

을 입력하여 php 설치. 중간에 이 패키지는 얼마의 크기이며, 설치시 얼마의 추가 공간이 필요하다고 뜨고

Do you want to continue? [Y/n] 

라고 계속 설치할 거냐고 물어보면 y를 눌러 계속 진행.


센트OS에서 PHP 7을 설치할 경우, 첫번째로 센트OS 버전에 맞는 Webtatic EL yum 저장소(repository) 정보를 yum에 더해야 한다.

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm


그리고

yum install php71w

해서 PHP 7.1을 설치한다.

PHP용 MySQL 모듈

우분투에서는 PHP와 MySQL을 연동해야 하므로

apt install php-mysql

해서 php-mysql 모듈을 설치해야 한다. php-mysql은 "PHP용 MySQL 모듈"(MySQL module for PHP)이라는 의미이다. 중간에 계속 설치할 거냐고 물어보면 y를 누른다.


센트OS에서도 PHP와 MySQL을 연동시켜야 한다.

yum install php71w-mysql

해서 PHP 7.1과 MySQL의 연동 모듈을 설치한다.

Apache용 PHP 모듈

우분투에서 PHP와 아파치 2를 연동하려면

apt install php libapache2-mod-php

를 설치해야 한다. libapache2-mod-php의 설명을 보면 "아파치 2 모듈: 써버 싸이트 HTML 내장 스크맆팅 언어"(Apache 2 module: server-side, HTML-embedded scripting language)라고 되어있다. 이걸 설치 안 하면 웹 브라우저로 웹 싸이트에 접속했을 때 php 파일이 써버쪽 스크맆트 언어로 실행되는 게 아니라 그냥 텍스트 파일처럼 뜬다.

그 후 터미널에서

service apache2 restart

를 입력하여 아파치 2를 재시작시키면 된다.

참고로 말하자면

service apache2 start

는 아파치2 시작 명령,

service apache2 stop

은 아파치2 정지 명령이다.


센트OS에서는

yum install mod_php

를 설치해주면 되는데 아까

yum install php71w

해서 PHP 7.1 설치할 때 같이 설치되어 패키지 mod_php71w-7.1.10-1.w7.x86_64가 이미 설치되어있고, 그게 가장 최근 버전이라는 메시지가 뜨면서 아무 것도 하지 않는다. 이런 메시지가 뜨면 추가로 무언가를 할 필요는 없다.


mod_php는 "아파치 모듈로서의 PHP"를 의미한다.

Using PHP as an Apache module (called mod_php) : the PHP interpreter is then kind of "embedded" inside the Apache process : there is no external PHP process -- which means that Apache and PHP can communicate better.


그 후

service httpd restart

를 해서 아파치 2를 재시작시킨다.

아파치 설정

아파치 기본 설정 및 사용 방법은 아파치 문서 참조.

접속 IP 주소와 포트 설정

Listen: 우분투

ssh로 VPS에 접속된 상태에서

cd /etc/apache2/

해서 이동 후

vim ports.conf

를 해서

#Listen 12.34.56.78:80
Listen 80

이나

Listen 80

이라고 되어 있는 부분을 찾는다. 이건 80번 포트를 열어놓으라는 의미이다. 그리고 그것을

Listen 127.0.0.1:892
Listen 127.0.0.1:1004
#Listen 80

으로 바꾼다. #은 주석 처리, 즉 웹 써버 소프트웨어인 아파치에서는 무시하고 사용자만 볼 수 있게 가려놓는다는 의미이다. 주석 처리하면 해당 부분을 지운 것과 동일한 작동을 한다. 이렇게 하면 자신의 VPS의 IP 주소인 123.123.123.123의 80번 포트(port)로 들어오는 연결이 막힌다. 이게 무슨 의미냐 하면 크롬이나 인터넷 익스플로러에 123.123.123.123 주소를 쳐도 자신의 다크 웹 싸이트에 접속할 수 없다는 의미이다. 대신 토어(Tor)의 127.0.1.1 IP 주소의 892번 포트와 1004번 포트로만 접속을 허용하라는 의미이다.

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

처럼 892나 1004 외에 다른 열린 포트(Listen)가 있으면

#<IfModule ssl_module>
#        Listen 443
#</IfModule>

#<IfModule mod_gnutls.c>
#        Listen 443
#</IfModule>

와 같이 모두 주석처리하여 닫아준다.

:wq

해서 저장한다.

service apache2 restart

해서 아파치 2를 재시작하면 원래 표면 웹IP 주소다크 웹의 onion 주소로 모두 접속되던 웹 싸이트가 IP 주소로 접속을 시도하면

사이트에 연결할 수 없음
123.123.123.123에서 연결을 거부했습니다.
다음을 시도:
연결 확인
프록시 및 방화벽 확인
ERR_CONNECTION_REFUSED

라고 뜨는 것을 볼 수 있다. 물론 onion 주소로는 정상적으로 접속된다.

Listen: 센트OS

아래의 방법은 데비안 스타일로 센트OS에서 아파치를 설정한 것이다. 원래 CentOS에서는 접속 허용 IP 주소포트 설정, 가상 호스트 설정을 httpd.conf 파일에 직접 적고, 별도로 sites-available 폴더나 sites-enabled 폴더를 만들지 않는다. 따라서 전통적인 센트OS 방식으로 httpd.conf 파일에 모든 설정을 다 적을 생각이라면 httpd.conf 파일에 sites-enabled 디렉터리의 conf 파일을 불러오라는 내용인 IncludeOptional sites-enabled/*.conf 를 추가할 필요가 없다.


터미널에서

mkdir /var/www/html1
mkdir /var/www/html2

를 해서 디렉터리를 만든다. html1은 웹 싸이트 1이 들어갈 곳, html2는 웹 싸이트 2가 들어갈 곳이다.

vim /etc/httpd/conf/httpd.conf

해서

#Listen 12.34.56.78:80
Listen 80

위 내용을 찾아

Listen 127.0.0.1:892
Listen 127.0.0.1:1004
#Listen 80

로 바꾼다. 892와 1004 외에 열린 포트(Listen)가 있으면 모두 #을 쳐서 주석 처리하여 닫아준다.


그리고 맨 아래에

IncludeOptional sites-enabled/*.conf

를 추가한다.

가상 호스트

가상 호스트: 우분투

cd /etc/apache2/sites-available/

해서 sites-available 디렉터리로 이동한다. 그리고

cp 000-default.conf html1.conf
cp 000-default.conf html2.conf

하여 000-default.conf을 html1.conf와 html2.conf라는 이름으로 복사한다. 그리고

vim html1.conf

를 입력하여 html1.conf 파일을 수정한다.

<VirtualHost *:80>
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

라는 내용이 보일 것이다. 키보드 방향 키로 커서를 움직인 후 i나 a 키를 눌러 입력 모드로 전환한다. 그리고 위의 내용을 아래 내용으로 바꿔준다.

<VirtualHost 127.0.0.1:892>
        ServerName rapeyourdaughter.onion
        ServerAlias www.rapeyourdaughter.onion

        #ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html1

        ErrorLog ${APACHE_LOG_DIR}/error1.log
        CustomLog ${APACHE_LOG_DIR}/access1.log vhost_combined
</VirtualHost>

rapeyourdaughter.onion은 자신의 onion 주소로 적어주면 된다. 그리고 Esc 키를 눌러 명령 모드로 나온 후

:wq

를 입력하여 변경 내용을 쓰기(w, write)하고, 종료(q, quit)한다. 그 후

vim html2.conf

해서

<VirtualHost 127.0.0.1:1004>
        ServerName fuckyourtwowives.onion
        ServerAlias www.fuckyourtwowives.onion

        #ServerAdmin webmaster@localhost 
        DocumentRoot /var/www/html2

        ErrorLog ${APACHE_LOG_DIR}/error2.log
        CustomLog ${APACHE_LOG_DIR}/access2.log vhost_combined
</VirtualHost>

와 같이 html2.conf 파일을 바꿔준다. fuckyourtwowives.onion은 자신의 onion 주소로 적어주면 된다. 그리고

ln -s /etc/apache2/sites-available/html1.conf /etc/apache2/sites-enabled/html1.conf
ln -s /etc/apache2/sites-available/html2.conf /etc/apache2/sites-enabled/html2.conf

해서 sites-enabled 디렉터리에 html1.conf와 html2.conf 설정 파일에 대한 심볼릭 링크를 만들어준다. 심볼릭 링크를 만들어줄 때는 절대 경로로 만들어줘야지

cd /etc/apache2/sites-available
ln -s html1.conf ../sites-enabled/html1.conf

와 같이 상대 경로로 만들어주면 문제가 생기는 것 같다.

그 후

cd ../sites-enabled
rm 000-default.conf 

해서 000-default.conf 파일에 대한 심볼릭 링크도 지워버린다.


그 후 터미널에서

service apache2 restart

하여 아파치2를 재시작한다.

그리고 자신의 onion 주소로 접속해본다. 만약 안 되면

/etc/init.d/tor restart

토어를 재시작한다. 소스 코드로 설치했을 경우 kill 명령어로 tor 프로세스를 죽인 후, 엔터를 쳐준다. 그리고

~/tor

로 자신의 홈 디렉터리인 /root에 있는 tor 셸 스크맆트를 실행한다. Bootstrapped 100%: Done이라고 뜨면 엔터를 쳐준다.

가상 호스트: 센트OS

아래처럼 sites-available 폴더와 sites-enabled 폴더를 만드는 방식은 우분투리눅스 민트데비안 계열의 방식이고, 센트OS에서는 모든 설정을 httpd.conf에 때려박는다. 즉, 아래에 나와있는 것처럼 할 필요는 없고, <VirtualHost>와 </VirtualHost> 사이의 내용을 httpd.conf 파일에 적어주기만 해도 된다.


터미널에서

cd /etc/httpd/
mkdir sites-available
mkdir sites-enabled

해서 디렉터리 만들고

cd sites-available
vim html1.conf

해서

<VirtualHost 127.0.0.1:892>
    ServerName rapeyourdaughter.onion
    ServerAlias www.rapeyourdaughter.onion

    DocumentRoot /var/www/html1

    ErrorLog /var/log/httpd/error1_log
    CustomLog /var/log/httpd/access1_log vhost_combined
</VirtualHost>

라는 내용의 새 문서를 만든다. rapeyourdaughter.onion은 자신의 onion 주소로 적어주면 된다. 그리고

cp html1.conf html2.conf

해서 html1.conf 파일을 html2.conf라는 이름으로 복사하고

vim /etc/httpd/sites-available/html2.conf

해서 html2.conf의 내용을

<VirtualHost 127.0.0.1:1004>
    ServerName fuckyourtwowives.onion
    ServerAlias www.fuckyourtwowives.onion

    DocumentRoot /var/www/html2

    ErrorLog /var/log/httpd/error2_log
    CustomLog /var/log/httpd/access2_log vhost_combined
</VirtualHost>

와 같이 수정한다. fuckyourtwowives.onion은 자신의 onion 주소로 적어주면 된다.

위에서 만든 파일의 심볼릭 링크(symbolic link)를

ln -s /etc/httpd/sites-available/html1.conf /etc/httpd/sites-enabled/html1.conf
ln -s /etc/httpd/sites-available/html2.conf /etc/httpd/sites-enabled/html2.conf

를 해서 sites-enabled 디렉터리에 만든다.

apachectl restart

해서 아파치를 재시작한다.

접속 테스트

이제 정상적으로 접속이 되나 테스트해본다.

vim /var/www/html1/index.html

해서

<html>
    <head>
        <title>You are pretty...</title>
    </head>
    <body>
        <h1>I wanna fuck you!</h1>
    </body>
</html>

와 비슷한 형식으로 새 HTML 문서를 만든다. vim에서는 한글이 정상적으로 입력되지 않으니 그냥 영어로 쓰자. 이제 웹 싸이트에 접속했을 때 이 문서가 뜨나 확인해본다. 뜨면 모든 설정이 정상적으로 된 것이다. title에 있는 내용은 웹 브라우저 주소창 위의 맨 꼭대기 부분에 싸이트의 이름처럼 뜨는 내용이고, body는 웹 페이지에 보여지는 내용이다.


만약 이 index.html 파일을 지우려면 터미널에서

cd /var/www/html1/

을 입력하여 이동한다.

ls

를 입력하면

index.html

이 있는 게 보일 것이다.

rm index.html 

을 입력하여 삭제한다. 만약 하위 폴더가 있는 디렉터리를 지우려고 하면 그냥 rm 명령으로는 안 지워지고 rm -rf directory_name과 같이 해야 지워진다. directory_name 자리에는 해당 디렉터리의 이름을 적어주면 된다.

VPS에 웹 써버 설치 추가 내용

VPS 리부팅

메모리가 모자라든가, 뭔가 문제가 있어서 VPS를 리부팅(rebooting)할 경우 터미널에서

init 6
reboot
shutdown -r now

셋 중 뭐를 입력해도 그냥 VPS와의 연결만 끊어지지, 리부트(reboot)되지는 않을 것이다. 가상 서버라 재부팅 등 하드웨어와 관련된 명령어는 안 먹는 것 같다. 따라서 VPS 업체 웹 싸이트에서 제공하는 VPS 관리 메뉴를 이용하여 써버를 리부팅 하면 된다.

위의 리부팅 명령어 중 뭐를 써도 씨큐어 셸(ssh) 접속 종료 명령어인 exit과 동일한 동작을 한다.

swap 파일 생성

메모리가 모자랄 경우 swap 파티션이나 스왑 파일을 사용하는 경우가 많다.

dd if=/dev/zero of=/swapfile bs=1M count=2048

/에 swapfile이라는 이름의 2GB짜리 스왑 파일 생성. 즉, /swapfile을 생성하는 명령어이다. swapfile은 다른 이름을 사용해도 된다. bs는 입출력 단위인 블록 사이즈이다. 단위는 바이트(byte)이고, MB의 경우 M만 적어주면 된다. count는 입출력 단위의 몇 배 크기의 스왑 파일을 만들 것인지를 정하는 것이다.

mkswap /swapfile

swap 파일로 포맷(format)

swapon /swapfile

생성한 스왑 파일을 Swap 공간으로 활성화 하기

swapon: /swapfile: swapon failed: Operation not permitted

하지만 VPS라 swapon을 금지한다는 위와 같은 메시지가 뜨면서 안 될 수 있다. 아무래도 더 메모리가 많지만 더 비싼 상위 VPS 모델을 결제하게 하기 위해 swapon 명령어를 막아놓은 것 같다.

swapon이 안 먹으니 좀 전에 만든 스왑 파일은 필요없어졌으니 지워버리자.

rm /swapfile

스왑 파일 삭제하기


tor나 swapon이 리눅스를 부팅할 때마다 자동실행되게 하려면 /etc/rc.local 에 추가해놔야 한다. 구체적인 방법은 리눅스 문서를 참조하면 된다.

부팅시 Tor 자동 실행

우분투에서

apt install tor

해서 설치했을 경우 리부팅시 자동으로 tor가 다시 시작한다.


하지만 소스 코드로 설치했을 경우에는 매번

/root/tor-0.3.1.7/src/or/tor

로 실행해야 한다. 이게 귀찮으니 Tor가 자동 실행되는 방법을 생각해보자. 우선

vim /etc/rc.local

해서 rc.local 파일을 편집한다. 해당 파일이 없으면 자동으로 새 파일을 생성한다. 편집할 위치로 이동 후

i

a

를 입력하여 편집한다.

맨 위에

#!/bin/sh -e

맨 아래에

exit 0

가 있어야 한다. 없으면 적어준다. 이제 둘 사이에 실행할 명령을 적는다.

/root/tor/src/or/tor

다시 부팅해본다. 그리고

ps -A

로 실행 중인 프로세스(process) 목록을 본다. tor가 없다. 아마 VPS라 완전한 리부팅이 아니라 실행이 안 되는 걸 수도 있고, 명령어가 아니라 단순 파일이라 실행이 안 되는 걸 수도 있다. 로컬 컴퓨터에서 rc.local에

swapon /swapfile

를 추가하면 정상 작동한다. 또한 VPS에서도 셸 스크맆트

#!/bin/sh
/root/tor/src/or/tor

하면 일반 실행 파일이라도 정상적으로 실행되는 것을 확인할 수 있었다. 따라서 VPS라 제대로 작동하지 않는 것으로 보인다. #!/bin/sh 뒤에 -e가 붙고, 안 붙고의 차이는 모르겠다. exit 0는 끝낸다는 의미이다.

VPS에서 리부팅시마다 Tor를 자동 실행하는 방법은 /etc/rc.local 대신에 다른 방법을 사용해야 할 것 같다.


VPS에서는

init 6

등 로컬 리눅스 서버에서 먹던 리부팅 명령어가 듣지 않는다. 아마도 가상 써버라 그런 것 같다. 일단은 VPS 업체의 웹 싸이트에 접속하여 VPS 관리 메뉴에서 리부팅을 하면 된다. 터미널에서 리부팅이나 종료하는 명령어도 있을 수도 있다. 하지만 VPS 업체의 웹 싸이트의 VPS 관리 메뉴에 리부팅, 부팅, 종료 메뉴가 있는 거 보면 터미널에서는 안 될지도 모르겠다.

웹 싸이트 유지 보수

CMS 파일 교체 등 웹 싸이트를 수정하는 동안에는 악의적인 해커가 접근하지 못 하게, 잠깐 토어(Tor)를 꺼놓아 외부에서 접근하지 못 하게 한다. 자기 자신은 VPSIP 주소SSH로 접속하면 된다.


그리고 CMS 설치 등 자신도 웹 브라우저로 접속해야 하는 경우에는 VPS에서 어쩔 수 없이 토어를 켜야한다. 그럴 경우에는 일단 기존 자신의 싸이트의 hostname과 private_key 파일을 백업해놓는다. 예를 들어 hs1 폴더에 기존 키가 있었을 경우, Eschalot으로 새로운 hostname과 private_key를 생성한 후 자신의 hs1 경로에 따라

scp hostname private_key root@123.123.123.123:/var/lib/tor/hs1/

scp hostname private_key root@123.123.123.123:/usr/local/etc/tor/hs1

둘 중에 자신에게 맞는 것을 하여 기존 키를 새 키로 교체한다. 아마 apt로 설치했으면 위의 경로, 소스 코드로 설치했으면 아래 경로일 것이다. 그리고 VPS에서

/etc/init.d/tor restart

를 하여 토어를 재시작한다. 만약 소스 코드로 설치했으면

ps -A

로 tor 프로세스의 PID를 찾은 후

kill -15 PID

로 토어 프로세스를 죽인 후

/root/tor-0.3.1.7/src/or/tor &

로 토어를 재실행한다. Tor를 재실행하지 않으면 예전 onion 주소로 접속된다.


이제 토어 브라우저로 자신의 새 onion 주소로 접속해보면 접속이 될 것이다. 물론 바로 접속은 되지 않고 몇 분이 지나서 토어 네트워크에 자신의 새 주소가 적용이 되어야 접속이 가능하다. 이제 거기서 CMS 설치 등을 하고, 설치가 끝난 후 다시 hostname과 private_key를 원래 것으로 교체해놓으면 된다.

패비콘 만들기

웹 브라우저북마크, 즐겨찾기, 상단 에 뜨는 패비콘(Favicon)을 만드는 방법은 피에이치피BB(phpBB) 문서를 참조하기 바란다.

index.html 대신 다른 것 사용

웹 브라우저가 처음 접속기 읽는 문서를 index.html에서 다른 것으로 바꾸고 싶을 경우

센트OS에서는

vim /etc/httpd/conf/httpd.conf

를, 우분투에서는

vim /etc/apache2/apache2.conf

를 해준 후

DirectoryIndex  yourpussy.html yourbreasts.html youranus.html

와 같은 내용을 적어준다. 위 내용의 의미는 우선 yourpussy.html을 찾아보고 있으면 그걸 사용하고, 만약 없으면 yourbreasts.html을 사용하고, 만약 그것도 없으면 youranus.html을 사용한다는 의미이다.

MariaDB가 자꾸 죽을 경우

General Error

SQL ERROR [ mysqli ]

MySQL server has gone away [2006]

An sql error occurred while fetching this page. Please contact an administrator if this problem persists.



General Error SQL ERROR [ mysqli ]

No such file or directory [2002]

An sql error occurred while fetching this page. Please contact an administrator if this problem persists.



Warning: mysqli::query(): MySQL server has gone away in /var/www/html/system/library/db/mysqli.php on line 18Warning: mysqli::query(): Error reading result set's header in /var/www/html/system/library/db/mysqli.php on line 18



Warning: mysqli::__construct(): (HY000/2002): No such file or directory in /var/www/html/system/library/db/mysqli.php on line 7Warning: DB\MySQLi::__construct(): Couldn't fetch mysqli in /var/www/html/system/library/db/mysqli.php on line 10Warning: DB\MySQLi::__construct(): Couldn't fetch mysqli in /var/www/html/system/library/db/mysqli.php on line 10


와 같은 메시지가 뜨면서 메모리 부족으로 마리아DB가 자꾸 죽어 웹 싸이트 작동이 정상적으로 안 될 경우 제일 간단한 방법은 가상 사설 써버(VPS)를 리부트(reboot)하는 것이다. 실제 리눅스 써버는 부팅하는데 몇 십 초는 걸리지만, VPS는 1초도 안 걸리기 때문이다. 하지만 24시간 항상 켜져있어야 하는 써버를 리부트하는 건 좋은 습관이 아니니, 리부팅없이 운영하는 방법을 알아보자.


우선 버퍼(buffer)와 캐시(cache)를 비워준다. 하는 방법은 리눅스 문서를 참고한다. 그 후 죽은 MariaDB

/etc/init.d/mysql start

systemctl start mariadb

로 시작시킨다. 만약 제대로 정지가 되지 않은 상황이면 우선

/etc/init.d/mysql stop

으로 정지부터 시킨 후 시작시킨다.

VPS 목록

VPS 목록은 가상 사설 써버 목록 문서 참조.

함께 보기

바깥 고리