-리눅스

 root@#] vi /etc/hosts

192.168.0.201                          aaa.co.kr
192.168.0.201                          www.aaa.co.kr
192.168.0.201                          bbb.co.kr
192.168.0.201                          www.bbb.co.kr


 -윈도우

C:\WINDOWS\system32\drivers\etc 폴더 내의 hosts 파일을 수정한다

127.0.0.1       localhost 이런식으로 한줄씩 입력.


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

이렇게 저장하고 나오신 후 실행..

aaa.co.kr 을 입력하시게 되면, 아파치상에 등록되어 있는 192.168.0.201 이 아닌, 

aaa.co.kr 의 도메인네임서버를 찾은 후, 해당 네임서버에서 값을 물어보게 되어있는데, aaa.co.kr 

이 정식도메인이라면 가상IP로 연결되어 있진 않을테니, 강제적으로 다음과 같이 설정하는 것입니다. 

aaa.co.kr 을 입력하게 되면 먼저 /etc/hosts를 참조한 뒤 여기에 해당 도메인이 없으면 ->DNS값을 

참조하게 되는 것이니 만큼 강제로 설정하게 되면 사이트가 뜨는데는 무리가 없을것입니다.



-------------참고자료---------------

DNS를 거치지 않고 다이렉트로 찾을 때

------------질문의 답변--------

/etc/hosts를 먼저찾느냐 DNS를 먼저찾느냐..NIS나 NIS+를 먼저찾느냐는 /etc/nsswitch.conf에서 지정을 해줄수 있습니다.
거기에 나온 (호스트명이라면 hosts : files dns nis 뭐 이런식으로 써있겠죠) 순서대로 찾습니다.

IP는 숫자이기때문에 기억하기 힘드니 /etc/hosts등에는 hostname을 IP와 매칭하여 기록하여 IP대신 hostname을 사용하여(예를들어 111.111.111.111서버는 server1 이런식으로) 기억하기 쉽게하는것이고

그다음에 DNS를 사용하여 /etc/resolv.conf에 등록된 DNS정보를 가지고 IP를 찾습니다.

nsswitch.conf에서 반대로 hosts: dns files 로 되어있다면 반대로 DNS먼저찾아보고 /etc/hosts에서 찾겠죠.

이렇게 등록해놀경우에는 telnet server1 치면 알아서 111.111.111.111로 사용하게되는것이지요.

그리고 loghost는 syslog에서 디폴트로 사용하는 로그서버를 지정하는것이고 디폴트는 자기 자신입니다. 로그서버를 따로둘경우에 수정하면 되겠죠.

자세한건 man hosts, man nsswitch.conf, man resolv.conf등을 해보세요~

참고로 성능은 /etc/hosts의 경우에는 많이넣어도 속도가 느려질 가능성은 거의 없습니다.(/etc/resolv.conf의 nameserver와 domainname을 많이 넣고 느린 DNS서버를 사용할경우에는 느려지는경우가 크지만 /etc/hosts처럼 파일로 처리하는부분은 무시할수있을만한 범위입니다.)

오히려 특정 프로그램에서 DNS resolv등을 할경우에 files가 nsswitch.conf에 맨처음있다면 /etc/hosts에 등록된 IP에대해서 DNS query를 하지않고 직접 /etc/hosts에서 먼저 찾으므로 더 빨라질 가능성도 있습니다. (주변에 같이 물려서 돌아가는 시스템일경우에는 차이가 크게 날수 도 있습니다.) 그런건 다 상황에 따라 달라지겠지요
Posted by Finebe
,


