2011년 2월 18일 금요일

윈도우 파일 서버 구축하기

Source : http://blog.naver.com/mybrainz?Redirect=Log&logNo=140016122827

네트워크가 일반화되면서 사용자나 시스템간의 1:1 파일 교환을 비롯해, 하나의 저장소에 파일을 체계적으로 저장하고, 관리가 필요할 때 이용하는 파일 서버의 개념은 아주 중요한 요소로 자리잡고 있다. 이번 특집에서는 우리주변에서 가장 널리 쓰이는 윈도우 운영체제를 이용해 파일 서버를 구현하는 방법에 대해 살펴보기로 한다.

요 즘은 PC의 성능이 대폭 향상되고, 불과 몇 년전만 하더라도 대형 스토리지에서나 가능했었던 수백기가의 저장용량이 기술의 발달로 인해 이제는 낮은 가격으로 일반 가정이나 사무실에서도 얼마든지 쓸 수 있게 됐다. 게다가 PC의 주요 운영체제인 윈도우(윈도우 98 이후)의 네트워크 지원 기능도 대폭 강화되면서 지금은 초보자도 PC와 윈도우만 있으면 얼마든지 충분한 용량의 파일 서버를 쉽게 구현할 수 있다. 즉, 이제는 네트워크에 연결된 PC라면 아무리 네트워크를 잘 모르는 초보자라도 누구나 공유하고 싶은 폴더를 선택하고, 단축메뉴에서 ‘공유’만 선택하기만 하면, 다른 사람과 공유 폴더를 통해 편리하게 자료를 주고 받을 수 있게 된 것이다.

clip_image001

(화면 1) 공유폴더 설정화면

이 렇게 윈도우 상에서 공유 폴더를 통해 파일 서버를 구현하는 방식은 윈도우 95 이전시절로 거슬러 올라갈 정도로 꽤 역사가 오래됐다. 이용하는 프로토콜 역시 인터넷이 보급되기 전부터여서 유닉스에서는 UDP에 근간한 NFS, 애플은 애플토크(Appletalk), 윈도우에서는 스타크래프트로 잘 알려진 IPX 및 Netbios 프로토콜 등, 주로 워크그룹 단위의 LAN 구성 중심이었다. 그러다가 윈도우 98부터는 TCP over Netbios의 지원으로, 인터넷으로 멀리 떨어진 곳에서도 공유폴더를 이용할 수 있게 됐다. 이런 공유폴더를 이용하는 SMB 연결방식의 가장 큰 장점은 뭐니해도 FTP와 달리 파일을 로컬로 내려받지 않고도 원격에서 파일을 곧바로 열고 실행할 수 있어 편리하다는 점이다.

공 유폴더는 공유를 원하는 폴더를 선택한 후 우측버튼을 눌러 “공유 및 보안” 단축 메뉴를 통해 설정할 수 있다. 제공되는 옵션으로는 네트워크 상에서 보여지는 공유폴더의 이름과 주석을 별도로 지정할 수 있고, 해당 폴더에 동시 접속가능한 최대 사용자 수를 별도로 지정할 수 있다. 또한 폴더와 드라이브 전체를 공유할 수 있으며, 이렇게 공유한 대상은 클라이언트에서 네트워크 드라이브로 연결하면 로그인을 할 때마다 자동으로 연결돼 마치 로컬 드라이브처럼 사용할 수 있다.    

사용자 계정과 권한체계

이 처럼 편리한 공유폴더지만, 이용하는 네트워크가 사무실에 국한되지 않고 인터넷과 같은 개방된 환경일 경우, 인가받지 않은 사용자의 접근에 의한 정보유출 등의 우려가 발생하게 된다. 이는 이용자 편리성과 상충되는 보안문제로 항상 중요한 이슈로 떠오른 게 사실이다. 예를 들어 XP의 경우 기본설정으로 폴더를 공유하면 누구나 접근이 가능한 폴더를 만든다거나, 이전 윈도우 95/98 버전의 경우 암호만 이용할 수 있는 등 문제소지가 충분하기 때문이다. 따라서 공유폴더에 대한 보안 문제에 대응해 윈도우 NT를 비롯한 윈도우 2000부터는 등록된 사용자만이 시스템과 공유자원에 접근할 수 있는 방안이 강구됐다. 그것은 바로 네트워크 인증(Authentication)과 NTFS 파일시스템이 제공하는 파일과 폴더에 대한 권한설정 등이다. 이를 통해 사용자별로 허용된 행위(읽기, 쓰기, 실행 등)만 허용하는 허가(Authorization) 기능을 함께 지원해 보안체계를 강화했다.

