우분투 리눅스 서버에 FTP 서버를 설치하자. + 가상 계정 설정.

FTP 서버는 종류가 다양하게 있지만 이번에 설치할 녀석은 vsftpd(https://security.appspot.com/vsftpd.html) 라는 녀석이다.

$ sudo apt-get install vsftpd

역시나 설치는 간단하다. 내가 이래서 우분투를 사랑한다.

설치를 하면서 서비스도 같이 실행 시켜 버리기 때문에 바로 이용할 수 있다.

하지만 최근 특별한 이유가 없다면 FTP 서버를 설치하지 않는 이유는 보안 문제 때문이다.
FTP를 이용한 공격 방법도 많이 알려져 있기 때문에 FTP 서비스를 실행만 하고 있어도 여기 저기에서 접근 시도가 많이 이루어 진다.
서비스를 실행한 상태에서 로그를 살펴 보면 확인 가능하다.

$ sudo tail -f /var/log/auth.log

SFTP로도 충분한 사람에겐 FTP는 사실 설치할 필요 없는 이유.

그럼에도 FTP 서버를 설치하였다면 좀 더 보안을 강화하여 가상 계정을 설정하는 방법이 있다.

서비스를 종료하고 설정 파일을 편집하자.

$ sudo service vsftpd stop
$ sudo vim /etc/vsftpd.conf

설정 파일 최하단에 아래 가상 계정 설정을 덧붙여 준다.

guest_enable=YES
virtual_use_local_privs=YES
write_enable=YES
pam_service_name=vsftpd.virtual
user_sub_token=$USER
local_root=/home/ftp/$USER
chroot_local_user=YES
hide_ids=YES
allow_writeable_chroot=YES

vsftpd 설정은 끝났으니 가상 계정을 생성할 준비를 하겠다.

우선 설치하고.

$ sudo apt-get install db-util

가상 계정 정보와 vsftpd를 연결 시켜줄 설정 파일을 생성, 편집.

$ sudo vi /etc/pam.d/vsftpd.virtual

아래 두 줄을 넣어 주면 된다.

auth required pam_userdb.so db=/etc/vsftpd/virtual-users
account required pam_userdb.so db=/etc/vsftpd/virtual-users

이제 준비는 다 된 것 같다.
가상 계정을 생성해 보자.

가상 계정 정보들은 일반 텍스트 파일로 생성해서 vsftpd에서 사용할 db 파일로 변환을 해주어야 하는데 누출되지 않고 잃어 버리지 않게 잘 관리해주어야 할 필요가 있다.

작성 방식은 아이디와 패스워드를 줄 바꿈으로 적어 주면 된다.

<아이디1>
<비밀번호1>
<아이디2>
<비밀번호2>

이런 식.

$ vi virtual-users.txt

생성 후 db 파일로 변환.

$ sudo db_load -T -t hash -f virtual-users.txt /etc/vsftpd/virtual-users.db

마지막으로 정말 마지막으로 virtual-users.txt에 추가한 가상 계정이 사용할 폴더를 생성하고 권한을 주면 끝.

$ sudo mkdir /home/ftp/[아이디1]
$ sudo chown ftp:ftp /home/ftp/[아이디1]

서비스 실행하고.

$ sudo service vsftpd start

FTP Client로 접속해서 테스트.

Advertisements

남아도는 우분투 리눅스 서버가 있어서 토렌트를 설치했다.

토렌트를 거의 쓰지 않지만 아주 가끔 이용하는 경우가 있다.
그런데 보통 내가 토렌트를 이용하는 경우엔 매우 희귀한 자료라서 시드가 없거나 1인 경우가 많다.
며칠을 컴퓨터 켜 놓는 거 싫어하기 때문에 그냥 포기하는 경우도 있는데, 그래서 찾은 방법.

‘남아도는 우분투 리눅스 서버에 토렌트를 설치하자.’

개인적으로 필요해서 준비하던 서비스가 있어 도메인, 서버 등 모두 준비가 되었는데 텔레그램 봇 기능이 너무 막강해서 별도로 서비스를 구축할 필요가 없어졌다.

결국 서버와 도메인은 놀게 되었고, https://ip.devg.net (IP, Request Header 등 확인 용도) 이거 하나 돌리니 매달 내는 서버 비용만 아까워 죽을판이었는데 드디어 쓸모가 있게 생겼다.

설치는 간단하게.

$ sudo apt-get install transmission-daemon

끝.

아… 실행은.

$ sudo service transmission-daemon start

끝.

하지만 여기서 끝이면 리눅스가 아니지! 내 입맛에 맞게 쓰기 위해서 설정이 필요하다.
서비스가 돌아 가는 중에는 설정파일을 수정할 수 없으므로 우선 서비스 부터 종료 한다.

$ sudo service transmission-daemon stop

그리고 설정 파일 편집.

$ sudo vim /etc/transmission-daemon/settings.json

총 71여라인으로 상당히 많은 항목들이 있는데 간단히 알아두어야 항목들만 나열하자면.

  • “rpc-username”: “<로그인아이디>”
  • rpc-password”: “<로그인패스워드>” // 설정 파일을 저장하고 서비스를 실행하면 패스워드를 암호화 시켜 버리므로 설정 파일을 열어 패스워드가 노출되는 일은 걱정 하지 않아도 된다.
  • “rpc-whitelist-enabled”: false // 특정 아이피에서만 연결되도록 하는 기능이다 보안을 위해 필요하지만 편의상 끄도록 하겠다. 켜기 위해선 당연히 false를 true로 수정.
  • “ratio-limit-enabled”: true // 다운로드 대비 업로드 비율을 조절할 수 있다.
  • “ratio-limit”: 0.5 // 1은 토렌트로 다운받는 파일이 100MB 라면 100MB 를 업로드 한 후 Seeding이 멈춘다. 0.5는 50% 기본값은 2로 되어 있는데 기본값을 유지하는 선함을 추천한다.
  • download-queue-size: 2 // 동시에 다운로드하는 수를 제한 할 수 있다.
  • preallocation”: 1 // 다운로드 파일을 미리 생성하는 방식을 정한다. 1은 파일 용량만큼 미리 파일을 만들어 두고 다운로드 하면서 채우는 방식. 0은 다운로드 받으면서 파일 용량을 늘린다.
  • “download-dir”: “<다운로드경로>” // 가장 중요한 다운로드 경로. 기본값은 /var/lib/transmission-daemon/downloads

여러 이유로 download-dir을 변경할 수 있는데 변경 전 미리 폴더를 만들어서 권한을 주어야 한다.

$ cd /home/<계정명> #폴더를 만들 경로로 이동한다.
$ mkdir downloads #폴더를 생성한다.
$ sudo chgrp transmission-daemon downloads #서비스가 제어 가능하도록 권한 부여.

이제 서비스를 시작하고 웹으로 접속하여 토렌트를 이용하여 보자.

$ sudo service transmission-daemon start

http://리눅스서버의호스트네임:9091/

접속하면 http 인증을 요구하는데 rpc-username/rpc-password 설정한 정보를 넣어 준다. 9091은 기본 포트로서 settings.json에서 변경할 수 있다.

rpc.png

안드로이드는 앱으로 더욱 편하게 관리할 수 있다. (심지어 다운로드가 완료 되면 푸쉬로 알려 준다.)

‘Play 스토어’에서 ‘Transmission Remote’로 검색하면 여러 앱들이 나오는데 아래의 앱을 추천한다.

아쉽게도 iOS에서는 Remote 앱 조차 약관을 들어 앱스토어에 허용하지 않고 있다. 탈옥을 하지 않으면 Torrent 관련 앱은 쓸 수가 없다.
웹에서도 이미지 외 파일 업로드를 지원하지 않는 관계로 iOS에서는 마그넷 주소를 집어 넣는 방법 밖에 없다.

토렌트로 다 받은 파일을 안드로이드 폰으로 다운로드 받기 위해서 FTP나 SFTP를 이용할텐데 웬만한 유명 탐색기는 다 지원하지만 별도로 설치를 하지 않았다면 ‘디자인’이 제일 예쁜 아래 앱을 추천.


iOS에서는 아래의 앱을 추천. Lite라는 이름의 무료 버전도 있다. 

보통 토렌트를 이용하는 사람들은 동영상 불법 다운로드를 이용하기 위해서 일텐데, 서버에서 동영상은 다운받으려면 또 시간이 오래 걸려 불편하다. 그래서 FTP를 이용해서 스트리밍을 하는 방법을 추천한다.
‘ES 파일 탐색기’가 이 부분에선 가장 적절하다.

Linux 서버에 FTP 서버가 설치 되어 있지 않은 경우엔 SFTP를 이용하면 되는데 iOS에서는 nPlayer 라는 막강한 앱이 있지만 안드로이드폰에서는 SFTP를 이용한 스트리밍을 제대로 지원해주는 앱이 없다.

SFTP는 보안 때문에 속도도 느리고 안드로이드폰에서 스트리밍을 제대로 즐기기 위해서는 FTP 서버를 설치하는 게 좋기 때문에 다른 포스팅을 통해서 FTP 서버 설치와 설정을 적어 보겠다.