Friday, March 23, 2018

CentOS 6.6 리눅스 네트워크 ] 1. FTP - vsFTP 서버 간단 설정


안녕하세요. 썬구루입니다.

아래 서버 그림 그리는데 3시간이 넘게 걸렸네요. ㅎㅎㅎ.. 크게 만든 그림의 크기 줄이니 진짜 서버 사진같이 보이네. 저가 그린 아래 서버 그림은 Fujitsu RX300 S8 모델입니다. ㅋ..

이 게시물에서는 FTP에 대해 알아보도록 하겠습니다. FTP는 파일 전송 프로토콜을 나타내지만 여기서는 FTP 서비스를 지칭합니다. 네트워크를 통해 가지고 있는 파일을 다른 곳에 전송하거나 다른 곳에 있는 파일을 가지고 오려면 어떻게 할 수 있을까요?

다양한 방법이 있지만 리눅스에서 가장 간단한 방법은 FTP 서비스를 이용하는 것입니다. FTP 서비스는 서비스를 제공하는 FTP 서버(Server)와 서비스를 제공받는 FTP 클라이언트(Client)로 나누어집니다.

CentOS 6.6 리눅스 가상머신에서 vsftp 프로그램을 사용하여 FTP 서버로 구성하고 호스트에 WinSCP 프로그램 설치하여 FTP 클라이언트를 사용해볼 것입니다.

■ vsftpd

vsftpd는 FTP 서비스를 제공하기 위해 만들어진 서버 서비스 프로그램이다. 보통 CentOS 6.6을 설치할 때 관련된 패키지가 같이 설치된다. 관련 패키지를 확인하는 방법은 아래와 같다.

[root@sunguru ~]# rpm -qa | grep vsftpd
vsftpd-2.2.2-12.el6_5.1.x86_64
[root@sunguru ~]# 

관련된 서비스가 활성화되어 있는지 확인하기 위해 아래와 같은 명령을 사용할 수 있습니다.

[root@sunguru ~]# service vsftpd status
vsftpd가 정지되었습니다
[root@sunguru ~]#  

특정 런레벨(Run Level)에서 자동으로 동작하도록 되어 있는지 확인하는 명령은 아래와 같습니다.

[root@sunguru ~]# chkconfig | grep ftp
vsftpd          0:해제 1:해제 2:해제 3:해제 4:해제 5:해제 6:해제
[root@sunguru ~]# 

■ vsftpd 서비스 시작/종료

vsftpd 서비스 시작과 종료하는 방법은 간단하다. 아래와 같이 service 명령을 통해 서비스 데몬을 올리거나 내릴 수 있다.

[root@sunguru ~]# pgrep -l vsftpd
[root@sunguru ~]#
[root@sunguru ~]# service vsftpd start
vsftpd에 대한 vsftpd을 시작 중:                            [  OK  ]
[root@sunguru ~]#
[root@sunguru ~]# pgrep -l vsftpd
8275 vsftpd
[root@sunguru ~]# service vsftpd stop
vsftpd 종료 중:                                            [  OK  ]
[root@sunguru ~]# pgrep -l vsftpd
[root@sunguru ~]# 

만약 CentOS 리눅스를 켜거나 리부팅했을 때 자동으로 vsftpd 데몬이 자동으로 올라왔으면 한다면 아래와 같이 chkconfig 명령을 사용하면 된다.

[root@sunguru ~]# chkconfig --list vsftpd
vsftpd          0:해제 1:해제 2:해제 3:해제 4:해제 5:해제 6:해제
[root@sunguru ~]#
[root@sunguru ~]# chkconfig vsftpd on
[root@sunguru ~]#
[root@sunguru ~]# chkconfig --list vsftpd
vsftpd          0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
[root@sunguru ~]# 

■ vsftpd 구성 파일

/etc/vsftpd 디렉터리에 아래와 같은 구성 파일들이 존재한다.

  ▶ ftpusers
  ▶ user_list
  ▶ vsftpd.conf

1). /etc/vsftpd/ftpusers 파일

FTP 서버에 접속하지 못하는 사용자 목록. 기본적으로 root 계정과 시스템 계정들은 FTP를 사용하지 못하게 막혀있다.

2). /etc/vsftpd/user_list

FTP 서버에 접속할 수 있는 또는 할 수 없는 사용자 목록을 가지고 있는 파일입니다. 파일 내용을 보시면 알 수 있는데 vsftpd.conf 파일 내용 중 userlist_deny 설정값이 NO 이면 접속할 수 있는 사용자 목록이고 YES라면 접속할 수 없는 사용자 목록으로 처리됩니다.

그러나 /etc/vsftpd/vsftpd.conf 파일 기본 설정에 userlist_deny라는 항목은 없습니다. 그래서 설정 전까지 기본 체크는 아래 파일에 의해 FTP 서버에 접속하지 못하는 사용자가 처리됩니다.

/etc/vsftpd/ftpusers

3). /etc/vsftpd/vsftpd.conf

