웹사이트 검색

Ubuntu 14.04에서 Apache로 WebDAV 액세스를 구성하는 방법


소개

WebDAV는 사용자가 서버에서 파일을 관리할 수 있도록 하는 HTTP 프로토콜의 확장입니다. WebDAV 서버를 사용하는 방법에는 여러 가지가 있습니다. 예를 들어 Word 또는 Excel 문서를 WebDAV 서버에 업로드하여 동료와 공유할 수 있습니다. URL을 제공하기만 하면 가족 및 친구와 음악 컬렉션을 공유할 수도 있습니다. 이 모든 것은 아무것도 설치하지 않고도 달성할 수 있습니다.

원격 서버에서 파일을 관리하는 방법에는 여러 가지가 있습니다. WebDAV는 Samba와 같은 다른 솔루션에 비해 몇 가지 이점이 있습니다. 이 기사에서는 인증을 통해 Windows, Mac 및 Linux에서 기본 WebDAV 액세스를 허용하도록 Apache 서버를 구성하는 방법을 살펴보겠습니다.

왜 WebDAV인가?

WebDAV는 다음과 같은 몇 가지 이점을 제공합니다.

  • 모든 주요 운영 체제(Windows, Mac, Linux)의 기본 통합; WebDAV를 사용하기 위해 타사 소프트웨어를 설치할 필요가 없습니다.
  • 부분 전송 지원.
  • 인증을 위한 더 많은 선택. HTTP에 있다는 것은 LDAP 등이 모두 가능하다는 것을 의미합니다.

귀하의 상황에 따라 WebDAV가 귀하의 필요에 가장 적합한 솔루션이 될 수 있습니다.

왜 아파치인가?

Linux에서 WebDAV를 지원하는 많은 웹 서버가 있습니다. 그러나 Apache는 WebDAV 프로토콜을 가장 잘 준수하도록 구현했습니다. 작성 당시 Lighttpd의 WebDAV는 작동하지만 부분적으로만 작동합니다.

전제 조건

Ubuntu 14.04 서버가 필요합니다.

시작하기 전에 먼저 sudo 액세스 권한이 있는 사용자를 생성하겠습니다. 루트로 명령을 실행할 수 있지만 보안 문제로 인해 권장되지 않습니다. 자세한 내용을 보려면 Ubuntu 14.04에 사용자를 추가하는 방법에 대한 훌륭한 기사가 있습니다.

사용자 생성

Digital Ocean 인스턴스를 처음 생성하면 루트로 로그인할 수 있는 자격 증명이 제공됩니다. 루트로서 먼저 alex라는 사용자를 추가하겠습니다.

adduser alex

아래와 같이 사용자 alex의 암호를 생성하라는 메시지가 표시됩니다. 사용자 alex에 대한 정보를 묻는 추가 프롬프트가 표시됩니다. 원하는 경우 입력할 수 있습니다.