************************************
SendMail  (http://www.sendmail.org)
작성자 : 유희성
************************************

 

전자메일이 작동하는 방식은 일반편지와 유사하다.
일반 편지는 종이에 편지를 써서 우체통에 넣어 받는 사람, 보내는 사람의 주소, 이름을 적어 우체통에 넣는다.
그러면 우체통을 우체국 직원들이 체크해서 우체국으로 가져간다.
우체국에서는 해당지역으로 배달되는 것과 외부로 나가는 것을 분리한다.
관할 지역의 메일은 다시 우체부가 집으로 배달해 주고 외부 편지는 중앙 우체국으로 보낸다.

MUA(Mail User Agent) : 연필과 종이에 해당된다.
MDA(Mail Delivery Agent): 편지를 전달하는 우체부
MTA(Mail Transfer Agent): 외부로 메일을 보내는데 사용하는 트럭, 비행기, 기차 등등....

MTA 로는 sendmail, zmail, MMDF 등등이 있다.

Sendmail 은 크게 프로그램인 sendmail과 config 파일인 sendmail.cf로 구분할 수 있다.

Config 파일은 ----  sendmail.cf
       |--  Queue file
       |--  Aliases File 로 나누어 진다.


전송방식 =>>>>>  칠판에 그림 참조.


POP  : 메일서버에서 사용자의 편지를 자신의 MDA로 완전히 이동시킴.
IMAP : 메일서버에서 사용자의 편지를 자신의 MDA로 복사(참조).

먼저 자신의 PC에 메일 프로그램이 깔려있는지 확인하자.

rpm -qa | grep sendmail 이라고 해서 뭐가 나와야 한다. 없다면 깔아야 한다.

rpm -qi sendmail   ===> sendmail 정보확인.
rpm -ql sendmail   ===> sendmail이 어디에 설치되어있나???

그런데 메일 프로그램만 깔려있으면 안된다. 편지를 받아보려면 imap 이라는 패키지가 설치되어있어야 한다.
(pop3 와 imap이 동시에 설치됨)

rpm -qa | grep imap
rpm -qi imap  이라고 체크해보자... (없으면 linux 시디 넣고 깔던지 다운로드 해서 깔던지 해야한다)

뭔가 나왔다면 이녀석들을 돌릴 준비를 해줘야 한다.
일단 우리는 슈퍼데몬(xinetd) 환경에서 돌려줄 것이다.
슈퍼데몬에서 돌아가는지 확인해 보자.

vi /etc/xinetd.d/ipops  에 보면

disable=no 라고 되어있어야 한다.  yes 라면 no 로 바꾸어준다.

vi /etc/xinetd.d/imaps   파일도 위와 같이 고쳐준다.

이제 슈퍼데몬을 restart 시킨다.

/etc/rc.d/init.d/xinetd restart  라고 실행한다.

telnet localhost 110   이라고 쳐서 ok 뜨면 된거다. 110번은 pop3 이다.
안된다면 /etc/xinet.d/ 에 있는 위의 설정파일을 확인해보자

빠져 나올때는 quit 라고 입력한다.

만약 위의 테스트중 계속 에러발생시 포트가 막혀있을 가능성도 있을수 있다.
/etc/services  파일을 보면 그 안에 각 포트 설정이 되어있는데
해당 포트에 주석처리(#)가 되어있는지 잘 살펴보기 바란다.

이제 편지를 받을준비와 보낼 준비는 되었다.
그럼 이제 sendmail 을 설정 해 주자. 설정 파일은 /etc/sendmail.cf 이다.

**************************
SENDMAIL 설정하기
**************************

vi /etc/sendmail.cf

내용이 무쟈게 길다... 줄번호를 붙여서 본다. :set nu 라고 vi 명령창에 쓴다.. 그럼 줄번호 보인다.

여기서 sendmail.cf 파일의 설정 규칙을 잠깐 짚고 넘어가자.

1. 빈 행은 무시한다.
2. # 으로 시작하는 행은 주석처리로 무시한다.
3. C,D,F,H,K,M,O,P,R,S,V 로 시작하는 행은 설정행이며 이들은 각각 하나의 설정명령이다.
4. 하나의 빈 공간 또는 여러개의 빈 공간(TAB) 으로 시작하는 행은 앞 행의 연장이다.

********************
센드메일의 설정 명령어
********************

C : 클래스 정의
D : 매크로 정의
E : 환경변수 지정
F : 클래스 정의 (file, pipe)
H : Header 정의(Format of header)
K : Key file 정의(map 정의)
M : mailer 정의
O : 옵션
P : Message Precedences
R : 덮어쓰기(Rewrite)
S : Ruleset(새로운 규칙지시자)
T : Truseted users( 사용자 지정)
V : 설정 파일 버전

 

81번째 줄 정도에 Cwlocalhost 이라고 되어있는 부분이 보일것이다.
이 부분은 C설정 명령으로 localhost를 w 클래스로 정의하는 행이다. 기본적으로 localhost가 설정되어있다.
C 명령어는 문자열을 정의한다.

설정 예 : Cwlocalhost yadong.com dolpung.pe.kr
(이때 각 도메인은 진짜 등록되어있어야 한다. 요즘에는 진짜 도메인 아니면 메일이 안간다.
그리고 네임서버 상에서도 제대로 설정이 되어있어야 한다)


84번째 줄 정도에 보면  fw/etc/mail/local-host-names 라는 부분이 보일것이다.
이 부분은 메일을 수신할 호스트 이름을 명시할 파일의 위치를 설정이다.
주석처리되어있으면 절대 안된다. (sendmail 8.9 이하 버젼은 아마 sendmail.cw 파일로 되어있을것이다.)

179번째 줄 근처에 보면
#MaxMessageSize=1000000  이라는 부분이 있는데 여기는 메일의 최대크기를
지정해 주는 문장이다. 그런데 지금은 주석처리가 되어있다. 이렇게 주석처리가 되어있다면 메일크기의
제한이 없다는 것이다. 이부분을 주석을 풀고 용량을 조절하면 개인당 메일용량을 조정할 수 있게 된다.
이곳은 최대 메세지 크기 제한이다.

만약 메일 공간의 용량을 제한하고 싶다면 sendmail.cf 파일의 제일 아랫부분(1484번째 줄인가??)에

Mlocal,         P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
                    M=10485760, T=DNS/RFC822/X-Unix,

이런 부분이 있을꺼다. 여러분의 현재 설정에서는 M=10485760 이라는 부분이 없을텐데
이 부분을 추가해준다. 쉼표도 찍어야겠죠?
이렇게 하면 받는 메일의 용량을 10Mb 로 제한을 하게된다.


274 번 째 줄 근처에
O QueueDirectory=/var/spool/mqueue   라는 부분이 있는데 이부분은 큐 디렉토리를 설정해준다.

293 번째 줄에 보면
O TimeOut.queuereturn=5d   라고 되어있는데 메일을 보내려는 호스트에 문제 발생시 큐 디렉토리에
                           저장하게 된다.

머 이밖에 많은 설정이 있지만 일단 생략하고 자세한것은 따로 책을 보기 바란다.

이제 sendmail.cf 파일의 설정은 대충(정말 대충이다 ㅡ,.ㅡ) 끝났다.

이제 해야할 일은 센드메일의 수신자를 설정하는 일이다. 위에서 sendmail.cf 파일을 설정할때 메일을 받을곳의
호스트 이름을 명시할 파일의 이름이 local-host-names 라는 파일이라는것을 우리는 알았다.
이 파일은 /etc/mail/ 디렉토리 안에 있다.
vi /etc/mail/local-host-names  라고 쳐서 아래와 같이 입력한다.

자기호스트.com      # yadong.com 이 되겠지요??

저장하고 나온다.

이렇게 하면 들어오는 메일의 수신자를 설정하게 된것이다.

이제 남은 설정은 센드메일로의 접근을 제어해 주는 일이 남았다.

/etc/mail/access 라는 파일이 그 역할을 해준다. 이 파일이 해주는 역할은 특정 호스트나 도메인의 접근을
허락, 거부 여부를 설정할수 있는 중요한 파일이다.

vi /etc/mail/access 라고 입력하자..

그럼 파일 내용중에 아래와 같은 부분이 있을것이다.

localhost.localdomain  RELAY
localhost   RELAY
127.0.0.1   RELAY

위의 상황은 자기 자신, 즉 localhost 에서 보내는 편지는 통과(RELAY) 시키겠다고 적어놓은 것이다(default값임)
위의 아랫쪽에 자기의 주소와 IP  번호를 입력하고 RELAY(통과) 시키자.

yadong.com   RELAY
211.108.242.host  RELAY

이렇게 해주게 됨으로써 yadong.com 에서 보내는 편지를 통과 시키겠다!!! 라고 설정이 끝났다.

만약 yadong.com   REJECT 라고 하면 어떻게 될까??
정답은 메일 수신이 안된다는 것이다... REJECT 는 특정호스트에서 오는 편지를 접근 못하게(REJECT) 하는 역할을 한다.

만약 스팸메일이나 받기 싫은 메일이 계속 오게 되면 이곳에 HOST 이름을 적어주던지 IP 번호를 적어주고 REJECT 시키면
메일이 거부된다.

참고로 이 파일(access)는 /etc/sendmail.cf 파일에서
'Kaccess hash -o /etc/mail/access' 로 지정되어있어야 한다.(default 값이니까 안건드려도 된당)

그리고 리눅스에서 센드메일은 기본적으로 localhost 이외의 모든 호스트에 대해서 RELAY 를 허용하지 않도록 설정
되어 있다. 그러니까 이 파일에 RELAY 시킬 호스트 이름과, REJECT 시킬 호스트 이름을 적어줘야 한다.


이제 수정이 끝난 access 파일을 데이터베이스화 시켜주어야 한다.
센드메일은 access 파일을 사용하지 않고 access.db  라는 dbm 파일을 이용한다.

cd /etc/mail
makemap hash /etc/mail/access < /etc/mail/access   라고 입력한다. 에러가 당연히 없어야겠징???

이렇게 다 했으면 센드메일 데몬을 다시 시작 시켜주자.

/etc/rc.d/init.d/sendmail stop
/etc/rc.d/init.d/sendmail start

라고 해주자... 물론 restart 해줘도 된다. 오케바리 떴으면 이제 메일을 보내보자.
수신자는 root@dolpung.pe.kr 로 보내주세요..

mail root@dolpung.pe.kr  이라고 입력한다.
subject:  <===  이부분에 제목을 입력하고 그냥 엔터친다.
프롬프트가 그냥 깜빡이고 있으면 내용을 좌아아아아악 적어준다.

다 입력을 하였으면 ctrl+d 를 살포시 눌러준다. 그럼 Cc:  라는 곳이 뜨는데 참조 이니까 그냥 엔터로 무시한다.


Posted by Finebe
,




[root@www ~]# /usr/local/server/samba/sbin/smbd -D
/usr/local/server/samba/sbin/smbd: error while loading shared libraries: libtalloc.so.1: cannot open shared object file: No such file or directory

다음과 같이 ln -s 를 실행하여 문제를 해결한다.

[root]# cd /usr/lib

[root@/usr/lib]# ln -s /usr/local/server/samba/lib/libtalloc.so.1 libtalloc.so.1
[root@/usr/lib]# ln -s /usr/local/server/samba/lib/libtdb.so.1 libtdb.so.1
[root@/usr/lib]# ln -s /usr/local/server/samba/lib/libwbclient.so.0 libwbclient.so.0
[root@/usr/lib]# export LD_LIBRARY_PATH=/usr/local/server/samba/lib

'Operating System > Linux' 카테고리의 다른 글

DNS 강제 설정  (1) 2009.05.04
SendMail 설정  (0) 2009.04.07
하위폴더 권한변경  (0) 2009.02.27
CentOS 5.2 해상도변경  (1) 2009.02.27
FTP 접속시 사용자 홈디렉토리 변경 및 권한변경  (4) 2009.02.27
Posted by Finebe
,



하위 폴더 까지 복사
cp -r 대상 목적지
예) cp -r ./.subversion../test/

하위 폴더 까지 권한 변경
chown -R user:group 대상
예) chown -R test:test ../test/.subversion

