728x90

 option

-l : 현재 crontab 에 의해 설정된 내용을 출력한다.

-e : crontab 의 내용을 작성하거나 수정한다.

-r : crontab 의 모든 내용을 삭제한다.

-u : root권한자가 해당사용자의 crontab 파일을 다룰때 사용한다.

 

 crontab 의 작업형식

5개의 날짜필드와 1개의 명령필드로 구성되어있다.

MM HH DD mm d  command

MM : 분을 의미한다 ( 0 ~ 59까지 사용)

HH : 시를 의미한다. ( 0 ~ 23 까지 사용)

DD : 날짜를 의미한다 ( 1 ~ 31까지 사용)

mm : 달을 의미한다.( 1 ~ 12까지 사용)

D : 요일을 의미한다.( 0 ~ 7 까지 사용, 0  7은 일요일을 나타낸다)

Command : 실행할 명령을 입력한다.

 

※ 참고

위 형식에서 시간을 나타내는 각 필드에서 와일드 카드 '*'를 사용할수 있고

각각의 요일을 구분할 때 ',' 를 사용하고 연일을 나타낼때는 '-'를 사용한다.

즉 월요일과 수요일은 '1,3' 월요일부터 금요일까지는 '1-5' 로 표시할수있다

각항은 space로 구분된다.

 

 cron 파일이 저장되는 장소

/var/spool/cron/사용자명 ( "/var/spool/cron/crontab/사용자명" 으로 되어 있을 수도 있다)

 

cron을 사용할 땐 crontab 이라는 명령을 이용해서 설정한다.

crontab의 형식은 다음과 같다.

 

 cron 사용자 제한

 /etc/cron.allow (허가목록)  /etc/cron.deny(거부목록) 을 참조하게된다.

1./etc/cron.deny 만 존재하는경우

→ 기본적으로 모든사용자가 사용가능하고 cron.deny 에 등록된 사용자만 사용 불가능하다.

2./etc/cron.allow 만 존재하는 경우

 cron.allow 파일에 등록된 사용자만 사용가능하다.

3. 두 파일 모두 없을경우

→ 모든 사용자가가능하다

4. 두 파일 모두 있을경우

 cron.deny 내용을 무시하고 cron.allow 명기된 사용자만 사용가능하다

 

▶ 예제

 

01 * * * * root run-parts /etc/cron.hourly : 매월 매일 요일상관없이 매시 01분마다 실행

02 4 * * * root run-parts /etc/cron.daily : 매월 매일 요일상관없이 4시 2마다 실행

22 4 * * 0 root run-parts /etc/cron.weekly : 매월 일요일마다 4시 22마다 실행

42 4 1 * * root run-parts /etc/cron.monthly : 매월 요일상관없이 1 4시 42마다 실행

1 12 14 * * find / -mtime -15 -print > /tmp/filelist.15

03,08,13,18,23,28,33,38,43,48,53,58 * * * * root run-parts /etc/cron.5min 5분마다 실행

*/1 * * * * root run-parts /etc/cron.file_save : 매분마다 실행

0 12 * * 1-5 /home/bluetree/start : 월요일부터 금요일까지 /home/bluetree/start 란 스크립트를 실행

0 12 1 1-12/2 * /home/bluetree/babo : 1월부터 12월까지 2개월마다 /home/blutree/babo 란 화일을 실행

0 4 * * 1,3,5 cat /root/notice | mail -s "notice" aaa@naver.com : ,, 오전 4 notice 라는 문서의 내용을 메일로 발송한다.

 

다른 명령도 추가 해주고 싶을 땐 ";" 로 구분해서 ";" 뒤에 명령을 더 달아 주면 됩니다.

출처 : http://blog.naver.com/jecu7/150009037578

728x90

'Programming > linux왕초보' 카테고리의 다른 글

shell programming - 명령어  (0) 2008.09.11
crontab 사용  (0) 2008.09.11
네트워크 모니터링  (0) 2008.09.10
실행중인 리눅스 관리하기  (0) 2008.09.10
리눅스 gcc 설치 방법  (0) 2008.09.10
리눅스에서 압축파일 다루기  (0) 2008.09.10
iptables  (0) 2008.09.10
vsftp 설정 옵션  (0) 2008.09.10
vsftpd 설치하기  (0) 2008.09.10
RPM으로 패키지 관리하기  (0) 2008.09.10
728x90

리눅스에서 압축파일 다루기


 

리눅스는 파일을 압축하거나 묶는 많은 방법을 제공합니다. 
윈도우의 편한(?) 환경은 아니지만, 유닉스의 기본 철학 '작은 것이 아름답다'는 정신을 이어 받아 여러 프로그램이 엮어져서 사용됩니다.

리눅스에서는 디렉토리나 여러 파일들을 압축하기 위해서 파일들을 묶고 압축하는 순서로 합니다. 물론, 하나의 파일을 할 경우에는 바로 압축을 하면 됩니다. 리눅스에서 압축 방법은 소프트웨어를 설치하거나 업그레이드 할 때와 시스템을 백업하는데 사용되므로, 반드시 익혀두시기 바랍니다.


tar를 이용하여 파일들을 하나로 묶기

앞에서 리눅스에서 여러 파일들을 압축하기 위해서는 파일들을 묶어야 한다고 했습니다.
이러한 역할을 하는 프로그램이 바로 tar 입니다. tar 은 단순히 여러 파일들을 묶어서 하나의 덩어리로 만드는 작업을 하며, 압축의 효과는 없습니다. 그러므로, 다음에 소개할 압축 프로그램들로 이 덩어리 파일을 압축하면 됩니다. 한가지 주의 할 점은,  tar 사용할 때 반드시 f 옵션을 사용하여 대상 파일을 지정해야 한다는 것입니다. 그래야 다른 옵션을 사용할 때 대상 파일을 사용할 수 있습니다.

 

     사용법 :  tar   <옵션>  <만들 파일이름>  <묶을 파일이름>

옵 션

설   명

-c

tar 파일을 만들때 사용합니다.

-x

묶여진 tar 파일을 해체할 때 사용합니다.

-v

파일들을 묶거나 해체할 때 파일들의 이름과 크기를 표시합니다.

-f

사용할 tar 파일을 지정합니다.

-t

묶여진 tar 파일의 내용물을 출력합니다.

* 위의 옵션들은 -cvf 와 같이 이어서 사용할 수 있습니다. 더 자세한 옵션을 알고 싶다면 tar --help 하세요.


      tar 의 사용방법은 몇가지 예제로 알아 보도록 하겠습니다.

예  제

설  명

tar -xvf example.tar example.tar의 파일들을 해체하고 해체되는 파일들을 표시합니다.
tar -cvf backup.tar /home/ftp/pub /home/ftp/pub 디렉토리와 그 안의 파일들을 backup.tar 이름으로 묶습니다.
tar -tvf example.tar example.tar 안에 묶여있는 파일들의 리스트를 표시합니다.

 

[tar 사용 화면]

사용자 삽입 이미지

 

gzip 사용하기

가장 인기있는 압축 방법은 gzip 을 사용하는 것입니다. 
gzip 파일은, 확장자 .gz 으로 구분할 수 있으며,  gzip 파일의 압축을 해제 하려면, 단순히 gunzip <파일이름.gz> 라고 입력하거나 gzip -d <파일이름.gz> 과 같이 합니다.  gzip 으로 압축된 tar 파일의 확장자는 tgz 일때도 있습니다. 이러한 파일의 압축을 해제하고 아카이브를 푸는 방법에는 두 가지가 있습니다.  .tgz 파일에 대해 gunzip 을 실행한 다음 tar를 실행하여 파일을 푸는 방법과  tar 명령에서 옵션 z를 사용하여 두 가지 작업을 한꺼번에 하는 것입니다. gzip 으로 압축명령을 실행하면 압축을 하는 대상파일은 삭제되며 또한 gzip으로 압축을 푸는 경우에는 압축 되었던 파일이 삭제됩니다.

사용법 :  gzip  <옵션>  <파일이름>