따 라서 서버의 다른 로그인 아이디를 알고 있다 하더라고 권한이 부여되지 않은 공유 자원에 대해서는 이용할 수 없도록 구성할 수 있다. 폴더 이용 권한을 설정하는 방법은 앞서 말한대로 네트워크적인 개념에서 접근하는 사용자를 식별해 접근제한을 하는 것과, 로컬사용자도 함께 해당되는 파일 시스템 개념에서 접근 권한을 차등 부여하는 두 가지를 각각 설정할 수 있다.

따 라서 먼저 로컬에서는 누구나 읽고 쓸 수 있도록 하고, 공유사용자들에 대해서만 사용자 제한만을 원한다면 다음과 같은 방식으로 하면 된다. 즉, 폴더 공유를 위해 열었던 공유설정 메뉴에서 ‘사용권한’ 버튼을 클릭하고, 원하는 네트워크 접근을 위한 윈도우 계정별로 이용 권한을 차등하게 부여(기본설정은 누구나(Everyone) 읽기 가능임)하면 된다. 또한 서로 다른 접근권한을 가진 공유폴더를 여러 개 운영해야 할 필요가 있고, 로컬사용자도 접근제어를 할 필요가 있다면 ‘보안’탭을 통해 파일시스템의 접근제어기능을 이용하면 더욱 세밀한 권한제어가 가능하다. 

clip_image002

(화면 2) 사용자별 권한설정

<Tip ① 공유폴더 이용>
윈 도우 XP 버전에서는 보안 기본설정이 모든 폴더를 동일한 권한으로 설정되도록 지정돼 있어서 NTFS 파일시스템의 접근제어기능을 이용해 해당 파일과 폴더를 다른 권한으로 설정할 수 없도록 돼 있다. 따라서 사용자별로 각기 다른 접근 권한을 설정하기 위해서는 ‘탐색기 → 도구 → 폴더옵션 → 보기’에서 ‘모든 사용자에게 동일한 폴더 공유 권한을 지정’ 옵션을 끄고 다시 접속하면 된다.

계정별 쿼터

윈 도우 NT 시절, 윈도우 유닉스를 대체할 수 없는 가장 큰 한계이자 이유 중 하나였던 사용자별 쿼터(공간 할당량 제어) 기능도 윈도우 2000(서버) 및 XP 프로페셔널부터 지원되기 시작했다. 때문에 이제는 파일 서버를 이용하는 사용자별로 이용할 수 있는 전체 저장소의 용량을 관리자가 통제할 수 있다. 즉, 쿼터를 설정하면 특정 사용자가 정해진 한도보다 더 큰 용량을 사용할 수 없도록 한다거나 경고를 할 수 있다. 그러나 쿼터기능은 폴더 단위로는 설정할 수 없고 드라이브 단위로 가능하다.

설 정하는 방법은 ‘내 컴퓨터’에서 쿼터를 정하고 싶은 드라이브를 선택한 후 ‘속성’ 탭을 열고 ‘할당량 관리’라는 항목을 선택하면, 드라이브 전체적으로 새로운 사용자에게 대한 일괄쿼터를 설정할 수 있다(이미 한도를 넘어버린 경우 제외). 하단의 ‘할당량 항목’ 버튼을 클릭하면 특정사용자에게만 쿼터를 부여하거나 각각 사용자 별로 서로 다른 쿼터용량을 부여할 수도 있다.    

clip_image003

(화면 3) 할당량 관리 기능