Adding user `alex' ...
Adding new group `alex' (1000) ...
Adding new user `alex' (1000) with group `alex' ...
Creating home directory `/home/alex' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for alex
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y

사용자에게 sudo 권한 부여

새 사용자를 만든 후 다음 단계는 사용자 alex sudo 권한을 부여하는 것입니다. 여전히 root로 로그인되어 있다고 가정하고 다음 명령을 입력하여 사용자 alexsudo 그룹에 추가합니다.

usermod -aG sudo alex

sudo 그룹의 사용자에게는 sudo 권한이 부여됩니다. 이제 alex 사용자로 로그아웃하고 로그인할 수 있습니다.

1단계 - Apache 설치

아파치를 설치하자.

sudo apt-get update
sudo apt-get install apache2

Apache 웹 서버가 설치되어 실행 중이어야 합니다.

2단계 - WebDAV 설정

WebDAV를 설정하는 세 단계가 있습니다. 위치를 지정하고 필요한 모듈을 활성화하고 구성합니다.

디렉토리 준비

WebDAV를 제공할 폴더를 지정해야 합니다. 이를 위해 새 디렉토리 /var/www/webdav를 생성합니다. 또한 Apache가 쓰기를 허용하려면 소유자를 www-data(Apache 사용자)로 변경해야 합니다.

sudo mkdir /var/www/webdav
sudo chown -R www-data:www-data /var/www/

활성화 모듈

다음으로 a2enmod를 사용하여 WebDAV 모듈을 활성화합니다.

sudo a2enmod dav
sudo a2enmod dav_fs

Apache 모듈은 /etc/apache2/mods-available에서 찾을 수 있습니다. 이렇게 하면 /etc/apache2/mods-available에서 /etc/apache2/mods-enabled로의 심볼릭 링크가 생성됩니다.

구성

원하는 텍스트 편집기를 사용하여 /etc/apache2/sites-available/000-default.conf에서 구성 파일을 열거나 생성합니다.

nano /etc/apache2/sites-available/000-default.conf

첫 번째 줄에 DavLockDB 지시문 구성을 추가합니다.

DavLockDB /var/www/DavLock

그리고 VirtualHost 섹션 내부의 AliasDirectory 지시문:

Alias /webdav /var/www/webdav

<Directory /var/www/webdav>
    DAV On
</Directory>

편집 후 파일은 다음과 같아야 합니다.

DavLockDB /var/www/DavLock
<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

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

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf

        Alias /webdav /var/www/webdav

        <Directory /var/www/webdav>
            DAV On
        </Directory>
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

DavLockDB 지시문은 DAV 잠금 데이터베이스의 이름을 지정합니다. 파일 경로여야 합니다. 파일을 만들 필요가 없습니다. 디렉토리는 Apache 서버에서 쓸 수 있어야 합니다.

별칭 지시문은 http://your.server/webdav에 대한 요청을 /var/www/webdav 폴더에 매핑합니다.

Apache 문서의 mod_dav.

Apache 서버를 다시 시작하면 인증 없이 WebDAV 서버가 작동하게 됩니다.

다음과 같이 Apache 서버를 다시 시작하십시오.

sudo service apache2 restart

테스트

인증이 없는 WebDAV는 사용자에게 읽기 액세스만 허용합니다. 테스트를 위해 샘플 파일을 만들어 보겠습니다.

echo "this is a sample text file" | sudo tee -a /var/www/webdav/sample.txt

sample.txt라는 텍스트 파일이 /var/www/webdav에 생성되어야 합니다. 이것은 샘플 텍스트 파일입니다 텍스트를 포함해야 합니다.

이제 외부 컴퓨터에서 로그인을 시도할 수 있습니다. WebDAV 서버는 http:///webdav에서 찾을 수 있습니다. 간결함을 위해 Mac에서 자격 증명 없이 로그인하는 방법만 보여줍니다.

Mac에서 Finder를 엽니다. 메뉴 모음에서 이동을 찾아 서버에 연결 옵션을 선택합니다.

손님으로 연결 옵션을 선택합니다. 그런 다음 연결을 클릭합니다.

로그인되어 있어야 합니다. 해당 공유 파일 시스템에 연결하여 webdav 폴더에 들어가면 이전에 생성한 sample.txt 파일을 볼 수 있어야 합니다. 파일을 다운로드할 수 있어야 합니다.

3단계 - 인증 추가

인증이 없는 WebDAV 서버는 안전하지 않습니다. 이 섹션에서는 다이제스트 인증 체계를 사용하여 WebDAV 서버에 인증을 추가합니다.

기본 또는 다이제스트 인증?

사용 가능한 많은 인증 체계가 있습니다. 이 표는 서로 다른 운영 체제에서 다양한 인증 체계의 호환성을 보여줍니다. HTTPS를 제공하는 경우 SSL 인증서가 유효하다고 가정합니다(자체 서명되지 않음).

HTTP를 사용하는 경우 기본 인증을 사용하십시오.

SSL 인증서 없이도 모든 운영 체제에서 작동하는 Digest 인증 체계를 다룰 것입니다.

다이제스트 인증

사용자의 암호를 저장하는 파일(users.password)을 생성해 보겠습니다. 다이제스트 인증에는 사용자의 네임스페이스 역할을 하는 realm 필드가 있습니다. 우리는 영역으로 webdav를 사용할 것입니다. 첫 번째 사용자는 alex라고 합니다.

다이제스트 파일을 생성하려면 종속성을 설치해야 합니다.

sudo apt-get install apache2-utils

다음에 사용자를 추가하겠습니다. 아래 명령을 사용하여 사용자 암호 파일을 생성해 보겠습니다.

sudo htdigest -c /etc/apache2/users.password webdav alex

이렇게 하면 사용자 alex가 암호 파일에 추가됩니다. alex의 암호를 생성하기 위한 암호 프롬프트가 있어야 합니다.

이후에 사용자를 추가하려면 c 플래그를 제거해야 합니다. 다음은 chris라는 사용자를 추가하는 또 다른 예입니다. 메시지가 표시되면 암호를 만듭니다.

sudo htdigest /etc/apache2/users.password webdav chris

또한 Apache가 암호 파일을 읽을 수 있도록 허용해야 하므로 소유자를 변경합니다.

sudo chown www-data:www-data /etc/apache2/users.password

암호 파일이 생성된 후 /etc/apache2/sites-available/000-default.conf에서 구성을 변경해야 합니다.

Directory 지시문에 다음 줄을 추가합니다.

AuthType Digest
AuthName "webdav"
AuthUserFile /etc/apache2/users.password
Require valid-user

최종 버전은 다음과 같아야 합니다(주석이 제거됨).

DavLockDB /var/www/DavLock

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

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

    Alias /webdav /var/www/webdav

    <Directory /var/www/webdav>
        DAV On
        AuthType Digest
        AuthName "webdav"
        AuthUserFile /etc/apache2/users.password
		Require valid-user
    </Directory>
</VirtualHost>

mod_authn 모듈에는 인증 지시문에 대한 정의가 포함되어 있습니다.

AuthType 지시문은 /var/www/webdav 디렉토리에 대해 Digest 체계를 사용하는 인증이 있어야 한다고 Apache에 지시합니다.

Digest 인증에는 webdav로 설정한 realm에 대한 값이 필요합니다. Realm은 네임스페이스처럼 작동합니다. 이름이 같은 사용자가 있는 경우 realm에 다른 값을 사용하여 사용자를 구분할 수 있습니다. AuthName 지시문을 사용하여 realm의 값을 설정합니다.

AuthUserFile 지시문은 암호 파일의 위치를 나타내는 데 사용됩니다.

Require 지시문은 자신을 인증하는 유효한 사용자만 해당 디렉토리에 액세스할 수 있음을 나타냅니다.

마지막으로 다이제스트 모듈을 활성화하고 서버를 다시 시작하여 설정을 적용하십시오.

sudo a2enmod auth_digest
sudo service apache2 restart

4단계 - 파일 액세스

Mac, Windows 및 Linux(Ubuntu)의 기본 파일 브라우저에서 WebDAV 서버에 액세스하는 방법을 시연합니다. 모든 운영 체제에서 서버의 파일을 추가, 편집 및 삭제할 수 있지만 간결함을 위해 Mac에서만 파일 및 폴더 작업을 시연할 것입니다.

웹 브라우저를 사용하여 인터넷을 통해 파일에 액세스할 수도 있습니다.

인증을 추가하기 전에 테스트한 경우 드라이브를 꺼내고 다시 연결해야 할 수 있습니다.

Mac에서 Finder를 엽니다. 메뉴 모음에서 이동을 찾아 서버에 연결 옵션을 선택합니다.

서버 주소를 입력합니다. http:///webdav여야 합니다. 연결을 누릅니다.

사용자 이름과 비밀번호를 입력하라는 메시지가 표시됩니다. 서버에서 생성한 사용자 중 하나를 입력하고 연결을 누릅니다.

연결되면 디렉토리가 Finder에 나타납니다.

파일을 webdav 디렉토리에 복사 및 저장하고 하위 디렉토리를 생성할 수 있습니다. 다음은 서버에 있는 디렉토리의 초기 상태입니다.

Finder에서 정상적으로 파일을 추가하거나 이름을 바꾸고 새 디렉터리를 만들 수 있습니다. 아래는 최종 결과입니다.

윈도우

Windows에서 파일 탐색기를 엽니다. 왼쪽 사이드바에서 네트워크 아이콘을 찾아야 합니다.

네트워크 아이콘을 마우스 오른쪽 버튼으로 클릭합니다. 네트워크 드라이브 연결 옵션이 있는 상황에 맞는 메뉴가 표시되어야 합니다. 그것을 클릭하십시오.

폴더 필드에 서버 주소를 입력합니다. http:///webdav여야 합니다. 로그인이 다른 경우 다른 자격 증명을 사용하여 연결을 선택하십시오. 마침을 누릅니다.

사용자 이름과 암호를 묻는 메시지가 나타납니다. 입력하고 확인을 누릅니다.

연결되면 파일 탐색기의 왼쪽 사이드바에 네트워크 드라이브로 나타납니다.

리눅스(우분투)

Linux 데스크톱 운영 체제로 Ubuntu 14.04를 사용하고 있습니다. Ubuntu에서 파일을 엽니다. 왼쪽 사이드바에 서버에 연결 옵션이 있습니다. 그것을 클릭하십시오.

서버 주소를 입력합니다. dav:///webdav여야 합니다. 연결을 누릅니다.

사용자 이름과 암호를 묻는 메시지가 나타납니다. 입력하고 연결을 누르십시오.

연결되면 디렉토리가 네트워크 목록 아래에 나타나야 합니다.

결론

이 기사에서는 Ubuntu 14.04에서 Apache를 사용하여 WebDAV 서버를 설정하는 방법을 살펴보았습니다. 또한 서버 보안을 위해 다이제스트 인증을 구성하는 방법에 대해서도 설명했습니다. 마지막으로 기본 파일 브라우저를 사용하여 세 가지 주요 운영 체제 모두에서 WebDAV 서버에 연결하는 방법을 보여 주었습니다.