chmod 755 -R /usr/local/server/apache/htdocs/
하위폴더까지 권한 755로 변경됨.
Posted by Finebe
,


----vmware 에서 vmware tools를 설치하는 방법 

vmware를 이용한 가상운영체제 설치가 완료된 후에 제일 중요한 작업은 vmware-tool을 설치해주는 것입니다.
vmware-tool를 설치해주면 해상도 문제, 게스트OS와 호스트OS 이동시 마우스 문제 등을 모두 해결할 수 있습니다.

vmware-tool 설치 방법.
1. CentOS를 부팅합니다.
2. VMware 메뉴에서 VM->Install VMware tools 클릭합니다.
vmware-tools 가상 시디가 마운트 됩니다. 게스트OS 바탕화면에 보면 CD 이미지가 생성됩니다.
만약, 바탕화면에 CD 이미지가 생성안되면, 게스트OS 내컴퓨터를 클릭하여 CD 디렉토리로 이동화면 마운드됩니다.
3. 콘솔 명령창을 실행합니다.
4. 콘솔 명령창에서 vmware-tool CD가 마운트된 디렉토리로 이동합니다.
# cd /media/vmware-tool 이미지
5. 콘솔 명령창에서 vmware 스크립트를 실행합니다.
#  ./vmware-tool.pl
6. 5개에서 6개의 질문이 나오고, 결정을 요구합니다. 엔터만 치시면 됩니다.
7. 콘솔 명령창에서 설치가 성공했다는 문구가 나오면 리부팅 합니다.
8. 해상도와, 마우스를 이동하면서 제대로 설치되었나 확인합니다.

 

이와 상관없이 해상도 변경가능하죠..

1.터미널 엽니다.