<Tip ② 윈도우 XP 등 개인 클라이언트의 동시접속자 수 제한>
가 끔 공유폴더를 이용해 파일 서버를 운영하다보면 사무실에서 몇 명밖에 사용하지 않는데도 동시 접속하면 ‘수용가능한 최대 개수의 연결이 이미 있다’라는 경고문구와 함께 접속이 거부되는 경우가 있다. 이는 윈도우 XP 등 개인사용자용 운영체제의 경우 마이크로소프트에서 동시 접속자 수에 대한 제약을 미리 걸어뒀기 때문이다(pro:10명, home:5명). 
물론 윈도우 2000 혹은 2003 서버 운영체제라면 설치시 동시접속 가능 클라이언트 수를 조정할 수도 있고, 또한 기본적으로 무제한 접속이 가능하지만, XP라면 이 제약을 해제하는 것은 지원되지 않는다. 대신 실제 20∼50명 규모 정도로 작은 사무실이거나 동시접속이 빈번하게 이뤄지지 않는 파일 서버라면 XP로 구성해도 사용자들에 대한 아이들 타임(idle time, 기본 15분)을 짧게 해 이용하지 않을때는 세션을 자주 끊어줌으로서 효율을 높이는 방법으로 이런 문제를 개선할 수 있다.

명령 프롬포트 상에서 # net config server /autodisconnect: 줄일 시간 (분 단위)

네트워크 불안 걱정 끝 ‘오프라인 캐싱’


네트워크 품질이 좋아졌다고는 하지만 간혹 폴더공유나 네트워크 드라이브로 연결된 상태에서 파일을 직접 열어서 수정하는 작업을 많이 하는 독자라면 아마 갑작스런 네트워크의 불안정으로 작업 내용을 통째로 날려본 경험이 한두번은 있을 것이다(물론 가정이나 사무실 내부처럼 안정된 네트워크 안에서는 거의 느끼지 못할 수도 있지만). 필자도 이런 경험을 남들보다 더 종종하게 되는데 SMB를 통해서 파일을 열어서 문서작업을 하다가 라우터가 죽거나 LAN 선이 뽑히는 등 네트워크가 끊기면, 지금껏 작업한 내용이 모두 날아가 버려 무척 당황스럽다.

이렇게 되면 죽은 네트워크를 원망할 수밖에 없다. 저장 버튼을 주기적으로 누르거나 파일을 개인 PC로 가져왔다 다시 올리는 방법도 있지만 이는 좀 귀찮고 번거롭다. 그런데 마이크로소프트 개발자 중에 필자같이 다소 게으른(?) 사람이 있었는지 모르지만, 이런 문제를 해결해주기 위해서 윈도우 2000부터는 공유폴더 설정시 오프라인 캐싱기능을 제공한다.

즉, 서버에서 공유 폴더를 설정할 때 클라이언트가 원격에서 요청시 마다 네트워크를 통해 새로 받는 것이 아니라, 자주 쓰이는 파일의 경우 로컬에 파일을 미리 캐싱해 이용할 수 있다. 이는 캐싱허용과 버전 관리의 자동 설정을 통해 가능한데, 이 기능은 주로 외근 사용자 등이 출근시 회사의 공유 폴더내용을 로컬에 캐시해 뒀다가 현장 등 오프라인에서 작업을 한 다음, 다시 네트워크에 연결되면 자동으로 공유 폴더의 내용과 동기화가 필요할 때 사용된다.

또한 온라인 상에서라도 대용량 파일을 연다거나 네트워크 부하 방지 또는 ADSL 등 느린 네트워크 환경에서 유용하게 사용할 수 있다. 이런 오프라인 캐싱은 네트워크 품질이 좋지 않았던 과거에 좀더 원활한 파일 공유를 위해 유닉스가 채택했던 cachefs에서 착안한 것이다.

clip_image004

(화면 4) 오프라인 캐싱 기능

단, 주의할 점은 오프라인에서 온라인로 접속시 자동(또는 수동)으로 새로운 버전의 파일이 겹쳐기록되기 때문에 업데이트가 빈번히 이뤄지는 환경, 즉 여러 사람이 동시에 사용하는 파일이 많은 공유 폴더라면 이용하지 않는 것이 바람직하다. 

