2015년 8월 7일 금요일

리눅스 서버 알아보기_07. FTP서버 셋팅


1. ftp 프로그램 설치 및 셋팅
  순서
  1) 설치(~rpm, 소스컴파일)
  2) 서버구성파일 vi 에디터로 셋팅
  3) 데몬 재시작
  4) 권한 수정 / 디렉토리 생성


rpm : 압축, 묶음, 설치 한번에 진행이 가능

rpm -ivh ~~.rpm   (인스톨)
rpm -Uvh ~~.rpm  (설치 혹은 업그레이드)

rpm ~qa|grep ftp
    (ftp 설치 확인)

rpm -e ~~~~
    (프로그램 삭제)

proftpd-1.2.10-1.fcl.i386.rpm
다운로드

rpm -Uvh proftpd-1.2.10-1.fcl.i386.rpm

옵션2 rpm -Uvh --nodeps ~~.rpm
         :
rpm -qa|grep ftp
해당 내용이 설치된걸 확인 가능

*proftpd : ftp 서버중 강력한 기능을 제공함
     환경설정파일 : /etc/proftpd.conf
     실행파일
>ls /etc/proftpd.conf (구성파일)
>ls /etc/init.d/proftpd (실행파일)

>ntsysv (서비스관리 툴에 proftpd가 등록되어 있음)