압축하기 gzip cvs.pdf
압축풀기 gzip -d cvs.pdf.gz 또는 gunzip cvs.pdf.gz
-l gzip으로 압축된 파일의 정보를 출력합니다.
-1 빠르게 압축을 하는 대신에 압축율이 떨어집니다.
-9 압축률이 높은 대신 압축시간이 길어집니다.

 

bzip2 사용하기

bzip2 는 gzip 보다 10%-20% 정도 압축률이 훨씬 뛰어나서 빠르게 인기를 얻고 있습니다. 
bzip2 압축은 bz2 파일 확장자로 알 수 있으며, 
단순히 bunzip2 <파일이름.bz2>라고 입력하여 압축을 해제할 수 있습니다. 
또한 gzip 압축과 마찬가지로 tar 에서 j 옵션(tar-1.13 이하는 I -대문자 i)을 사용하여 압축을 해제 할 수 있습니다. tar xvfj <파일이름.tar.bz2> 와 같이 사용합니다. gzip과 마찬가지로 bzip2으로 작업하면 대상파일은 작업 후 삭제됩니다.

사용법 :  bzip2    <옵션>   <파일이름>

압축하기 bzip2   cvs.pdf
압축풀기 bzip2   -d   cvs.pdf.bz2    또는   bunzip2 cvs.pdf.bz2


아래 화면은 gzip와 bzip2의 압축률을 비교한 화면입니다. 
test-1.pdf.gz 은  gzip의 -1 옵션을 test-9.pdf.gz 는 gzip의 -9 옵션을 사용한 결과입니다. 
bzip2가 가장 높은 압축률을 보여주고 있습니다.

[gzip 와 bzip2의 압축률 비교]

사용자 삽입 이미지


마지막으로, compress 명령을 사용하는 유닉스의 오래된 압축 포멧이 있습니다. 
이 포맷의 파일은 더 이상 보기 힘들지만, 여전히 어딘가에서 마주칠 때가 있습니다. 파일 이름에 .Z 확장자가 있으면 compress 유틸리티로 압축한 것임을 알 수 있습니다. 
이러한 파일의 압축을 해제 하려면 uncompress <파일이름.Z> 을 사용합니다.

 

tar 와 gzip, bzip2 같이 사용하기

여러개의 파일들을 하나로 묶어 압축하는 데 상당히 귀찮음을 알게 되었을 것입니다. 
이러한 작업들을 tar의 확장옵션을 사용하여 더 간편하게 할 수 있습니다.

먼저, 필자가 경험한 한가지 좋은 습관을 알려드리겠습니다. 
여러개의 파일들을 묶어 압축을 하기 전에 디렉토리를 만들어 그 안에 파일들을 옮긴 후 압축하는 것이 좋습니다. 이렇게 하면 압축을 풀었을 경우, 다른 파일들은 섞이지 않게 되므로, 좀 더 파일들을 관리하기가 편하게 됩니다.

가령, junilove라는 사용자가 2001년 5월 23일에 다운로드한 pdf 파일들을 압축한다고 했을 경우, 그냥 묶어서 압축하는 경우보다 junilove_20010523_pdf 와 같이 짧고 쉽게 알아 볼 수 있도록 디렉토리를 만들어서 하는 것이 나중에 관리하는데 더 편리합니다.


이제 실제 tar의 확장옵션을 사용하여 압축을 하고 해제하는 방법을 알아 보겠습니다.


◆  tar로 묶어서 gzip으로 압축된 파일 풀어보기

가장 많이 사용되는 형식입니다. 이렇게 압축된 파일은 tar.gz 또는 tgz 과 같은 확장자 형식을 지니며 아래와 같이 간편하게 풀 수 있습니다.

    tar  xvfz  test.tar.gz

tar 로 묶고 bzip2로 압축된 파일은 tar.bz2 와 같은 확장자 형식을 가지며 다음과 같이하여 풀면 됩니다.

    tar  xvfj   test.tar.bz2

[gzip와 bzip2 압축 푸는 화면]

사용자 삽입 이미지

 

 tar로 묶고 gzip으로 압축해 보기


tar 의 확장옵션을 사용하여 편하게 압축을 해보겠습니다. 
tar 에서 압축하는 옵션이 c 옵션과 gzip 을 수행할 수 있는 z 옵션을 사용하면 됩니다.

tar  cvfz  example.tar.gz  example_dir

bzip2로 압축하고 싶다면, z 옵션 대신에 j 옵션(tar-1.13 이하는 I -대문자 i)을 사용하여 bzip2 가 수행되도록 하면 됩니다.

tar  cvfj  example.tar.bz2  example_dir

 

[gzip과 bzip2로 압축하는 화면]


 

zip, arj, rar 압축 파일들 풀어보기

Windows/Dos 에서 많이 사용되었던 압축 포멧인 zip, arj, rar 등의 파일들을 리눅스에서 사용할 수 있습니다. 다만, 압축을 할 수 없지만 해제할 수는 있습니다. 가장 많이 볼 수 있는 것은 zip 형식입니다. 이러한 해제 프로그램들은 rpmfind.net 에서 rpm 패키지를 다운로드 받을 수 있으며, 소스 또한 다운로드 할 수 있습니다. zip과 rar 의 경우에는 쉐어웨어 형태로 압축 프로그램까지 개발되고 있습니다.

unzip unzip 5.41
unarj unarj 2.43
unrar unrar 2.71

[unzip 실행화면]

사용자 삽입 이미지
 

요즘 국내에서 가장 많이 사용되고 있는 국산 압축 프로그램들의 멀티볼륨 압축은 리눅스에서 어떨까요? 
알집, 지펜놀등을 이용하여 멀티볼륨 압축을 한 ZIP, Z00, Z01... 이런 압축은 리눅스에서 압축을 해제할 수 없습니다. 개발사에서 리눅스용 해제 프로그램을 만들어주기 전까지 기달려야 합니다. : (

 

MC 에서의 압축파일

미드나잇 커맨더(MC)에서도 압축파일을 쉽게 관리할 수 있습니다. 
MC에서는 ZIP, tar.gz, tgz, tar.bz2 등을 지원하며 원하는 파일에서 Enter 키를 누르면 압축파일 내용이 보입니다. 여기서 원하는 파일을 선택하여 F5를 눌러 원하는 디렉토리를 입력하면 자동으로 대상 디렉토리에 압축이 풀리게 됩니다.

[MC 에서 압축 풀기]

사용자 삽입 이미지
 


참고자료

gzip 홈페이지

bzip2 홈페이지

러닝 리눅스 제 3판

Linux@Work 5월호 기사


글쓴이 : 이종준님  ( junilove@kebi.com )  "Open mind and don't mind!"


출처 :  http://www.wowlinux.com

728x90

'Programming > linux왕초보' 카테고리의 다른 글

crontab 사용  (0) 2008.09.11
네트워크 모니터링  (0) 2008.09.10
실행중인 리눅스 관리하기  (0) 2008.09.10
리눅스 gcc 설치 방법  (0) 2008.09.10
CRON  (0) 2008.09.10
iptables  (0) 2008.09.10
vsftp 설정 옵션  (0) 2008.09.10
vsftpd 설치하기  (0) 2008.09.10
RPM으로 패키지 관리하기  (0) 2008.09.10
NFS 마운트 (NAS장비)  (0) 2008.09.10
728x90

1. iptables의 개요
리눅스커널 2.4버전에서 사용하는 방화벽이다. 리눅스커널 2.2버전에서는 ipchains를 사용하였는데 원리와 구조 등 전반적으로 비슷하다.


2. iptables 사용하기
(1) 개요: iptables는 구버전의 ipchains와 같이 사용할 수 없으므로 확인하여 ipchains가 모듈로 올라와 있으면 모듈을 제거해야 한다.
(2) 모듈의 확인
   [root@mybestone /root]# lsmod
   Module                  Size  Used by
   autofs                 11296   1  (autoclean)
   8139too                16512   2  (autoclean)
   ipchains               39360   0  (unused)
   usb-uhci               20752   0  (unused)
   usbcore                49728   1  [usb-uhci]
     => 현재 ipchains의 모듈이 올라와 있다. 이 경우에는 iptables를 사용할 수 없다.
(3) 모듈의 제거 및 iptables의 실행
   [root@mybestone /root]# rmmod ipchains
     => 모듈을 제거한다.
   [root@mybestone /root]# lsmod
   Module                  Size  Used by
   autofs                 11296   1  (autoclean)
   8139too                16512   2  (autoclean)
   usb-uhci               20752   0  (unused)
   usbcore                49728   1  [usb-uhci]
    => 모듈이 제거되었음을 알 수 없다.
   [root@mybestone /root]# iptables -L
   Note: /etc/modules.conf is more recent than /lib/modules/2.4.2-3/modules.dep
   Chain INPUT (policy ACCEPT)
   target     prot opt source               destination

   Chain FORWARD (policy ACCEPT)
   target     prot opt source               destination

   Chain OUTPUT (policy ACCEPT)
   target     prot opt source               destination
    => iptables 명령이 실행된다.

3. iptables의 기본구조
(1) 개요: iptables는 크게 2개의 테이블로 나눌 수 있다. 하나는 필터링을 하는 filter라는 테이블이고, 또 다른 하나는 nat 라는 테이블이다. filter라는 테이블을 기본적으로 생략가능하고, nat는 네트워크의 주소를 변환할 때 사용하는 테이블을 -t 옵션을 이용하면 명기해야 한다. 기본 필터링은 논리적인 3개의 사슬(chains)으로 구성되어 있고, 각각 INPUT, OUTPUT, FORWOARD 라는 이름을 가지고 있다. 또한 사용자가 정의하여 새로운 사슬도 생성할 수 있다.(기본 사슬의 이름은 대문자이다.)
(2) 구성
   1) INPUT 사슬  : 리눅스박스를 향해 들어오는 패킷들이 거치는 체인
   2) FORWARD 사슬: 리눅스박스를 거쳐 output체인을 향하는 체인
   3) OUTPUT 사슬 : 리눅스박스를 나가는 패킷들이 들어가는 체인
