Secret Poten

CentOS FTP서버 구축하기 (1) 본문

리눅스/CentOS

CentOS FTP서버 구축하기 (1)

potentail 2016. 10. 9. 15:15

짜잔~~ 오늘은 드디어 리눅스중에서 많이 쓰는 서버중 하나인

FTP서버에 대해 나가볼려고 합니다~!!


많은분들이 ftp를 찾으시는 이유중 하나가 외부접속을 통해서 접속하는건데요

이건 제가 설명을 못드리겠습니다 ㅠㅜ (제가 원룸촌? 같은데 살고있어서 인터넷이 안좋아서...)


대신에!! 어떻게 하는지는 설명드릴수가 있습니다!


그러면 바로바로 시작해보도록 하죠!


FTP (File Transfer Protocol)

FTP는 약자그대로 파일을 전송하기 위한 규약 같은것입니다.

파일을 전송하는데 있어서 용량제한이 없으며 구축해두면 어디서나 접속하여

파일을 업로드 & 다운로드할수있는것이 장점이죠.


회사다니는 분들이 많이들 구축하실텐데요

FTP를 업그레이드 시킨것이 NAS라고 생각하시면 되겠습니다.


대신에 NAS는 가격이 엄청나게 많이 나가기때문에 집에 있는 컴퓨터로

자작NAS를 구축하기도하죠 (NAS기능중 FTP포함)


CentOS에서 FTP를 설치해보자

가장먼저 서버구축순서는 항상 말하지만

1. 패키지설치

2. 서버 설정

3. 방화벽 & selinux해제

4. 데몬재시작

5. 접속확인

입니다.


그러면 바로 설치해보도록 하죠

"yum install vsftp"


yum으로 설치를 진행하시면 됩니다.

(yum이 안된다면 DNS네임이나 인터넷이 제대로 되는지 확인합니다!)

DNS네임 설정이 귀찮아서 CD안에 있는 패키지로 vsftpd를 설치하였습니다.


vsftpd는 무엇인가?

위에서 설명했던 ftp와는 사뭇 다른이름입니다.

이외에도 리눅스에서 한가지 더있었던거같은데 그건 요즘에 사용을 하지 않는다고합니다

(써본적이 없으므로 기억이 잘 안나네요)


vsftpd는 very secure ftpd 의 약자로 속도및 안정성이 전보다 뛰어난게 장점입니다.


설정파일 수정하기

패키지 설치를 끝냈습니다.

그러면 다음으로 해야할것은 서버설정이죠.


"vi /etc/vsftpd/vsftpd.conf"


들어오자마자 멘붕에 빠지실수도 있습니다 (하하...)

하지만 설정할것은 많이 없기때문에 금방 하실수 있습니다.


먼저 보기 편하게 :set nu로 줄번호를 표시하도록 하겠습니다.


줄번호도 표시됬으니 차근차근 진행해보겠습니다.


가장먼저 줄번호별로 ftp서버 설정을 보여드리도록 하겠습니다.


줄번호 

설명 

12 

익명계정 접속허용 

15 

로컬계정 접속허용 

18 

쓰기 허용 

22 

기본 UMASK 

27 

익명계정 업로드 허용 

31 

익명계정 디렉토리 생성 허용 

35 

디렉터리 접근시 메세지 출력 

39

로그 기록 여부 

42

데이터 전송포트 지정 

47

업로드시 소유권자 변경 활성화 

48

업로드시 소유권자 지정 

52

로그파일 지정 

56

로그파일 표준양식 여부 

59

접속후 스테이 시간(해당 시간이 지나면 연결종료) 

62

데이터 전송후 스테이시간(해당 시간종료시 연결종료) 

85

접속시 출력될 배너내용 

96

접속 디렉터리를 최상위로 보이도록 설정(상위 디렉터리 접근 제한을 둠으로 보안성을 높임) 

97

디렉터리 제한 예외 계정활성화 

99

디렉터리 제한 예외 계정 리스트 지정 

105

Is -R 활성화 

110

standalone활성화 

118

유저리스트 활성화 

119

TCP wrapper 활성화 (/etc/hosts.allow | /etc/hosts.deny) 


위가 기본적으로 ftp설정에 등록된것이구요

그외에도 몇몇개 더있긴하지만 (ex>익명계정으로 접속시 위치설정) 잘 안쓰는것이고하니