2.system-config-display   입력합니다

 (나온 창에서 640 혹은 800 의 해상도만 지원이 된다하면...)

3.상위의 "하드웨어" 탭클릭하시구.."모니터유형"을 나름 최신버전으로 선택하시면..samsung(현재 사용하는 모니터와는 상관없어요..그냥 삼성모니터로 하셔도 됩니다)이다 싶으면 "화살표"   클릭하여 보면..하위로 갈수록 최신버전임

4.다시 해상도설정창으로 가면 여러 해상도를 선택하실수 있습니다..

 

후의 재부팅하여 사용하시면 됩니다...

Posted by Finebe
,


1.

vi로 /etc/passwd 화일을 엽니다.

vi /etc/passwd

 2.

test 계정에 해당하는 라인으로 이동하세요. 
 test:x:1232:1232::/home/test:/bin/bash

 3.

test 계정에 해당하는 라인 중 홈디렉토리 부분을 /data 로 수정하세요.

test:x:1232:1232::/data:bin/bash

 4.

이제 ftp 로 test 계정에 접속하면 /data 가 홈디렉토리가 됩니다.

 5.

test계정으로 /data 디렉토리를 사용할 수 있도록

chown 명령으로 /data 디렉토리의 소유권을 test로 변경해 줍니다.

chown test /data 

 

* 모든 작업은 root 사용자로 로그인 한 후 합니다.

'Operating System > Linux' 카테고리의 다른 글

하위폴더 권한변경  (0) 2009.02.27
CentOS 5.2 해상도변경  (1) 2009.02.27
FTP서버 보안체크  (1) 2009.02.27
CentOS 5.2 vsFTPd 설치 및 접속하기  (0) 2009.02.27
리눅스 명령어  (1) 2009.01.15
Posted by Finebe
,


인터넷에 연결하여 서비스를 하는 서버라면, 웹 서비스와 더불어 FTP 서비스를 반드시 사용하게 됩니다.

FTP 서버를 운영할 때, 설정 파일에서 세심하게 신경을 쓰지 않으면 심각한 상황이 발생할 수도 있습니다.

 

리눅스 계열에서 가장 많이 쓰는 FTP 데몬은 vsftp 입니다.

보통은 배포판을 설치하면 기본으로 자동 설치가 됩니다.

설정 파일은 /etc/vsftpd/vsftpd.conf 입니다.

루트로 로그인한 후, 이 파일을 vi 에디터 등으로 열고 아래의 사항들을 체크해 주시면 됩니다.

 

1. 익명 FTP 서비스 금지 설정

익명 FTP 서비스는 특별한 경우가 아니면 사용하지 않는 것이 좋습니다.

이 서비스를 금지하려면 아래와 같이 설정합니다.

 

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO

 

2. 로그인 시의 FTP 데몬 정보 숨기기

FTP 서비스에 접속할 때, 기본값으로 운영하게 될 경우 아래처럼 서버에 설치된 FTP 데몬의 종류와 버전이 나타나게 됩니다.

 

220 (vsFTPd 2.0.1)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:ftp):

 

취약점이 존재하는 버전의 FTP 데몬을 사용할 경우, 크래커의 공격 목표가 될 수 있습니다.

이 정보를 숨기려면 다음과 같이 설정합니다.

 

# You may fully customise the login banner string:
ftpd_banner=Welcome to my FTP service.

 

기본적으로 ftpd_banner 옵션은 주석 처리가 되어 있으므로, 주석을 해제하고 각자에 알맞는 배너 코멘트를 입력합니다.

설정을 변경한 후, ftp 데몬을 reload & restart 해 주어야 변경된 설정이 반영됩니다.

변경된 설정이 반영된 후의 FTP 접속 화면은 다음과 같이 표시됩니다.

 

220 Welcome to my FTP service.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:ftp):

 

3. 상위 디렉토리 접근 막기

일반적인 웹 호스팅의 경우, /home/사용자계정 의 형식으로 디렉토리가 할당됩니다.

FTP 서버에서 사용자가 자신의 홈 디렉토리보다 상위의 디렉토리로 접근할 수 있게 되면 보안상 매우 위험합니다.

보안 설정이 제대로 되어 있지 않을 경우 아래와 같이 표시됩니다.

 

Connected to ftp.
220 Welcome to my FTP service.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:ftp): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/home/ftp" --> 상위 디렉토리로 이동이 가능.

ftp> cd /     --> 시스템의 최상위 디렉토리인 / 디렉토리로 이동 및 열람이 가능
250 Directory successfully changed.
ftp> ls -al
227 Entering Passive Mode (127,0,0,1,141,3)
150 Here comes the directory listing.
drwxr-xr-x   33 0        0            4096 Sep 16 12:47 .
drwxr-xr-x   33 0        0            4096 Sep 16 12:47 ..
-rw-r--r--    1 0        0               0 Sep 02 09:02 .autofsck
drwx------   24 501      501          4096 Sep 02 09:02 MySQL
drwxr-xr-x    2 0        0            4096 Nov 25  2006 backup
drwxr-xr-x    2 0        0            4096 Dec 28  2004 bin
drwxr-xr-x    4 0        0            1024 Dec 28  2004 boot
drwxr-xr-x   10 0        0            4780 Sep 02 09:02 dev
drwxr-xr-x   69 0        0            4096 Nov 24 19:02 etc
drwxr-xr-x   11 0        0            4096 Sep 02 04:41 home
drwxr-xr-x    2 0        0            4096 Aug 12  2004 initrd
drwxr-xr-x   11 0        0            4096 Dec 28  2004 lib
drwx------    2 0        0           16384 Dec 28  2004 lost+found
drwxr-xr-x    2 0        0            4096 Nov 23  2006 media
drwxr-xr-x    2 0        0            4096 Oct 16  2004 misc
drwxr-xr-x    2 0        0            4096 Aug 12  2004 mnt
drwxr-xr-x    2 0        0            4096 Aug 12  2004 opt
dr-xr-xr-x  125 0        0               0 Sep 02 18:02 proc
drwxr-x---    5 0        0            4096 Nov 25 04:53 root
drwxr-xr-x    2 0        0           12288 Dec 28  2004 sbin
drwxr-xr-x    1 0        0               0 Sep 02 18:02 selinux
drwxr-xr-x    2 0        0            4096 Aug 12  2004 srv
drwxr-xr-x    9 0        0               0 Sep 02 18:02 sys
drwxrwxrwt    4 0        0          155648 Nov 25 04:38 tmp
drwxr-xr-x   14 0        0            4096 Dec 28  2004 usr
drwxr-xr-x   21 0        0            4096 Sep 02 09:14 var
226 Directory send OK.
ftp>

 