(3) 기본문법
   1) 기본문법
     iptables [-t table] action chain pattern [-j target]
   2) 항목설명
    ㄱ. table : 크게 nat와 filter로 나누며, 기본값일 filter이므로 filter인 경우에는 생략한다.
    ㄴ. action : 전체 사슬에 대한 정책을 지정한다. -A, -L, -D, -F 등 대문자 옵션이 이에 해당한다.
    ㄷ. chain: 일반적인 필터링에 속하는 INPUT, OUTPUT, FORWARD가 있으며, nat 테이블에는 POSTROUTING, PREROUTING, OUTPUT 이 있다.
    ㄹ. pattern: 세부규칙을 지정하는 것으로 소문자 옵션(-s, -p, -d 등)이 이에 해당한다.
    ㅁ. target: 정책을 지정하는 것으로 DROP, ACCEPT, LOG 등이 해당한다.

4. iptables의 정책
(1) 개요: iptables의 정책이라는 것은 패킷을 어떻게 처리할 것인지를 말한다. 패킷의 처리는 크게 거부할 것이냐 허가할 것이냐 두가지이지만, 세부적으로는 ACCEPT, DENY, DROP으로 관리한 다.
(2) 기본정책
   1) ACCEPT : 패킷을 허용하는 옵션이다.
   2) DENY   : 패킷을 허용하지 않는다는 메시지를 보내면서 거부한다. 사슬 전체정책설정(-P)에서 는 사용할 수 없다.
   3) DROP   : 패킷을 완전히 무시한다.

5. iptables 사용하기(1) - 사슬에 대한 사용
(1) 개요: iptables는 조작하는 방법은 크게 두가지로 나눌 수 있다. 첫번째는 전체 사슬에 대한 
          설정이고 두번째는 각 사슬에 대한 규칙을 조작하는 방법이다. 참고로 사슬에 대한 동작 
          설정은 대문자옵션(-P, -L 등)을 사용하고 사슬에 대한 세부규칙은 소문자옵션( -s,-p 등)
          을 사용한다.
(2) 사용법
   1) 전체사슬에 대한 작동
     -N: 새로운 사슬을 만든다.
     -X: 비어있는 사슬을 제거한다. (3개의 기본 사슬은 제거할 수 없다.)
     -P: 사슬의 정책을 설정한다.
     -L: 현재 사슬의 규칙을 나열한다.
     -F: 사슬으로부터 규칙을 제거한다.
     -Z: 사슬내의 모든 규칙들의 패킷과 바이트의 카운트를 0으로 만든다. 
   2) 사슬 내부의 규칙에 대한 작동
     -A: 사슬에 새로운 규칙을 추가한다.(--append) 해당 사슬에 맨 마지막 규칙으로 등록된다.
        -사슬과 규칙
         INPUT, FORWARD: -t가 filter인 경우 사용가능
         POSTROUTING, PREROUTING: -t가 nat인 경우 사용가능
         OUPTUT: 양쪽 다 사용가능
     -I: 사슬에 규칙을 맨 첫부분에 삽입한다.
     -R: 사슬의 규칙을 교환한다.
     -D: 사슬의 규칙을 제거한다.

6. iptables 사용하기(2)- 필터링지정

(1) 개요: 세부옵션을 사용하여 좀더 자세한 규칙을 정할 수 있다.
(2) 옵션과 관련된 규칙
   1) -s(발신지) -d(도착지)의 사용
    ㄱ. 개요: 발신지('-s','--source','--src')와 도착지('-d','--destination','--dst')를 지정한
             다. 보통 IP주소를 표현하는 방법은 4가지가 있다.
    ㄴ. 표현법
      a. 도메인으로 표기하기 
        예) -s www.linux.ac.kr, -d localhost
      b. IP주소를 표기하기
        예) -s 192.168.0.2
      c. Netmast값을 이용한 표기(1)
        예) -s 192.168.1.0/24 : 192.168.1.0 ~ 192.168.1.255
            -s 192.168.0.0/16 : 192.168.0.0 ~ 192.168.255.255
      d. Netmast값을 이용한 표기(2)
        예) -s 192.168.1.0/255.255.255.0
            -s 192.168.0.0/255.255.0.0
    ㄷ. 사용예
       iptables -A INPUT -s 0/0 -j DROP
        => 모든 IP주소(0/0) 로부터 들어오는 패킷들을 모든 DROP한다.
   2) -j의 사용
    ㄱ. 개요: 특정한 정책(ACCEPT, DROP, DENY, REDIRECT 등)을 설정한다.
    ㄴ. 사용예
       iptables -A INPUT -s 192.168.1.20 -j DROP
        => 192.168.1.20으로 부터 들어오는 모든 패킷에 대해 거부한다.
   3) !('not'을 의미)의 사용
    ㄱ. 개요: 아닌 NOT의 의미로 사용된다.
    ㄴ. 사용예
       -s ! localhost
        => localhost로부터 오는 패킷이 아닌경우를 나타낸다.
   4) -p(프로토콜)의 사용
    ㄱ. 개요: 프로토콜을 지시할 때 사용한다. 보통 TCP, UDP, ICMP같은 이름들이 사용된다. 대소문
             자를 구별하지 않는다. '!'(not)과도 같이 사용된다.
    ㄴ. 사용예
       -p ! TCP
        => TCP 프로토콜이 아닌경우를 나타낸다.
   5) -i 사용
    ㄱ. 개요: '-i'('--in-interface')는 패킷이 들어오는 인터페이스를 지정하는데 사용된다. 즉 
             -i는 INPUT과 FORWARD 사슬에 사용된다.
    ㄴ. 참고: -t가 nat이면 PREROUTING에서만 지정가능하고 인터페이스명 앞에 "!"를 추가하면 그
             장치는 제외한다는 의미가 된다. 뒤에 "+"를 추가하면 그 이름으로 시작하는 모든 장치
             를 의미한다. 디폴트가 +이다.
   6) -o의 사용
    ㄱ. 개요: '-o'('--out-interface')는 패킷이 나가는 네트워크장치를 지정한다. 보통 OUTPUT,
             FORWARD사슬에 사용된다.
    ㄴ. 참고: -t nat이면 POSTROUTING에서만 지정가능하다. "!"과 "+"은 -i와 동일하다.
   7) -t(--table)
    ㄱ. 개요: table을 선택한다. filter, nat, mangle 세가지 선택이 있다. 커널에 해당 테이블을 
             지원하는 코드가 들어 있어야 한다. 모듈 자동적재를 선택하면 그와 관련된 커널 모듈
             이 적재된다. 디폴트는 filter이므로 nat를 사용하려면 필히 nat라고 지정해야 한다.
    ㄴ. 사용예
       -t nat

