딩굴댕굴

Linux - 24. FTP 서버 관리, hping

by jennysgap

BOX

FTP 서버 관리

1. FTP (File Transfer Protocol)

파일을 업로드 또는 다운로드 하기위해 사용되는 보편적인 통신 방법으로 인증 후 업로드 다운로드가 가능.

FTP 사용 시 서비스는 2가지로 나뉘어 Control, Data transfer의 서비스를 진행.

- Control 서비스 : FTP를 사용하기 위해 명령의 전달에 사용되는 서비스로 21번 포트를 사용하며, 인증을 포함함.

- Data transfer 서비스 : FTP상에 있는 파일을 전송하는 서비스로 20번 포트를 주로 사용하며, 

                                     클라이언트가 임의 변경할 수 있음. 인증이 없으므로 보안적 문제가 발생할 수 있음.

-> Active mode   : 20번 포트를 이용한 데이터 전송/수신 방식 (고정포트방식)

-> Passive mode : 20번 포트외 1024번 이상의 포트를 이용 (수동방식) 클라이언트가 설정하는 내용


2. 설치 및 구성

다운로드 사이트 :  http://www.proftpd.org

# tar zxvf proftpd-1.3.5.tar.gz

# cd proftpd-1.3.5

# ./configure

# make

# make install

# groupadd nogroup

# mkdir /var/ftp

# chown ftp:ftp /var/ftp

# vi  /etc/hosts

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

192.168.x.xx class1

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

# cd /usr/local/sbin

# ls  proftpd

# proftpd


# yum  list  ftp

# yum  install  ftp


* ftp 명령 정리 (로그인 후 사용)

- ls  :  파일 목록 약식으로 보기 (파일명만 출력)

- dir :  'ls -l' 형식으로 목록 출력

- get file_name :  파일 다운로드 (한번에 한개만 지정 가능)

- mget file1 file2 file3 :  복수 파일 다운로드

- put file_name :  파일 업로드 (한번에 한개씩, 디렉터리 권한 있을 경우만)

- mput file1 file2 file3 :  복수 파일 업로드

- prompt :  (1회 실행 시 문의 기능 off, 2회 실행 시 문의 기능 on)

- bye :  접속 끊기, 프로그램 종료

# ftp localhost

ID : user1

passwd : xxxx

ftp> bye


# ftp 192.168.3.245

ID : ftp

passwd : @

ftp> bye


연습하면서 파일을 ftp로 주고 받을 때, 와이어샤크로 살펴 보면서 하기

와이어 샤크로 분석하는 것도 필요


hping

예전에 일본사이트에 공격하던 패턴임. 아직까지도 사용중. 

점검하기 위해서 보통 사용하기 때문에 막지 않음.

데이터가 만들어지면서 보내는 기능 (공식파일)


1) hping 설치

다운로드 사이트 : http://hping.org/

# wget http://hping.org/download/src/hping2-2.0.0.tar.gz (파일명 확인 필수)

# tar  zxvf  hping2-2.0.0.tar.gz

# cd hping2-2.0.0

# ./configure

# make

# make install

# hping2 -S -p 21  localhost


:!bash vi 편집기 상태에서 잠깐 나갔다 와야 해

exit 다시 돌아감

kill -HUP 2297 구성정보만 날리는 거임 (프로그램 죽이지 않음) 고로 번호는 바뀌지 않음


2) 구성정보 파일

# vi /usr/local/etc/proftpd.conf

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

ServerName     : FTP 서버에 관한 정보 영역. 서버의 간단한 이름 정보 또는 공란

  그대로 쓰면 안됨, 버그 없이 만든 프로그램이 있을 수 없기 때문에

  버전정보는 안가려지지만 서버네임이라도 바꿔야 함

ServerIdent      : FTP 서버 프로그램 버전 정보 출력

  서버의 버전정보를 감출 수 있다. 한줄 자체를 바꿔주는 것!

-> ServerIdent   on   "Class FTP Server"

* 해당 키 값 생략 시 프로그램 버전 정보 출력


왜 이름키랑 버전정보를 감춘건가요?

프로그램 버전을 보여줬다는 건 주민번호 보여주고 다닌 거랑 같은 의미


내가 확인할 작업

1. 버전정보가 나오는지

2. 키값이 나와있는지

 Port port_no. : 서버가 사용할 컨트롤 포트 번호. 변경할 경우 타 서비스와 겹치지 않는 번호를 이용하여 설정.

* 포트번호 변경 시 클라이언트, 서버 양측의 /etc/services 파일의 ftp 서비스번호를 변경.


** Login 제한

# User login Limit

<Limit LOGIN>

AllowUser user1 :  로그인 가능한 유저 지정         ftp를 사용하고자 하는 사용자가 적을 때 주로 사용

AllowGroup ftp       :  로그인 가능한 그룹 사용자 지정 범위를 좀더 포괄적으로 넓힐 때 사용

Deny    All             :  로그인을 거절할 유저         이건 무조건 입력! (적용 순서가 위에서 부터 순차적으로기 때문에 마지막 입력)

</Limit>


<Limit LOGIN>