>vi /etc/proftpd.conf
~~~
ServerName    "첫 접속시 인사말"
ServerType        standalone(사용빈도가 높은건 이런 type으로 사용)
                       xinetd (사용빈도가 작은건 이 type으로 사용
DefaultServer
port
Umask  022 (777- 022 => 755 (디렉토리 생성시 생기는 권한)
                        파일은 -111 => 644 권한으로 생성된다.
MaxInstances   (DOS 공격 대비 MAX 시도 제한 횟수)

~~~~~
User     nobody
Group   nogroup
    이건 꼭 있어야 되는 부분
    계정이나 그룹이 있어야 되고 no 는 다 뜨는 부분임

#DefaultRoot

AllowOverwrite on (웹 서버에서 사용자 요청에 의하여
                          파일 덮어쓰기를 허용할지 여부)
<Limit SITE_CHMOD>
  DenyAll
</Limit>

<Anonymous /var/ftp> 익명 사용자계정은 /var/ftp에 잡혀있음(보통)
  User     ftp    <나중에<
  Group   ftp    <나중에
UserAlias ~~
    anonymous 계정 설정

MaxClients     최대 접속자수

DisplayLogin     인삿말 파일 위치

DisplayFirstChdir    .message
                     (디렉토리별 인사말 각각 설정 가능)

실습진행
>mkdir ftp
>cd ftp
>touch aaa.txt bbb.txt ccc.txt
>ls
~~

>cd /etc/initd.d
>ps -ef|grep proftp
~~ 아직 실행중이 아님
>cd /etc/init.d
>./proftpd start
~~fail  (그룹이 없음)
>cat /etc/passwd/grep nobody
~~ 계정은 있는데, 그룹이 없다는 형태로 뜸

>groupadd nogroup
>cat /etc/group|grep nogroup
>./proftpd start
~~완료
>ps -ef|grep proftpd
~~프로세스 등록 완료
>>윈도우에서 접속 가능한지 확인
    하지만 권한문제로 업로드는 불가능(다운로드는 가능)
      (거부되었다 라는 메시지가 뜸)
    이걸 설정하려면 설정값을 변경해서 작업 가능


재실행 방법 (2가지가 있음)
>./proftpd start  (해당 폴더 가서 파일명 실행하는 방법)
or
>service proftpd restart  (서비스 실행방법)

이번에는 설정 파일에 있는대로 welcome.msg
   라는 파일에 인사말을 적으려고 함
  막상 찾아보면 welcome.msg가 없음
   이건 만들어서 작성하면 시작시 찾아보고
   없으면 그대로 시작, 있으면 실행하게됨

/ver/ftp> cat >welcome.msg
---------------------------------------------

              This is FTP Server

--------------------------------------------

업로드 사이트
설정파일에서 본 내용중에

...
<Limit WRITE>
   DenyAll
</Limit>
.....

  (1) Limit 뒤에는 몇가지 키워드가 올 수 있다.
      READ    - 다운로드만 가능
      WRITE    - MKD+STORE
      MKD  - 디렉토리만들기
      STORE - 업로드
   
  (2) AllowAll <-- 다 허락 가능하다는 의미
      DenyAll <-- 다 거부한다는 의미

>service proftpd restart (안되면 설정파일 에러가 있는것)


근데 실행해보면 upload가 안됨

ls -al /var/ftp
   디렉토리 권한
   접속자는 ftp 계정으로 접속되는데
    이는 일반 사용자계정과 같은 뜻이다.
   => 권한을 변경 혹은 파일 소유자를 바꾸는 방법으로
    보안 단계를 조절할 수 있는데
    권한 변경은 보안상 문제가 있다고 판단되어
    파일 소유자를 바꾸기로 함

>chown ftp /var/ftp
   (소유주를 바꾸는 명령)

>chgrp ftp /var/ftp
   (그룹을 바뀌는 명령)


*사이트 루트는 쓰기 금지

download -> 다운로드 만 가능

upload -> 다운로드, 업로드

----------------------------아래 내용을 설정파일에 추가
<Directory upload>
    <Limit WRITE >
           AllowAll
    </Limit>
    <Limit READ>
           AllowAll
    </Limit>  
</Directory>

<Directory download>
    <Limit WRITE >
           DenyAll
    </Limit>
    <Limit READ>
           AllowAll
    </Limit>  
</Directory>

>chown ftp upload
>chown ftp download


/etc/ftpusers 파일에 지정된 사용자들은
                  FTP서버에 로그인이 안됨.
                (root도 포함되어 있음)

현재 만든 사용자계정
babo, john, user1

/home/babo
          john
          user1

ftp localhost 일반사용자만 가능

/etc/proftpd.conf 익명부분을 삭제후
   데몬재시작시
babo 계정 접속시 babo 해당 홈 디렉토리로 접속함

FTP 사용자지정

  (1) 계정만들고
useradd babo
useradd john
useradd user1
  (2) 익명 접속 불가하도록 설정 수정
vi /etc/proftpd.conf


.....
#<Anonymous ~ftp>
# User
# Group
MaxClients 50
...
DisplayLogin     welcome.msg
DisplayFirstChdir    .message
#</Anonymous>
...
이렇게 Anonymous 부분을 다 주석처리 진행
    이러면 익명 허용을 차단하는 효과를 지님

  (3) 쓰기권한 부여토록 설정 수정
<Limit WRITE>
 AllowAll
</Limit>
<Limit READ>
 AllowAll
</Limit>
위 권한을 추가해준다.

  (4) 데몬 재시작
>service proftpd restart

FTP 구현시 주의 사항

  (1) 일반사용자가 ftp 접속 후
       cd.. 명령시 root 까지 올라갈수 있음
       그걸 막자 (익명계정일 경우 문제 없음)

vi /etc/proftpd.conf
....
DefaultRoot ~   #이걸 주석 풀어줄 것
...

<Limit SITE_CHMOD>  #이것도 DenyAll 설정
   DenyAll
</Limit>

가상호스트 FTP서버 구현 -->VirtualHost

  (1) vi /etc/proftpd.conf
#맨 하단으로 이동, 아래 내용을 추가
..........
<VirtualHost  guest.hostion.co.kr> #or localhost
    ServerName    "Prot 2000 Anonymous FTP"
    Port               2000
    MaxClients      20
   
         <Anonymous /var/ftp>
               User    ftp
               Group  ftp
               UserAlias              anonymous ftp
               DisplayLogin         welcome.msg
               DisplayFirstChdir   .message
               <Limit WRITE READ>
                    AllowAll
               </Limit>
         </Anonymous>
</Virtualhost>

>vi /etc/hosts
.....
  192.168.0.100   guest.hostion.co.kr   #이부분 추가
wq:


>ping guest.hostion.co.kr    (확인용)
  ~~~잘뜸

  (2) 서비스 재시작
>service proftpd restart

  (3) 접속
>ftp localhost guest.hosting.co.kr 2000
~~~

댓글 없음:

댓글 쓰기