7. iptables의 확장
(1) 개요: ipchains에서 간단하게 적용되던 -p같은 프로토콜관련 옵션들의 기능들이 세부적인 사항
          들을 설정할 수 있도록 추가적인 옵션이 제공된다.
(2) tcp의 확장
   1) 설명: 기본 -p tcp(또는 --protocol tcp)가 지정되고 추가로 사용할 수 있는 옵션이 제공된다.
   2) 사용법
     -p tcp [옵션]
   3) 옵션
     --source-port: 발신지에서의 하나의 포트나 포트범위를 지정한다. 보통 /etc/services에 기록
                   된 것과 같은 포트 이름이 사용될 수 있고 숫자로 나타낼 수 있다. 범위를 표시
                   하기 위해 '-'를 사용할 수 있다.
     --sport: --source-port 옵션과 같다.
     --destination-port: 도착지 포트를 지정한다.
     --dport: --destination-port 옵션과 같다.
     --tcp-flags : tcp에서 발생하는 flag를 지정하는 옵션이다. 보통 두개의 단어를 사용하는 
                  첫번째 것은 검사하고자 하는 지시자 리스트를 적고, 두번째 단어는 지시자에게
                  어떤 것이 설정될 것인지를 지정한다.
       예) iptables -A INPUT --protocol tcp --tcp-flag ALL SYN, ACK -j DENY
          => 모든 flag들이 검사되지만 (여기서 ALL은 SYN, ACK, FIN, RST, URG, PSH와 같다.) SYN
            과 ACK만 거부로 설정된다. 
     --syn : --tcp-flags SYN, RST, ACK를 줄여서 사용하는 옵션이다. ! 가 앞에 선행될 수 있다.
     --tcp-option 숫자 : 숫자와 tcp옵션이 같은 경우의 패킷을 검사한다. tcp옵션을 검사하려 할때
                        완전한 TCP 헤더를 갖지않는 것은 자동으로 DROP된다.
   4) 참고
     TCP 프로토콜은 두 시스템간의 접속을 위해서 3-way handshaking이라는 것을 한다. 즉 A라는 
    시스템이 B라는 시스템에 접속을 요청(SYN패킷)하면 B라는 시스템은 응답패킷(ACK)을 보내고 
    다시 A라는 시스템이 응답패킷(ACK/SYN)을 보내면 접속을 이루어진다. 이러한 기법을 이용하면 
    특정한 곳으로 부터 오는 접속 시도를 패킷만 불가능하게 만듬으로써 접속이나 요청등을 거부할 
    수 있다.
      예) -p tcp -s 192.168.1.3 --syn
         => 192.168.1.3으로부터 오는 SYN패킷을 의미한다. 
(3) udp의 확장: -p udp(또는 --protocol udp)로 지정하고 '--source-port','--sport','--destinati
                on-port','-dport'를 지원한다.
(4) icmp의 확장
   1) 설명: -p icmp(또는 --protocol icmp) 뒤에 --icmp-type만 추가옵션으로 지원한다.
   2) 사용법
     -p icmp --icmp-type [추가명령]
   3) 참고
     icmp-type관련 추가명령은 iptables -p icmp --help하면 볼 수 있다.
   

8. iptables 간단한 실습하기
(1) 정책세우기 
   예) 127.0.0.1(loopback) 이라는 IP주소로부터 오는 ping패킷(ICMP패킷) 무시하기
     => (분석)
       프로토콜: ICMP
       발신주소: 127.0.0.1
       목표(target): DROP
(2) 현재 정책의 확인
   [root@mybestone /root]# iptables -L
   Chain INPUT (policy ACCEPT)
   target     prot opt source               destination

   Chain FORWARD (policy ACCEPT)
   target     prot opt source               destination

   Chain OUTPUT (policy ACCEPT)
   target     prot opt source               destination
    => 현재 어떠한 정책도 설정되어 있지 않다.
(3) 정책설정하기
   1) ping 테스트하기
     [root@mybestone /root]# ping localhost
     PING localhost.localdomain (127.0.0.1) from 127.0.0.1 : 56(84) bytes of data.
     Warning: time of day goes back, taking countermeasures.
     64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=0 ttl=255 time=86 usec
      => 현재 ping이 된다.
   2) 정책설정하기
     [root@mybestone /root]# iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP
     [root@mybestone /root]# ping -c 1 localhost
     PING localhost.localdomain (127.0.0.1) from 127.0.0.1 : 56(84) bytes of data.

     --- localhost.localdomain ping statistics ---
     1 packets transmitted, 0 packets received, 100% packet loss
      => ping이 되지 않는다.
   3) 현재 정책의 확인
     [root@mybestone /root]# iptables -L
     Chain INPUT (policy ACCEPT)
     target     prot opt source               destination
     DROP       icmp --  localhost.localdomain  anywhere

     Chain FORWARD (policy ACCEPT)
     target     prot opt source               destination

     Chain OUTPUT (policy ACCEPT)
     target     prot opt source               destination
(4) 정책지우기
   1) 번호로 지우기
    ㄱ. 개요: iptables -L 했을 때 리스트를 보면 각 정책(현재는 INPUT만 설정)의 리스트번호가  위에서부터 차례로 1,2,3,.번호가 설정되었다고 생각하면 된다. 그러므로 현재는  INPUT중에서 1번만 설정되었다.
    ㄴ. 사용예
       [root@mybestone /root]# iptables -D INPUT 1
         => INPUT사슬의 1번규칙을 삭제한다.
   2) 전체명령으로 지우기
    ㄱ. 개요: 원래 설정한 명령에서 -A 대신에 삭제옵션인 -D를 사용하면 된다.
    ㄴ. 사용예
       [root@mybestone /root]# iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP
    ㄷ. 정책의 확인
       [root@mybestone /root]# iptables -L
       Chain INPUT (policy ACCEPT)
       target     prot opt source               destination

       Chain FORWARD (policy ACCEPT)
       target     prot opt source               destination

       Chain OUTPUT (policy ACCEPT)
       target     prot opt source               destination
   3) -F 옵션이용하기
    ㄱ. 설명: -F옵션은 전체 사슬에 대한 규칙을 제거하거나 특정사슬의 규칙을 전부 제거할 수 있다.
    ㄴ. 사용예
      a. [root@mybestone /root]# iptables -F
           => 전체 사슬에 대한 규칙을 제거한다.
      b. [root@mybestone /root]# iptables -F INPUT
           => INPUT사슬에 부여된 규칙을 전부제거한다.

9. 응용예
(1) 들어오는 패킷 모두 거부하고 192.168.0.2로 부터 들어오는 모든 패킷들에 대해서만 허가하기
    iptables -P INPUT DROP
      => 전체 사슬중에 INPUT에 대한 전체정책(-P)를 DROP하면 된다.
    iptables -A INPUT -s 192.168.0.2 -j ACCEPT
      => 도착지에 대한 명기를 하지 않으면 현재서버를 말하며, 프로토콜을 명기하지 않으면 모든 프로토콜이라고 여긴다.
(2) 들어오는 모든 패킷들 허가하고 192.168.1.18로 부터 들어오는 모든 패킷들에 대해서 거부하기
    iptables -P INPUT ACCEPT
    iptables -A INPUT -s 192.168.1.18 -j DROP
(3) 192.168.4.40으로 들어오는 패킷중에서 tcp프로토콜관련 패킷만 거부하기
    iptables -A INPUT -s 192.168.4.40 -p tcp -j DROP
      => tcp기반 서비스인 텔넷등을 이용할 수 없다. 그러나 ping같은 icmp프로토콜을 사용하는  패킷은 허가된다.