그냥 위에 있는걸로 한번 진행해보도록 하겠습니다.


※저많은 설정들을 하나씩 확인해서 포스팅하는것은 불가능하니 직접 테스트하면서 모르시는것을 질문해주시면 됩니다.

아마도 클라이언트측에서 접속이 잘되면 금방 하실수있는것들이라 생각되네요


User1,User2 계정을 만들어보자!

먼저 vi를 종료해주시거나 혹은 터미널을 한개 더 열어서 계정2개를 생성해줍시다.

계정이름과 비밀번호는 아무거나 하셔도됩니다 (ftp접속시 확인할 계정)


서버 설정파일을 수정하자!

가장먼저 서버설정은 아래와 같이 하도록 하겠습니다.


1. 익명 계정 접속 비허용

2. 접속시 출력될 배너내용

3. 접속 디렉터리를 최상위로 보이도록

4. 디렉터리 제한 예외계정 활성화및 리스트지정


4가지를 해보도록 하겠습니다.


순서대로 하도록 하겠습니다.



1. 익명 계정 접속 비허용


"anonymous_enable=NO"로 설정하여 주시면됩니다.


2. 접속시 출력될 배너내용

#으로 막혀있는 주석을 풀어주시고 원하는 내용을 입력해주시면 됩니다.

ftpd_banner=(내용)


3. 접속 디렉터리를 최상위로 보이도록 설정