이런 식으로 일반유저가 시스템 디렉토리의 내용을 마음대로 접근할 수가 있게 되는데,

이를 막으려면 vsftpd.conf 파일을 열고 아래와 같이 설정합니다.

 

chroot_local_user=YES

 

이 chroot_local_user 항목은 데비안의 경우에는 기본적으로 YES로 설정이 되어 있지만

레드햇 계열의 배포판에서는 이 옵션이 아예 없으므로 타이핑을 해 넣어야 합니다.

설정을 수정한 후, FTP 에 접속하면 다음과 같이 표시됩니다.

 

230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"  --> 자신의 홈 디렉토리를 최상위 루트 디렉토리로 표시함
ftp> ls -al
227 Entering Passive Mode (127,0,0,1,218,119)
150 Here comes the directory listing.
drwx--x--x   11 500      500          4096 Sep 07 12:11 .
drwx--x--x   11 500      500          4096 Sep 07 12:11 ..
-rw-------    1 500      500          7556 Nov 25 02:48 .bash_history
-rw-r--r--    1 500      500            24 Dec 28  2004 .bash_logout
-rw-r--r--    1 500      500           212 Jan 28  2005 .bash_profile
-rw-r--r--    1 500      500           124 Dec 28  2004 .bashrc
-rw-r--r--    1 500      500           383 Dec 28  2004 .emacs
-rw-r--r--    1 500      500           120 Dec 28  2004 .gtkrc
-rw-------    1 500      500        428688 Feb 21  2006 .mysql_history
drwx------    2 500      500          4096 Jul 26 00:53 .ssh
-rw-------    1 500      500          4310 Jun 12 06:10 .viminfo
-rw-------    1 500      500          6080 Jul 06 09:59 public_html

226 Directory send OK.
ftp> cd /
250 Directory successfully changed.
ftp> ls -al
227 Entering Passive Mode (127,0,0,1,106,70)
150 Here comes the directory listing.

drwx--x--x   11 500      500          4096 Sep 07 12:11 .
drwx--x--x   11 500      500          4096 Sep 07 12:11 ..
-rw-------    1 500      500          7556 Nov 25 02:48 .bash_history
-rw-r--r--    1 500      500            24 Dec 28  2004 .bash_logout
-rw-r--r--    1 500      500           212 Jan 28  2005 .bash_profile
-rw-r--r--    1 500      500           124 Dec 28  2004 .bashrc
-rw-r--r--    1 500      500           383 Dec 28  2004 .emacs
-rw-r--r--    1 500      500           120 Dec 28  2004 .gtkrc
-rw-------    1 500      500        428688 Feb 21  2006 .mysql_history
drwx------    2 500      500          4096 Jul 26 00:53 .ssh
-rw-------    1 500      500          4310 Jun 12 06:10 .viminfo
-rw-------    1 500      500          6080 Jul 06 09:59 public_html

 

이처럼, chroot_local_user 항목을 YES 로 설정해 놓으면

사용자가 자기 홈디렉토리보다 상위인 디렉토리 자체를 아예 볼 수가 없습니다.

 

보안은 거창한 것이 아닙니다.

사소해 보이는 것들만 제대로 막아도 상당 부분 보안을 유지할 수 있습니다.


Posted by Finebe
,



1. vsftpd 설치 전 확인 사항

①  설치전 nobody 유저가 생성되어 있는 확인

     nobody 유저가 없다면 useradd 명령어를 이용하여 계정을 생성

 

② vsftpd 서버는 /usr/share/empty/ 빈 디렉토리가 ㅊㅁ필요하다.

     디렉토리가 없다면 mkdir /usr/share/empty/ 명령어를 이용하여 생성

 

③ 익명 FTP (anonymous FTP)를 서비스하기 위해서는 ftp계정이 생성되어 있는 확인해야 하며

     ftp계정의 홈디렉토리 /var/ftp 가 존재하는지 확인해야 한다. 계정과 디렉토리가 존재한다면

     디렉토리의 권한을 수정하다록 한다.

   [root@helpdesk var]# chown root.root /var/ftp
   [root@helpdesk var]# chmod og-w /var/ftp

④ vsftpd 소스파일은 configure파일을 제공하지 않는다. make와 make install을 이용하여 바로 설치된다

 

2. vsftpd 설치

[root@helpdesk /]# yum install vsftpd

- 소스파일로 설치하려고 했지만 이것저것 확실히 아는 사항이 적어서 yum을 이용하여 설치하였다.

 

설치가 완료되면 vsftp.conf 설정파일을 /etc/vsftpd/vsftpd.conf에 저장된다.

[root@helpdesk vsftpd-2.0.7]# cp vsftpd.conf /etc


생성된 시작스크립트에 대해 실행권한을 부여하고 런레벨3번과 5번에서 부팅시 실행되도록 chkconfig를 이용하여 활성화한다.

[root@localhost /]# chkconfig --add vsftpd
[root@localhost /]# chkconfig --level 5 vsftpd on
[root@localhost /]# chkconfig --level 3 vsftpd on
[root@localhost /]# chkconfig --list|grep vsftpd