(4) 포트번호 22번부터 30번까지를 목적지로 들어오는 패킷들을 막고 텔넷포트인 23번포트만 허용 하기
     iptables -A INPUT -p tcp --dport 22:30 -j DROP
     iptables -A INPUT -p tcp --dport 23 -j ACCEPT
       => iptables에서 세부규칙은 먼저 등록된 것이 효력을 발생한다. 즉 현재의 정책설정은 
         포트에 대한 거부를 먼저 설정하였기 때문에 다음행에 23번포트를 허가해도 효력이 없다.  제대로 설정하려면 다음과 같이 순서를 바꿔야 한다.
     iptables -A INPUT -p tcp -dport 23 -j ACCEPT
     iptables -A INPUT -p tcp --dport 22:30 -j DROP

10. iptables의 규칙 저장하고 불러오기
(1) 개요: 원하는 대로 방화벽 사슬을 설정해 놓은 후, 그 설정을 저장하여 설정된 내용을 불러올 수 있다. 이 때 저장하는 명령이 iptabless-save라는 스크립트이고, 불러오는 명령은   iptables-restore이다.
(2) iptables-save
   1) 설명: 설정한 내용을 저장하는 스크립트이다.
   2) 사용법
     iptables-save > 파일명
   3) 사용예
    ㄱ. iptables-save >firewall.txt
       => 현재 설정을 firewall.txt라는 파일로 저장한다.
    ㄴ. iptables-save -v
       => 저장한 내용을 화면에 출력한다.
(3) iptables-restore
   1) 설명: iptables-save로 저장한 사슬을 복구하는 스크립트이다.
   2) 사용법
     iptables-restore < 파일명


11. iptables와 ipchains의 차이점
(1) 미리 생성되어 있는 3개의 체인이름이 소문자에서 대문자로 바뀌었다.
   input, output, forward => INPUT, OUTPUT, FORWARD
(2) -i 지시자는 들어오는 인터페이스만 의미하고 입력과 포워드 체인에서만 작동한다. 포워드나 출력체인에 사용되었던 -i는 -o로 바꿔야 한다.
(3) 기존에 단독으로 사용되었던 -p tcp 등이 --source-port등의 추가옵션과 함께 사용된다.
(4) TCP -y 옵션은 --syn으로 바뀌었고, '-p tcp' 다음에 와야 한다.
(5) DENY target이 DROP으로 바뀌었다.
(6) 만들어진 체인을 '0'으로 하면 정책카운터도 지워진다.
(7) REJECT와 LOG는 확장된 target이다. 
(8) 체인 이름이 16자 까지 가능하다.
(9) MASQ와 REDIRECT는 더 이상 target이 아니다. iptables는 패킷을 변화시키지 않는다. 이것은 NAT라는 하부구조가 있다.

출처 : http://blog.naver.com/cisluser/10009911255

728x90

'Programming > linux왕초보' 카테고리의 다른 글

네트워크 모니터링  (0) 2008.09.10
실행중인 리눅스 관리하기  (0) 2008.09.10
리눅스 gcc 설치 방법  (0) 2008.09.10
CRON  (0) 2008.09.10
리눅스에서 압축파일 다루기  (0) 2008.09.10
vsftp 설정 옵션  (0) 2008.09.10
vsftpd 설치하기  (0) 2008.09.10
RPM으로 패키지 관리하기  (0) 2008.09.10
NFS 마운트 (NAS장비)  (0) 2008.09.10
리눅스 CD 부팅법  (0) 2008.09.10
728x90
################################################################################################
# Daemon Name : VsFTPD #
# Description : Very Secure FTP Daemon #
# Version : 1.0.1 #
# Manual License : Hyeok-Jung, KIM (Nick. 티니) #
# WebSite : LTN(Linux.Tini4u.Net) #
# Contact E-Mail : sky (at) tini4u.net #
# LastUpdate : 2007. 01. 28. #
# Message : 잘못된 내용이 있으면 위 메일주소로 연락주시기 바랍니다. #
################################################################################################
#
#
####################################### Global Settings ########################################
## VsFTPd의 전체 설정 입니다. ##
################################################################################################
#
############################## 기본 설정 ##############################
#
## VsFTP 데몬을 background로 실행할 것인지 설정 합니다. (기본값 = NO)
## => VsFTP 데몬은 기본적으로 inetd 모드로 동작이 됩니다. 따라서 독립모드(standalone)로
## 데몬을 운영하실 거라면 이 옵션과 listen 옵션을 모두 YES로 켜주셔야 됩니다.
## 반대로 VsFTP 데몬을 inetd 모드로 운영하시려면 이 옵션과 listen 옵션을 비활성화 하시면 됩니다.
## 일반적으로 FTP 데몬은 많은 접속이 있을 경우에 standalone 모드로 운영하는것이 좋으며,
## 많은 접속이 없는 경우에는 inetd 모드로 운영하는것이 시스템 자원효율에 좋습니다.
background=YES

## background 옵션과 같이 사용되며, 이 옵션은 listen_port에서 들어오는 요청에 대해서
## 데몬이 요청을 받아드릴지에 대해 설정합니다. (기본값 = NO)
## => 만약 데몬을 독립모드(standalone)로 운영하실 거라면 background 옵션과 같이 이 옵션도
## 함께 활성화 시켜야 됩니다.
listen=YES

## listen 옵션과 동일하지만, IPv6에서 운영할 때 사용 합니다. (기본값 = NO)
## => 일반적으로 IPv6는 사용하지 않으므로 비활성화 하시면 됩니다.
listen_ipv6=NO

## VsFTP 데몬이 독립모드(standalone)로 동작할 때 사용할 포트를 지정합니다. (기본값 = 21)
listen_port=21

## 멀티 FTP 데몬을 사용할 때 요청을 받아드릴 IP를 설정합니다. (기본값 = none)
## => 이 옵션은 multi-homed의 설정을 참조하시기 바랍니다.
#listen_address=none

## listen_address와 동일하며 IPv6에서 운영할 때 사용 합니다. (기본값 = none)
#listen_address6=none

## NAT를 사용하는 클라이언트의 공용 IP를 설정할 때 사용 합니다. (기본값 = none)
## => 일반적으로 설정하지 않아도 상관 없습니다.
#pasv_address=none

## VsFTPd가 구동될 서버의 유저를 설정합니다. (기본값 = nobody)
nopriv_user=nobody

## FTP 서버에 접속할 수 있는 클라이언트의 최대수를 제한하는 옵션 입니다. (기본값 = 0)
## => 기본값인 0으로 설정하면 제한을 두지 않습니다.
max_clients=100

## IP당 접속할 수 있는 최대수를 제한하는 옵션 입니다. (기본값 = 0)
## => 기본값인 0으로 설정하면 제한을 두지 않습니다.
max_per_ip=30

## 계정 사용자의 최대전송률을 지정합니다. (기본값 = 0)
## => 업/다운로드의 속도를 제한할때 사용하며, 단위는 bps 입니다.
local_max_rate=0

## 한번에 전송될 크기를 지정합니다. (기본값 = 0)
## => 이 옵션은 전송할 파일을 지정한 단위로 나눠서 전송하도록 하는 옵션입니다.
## rate 옵션과 밀접한 관계가 있으며, 기본값인 0으로 설정하면, vsftpd가 알아서 판단하므로
## 되도록이면 수정하지 않는것이 좋습니다.
## vsftpd의 제작자 또한 이 옵션을 따로 수정할 이유가 없을 것이라고 말하고 있습니다.
trans_chunk_size=0

## 서버의 FTP 데몬시간을 서버의 표준시간으로 고정할지 설정합니다. (기본값 = NO)
## => 만약 이 옵션을 비활성화 하게되면 표준시각(GMT)를 보여주므로, 한국의 경우 9시간의 오차가 발생합니다.
use_localtime=YES

## 프로토콜의 현재 상태를 출력해줄 것인지 설정합니다. (기본값 = NO)
## => 이 옵션을 활성화하면 ps 명령어를 사용했을때 세션의 현재 상태도 보여줍니다.
## 또한 LTN에서 제공하는 ftpwho 스크립트를 사용할 때에도 이 옵션을 활성화 하셔야 됩니다.
setproctitle_enable=YES