chroot_local_user앞에 붙어있는 주석(#)만 지워주시면 됩니다.


4. 디렉터리 제한 예외계정 활성화및 리스트지정

96번줄과 99번줄 주석을 풀어주시면 됩니다.


설정은 모두끝났으나 예외계정 리스트를 작성하러 가야하므로

:wq로 저장하고 설정하러 가줍시다.


예외 계정 리스트 작성하기

"vi /etc/vsftpd/chroot_list"


ftp서버도 오랜만이라 약간 기억안나는게 많이있네요 ㅠㅜ


먼저 chroot_list는 없는파일같으므로 생성을 해줍시다!!


그리고 예외계정을 작성하는것이죠!


저는 root계정과 user1계정만 예외로 주도록 하겠습니다.


모두 작성하였으면 저장하고 나와줍시다.


방화벽및 selinux해제

2016/09/04 - [리눅스/CentOS] - CentOS selinux 설정하기

Selinux는 위 포스팅을 보시고 해제 해주시면 됩니다.


방화벽을 해제해봅시다.


"system-config-firewall"


방화벽 설정창이 뜹니다.


신뢰하는 서비스에 보시면 바로 FTP가 있습니다

체크해주시고 적용! 눌러주시면 됩니다.



데몬재시작하기

설정파일을 수정하였으면 당연히 다시 불러들여야 적용이됩니다.

간혹 프로그램 설치하다가도 재부팅을 하는 이유가 그거입니다.


"service vsftpd restart"

※처음에 왜 실패가 뜨나요...?

A. 그전까지는 설치만 하였을뿐 시작은 하지않아서 종료중은 실패가 뜨게됩니다.


모두 설정하셨으면 netstat으로 ftp서버가 리슨상태인지 확인해봅시다.


"netstat -lntup | grep ftp"

「|기호는 \를 쉬프트 누른채로 누르시면 됩니다」


LISTEN상태로 제대로 ftp가 동작중인것을 확인할수 있습니다.


클라이언트에서 ftp에 접속을 해보자!

저는 CentOS를 한개더 설치한후 Client라는 이름으로 서버의 접속을 확인하고 있습니다.

이제부터 보여질 CentOS터미널창은 Client측 PC라는것을 감안해주시고 봐주시면 됩니다.


클라이언트측도 ftp서버가 설치되어있어야 하므로 ftp를 yum으로 설치해줍시다


"yum -y install ftp"

※전 위에서 말씀드렸다 싶이 인터넷이 좋지못해 yum이 오류가 뜨므로 따로 rpm으로 패키지를 설치하였습니다.


FTP 에 접속을 위해서는 

ftp [서버ip]@[계정명] 혹은 ftp [서버ip] 입니다.


일단은 ftp [서버ip]형식으로 들어가보도록 하죠.


"ftp 192.168.100.1"


ftp서버에는 제대로 접속을 할수있나봅니다.

게다가 접속시 뜨는 배너내용도 제대로 출력이됩니다

(Hi Welcome SecretPoten FTP Server :D)


root계정으로 접속을 해보도록 하겠습니다.

※실패가 떠요....

A. root계정은 최고권한인만큼 보안을 중요시 하기때문에

기본 디폴트설정은 root계정으로는 접속이 불가능하기때문에 막혀있습니다


Q. 그러면 어떻게 root계정으로 접속을 하나요?

A. /etc/vsftpd/user_list 에서 root를 지워주시면 됩니다.


위 결과를 확인하기위해서 계정을 2개만든것입니다.


일단은 quit를 통해서 ftp접속을 끊어준후 다시 접속해봅시다.

이번에는 user1으로 접속을 해봅시다.


접속이 잘되는것을 확인할수 있습니다.


여기서 현재 접속중인 디렉터리를 확인해봅시다.


"pwd"


/home/user1로 정상적으로 나옵니다.

디렉터리 이동도 되는지 cd 명령어를 통해 해봅시다.


"cd /home"


디렉터리 변경이 잘되네요~!


그이외에 파일업로드&다운로드는 2번째에서 설명하도록하고

지금은 접속만 확인하도록 하겠습니다.


quit명령어를 통해 종료하신후 user2로 접속해봅시다.



그러면 현재 디렉터리 확인을 위해서 pwd를 한번더 해보도록 하겠습니다.


???!!!


현재 접속중인 디렉터리 위치가 /home/user2가 아니라

최상위인 /로 되있습니다.


cd명령어는 먹을까요?


"cd /home"

물론 디렉터리 변경도 먹지를 않습니다.


이로써 ftp서버는 모두 구축이 끝났습니다.


put & get을 통해서 파일 업로드 및 다운로드는 다음 2번째 강좌에서 하도록하구요

여기서 외부접속은 어떻게 해요...?

라는 질문이 있습니다.


제 인터넷 환경때문에 직접 보여드리는것은 불가능하지만


1. FTP서버를 구축한다.

2. 사용중인 공유기에 포트포워딩설정에가서 FTP 21번포트를 열어둔다

(현재 접속된 IP주소 체크 or 구축했던 서버IP주소 입력)


그리고 적용을 누르시면 됩니다.


3.특수기능->DDNS에가서 DNS를 하나 등록한다

ex> ABC.iptime.org


외부에서 ABC.iptime.org로 접속시 공유기가 접속 잘되는지 확인한다.


4.외부에서 ftp://ABC.iptime.org:포트번호로 접속하면 접속이 잘되는지 확인한다.


(포트번호는 공유기에서 정해준것을 붙여줍시다. 간혹 ISP업체에서 21번 포트를 막아둔 경우가 있다고하니 2121같은 비정규 포트 등록후 외부포트 2121 내부포트 21번으로 사용하시는것도 좋을거 같습니다.)


외부접속은 제가 직접해본적이 없어서 설명은 자세하게 불가능합니다...

(일단은 제가 알고있는 지식은 이게 끝이라서요...)


나중에 인터넷을 바꾸던 뭘하던간에 해서 다시 외부접속에대한것을

포스팅 해보도록 하겠습니다.


-HardWare SetUp-

CPU : Intel i7-6700k

RAM : Samsung DDR4 8GB X 4 (32GB)

HDD : Seagate 1TB X 3 (3TB HDD)

SSD : Samsung SSD 128GB

VGA : Asus GTX1080 8GB

MB : Asus Z170-A STCOM

Case : Thermaltake Core X9

PSU : Micronics Performance II HV 850W Bronze

Other : PSIONIC Custom Water Cooler (CPU set), LED Cooler (EA 12)


그외 궁금한점은

공지사항을 잘보시고 오픈채팅으로 물어봐주시면 감사하겠습니다

공지사항 바로가기







'리눅스 > CentOS' 카테고리의 다른 글

CentOS LVM구축하기!  (0) 2016.10.31
CentOS FTP서버 구축하기 (2)  (0) 2016.10.26
CentOS VNC서버 설치&사용법  (0) 2016.10.08
CentOS xinet과 standalone  (0) 2016.10.06
CentOS 본딩 설정하기(bonding)  (2) 2016.10.05
Comments