원격 접속 설정하기(TCP over Netbios)


앞 서 언급한대로, TCP over Netbios 방식을 통해 이제 공유폴더는 로컬에서만 국한된 것이 아니라 인터넷을 통해 멀리 떨어진 곳에서도 FTP가 아닌 SMB 방식으로 바로 열 수 있다. 더욱이 최근 들어 파이어월이나 NAT 환경 구성이 보편화 되면서 윈도우에서는 자동으로 연동이 되지만 네트워크 상에서 포트를 연결할 필요가 있는 상황이 많은데, 이때 열어야할 서비스 포트는 윈도우 파일 공유는 TCP 139, 445, UDP 137, 138이다.  

SSH를 이용한 Secure FTP 구성하기


윈 도우 XP나 2000부터는 IIS(Internet Information Server)가 이미 운영체제에 내장돼 있어 웹과 FTP를 통해 파일 서버를 확장할 수 있는데, 이런 FTP는 설정이 쉬운데 반해 보안을 걱정하는 사용자 입장에서는 좀 망설여지는 경우가 많다. 왜냐하면 FTP 프로토콜의 세션성립과 인증 방식이 텔넷(telnet)처럼 플레인 텍스트(Plain text) 형태로 이뤄지기 때문이다. 이는 주로 외부에서 접속이 빈번한 파일 서버의 경우, 원격 사용자가 FTP를 이용하면 스니핑 등과 같은 해킹 방식으로 ID와 패스워드를 중간에 가로채질 수 있다는 의미다. 또한 최근에는 인터넷에 연결만 되도 스캔공격이나 바이러스 공격을 쉽게 받을 수 있으며, 특히 21번 포트처럼 잘 알려진 포트에 대해서는 무작위 접속이 많기 때문에 기본 포트로 FTP를 운영하면 보안상 위험이 높아지기 때문이다.

이 런 보안 문제를 해소하기 위해 이번에는 IIS 등 일반 FTP 엔진 대신 SSH를 이용한 안전한 SFTP(Secure FTP)를 구성하는 방법에 대해서 알아보기로 한다. SFTP의 기본원리는 FTP 프로토콜을 직접 사용하지 않고, 암호화를 지원하는 SSH를 이용해 FTP를 만드는 것이다. 이런 방식은 일단 인증부터 데이터 통신에 이르기까지 전과정을 암호화해 보안상 안전할 뿐만 아니라, 프로토콜 스택 상으로 TCP와 함께 SSH가 이중으로 CRC를 확인해 주므로 좀더 신뢰성 있는 데이터 교환이 가능하다. 게다가 FTP의 경우 인증과 세션 성립은 21번, 실제 데이터 전송은 20번(또는 랜덤 포트)으로 나뉘어져 있어, NAT 환경 혹은 사업장에서 일부러 FTP의 사용을 막았을 경우 불편 없이 사용할 수 있다.