## 특정 사용자의 개별 설정 파일을 지정합니다. (기본값 = none)
## => 이 옵션을 사용하면 /etc/vsftpd/vsftpd.conf의 지시문을 무시하고 사용할 수 있습니다.
#user_config_dir=none
#
############################## 접속 설정 ##############################
#
## 계정 사용자의 접속에 대한 설정을 합니다. (기본값 = NO)
local_enable=YES

## 명시된 사용자만 로그인을 허용할 때 사용하는 옵션입니다. (기본값 = NO)
## => userlist_deny 옵션이 비활성화 된 상태에서만 작동합니다.
userlist_enable=NO

## 명시된 사용자가 로그인을 할 수 없도록 제한하는 옵션 입니다. (기본값 = YES)
## => userlist_enable 옵션이 비활성화 된 상태에서만 작동하며, 서로 반대되는 개념 입니다.
userlist_deny=YES

## 명시된 사용자를 읽어올 파일을 지정합니다. (기본값 = /etc/vsftpd.user_list)
userlist_file=/etc/vsftpd.user_list

## 디렉토리 목록의 사용자와 그룹 필드들에 있는 숫자 ID 들이 보이는 것이 기본값 입니다.
## 당신은 이 파라미터를 활성화 함으로써 글자 이름을 사용할 수도 있습니다.
## 그러나 이 항목은 성능상의 이유로 기본적으로 비활성화 되어 있습니다. (기본값 = NO)
text_userdb_names=NO

## PAM 사용자 인증을 할 때 사용될 인증파일을 지정합니다. (기본값 = ftp)
## => VsFTPd를 RPM으로 설치하게 되면 일반적으로 vsftpd로 인증파일이 생성됩니다.
pam_service_name=vsftpd

## TCP wrappers에 의해서 FTP 접속을 제어 할 것인지 설정합니다. (기본값 = NO)
## => 이 옵션을 활성화하면 /etc/hosts.allow와 /etc/hosts.deny에 의해서 제어할 수 있습니다.
## 그러나 이 옵션을 사용하려면 vsftpd 소스중 builddefs.h 파일에서 설정을 변경해야 됩니다.
## 변경전 -> #undef VSF_BUILD_TCPWRAPPERS
## 변경후 -> #define VSF_BUILD_TCPWRAPPERS
## 참고: LTN에서 제공하는 vsftpd는 이미 패치되어 있습니다.
tcp_wrappers=YES

## TLS를 사용할 것인지에 대해 설정합니다. (기본값 = YES)
## => 이 옵션은 TLS를 활성화하며, TLS가 가능한 클라이언트가 이용하는데 도움이 됩니다.
ssl_tlsv1=YES

## SSL을 통한 보안접속을 지원할 것인지에 대해 설정합니다. (기본값 = NO)
## => 만약 OpenSSL에 대해서 컴파일 되어 있고, 이 옵션을 허용할 경우 vsftpd는 SSL을 통한 보안 접속을 지원합니다.
## 이 옵션은 제어 연결을 지원(로그인을 포함)하며, 또한 데이터 연결도 지원 합니다.
## 사용자는 SSL을 지원하는 클라이언트를 필요로 할 것이며, 반드시 필요한 경우에만 허용하는것이 좋습니다.
## 그러나 vsftpd는 OpenSSL 라이브러리의 보안과 관련한 게런티를 만들 수 없으며,
## 이 옵션을 활성화 한다는것은 OpenSSL 라이브러리의 보안을 믿는다는 것을 전제로 합니다.
ssl_enable=NO

## SSL v2 프로토콜 연결을 허용할 것인지에 대해 설정합니다. (기본값 = NO)
## => 이 옵션은 ssl_enable이 활성화 되었을 때만 적용되며, TLS v1 연결들을 선호 합니다.
ssl_sslv2=NO

## SSL v3 프로토콜 연결을 허용할 것인지에 대해 설정합니다. (기본값 = NO)
## => 이 옵션은 ssl_enable이 활성화 되었을 때만 적용되며, TLS v1 연결들을 선호 합니다.
ssl_sslv3=NO

## SSL 인증서의 위치를 지정합니다. (기본값 = none)
## => SSL의 암호화 접속을 사용하기 위해, DSA 인증서의 위치를 지정합니다.
#dsa_cert_file=none

## 이 옵션은 vsftpd가 암호화 된 SSL 연결들에 대해 어떤 SSL 암호화 방식을 선택하는지에 따라 사용됩니다.
## 더 자세한 사항은 관련 암호 메뉴얼 페이지를 보십시요.
## 암호화를 알리지 않는 것은 원격에서 선택된 암호화 방식의 취약점을 공격하려고 불법적인 원격 공격을
## 막기 위한 유용한 보안 지침이 될 수 있습니다. (기본값 = DES-CBC3-SHA)
#ssl_ciphers=DES-CBC3-SHA

## 이 옵션은 ssl_enable이 활성화 되었을 때만 적용되며, 만약 이 옵션이 활성화 되어 있다면
## 모든 비익명 로그인은 데이터 연결 상태에서 데이터를 주고 받기 위해 보안 SSL 연결을 사용하도록
## 강제적으로 설정됩니다. (기본값 = YES)
#force_local_data_ssl=YES

## 이 옵션은 ssl_enable이 활성화 되었을 때만 적용되며, 만약 이 옵션이 활성화 되어 있다면
## 모든 비익명 로그인은 비밀번호를 전달하기 위해 보안 SSL 연결을 사용하도록 강제적으로 설정됩니다.
## (기본값 = YES)
#force_local_logins_ssl=YES
#
############################ 대기시간 설정 ############################
#
## 액티브 모드(Active Mode)를 사용하는 클라이언트의 접속 허용시간을 설정합니다. (기본값 = 60/초)
## => 클라이언트의 요청패킷(SYN Packet)을 받은뒤, 지정된 시간내에 접속이 안될경우 종료합니다.
connect_timeout=60

## 패시브 모드(Passive Mode)를 사용하는 클라이언트의 접속 허용시간을 설정합니다. (기본값 = 60/초)
## => 클라이언트의 요청패킷(SYN Packet)을 받은뒤, 지정된 시간내에 접속이 안될경우 종료합니다.
accept_timeout=60

## 데이터 전송 대기시간을 설정합니다. (기본값 = 300/Secs)
## => FTP 서버로부터 데이터를 업/다운로드를 한 뒤 아무런 작동도 안할때 접속이 종료되도록 합니다.
data_connection_timeout=300

## 접속 대기시간을 설정합니다. (기본값 = 300/Secs)
## => FTP에 접속한 뒤 아무런 작동도 안할 때 지정된 시간이후 접속이 종료되도록 합니다.
idle_session_timeout=300
#
############################# 메시지 설정 #############################
#
## 사용자가 FTP 서버에 접속했을 때 보여줄 환영 메시지 파일을 설정합니다. (기본값 = none)
#banner_file=/etc/vsftpd/welcome.msg

## 사용자가 FTP 서버에 접속했을 때 보여줄 환영 메시지를 설정합니다. (기본값 = none)
ftpd_banner=Welcome to vsftpd server

## 디렉토리의 메시지 파일을 사용자에게 보여줄 것인지 설정합니다. (기본값 = NO)
dirmessage_enable=NO

## 메시지 파일을 지정 합니다. (기본값 = .message)
## => dirmessage_enable 옵션을 허용했을 경우에 메시지를 읽어올 파일을 지정합니다.
message_file=.message
#
############################## 모드 설정 ##############################
#
## 데이터 전송을 위해서 Active Mode를 사용할 것인지 설정합니다. (기본값 = YES)
port_enable=YES

## 액티브모드(Active Mode) 데이터 전송 포트인 20번을 사용할 것인지 설정 합니다. (기본값 = NO)
connect_from_port_20=YES

## 데이터 전송 포트를 지정합니다. (기본값 = 20)
## => connect_from_port_20 옵션이 활성화되었을때 사용되는 포트를 지정합니다.
ftp_data_port=20

## 데이터 전송을 위해서 Passive mode를 사용할 것인지 설정합니다. (기본값 = YES)
## => Active Mode로 접근할 수 없는 사용자들을 위해 활성화 하는것이 좋습니다.
pasv_enable=YES