3. vsftpd 설정하기

설정파일경로 : /etc/vsftpd/vsftpd.conf

 

userlist_enable=YES (기본값 = NO)

명시된 사용자만 로그인을 허용할 때 사용하는 옵션입니다.

userlist_deny 옵션이 비활성화 된 상태에서만 작동합니다.

 

userlist_deny=YES (기본값 = YES)

명시된 사용자가 로그인을 할 수 없도록 제한하는 옵션 입니다.

userlist_enable 옵션이 비활성화 된 상태에서만 작동하며, 서로 반대되는 개념 입니다.

 

userlist_file=/etc/vsftpd.user_list (기본값 = /etc/vsftpd.user_list)

명시된 사용자를 읽어올 파일을 지정합니다.

tcp_wrappers=YES

tcp_wrappers 적용 여부를 설정하는 것으로 사용할 것인가(YES) 사용하지 않을 것인가(NO)를 설정합니다. YES로 설정하시면 허용할 호스트는 /etc/hosts.allow 허용하지 않을 호스트는 /etc/hosts.deny에 설정합니다.

 

connect_timeout=60 (기본값 = 60/초)

액티브 모드(Active Mode)를 사용하는 클라이언트의 접속 허용시간을 설정합니다. 클라이언트의 요청패킷(SYN Packet)을 받은뒤, 지정된 시간내에 접속이 안될경우 종료합니다.

 

accept_timeout=60 (기본값 = 60/초)

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

 

data_connection_timeout=300 (기본값 = 300/Secs)

데이터 전송시 적용되는 타임아웃값을 설정합니다. 만약 ftp 연결시 큰 파일을 업로드 또는 다운로드 할 때에 전송도중 접속이 끊기는 상황이 발생한다면 이 설정을 주석처리하거나 또는 이 값을 현재 설정값 보다 크게 잡아주시고 재시도 해보십시요.

 

idle_session_timeout=300 (기본값 = 300/Secs)

ftp 연결에서 idle 타임에 대한 타임아웃값을 설정합니다. 예를 들어 이 값이 600으로 설정되어 있다면 ftp 접속후에 600초(10분)동안 아무런 작업도 없이 놀고 있다면 강제 로그아웃(timeout)시켜 버립니다.

 

ftpd_banner=Welcome to blah FTP service.

ftp 서버로 접속할 때에 안내메시지등을 출력하려면 여기서 설정하시면 됩니다. 이 설정이 적용되면 ftp 접속을 하였을 때 "Welcome to blah FTP service"라는 안내문이 출력됩니다. 이 설정에서 한글을 사용할 수도 있습니다. 각 디렉토리별 안내문에 대한 설정은 다음 지시자의 설명을 보시기 바랍니다.

 

chroot_list_enable=YES (기본값 = NO)

명시된 사용자가 자신의 홈상위 디렉토리를 접근할 수 없도록 설정합니다.

이 옵션은 chroot_local_user 옵션이 비활성화되어 있어야 사용할 수 있습니다. 전체 적용이 아니라 일부 사용자만 제한할때 편하지만, 개별 적용은 보안상 좋지 않습니다.

 

chroot_list_file=/etc/vsftpd.chroot_list

전체 사용자가 아닌 특정 사용자들에 대하여 자신의 홈디렉토리를 루트디렉토리로 인식하도록 하는 기능으로서 이 기능은 사용자의 홈디렉토리의 상위디렉토리로 벗어나지 못하도록 하는 설정입니다.

먼저 "chroot_list_enable=YES" 로 설정하시고 /etc/vsftpd.chroot_list 파일에는 이 기능을 적용할 사용자계정명을 등록해 두시면 됩니다. 즉, /etc/vsftpd.chroot_list 파일에 등록된 사용자들에 한하여 chroot()기능이 적용되어 자기 자신의 홈디렉토리 상위 디렉토리의 이동이 제한됩니다. 이 파일에 등록할 때에는 한행에 한 사용자 계정씩만 등록하셔야 합니다. 만약 전체 사용자를 대상으로 chroot()기능을 적용하고자 한다면 바로 밑에서 설정하고 있는 "chroot_local_user=YES"로 설정하시기 바랍니다.

 

chroot_local_user=YES

특정 사용자가 아닌 전체 사용자를 대상으로 chroot()기능을 적용하여 자기 자신의 홈디렉토링 상위 디렉토리로 이동하지 못하도록 하려면 이 설정을 YES로 설정하십시요. 반드시 앞의 설정과 비교해 보시기 바랍니다.

 만약 위 의 두 설정이 모두 설정되었다면

즉, "chroot_list_enable=YES"와 "chroot_local_user=YES" 설정이 모두 YES로 되어 있다면 /etc/vsftpd.chroot_list 에 등록된 사용자들만 chroot()적용을 받지 않게 됩니다. 즉, 이 두 설정이 모두 YES 로 되어 있다면 /etc/vsftpd.chroot_list 에 등록된 사용자들을 제외한 나머지 사용자들만 chroot()가 적용되어 상위 디렉토리로의 이동이 안된다는 의미입니다.

 anonymous_enable=NO

익명(anonymous) 접속을 허용할 것인가(YES) 허용하지 않을 것인가(NO)를 결정하는 지시자입니다. 기본값은 YES로 되어있으며 익명계정 접속을 허용하지 않으려면 NO 로 설정하시기 바랍니다.

pam_service_name=vsftpd
사용자 계정의 접속을 허용할때 PAM인증으로 여러가지 설정을 할수 있다. 여기서는 pam인증을 위해 사용할 설정파일의 이름을 지정한다 vsftpd라는 이름의 pam인증 설정파일을 /etc/pam.d/디렉토리에 만들어 두겠다는 의미이다.



5. vsftpd 실행

FTP 서비스 시작 : /etc/rc.d/init.d/vsftpd start