SFTP를 구성하려면 파일 서버에 openSSH 프로그램이 설치돼 있어야 한다. 먼저 홈페이지(http://sshwindows.sourceforge.net)에서 설치 인스톨러를 다운로드 받는다. 

clip_image006

(화면 5) openSSH 설치화면

clip_image007

(화면 6) openSSH 설치화면

인스톨러를 통해 프로드램 설치가 완료되면, SSH 데몬이 이용할 인증 정보를 기존 윈도우 계정 정보를 기반으로 생성하기 위해 다음과 같은 명령을 입력해야 한다.

커 맨드 프롬포트 상에서 c:\progra~1\openSSH\bin 폴더로 이동해 mkgroup -l >> /etc/group 과 mkpasswd -l >> /etc/passwd를 입력하면 접속시 이용될 ID와 그룹이 담긴 파일을 ~\OpenSSH\etc 폴더에 생성한다. 그리고 관리도구→서비스로 이동해 ‘openSSH서버’ 항목을 선택해 시작을 누르면 SSH 데몬이 구동된다.

clip_image008

(화면 7) SSH 접속

여 기까지는 SSH를 이용하기 위한 기본 설정이고, 실제 이용하려는 SFTP는 데몬을 별도로 올려야 한다 c:\progra~1\openSSH\usr\sbin 폴더로 이동후 sftp-server.exe를 실행하면 파일 서버에서 SFTP 데몬이 구동을 시작하며 서버 구성이 완료된다. 클라이언트로 연결하는 방법은 PUTTY의 PSFTP로 접속하면, 기존 FTP와 동일한 명령 인터페이스를 통해 이용할 수 있고, 특히, FileZillar 프로그램을 이용하면 기존 FTP 클라이언트 프로그램과 동일하게 GUI를 통해 편리하게 SFTP를 이용할 수 있다.

clip_image009

(화면 8) FileZillar를 통한 SFTP접속

clip_image010

(화면 9) PuTTY의 PSFTP접속 화면

이 렇게 파일 서버에 SSH를 구성하면 또 다른 응용을 할 수 있는데 바로 FTP의 인증부분만 암호화 터널을 통해하고 데이터는 원래대로 받는 방식이 그것이다. 즉, 앞에서 처럼 SFTP처럼 완전한 암호화 환경을 이용하는 방식은 보안성은 높지만, 기존 FTP 방식을 지원하지 않아 클라이언트에서도 반드시 SFTP를 지원하는 클라이언트 프로그램으로만 접속해야 한다는 단점이 있다. 따라서 실제 보안이 취약한 기존 FTP의 인증과정만 SSH 터널을 이용하고, 바이너리 교환이 빈번해 스니핑 등의 위험이 적은 실제 데이터 교환은 예전처럼 전송받는 것이다.

설 정하는 방식은 파일 서버에서는 기존의 FTP 데몬과 함께 SSH 데몬을 올리고, 클라이언트에서는 SSH 쉘 접속시 (화면 10)과 같이 SSH 클라이언트에 터널 연결 설정을 한다. 이후 SSH로 연결한 다음 ALZIP 등 다른 일반 FTP 클라이언트 프로그램을 이용하면 된다.

clip_image011

(화면 10) putty 터널설정

웹 폴더 공유를 이용한 웹하드 구현


윈 도우 2000부터는 키오스크나 PDA처럼 FTP나 SMB 등과 같은 파일공유를 이용하기 어려운 환경을 지원하기 위해 웹을 통한 폴더공유 기능을 제공한다(이 기능은 IIS와 연동돼 지원되므로 XP 홈에디션처럼 IIS가 없는 운영체제에서는 이용할 수 없다). 웹 폴더 공유를 설정하는 방식은 이전 폴더공유를 설정하는 방식과 유사하게 해당 폴더를 선택한 후 마우스 오른쪽 버튼을 눌러 단축메뉴에서 ‘웹폴더공유’ 메뉴를 선택해 설정할 수 있다. 이렇게 설정한 후 클라이언트에서는 웹 브라우저에서 “http://웹주소/공유폴더 명”을 입력하면 공유된 폴더의 내용을 웹을 통해 불러올 수 있다.

clip_image012

(화면 11) 웹 폴더를 이용한 웹하드 구현

지 금까지 윈도우를 이용해 파일 서버 서비스를 구성하는 다양한 구현 방법을 살펴봤다. 이렇게 윈도우에서는 리눅스와 달리 운영체제만으로도 다양한 기능이 “ready-to-use” 상태로 제공됨에도 불구하고, 실제 현장에서는 아직도 단순히 공유폴더를 통해 파일 서버를 이용하는 경우가 대부분이다. 좀더 유연하고 안전한 접속을 위해 사용자 환경의 특성에 맞게 파일 서버를 구성한다면, 더욱 더 많은 파일 서버의 장점을 만끽할 수 있을 것이다.

이 번 특집에서는 파일 서버의 서비스를 구현하는 데 초점을 맞췄지만, 그밖에도 볼륨쉐도우 서비스와 백업(온더넷 1월호 윈도우 2003 강좌 참고)을 이용하면 실제 운영과정에서 데이터 보존에 대한 안전성을 높여, 더욱 편리하고 안전한 파일 서버를 만들 수 있을 것이다.

댓글 없음:

댓글 쓰기