## 동일한 IP주소에서 이루어지는 데이터 연결을 보장해주는 보안체크 기능을 사용할 것인지
## 설정합니다. (기본값 = NO)
pasv_promiscuous=NO

## 패시브 모드로 연결시 할당될 최대 및 최소 포트를 설정하는 옵션 입니다. (기본값 = 0)
## => 일반적으로 50000~60000 포트를 지정하는것이 좋으며, 기본값인 0으로 설정하게 되면
## well-known port를 제외한 무작위 포트를 이용하게 됩니다.
pasv_min_port=0
pasv_max_port=0

## 아스키모드(ASCII Mode) 전송 허용에 대해서 설정합니다. (기본값 = NO)
## => 이 옵션은 악의적인 사용자에 의해서 시스템의 자원이 고갈될 수 있으므로 주의해야 됩니다.
ascii_download_enable=YES
ascii_upload_enable=YES
#
############################## 권한 설정 ##############################
#
## 파일 생성 umask 값을 지정합니다. (기본값 = 077)
## => umask는 "max permission-umask=create permission" 의 공식을 가지고 있습니다.
## 디렉토리의 기본값은 0777이며, 파일의 기본값은 0666 입니다.
## 따라서 일반적인 시스템의 파일생성 퍼미션인 644를 생성하려면 022로 해야 됩니다.
## 디렉토리: 0777-022=0755, 파일: 0666-022=0644
local_umask=022

## 파일이 업로드 되었을 때의 퍼미션을 지정해주는 옵션 입니다. (기본값 = 0666)
## => 이 옵션은 반드시 umask 옵션보다 아래에 있어야 됩니다.
file_open_mode=0644

## 접속한 디렉토리의 파일리스트를 보여줄 지 설정합니다. (기본값 = YES)
dirlist_enable=YES

## 히든 파일/디렉토리를 보여줄 것인지 설정하는 옵션 입니다. (기본값 = NO)
## => 히든 파일/디렉토리는 dot(.) 으로 시작하는 것을 말합니다.
force_dot_files=NO

## 이 옵션이 활성화되면, vsftpd는 ~chris/pics와 같이 사용자 계정 이름에 틸드 표시가 따라오는 경우의
## 경로명을 접근하도록 시도하고 해석할 것입니다.
## vsftpd는 항상 ~ 와 ~/somthing 을 해석한다는 것을 주의하시기 바랍니다.
## (여기서 ~ 는 기본적으로 로그인 했을 때의 디렉토리로 해석됩니다.)
## ~user 경로들은 _current_ chroot() 에서 /etc/passwd 파일을 찾을 수 있을 경우에만 해석 될 수 있을 것입니다.
## (기본값 = NO)
tilde_user_enable=NO

## 디렉토리 목록에서 UID를 보여주지 않고, 모두 FTP로 표시할 것인지 설정합니다. (기본값 = NO)
## => 이 옵션을 활성화 하면 모든 파일의 소유권이 FTP로 표시되므로 보안에 도움이 될 수 있습니다.
hide_ids=NO

## 사용자에게 STOR(저장),DELE(삭제),RNFR(이름변경),RNTO(이름변경),MKD(디렉토리생성),RMD(디렉토리삭제),
## APE(이어올리기), SITE(umask,chmod)등의 권한을 허용할지 설정합니다. (기본값 = NO)
## => 이 옵션이 비활성화되어 있으면 사용자는 FTP 서버에 데이터를 쓸 수 없습니다.
write_enable=YES

## 다운로드에 대한 권한을 설정합니다. (기본값 = YES)
download_enable=YES

## 사용자가 퍼미션을 변경할 수 있도록 설정합니다. (기본값 = YES)
chmod_enable=YES

## 이 옵션은 당신의 플랫폼에서 sendfile() 시스템 호출을 사용하는 것과 관련된 이익을 테스트 할 때
## 사용되는 내부 설정입니다. (기본값 = YES)
use_sendfile=YES

## 사용자에게 허가할 명령어를 지정합니다. (기본값 = none)
#cmds_allowed=PASV,RETR,QUIT

## 업로드를 거부할 파일명을 지정합니다. (기본값 = none)
#deny_file={*.mp3,*.mov}

## 숨길 파일명을 지정합니다. (기본값 = none)
## => 이 옵션을 사용하면 서버에 실제로 데이터는 존재하지만, FTP 사용자에게는 보이지 않도록
## 설정하는 기능입니다. 악의적인 사용자에게 간단한 fake를 걸 수 있습니다.
#hide_file={*.mp3,*.mov}

## async ABOR 명령어를 사용할 수 있도록 설정합니다. (기본값 = NO)
## => 일부 FTP 클라이언트에서 파일전송을 취소했을 경우, 취소되지 않은 상태로 있는 경우가
## 생길 수 있는데 그것을 방지하기 위해 사용할 수 있습니다.
## 그러나 보안상 좋지 않기 때문에, 비활성화 하시는것이 좋습니다.
async_abor_enable=NO

## ls -R 명령을 허용할 것인지를 설정하는 옵션 입니다. (기본값 = NO)
## => 만약 하위디렉토리나 파일이 매우 많은 상위디렉토리에서 이 옵션을 활성화하게 되면
## 시스템 자원의 낭비가 심하므로, 비활성화 하시는것이 좋습니다.
ls_recurse_enable=NO
#
############################## 보안 설정 ##############################
#
## 모든 계정 사용자가 자신의 홈상위 디렉토리를 접근할 수 없도록 설정합니다. (기본값 = NO)
## => FTP 사용자가 시스템에 접근할 수 있으면 위험하므로 반드시 활성화 하는것이 좋습니다.
chroot_local_user=YES

## SSH로 접속했을 때 자신의 홈 상위 디렉토리를 접근할 수 없도록 설정합니다. (기본값 = NO)
## => chroot_local_user 옵션이 활성화되었고, OpenSSH에 패치를 했을경우, SSH 또한 자신의
## 홈상위 디렉토리를 접근할 수 없도록 설정할 수 있으며, /etc/passwd 파일의 홈 디렉토리
## 필드의 /home/사용자/./와 같이 "/./"를 붙여 사용자를 홈디렉토리에 제한하게 합니다.
passwd_chroot_enable=NO

## 명시된 사용자가 자신의 홈상위 디렉토리를 접근할 수 없도록 설정합니다. (기본값 = NO)
## => 이 옵션은 chroot_local_user 옵션이 비활성화되어 있어야 사용할 수 있습니다.
## => 전체 적용이 아니라 일부 사용자만 제한할때 편하지만, 개별 적용은 보안상 좋지 않습니다.
chroot_list_enable=NO

## 사용자의 홈상위 디렉토리를 설정한 파일을 지정합니다. (기본값 = /etc/vsftpd.chroot_list)
## => chroot_list_enable 옵션을 활성화했을 경우에 리스트를 읽어올 파일을 지정합니다.
chroot_list_file=/etc/vsftpd.chroot_list

## secure chroot()에 사용될 디렉토리를 지정합니다. (기본값 = /usr/share/empty)
## => 이 옵션에서 지정된 디렉토리는 비어있어야되며, ftp 사용자에 대해 쓰기 권한이 없어야 됩니다.
#secure_chroot_dir=/usr/share/empty
#
############################## 로그 설정 ##############################
#
## VsFTP의 기본 로그 파일을 지정합니다. (기본값 = /var/log/vsftpd.log)
## => 이 옵션은 xferlog_enable 옵션과 xferlog_std_format 옵션이 비활성화일때 작동하며,
## dual_log_enable 옵션이나 syslog_enable 옵션이 활성화될때 사용됩니다.
#vsftpd_log_file=/var/log/vsftpd.log

## 2중 로그를 기록할 것인지에 대해 설정합니다. (기본값 = NO)
## => 만약 이 옵션을 활성화하면, /var/log/xferlog와 /var/log/vsftpd.log에 로그가 기록됩니다.
#dual_log_enable=NO

## syslogd 데몬을 이용해서 로그를 기록할 것인지 설정합니다. (기본값 = NO)
#syslog_enable=NO