Order Deny, Allow

Deny from IP_Address

Allow from All

</Limit>


ftp로 로그인 하면 자기 홈디렉터리로 로그인 되는 것은 좋지 않음 (보안적으로)

사용자가 로그인 안되면 의심부터 하기 때문에 공지를 해야 하는 상황이다.     

AccessDenyMSG 통해서 입력해야 함!


AccessGrantMSG : 로그인 성공 시 출력되는 230코드의 메시지(Welcomm MSG)

-> AccessGrantMSG  "Welcom %u" 

%u : 로그인 사용자 이름으로 치환.


AccessDenyMSG :  로그인 실패 시 출력되는 530코드의 메시지(Failed MSG)

-> AccessDenyMSG  "%u user login rejected."


DefaultRoot <dir_name> :  로그인 한 사용자의 위치를 제한함.

     (중요 디렉터리 접근을 차단하기 위한 보안 설정)


jailed 상위디렉터리로 이동할 수 없게. 움직이지 못하게 막는 것. (감옥)

defaultRoot (홈디렉터리) 당연히 써야 되는 명령어 중 하나다.

위치에 대한 제한을 하는 명령어! (일반 사용자 계정만 사용할 수 있음)

ftp는 root계정을 사용할 수 없음 (어떠한 ftp 프로그램에서도 사용할 수 없음)


<운영 관리 팁>

* 서버 프로세스(daemon) 재시작하기

{전통 방식}

# ps -ef  | grep ftp

# kill  PID

# /usr/local/sbin/proftpd

{쇼컷}

# ps -ef | grep ftp

# kill  -HUP  PID   (서버 프로세스 종료가 아닌 구성정보만 reload)

위 두 가지를 축약한 형식

# pkill  -HUP  proftpd  (pkill 명령은 ps, grep, kill 명령을 합친 명령으로 대상 명령의 이름은 정확하게 표현하여 실행.)


MaxClients (숫자)   :  ftp 서버에 접속할 수 있는 사용자 수

* /etc/ftpusers       :  해당 파일 생성 시 계정을 등록하고, 해당 계정은 ftp 서비스 사용 금지.

* /etc/hosts.allow/deny :  tcpwrapper 프로그램으로 IP 필터 기능 수행.



필기

지금까지 배운 것들이 ftp 보안 정검할 때 쓰는 것들임. 현재까지 우리가 쓰는 쉘중에 제일 편한 쉘이 bash 쉘임


/etc/shadow: ftp:*:15980: 0: 99999: 7:::

* not possable passwd

:: not login 로그인 못하게 하는 쉘임


ftp 사용하는 계정들은 특이하다고 보면 됨 익명 계정 위험한 거예요?  좋은거예요?

어나니머스 ftp 사용??

누구나 다 쓰는 공용 계정임 DefaultRoot 기능이 없는 ftp는 엄청 위험함

만약 DefaultRoot 기능이 있다면 괜찮음. 이거 쓰는 것이 좋음

저 디렉터리 안에 중요한 정보를 넣으면 안됨! 다른계정들은 사실상 로그인을 하지 못하도록 하는 것이 좋음

* 보호되어있는네트워크망 안에서는 공용계정보다는 일반계정 사용하는 것이 더 좋음 trustarea 임


관제에 있어서는 어나니머스 ftp 사용을 하면 안됨

바운스 어택이라는 공격이 옴. 외국에 있는 어나니머스 ftp가 있음 이게 공격을 해줌

찾아오는데 시간이 오래 걸리고 너 우리나라 사람이 아니잖아 귀찮아 조사 협조 안해줌

효과가 좋지는 않은데 탐색할 때 많이씀!!!!!!!!!!!!!!


사용한다면 내부망에서만 쓴다던가. 일부 사람에게만 조금 허용하던가. 

세션을 적게하고 자료를 작은 파일로만 올린다면 괜찮음

왠만하면 안쓰는 것이 좋고 쓴다고 한다면 sftp 로 전환해서 쓰는 것이 좋음.

anonymace ftp는 사용하지 마세요 되도록...



내일 배울 내용

공유란?

  - 이게 왜 필요해?

  - 혹시 위험하지 않을까?

  - 클라우드에서 공유하는 것은 기기공유 (인증필수)

  - 데이터 공유는 인증할 수도 있고 아닐 수도 있다. 


Data Share

1. NFS : Network FS ( 인증 X )

- 데이터 보안에 상당히 주의

- 동기종 간에 공유 (리눅스-리눅스, 윈도우-윈도우, 리눅스-유닉스, 매킨토시-유닉스)


2. smb : Network 공유 ( 인증 O )

- 이기종 간에 공유 (리눅스-윈도우)



반응형

'BOX' 카테고리의 다른 글

Linux - 26. DNS  (0) 2016.12.07
Linux - 25. NFS [작업중]  (0) 2016.12.07
Linux - 23. System Log II  (0) 2016.12.07
Linux - 22. System Log I  (0) 2016.12.07
Linux - 21. 프로세스 관리  (0) 2016.12.07

블로그의 정보

jennysgap

jennysgap

활동하기