vsftpd 서비스에 대한 실제 구성 파일입니다. vi 편집기를 사용하여 파일 내용을 확인하면 상당히 많은 설정값(Parameter=Value)들이 존재하는 것을 확인할 수 있습니다. 여기서 몇 가지만 알아보도록 하겠습니다.

  ▶ anonymous_enable

이것은 익명 사용자 로그인 설정입니다. 사용자 계정과 암호를 입력하고 접속하도록 만드는 것이 좋겠죠. 기본값이 YES로 되어 있는데 NO로 변경합니다.

anonymous_enable=NO

  ▶ chroot_local_user

FTP 접속 시 사용자 홈 디렉터리 밖으로 이동할 수 있을지 없을지에 대한 설정이다. YES는 홈 디렉터리 밖으로 이동 못함을 나타낸다. 홈 디렉터리 밖으로 빠져나가지 못하도록 하기 위해 # 주석을 제거한다.

chroot_local_user=YES

vsftpd.conf 구성 파일을 수정하였다면 이를 적용하기 위해 아래와 같이 vsftpd 서비스를 재시작한다.

[root@sunguru ssh]# service vsftpd restart
vsftpd 종료 중:                                            [  OK  ]
vsftpd에 대한 vsftpd을 시작 중:                            [  OK  ]
[root@sunguru ssh]# 



■ WinSCP FTP 클라이언트 프로그램 다운로드 

이 프로그램은 GPL License 기반 FTP 클라이언트 GUI 프로그램이다. 프리 소프트웨어이다. 라이선스 정보는 아래 링크에서 확인 하루 수 있으며 개인, 기업 또는 관공서에서 누구나 자유롭게 이 소프트웨어를 사용할 수 있다.

https://winscp.net/eng/docs/license#free_software

이 프로그램을 만들어 배포한 Martin Přikryl에게 감사합니다. ^^


아래와 같은 사이트에서 WinSCP 프로그램을 다운로드할 수 있다. 설치하는 방법은 따로 설명하지 않을 것이다. 호스트 운영체제 즉 윈도우 운영체제에 이 프로그램을 설치한다. 파일 실행 > Next > Next ...

https://winscp.net/download/WinSCP-5.8.4.RC-Setup.exe

■ WinSCP 프로그램을 이용한 FTP 서버 접속 테스트


1). 원활한 테스트를 하기 위해 (이후 DNS, DHCP 등의 서비스 테스트를 위해서도) 잠깐 iptables 방화벽 서비스를 내리도록 한다. 이것에 대한 기술은 iptables 게시물에서 다룰 것이다.

[root@sunguru ~]# service iptables stop
iptables: 체인을 ACCEPT 규칙으로 설정 중:  filter          [  OK  ]
iptables: 방화벽 규칙을 지웁니다:                          [  OK  ]
iptables: 모듈을 언로드하는 중:                            [  OK  ]
[root@sunguru ~]#
[root@sunguru ~]# chkconfig iptables off
[root@sunguru ~]# 

2). 호스트 운영체제에서 WinSCP 실행 및 정보 입력

시작 메뉴 > 실행에서 winscp를 입력하여 WinSCP 프로그램을 실행한다.



위와 같은 창이 열리면 아래와 같은 정보를 입력한다.

호스트 이름 : 192.168.80.250 (최근에 변경하였음)
사용자 이름 : user1 (사용자 계정관리 시간에 생성하였음)
비 밀  번 호 : xxxxxx

저장 버튼을 눌러 FTP 서버 접속 정보를 저장한다.

3). 파일 업/다운로드 테스트

성공적으로 접속하면 아래와 같은 화면이 나타날 것이다. 그러면 탐색기처럼 드래그 앤 드롭 기능을 사용하여 간단하게 파일 또는 폴더를  업로드 또는 다운로드할 수 있다.


■ vsftpd 접속 시도 시 오류

1). cannot change directory /home....

위와 같은 오류가 난다면 리눅스 SELinux 때문에 방해(?)를 받고 있는 것이다. 이때 아래와 같이 설정하면 정상적으로 접속을 할 수 있다.

[root@sunguru ssh]# setenforce enforce
[root@sunguru ssh]# vi /etc/sysconfig/selinux

SELINUX=permissive  <= 다음과 같이 변경

[root@sunguru ssh]#

여기까지 'vsFTP 서버 간단 설정'에 대해 알아보았습니다. 세부 설정은 다음에... ^^ WinSCP를 사용하여 22번 Port로 SSH 접속해서 파일을 전송할 수도 있습니다. SSH를 사용하면 암호화된 통신을 할 수 있죠. 텍스트 통신을 하면 암호가 패킷 모니터링 프로그램에 의해 노출되기 쉽거든요. 간단 설정만 해도 파일 업/다운로드하는 데는 문제가 없을 것입니다.

만약 특정 사용자들에게 공유 디렉터리를 만들어 활용하도록 만들고 싶다면 삼바(Samba)를 사용하시길 바랍니다.

다음 게시물에서는 SSH에 대해 알아보도록 하겠습니다.






No comments:

Post a Comment