FTP 서비스 종료 : /etc/rc.d/init.d/vsftpd stop

FTP 서비스 재시작 : /etc/rc.d/init.d/vsftpd restart

vftp는 기본적으로 익명ftp로 동작하며 유저 ftp를 구동하기 위해서는 conf파일을 수정해야 한다.

 

 

'Operating System > Linux' 카테고리의 다른 글

하위폴더 권한변경  (0) 2009.02.27
CentOS 5.2 해상도변경  (1) 2009.02.27
FTP 접속시 사용자 홈디렉토리 변경 및 권한변경  (4) 2009.02.27
FTP서버 보안체크  (1) 2009.02.27
리눅스 명령어  (1) 2009.01.15
Posted by Finebe
,


alias (명령어 간소화하기)
apropos (관련된 명령어 찾기) 
arch (컴퓨터 종류 알기) 
arp (같은 서브넷의 IP 보여주기) 
at (작업 시간 정하기) 
atd (계획성 있는 작업 실행하기) 
awk (특정 패턴 문자 처리하기) 
a2p (펄 파일로 바꾸기) 
badblocks (배드 블럭 검사하기) 
bc (계산기) 
biff (메일 수신 소리로 확인하기) 
bg (후면작업; 배경화면 설정) 
bind (키나 함수 순서 결합하기) 
break (루프 빠져나가기) 
cal (달력보기) 
builtin (내부 명령어 알아보기) 
case (조건 처리하기) 
cat (화면상에서 파일 보기) 
cd (디렉토리 변경하기) 
cfdisk (디스크 설정하기) 
chattr (파일 속성 변경하기) 
chfn (사용자 정보 변경하기) 
chgrp (파일, 디렉토리가 속했던 그룹 바꾸기) 
chmod (파일 권한 바꾸기) 
chown (파일 주인 바꾸기) 
chsh (지정된 셸 바꾸기) 
cksum (CRC값을 점검한다) 
clear (화면 청소하기) 
clock (CMOS 시각을 조정하기) 
cmp (파일 비교하기) 
colcrt (문자 변환 필터) 
colrm (열 삭제하기) 
column (가로 정렬하기) 
comm (파일 비교 출력하기) 
command (명령어 알아보기) 
continue (루프 계속돌기) 
cp (파일 복사하기) 
cpio (복사본 만들기) 
crontab (cron을 관리한다) 
csplit (파일에 서식, 규칙 정하기) 
cut (필요한 필드만 출력하기) 
date (날짜 보기) 
dd (블럭장치 읽고 쓰기) 
debugfs (ext2 파일 시스템 디버깅하기) 
declare (변수 선언하기) 
df (파일 시스템의 사용량 보기) 
dirs (디렉토리 목록 표시하기) 
dmesg (부팅 메시지 보기) 
dnsdomainname (DNS 이름 출력) 
domainname (NIS 이름 출력&설정) 
du (디렉토리와 파일의 용량 파악하기) 
dumpe2fs (파일 시스템 정보 보기) 
echo (표준 출력하기) 
eject (장치 해제하기) 
elm (메일 관련) 
enable (내부 명령어 지정) 
env (환경변수 출력하기) 
eval! (인수 읽기) 
exec (셸 명령어 실행하기) 
exit (종료하기) 
expand (탭을 공백으로 변환하기) 
export (변수 지정하기) 
e2fsck (파일 시스템 복구하기) 
fc (지정된 편집기 받기) 
fdformat (플로피 디스크 포맷하기) 
fdisk (파티션 나누기) 
fg (지정된 작업을 전면 프로세스로 시작하기) 
file (파일 종류 보기) 
find (파일 찾기) 
finger (사용자 정보 알기) 
fold (정형화하기) 
fmt (정형화하기) 
for (반복 실행하기) 
free (메모리 사용량 알아보기) 
fsck (파일 시스템 검사하기) 
fstab (파일 시스템에 대한 고정적인 정보 저장하기) 
ftp (파일 전송 프로그램) 
fuser (프로세스 ID 출력) 
getkeycodes (매핑 테이블 출력하기) 
grep (특정 문자 (열) 검색하기) 
gzexe (실행 파일 압축하기) 
gzip (압축하기) 
halt (시스템 종료하기) 
hash (기억해 두기; index 역할) 
head (파일의 앞부분 출력하기) 
help (도움말 보여주기) 
host (호스트 정보 보기) 
history (사용 명령어 목록보기) 
hostname (서버 이름 알기) 
id (계정 정보 알기) 
if (조건문 실행하기) 
ifconfig (랜카드에 주소 할당하기) 
imolamod (모듈 설치하기) 
inetd (인터넷 서비스의 최상위 데몬) 
init (실행 단계 정하기) 
ispell (철자법 검사하기) 
jobs (수행중인 프로세스 알기) 
kbd_mode (키보드 모드 출력하기) 
kill (프로세스 죽이기) 
klogd (커널 로그 데몬) 
ldd (공유 라이브러리의 의존성 알기) 
less (페이지 단위로 출력하기) 
let (정규식 표현하기) 
lilo (부팅하기) 
ln (링크하기) 
locate (패턴에 맞는 파일 찾기) 
login (로그인하기) 
logger (시스템 로그 기록하기) 
logname (사용자 로그인명 보여주기) 
logout (로그인 셸 종료하기) 
look (특정 단어 검색하기) 
losetup (중복 장치 확인하기) 
lpd (프린트 데몬) 
lpq (현재 프린트 작업 상태 출력하기) 
lpr (출력하기) 
lprm (대기열에 있는 문서 삭제하기) 
ls (디렉토리 내용보기) 
lsattr (파일 시스템의 속성 보여주기) 
lsdev (하드웨어 장치 출력하기) 
lsmod (모듈 정보 출력하기) 
mail (메일 관련) 
make (컴파일하기) 
man (매뉴얼 보기) 
mattrib              (ms-dos 파일 속성변경) 
mbadblocks      (MS-DOS 파일 시스템 배드블럭 표시)
mcd                 (MS-DOS 디렉토리 변경)
mcopy             (리눅스 도스간 파일복사)
mdel                (MS-dos 파일삭제)
mdeltree           (ms-dos 파일이나 디렉토리 삭제)
mdir                 (ms-dos 파일 목록보기)
mesg (메시지를 받을 수 있는지 확인하기) 
mformat            (ms-dos 파일 시스템 만들기)
minfo                (ms-dos 파일 시스템에서 매개변수보기)
mkdir (디렉토리 만들기) 
mke2fs (파일 시스템 생성하기) 
mkfs (파일 시스템 만들기) 
mknod (특수 파일 만들기) 
mkswap (스왑 영역 지정하기) 
mlabel               (ms-dos 디스크 레이블 만들기)
mmd                 (ms-dos 파일시스템 디렉토리 만들기 #mmd a:/testdir)
mmount             (ms-dos 파일 시스템 마운트)
mmove              (ms-dos 파일 옮기기 이름바꾸기)
mpartition           (커널모듈의 적재)
mount (장치 연결하기) 
more (화면 단위로 출력하기) 
mrd                   (ms-dos 디렉토리 삭제)
mren                 (ms-dos 파일이름 바꾸기)
mtoolstest          (특정드리이브를 지정하여 mtoolstest로 mtools설정 테스트)
mtype                (ms-dos 파일 내용보기)
mutt (메일 관련) 
mv (파일 옮기기) 
mzip 
netstat (현재 네트웍 상황 보기) 
nice (프로세스 우선 순위 변경하기) 
od (8진수로 파일 보기) 
passwd (암호 입력하기) 
pidof (실행중인 프로그램의 프로세스 ID 찾기) 
pine (메일 관련) 
ping (네트웍 확인하기) 
popd (pushd 취소) 
ps (프로세스 纘?알기) 
pstree (프로세스 상관관계 알기) 
pwd (절대경로 보여주기) 
quota (디스크 한계량 알기) 
rarp (rarp 테이블 관리하기) 
rcp (원격 호스트에 파일 복사하기) 
rdev (루트, 스왑장치, 램 크기, 비디오 모드를 조사하고 설정하기) 
rdate (네트웍으로 시간 설정하기) 
reboot (재부팅하기) 
rmmod (모듈 지우기) 
readonly (읽기 전용으로 표시하기) 
renice (프로세스 우선 순위 바꾸기) 
reset (터미널 초기화하기) 
restore (다시 저장하기) 
rlogin (바로 접속하기) 
rm (파일 지우기) 
rmdir (디렉토리 지우기) 
route (라우팅 테이블 추가/삭제하기) 
rpm (프로그램 추가/삭제) 
rpm2cpio (rpm을 cpio로 변환하기) 
rsh (원격으로 명령어 실행하기) 
rup (호스트 상태 출력하기) 
rusers (호스트에 로그인한 사용자 출력하기) 
rwall (호스트 사용자에게 메시지 뿌리기) 
script (기록하기) 
set (변수값 설정하기) 
setup (시스템 관련 설정하기) 
showmount (호스트의 마운트 정보 보여주기) 
shutdown (전원 끄기) 
sleep (잠시 쉬기) 
source (스크립트 번역하기) 
split (파일 나누기) 
ssh (암호화된 원격 로그인하기) 
stty (터미널라인 설정 보여주기) 
su (계정 바꾸기) 
suspend (셸 중단하기) 
swapoff (스왑 해제하기) 
swapon (스왑 활성화하기) 
sync (버퍼 재설정하기) 
syslogd (로그인 과정 설정하기) 
tac (거꾸로 보기) 
tail (문서 끝부분 출력하기) 
talk (이야기하기) 
tar (파일 묶기) 
tcpdchk (tcp wrapper 설정하기) 
tcpmatch (네트웍 요청에 대해 예측하기) 
tee (표준 입력으로부터 표준 출력 만들기) 
telnet (원격접속하기) 
test (테스트하기) 
times (셸에서의 사용자와 시스템 시간 출력하기) 
top (cpu 프로세스 상황 보여주기) 
tr (문자열 바꿔주기) 
true (종료 코드 리턴하기) 
type (유형 보기) 
ul (밑줄 처리해서 보여주기) 
ulimit (제한하기) 
umask (매스크 모드 설정하기) 
umount (장치 해제하기) 
unalias (별명 제거하기) 
uname (시스템 정보 보기) 
unexpand (공백 문자를 탭으로 변환하기) 
uniq (중복된 문장 찾기) 
useradd (사용자 계정 만들기) 
userdel (계정 삭제하기) 
usermod (사용자 계정정보 수정하기) 
unset (설정 변수 해제) 
uptime (시스템 부하 평균 보여주기) 
users (로그인된 사용자 보여주기) 
w (시스템에 접속한 사용자 상황 알아보기) 
wait (프로세스 기다리기) 
wall (모든 사용자에게 메시지 보내기) 
wc (문자, 단어, 라인수 세기) 
whatis (명령어의 간단한 설명보기) 
while (루프 명령어) 
who (사용자 알기) 
write (콘솔 상에서 간단한 메시지 보내기) 
xcopy (반복적으로 복사하기) 
XFree86 
ypchfn (NIS에서 사용하는 chfn 명령어) 
ypchsh (NIS에서 사용하는 chsh 명령어) 
yppasswd (NIS에서 사용하는 passwd 명령어) 
zcat (압축 파일 보기) 
zcmp (압축 파일 비교하기) 
zforce (강제로 gz 만들기) 
zgrep (압축 상태에서 grep 실행하기) 
zmore (압축 상태에서 more 실행하기) 
Posted by Finebe
,


Posted by Finebe
,