OS/Linux

2011.12.05 리눅스 FTP서버설정하기, DNS연동

에몽이ㅋ 2012. 1. 9. 21:59

간단하게 보면

1. vsftp설치

2. vsftp.conf설정

3. 로컬로그인을 위한 설정(/etc/pam.d/ftp와 /etc/ftpusers)

4. xinetd로 standalone에서 데몬으로 실행방법변경(/etc/xinetd.d/vsftpd)

5. DNS설정(/etc/resolv.conf변경, named.conf와 zone-file에 ftp부분추가 후 named재시작)

6. 테스트

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

1.vsftp설치(설치 시 필히 README 파일을 따라서 자신의 환경에 맞게 user추가하고 등등 잡다한거 해야한다.)

2./설치경로/vsftpd.conf 파일설정

 

vsftpd.conf 파일에 대한 참고 :
local_enable : 로컬사용자의 접속허가를 설정 <-- 설정을 해야 로컬사용자로 로그인가능

일단 여기까지 하면 FTP서버는 완료


3. 로컬로그인을 위한 설정!!

여기서 설치패키지안의 INSTALL파일안을 보면 


Step 6) Set up PAM for local logins (optional)

If you are running vsftpd on a PAM enabled machine, you will need to have a

/etc/pam.d/ftp file present, otherwise non-anonymous logins will fail. [NOTE -

if you have an older version of PAM, that file might be /etc/pam.conf]

For a standard setup, you can just copy a provided example file:


cp RedHat/vsftpd.pam /etc/pam.d/ftp

-------------------------------------------
이러한 게 있다. 한마디로 로컬로그인으로 로그인하려면(예를들어 root나 oracle(리눅스에 이 계정들이 만들어져있다고 가정한다)) vsftpd.pam파일이 해당 경로에 ftp파일로 복사가 되어있어야한다.

복사한 뒤에 /etc/pam.d/ftp 파일안에 보면  file=/etc/ftpusers    란 것이 보일 것이다. 
이 파일안에 접속을 허용하기 싫은 user를 적어주면 해당유저는 접속이 되지 않는다. 
(oracle  <---을 추가하면 oracle/oracle로는 접속이 안된다)
어쩃든 테스트하기 위해서 touch ftpusers로 빈 파일이라도 만들어 주자.

또한 64비트리눅스라면 /etc/pam.d/ftp파일안의 /lib/를 /lib64/로 바꾸어주자.


4. standalone 의 vsFTPd를 xinetd를 통해 사용자가 있을때만 메모리에 상주하도록 한다.

개념 

/설치경로/sbin/vsftpd &      는 standalone형태(계속 백그라운드에서 실행, 사용자가 없어도 계속 실행, 메모리 계속 사용) 이다.

 

이것을 xinetd타입의 서비스로 변경하면 사용자가 접속해있을때만 vsftpd를 실행하여 사용자가 없을때 메모리상주를 막을 수 있다.


------xinetd 설정 방법-----

1. vsftpd 서비스 중지(실행되고 있지 않아야한다)

2. /etc/vsftpd.conf  (설정에 따라 다른 디렉토리에 있을 수도 있다. ex. /etc/vsftpd/vsftpd.conf) 에서 

      110행쯤에 listen=YES ---> NO로 변경

3. /etc/xinetd.d/vsftpd 파일 수정

(원본파일 /다운받은패키지/xinetd.d/vsftpd 파일을 /etc/xinetd.d/vsftpd로 복사 후 수정)

      파일안에서 

server = /설치경로/sbin/vsftpd

disable = no  <=== yes 에서 no로 변경

로 수정한다.

4. service xinetd restart(xinetd 서비스 재시작)

5. pstree로 확인하면 사용자가 아무도 없다면 xinetd아래 하위서비스가 없을 것이다.

6. 파일질라로 접속한 후 pstree로 확인하면 하위서비스가 생성됨을 확인할 수 있다.


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

사실 여기까지만 해도 xinetd서비스가 실행되고 있다면 ftp프로그램을 이용하여 IP치고 리눅스서버로 직접 들어갈 수 있다.

하지만 여기서는 DNS를 사용해서 포워딩까지 해보기로 한다.



--------------------여기부터는 DNS 연동설정-------------------------------


5. /etc/resolv.conf에 DNS IP입력

(여기서는 DNS서버가 자신의PC(server104)에 이미 설정되있다고 생각한다.)

(ex. 172.16.7.104     or   192.168.20.128 등등 ifconfig후 해당 ip)

6. DNS서버에서 FTP서버 지정해주기

  ⓐ /bind설치경로/etc/named.conf에서

zone "server104" IN {
        type master;
        file "zone-server104";     
};       <----  추가

 

 ⓑ /존파일/zone-server104 생성후 편집

$TTL    3600
@       IN      SOA     ns.server104. root.server104.(
                2011120100      ;Serial
                84600           ;Refresh
                1800            ;Retry
                1209600         ;Expire
                84600 )         ;Minimum
        IN      A       172.16.7.104
        IN      NS      ns.server104.
www     IN      A      172.16.7.104
ns      IN      A       172.16.7.104
ftp     IN      A       172.16.7.104          <-------- ftp 추가

 

 ⓒ named.conf 수정했으니 DNS서버 재시작(kill named  --> ./named)


5,6 과정을 요약하자면 해당 zone파일에 ftp추가


7. 테스트하기
파일질라 받아서 DNS를 자신의 리눅스 서버IP로 변경 후 ftp.server104로 접속 후 아이디, 비밀번호 입력 후(root/passwd 아니면 자신이 생성한 id(oracle/oracle) 되는거 확인

 

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

여러 설정들이 복잡해 보이지만 대부분의 설정과 메뉴얼은 README를 참고한 것이니까 항상 README를 참고합시다.

additional 정리 :