## xferlog_enable 옵션을 활성화했을 경우에 로그를 기록할 파일을 지정합니다.
## (기본값 = /var/log/vsftpd.log)
xferlog_file=/var/log/vsftpd.log

## 파일의 송/수신 결과를 xferlog_file 옵션으로 지정된 로그파일에 기록합니다. (기본값 = NO)
xferlog_enable=YES

## 로그를 기록할 때 표준 xferlog 포맷으로 저장할 것인지를 설정합니다. (기본값 = NO)
xferlog_std_format=NO

## FTP Protocol의 모든 내용을 기록할지 설정합니다. (기본값 = NO)
## => 이 옵션을 활성화하면 FTP 명령어와 반응이 모두 로깅되므로 디버그에 유용하게 쓰입니다.
log_ftp_protocol=NO

## 로그 파일을 잠글것인지에 대해서 설정합니다. (기본값 = NO)
## => 이 옵션은 vsftpd가 로그 파일을 기록할 때, 파일을 잠그는 것을 막는 옵션 입니다.
## 보통은 활성화 하지 않아도 되며, 솔라리스/베리타스 파일 시스템 조합에서 때때로
## 로그파일을 잠그려는 시도를 하는 운영체제 시스템 버그를 피하기 위해 존재 합니다.
no_log_lock=NO

## 사용자의 접속 기록을 남길 것인지 설정합니다. (기본값 = NO)
## => 이 옵션을 활성화하면 utmp/wtmp 파일에 접속 기록이 로깅됩니다.
## 따라서 last 명령어로 접속 여부를 확인하려면 활성화 하셔야 됩니다..
session_support=YES
#
#
##################################### Virtual User Settings ####################################
## 가상 사용자에 대한 설정 입니다. ##
################################################################################################
#
## 가상유저 모드로 운영할 것인지에 대해 설정합니다. (기본값 = NO)
## => 이 옵션을 활성화하면 모든 비익명 사용자는 가상 사용자로 접속이 됩니다.
guest_enable=NO

## 가상유저들의 실제 계정을 지정합니다. (기본값 = ftp)
#guest_username=ftp

## 가상유저들의 권한을 실제 계정의 권한처럼 허용할 것인지를 설정합니다. (기본값 = NO)
## => 이 옵션이 활성화되어있지 않으면 가상유저는 FTP에 접속해서 파일을 생성하지 못합니다.
## 또한 가상유저는 기본적으로 anonymous의 권한을 갖고 있습니다.
#virtual_use_local_privs=NO

## 가상유저들을 지칭할 가상의 변수를 지정합니다. (기본값 = none)
#user_sub_token=$USER

## 가상유저들이 로그인 후 이동될 디렉토리를 지정합니다. (기본값 = none)
#local_root=/home/virtual/$USER
#
###################################### Anonymous Settings ######################################
## 익명 사용자에 대한 설정 입니다. ##
################################################################################################
#
############################## 기본 설정 ##############################
#
## 익명 사용자의 접속에 대한 설정을 합니다. (기본값 = YES)
anonymous_enable=NO

## 익명사용자의 SSL을 통한 보안접속을 지원할 것인지에 대해 설정합니다. (기본값 = NO)
## => 이 옵션은 ssl_enable이 활성화 되었을 때만 적용됩니다.
#allow_anon_ssl=NO

## 로그인 거부 리스트 사용에 대한 설정을 합니다. (기본값 = NO)
## => /etc/vsftpd.banned_emails 에 설정된 주소로 로그인을 거부할 수 있습니다.
## 만약 anonymous@ 라고 설정해두면, anonymous@를 사용하는 사용자는 접속할 수 없게됩니다.
#deny_email_enable=NO

## 로그인 거부 파일을 지정합니다. (기본값 = /etc/vsftpd.banned_emails)
## => deny_email_enable 옵션을 활성화했을 경우에 리스트를 읽어올 파일을 지정합니다.
#banned_email_file=/etc/vsftpd.banned_emails

## 명시된 이메일 주소로만 접속을 허용할 지 설정합니다. (기본값 = NO)
#secure_email_list_enable=NO

## 접속을 허용할 이메일 주소 파일을 지정합니다. (기본값 = /etc/vsftpd.email_passwords)
## => secure_email_list_enable 옵션을 활성화했을 경우에 리스트를 읽어올 파일을 지정합니다.
#email_password_file=/etc/vsftpd.email_passwords

## 익명 사용자의 접속에 사용될 계정명을 지정합니다. (기본값 = ftp)
#ftp_username=ftp

## 익명 사용자가 접속할 때 패스워드를 묻지않고 접속시킬 것인지 설정합니다. (기본값 = NO)
## => 이 옵션을 활성화하면 접속시 패스워드를 묻지 않습니다.
#no_anon_password=NO

## 클라이언트 접속마다 하나의 프로세스가 작동되도록 할 것인지 설정합니다. (기본값 = NO)
## => 이 옵션을 활성화하면 접속하는 수만큼 프로세스가 작동되므로 효율이 좋습니다.
#one_process_model=NO

## 익명 사용자의 기본 디렉토리를 지정합니다. (기본값 = none)
## => 일반적으로 익명 사용자의 접근을 허용하면 ftp_username에 지정된 사용자의
## 홈 디렉토리가 기본적으로 설정됩니다.
## 그렇지만 만약 변경할 필요가 있을 경우에 이 옵션을 사용하면 됩니다.
#anon_root=/var/ftp/pub

## 익명 사용자의 다운로드 최대전송률을 지정합니다. (기본값 = 0)
## => 다운로드 속도를 제한할때 사용하며, 단위는 bps 입니다.
#anon_max_rate=0
#
############################## 권한 설정 ##############################
#
## 익명 사용자의 업로드에 대한 설정을 합니다. (기본값 = NO)
## => Global Setting에서의 write_enable 옵션이 허용되었을 경우에
## 익명 사용자가 업로드 가능한 디렉토리에 파일을 업로드할 수 있게 합니다.
#anon_upload_enable=NO

## 익명 사용자들의 다운로드에 대한 설정을 합니다. (기본값 = YES)
## => 익명 사용자들이 읽기 가능한 파일을 다운로드 할 수 있게 설정합니다.
#anon_world_readable_only=YES

## 익명 사용자의 디렉토리 생성에 대한 설정을 합니다. (기본값 = NO)
## => 익명 사용자가 쓰기 가능한 디렉토리에서 새로운 디렉토리를 생성할 수 있습니다.
#anon_mkdir_write_enable=NO

## 익명 사용자의 파일 삭제,변경에 대한 설정을 합니다. (기본값 = NO)
## => 파일 삭제 및 파일명 변경등과 같은 기능을 사용할 수 있게 합니다.
#anon_other_write_enable=NO

## 익명 사용자의 소유권 변경이 가능한 계정명을 설정합니다. (기본값 = root)
#chown_username=root

## 익명 사용자의 소유권 변경에 대한 설정을 합니다. (기본값 = NO)
## => 익명으로 업로드된 파일을 chown_username 옵션으로 명시된 사용자의
## 소유권으로 변경되도록 할 수 있습니다.
#chown_uploads=NO

## 익명 사용자의 파일생성 umask 값을 지정 합니다. (기본값 = 077)
## => umask에 대한 설명은 local_mask의 설명을 참조하시기 바랍니다.
#anon_umask=022
#
######################################################################



출처: http://krug.or.kr/forums/viewtopic.php?pid=132
728x90

'Programming > linux왕초보' 카테고리의 다른 글

실행중인 리눅스 관리하기  (0) 2008.09.10
리눅스 gcc 설치 방법  (0) 2008.09.10
CRON  (0) 2008.09.10
리눅스에서 압축파일 다루기  (0) 2008.09.10
iptables  (0) 2008.09.10
vsftpd 설치하기  (0) 2008.09.10
RPM으로 패키지 관리하기  (0) 2008.09.10
NFS 마운트 (NAS장비)  (0) 2008.09.10
리눅스 CD 부팅법  (0) 2008.09.10
[펌]유닉스 및 리눅스 명령어 팁  (1) 2008.09.10

+ Recent posts