0
1.1 FTP 보안
● FTP(File Transfer Protocol)
 - 패스워드는 평문으로 전달된다.
 관련파일( 접근통제)
 /etc/ftpusers : 파일에 적힌 사용자는 FTP 접근 제한
/etc/hosts.deny : 특정 IP 제한
/etc/hosts.allow : 특정 IP 허용
● 제어 연결
- 21 번 포트 사용
- 전체 FTP 세션 동안 계속 연결상태 유지
● 데이터 연결
- 20번 포트 또는 1024번 이후 포트
-  각각의 파일 전송 때마다 설정 되면 전송이 완료후 폐쇄
<FTP MODE>
● Active Mode(능동모드)
1. 클라이언트가 1024 이상의 임의포트(N) 개방후 FTP 서버 21번 포트 연결
2. 클라이언트는 N+1포트를 열어놓고 대기, FTP가 20번 포트를 이용해 N+1포트 접속
- 클라이언트가 방화벽있을 경우 안될수있다. 이럴때는 수동모드로 해결

명령

클라이언트 > 1024 포트 서버 21번 포트

데이터

클라이언트 > 1024 포트 서버 20번 포트


● Passive Mode(수동모드)
1. 클라이언트가 1024 이상의 임의포트(N) 개방후 FTP 서버 21번 포트 연결
2. 클라이언트는 N번 포트를 열어 대기를 하고, FTP 명령인 PASV명령을 FTP 서버에 전송

명령

클라이언트 > 1024 포트 서버 21번 포트

데이터

클라이언트 > 1024 포트 서버 > 1024번 포트

-서버가 방화벽있을 경우 안될수있다.

1.1.2  FTP  공격 유형
● FTP Bounce Attack
- FTP 서버가 데이터를 전송시 목적지를 검사하지않는 설계상의 문제점 이용
- 익명 FTP서버로 호스트를 스캔
- 클라이언트가 서버에 제어연결후 능동모드에서 자신의 포트정보가 아닌 원하는 포트에 연결하여 스캔
- FTP Bounce Attck을 이용하면 메일의 헤더부분을 허위로 입력된 거짓 메일을 만들어 보낼수있다.
<해결책>
- 다른 서비스가 20번 포트 접속을 요청하면 거절
- Anonymous FTP서버의 경우 ./incoming에 악의의 사용자가 파일 업로드를 하는것을 금지
● Anonymous FTP Attack
-익명 FTP 설정 파일의 잘못을 이용한 파일 유출 공격기법
<해결책>
- 익명 사용자가 로그인시 루트가 되는 디렉토리의 소유주를 반드시 root가 되어야 하며 퍼미션은 555(쓰기권한 해제)로 해야 한다.
-  ftp/bin 디렉토리 소유주는 root로 퍼미션은 111, 디렉토리속 파일들도 소유주와 퍼미션을 같게 해준다.
- ftp/pub 디렉토리 소유주는 FTP 관리자에게 주고 퍼미션은 555로 한다.
- ftp/incoming 누구나 업로드할수있는 디렉토리일 경우 디렉토리 소유주는  root, 퍼미션은 777준다. 이 디렉토리만을 위한 새로운 파일시스템을 만들어도 좋다.
- ftp/etc/passwd 파일은 ls listing을 위해 유저 이름에게 단지 UID를 제공하기 위해 사용되는데 이 파일에는 root와 ftp를 포함 해야 하며 /etc/passwd에 포함된 계정들은 포함되서는 안된다.
- ftp 밑에 .rhosts, .forward 파일은 만들되 파일 크기를 0으로하며 소유주는 root, 권한은 000으로 한다.

● TFTP(Trivial File Transfer Protocol)을 이용한 File-Name Transfer Attack
- X-terminal이나 디스크없는 클라이언트 설치 시 주로 사용되는 프로토콜로 다음과 같은 문제점을 이용한 공격이다.
  1. 인증 절차를 요구하지않는다.( 사용자 인증 기능이 아예 없다.)
  2. 설정이 잘못 되어 있을 경우 누구나 그 호스트에 접근하여 파일을 가져 갈 수 있다.
<해결책>
- TFTP를 사용하지않을 경우 시스템 환경 파일에서 주석처리 또는 제거
#tftp dgram udp wait root /usr/etc/in.tftpd in.tftpd -s /tftpboot
- TFTP데몬을 보안 모드로 작동하게 설정
- /etc/inet.conf 파일이 다음과 같이 설정되어 있는지 확인한다.
   현재는 inet.conf 대신 inetd.conf 또는  xinetd.conf으로 바뀌었다.
#tftp dgram udp wait root /usr/etc/in.tftpd in.tftpd -s /tftpboot   //SunOS 4.X
 ※ 여기서 -s 옵션은 /tftpboot 디렉토리를 최상위 루트 디렉토리로 지정해준다.
-/etc/tftpaccess.ctl 파일만들어 접근 통제                               // AIX 

1.2. 메일 보안
1.2.1 메일 개념
● SMTP(Simple Message Transfer Protocol) TCP 25 port
-  MTA(Mail Transfer Agent) : 인터넷 상에 있는 하나의 컴퓨터로부터 다른 컴퓨터로 전자메일을 전송하는 서버 프로그램
- MUA(Mail Use Agent) : 사용자가 메일을 송수신할 때 사용하는 클라이언트 프로그램
 <메일 전송 원리>      
MUA     →    MTA   →   MTA           →          MUA
        (SMTP)      (SMTP)      (POP3 or IMAP)

● POP3(Post Office Protocol) TCP 110 port
- 클라이언트가 메일 서버로부터 우편을 획득시 먼저 서버와의 통신 경로를 확립
- 메일 서버내 POP3 서버는 클라이어튼로부터 통신경로를 확립하여 기다리는 상태
- 메일 서버에서 가져온 메일은 메일서버에서 삭제되고 클라이언트에만 존재한다.

● IMAP(Internet Message Access Protocol)
- IMAP은 143번 포트, IMAP3의 경우 220번 포트 사용
- POP3와 같은 역할을 하지만 메일을 보내는 방법에 차이
- 메일을 읽어도 메일 서버에 메일 계속 존재
- 메일 헤더만 보고 읽을 수 있으며 읽은 메일은 읽지 않은 메일과 구분되어 표시
- IMAP을 통하여 사용자는 메일 박스 만들기, 지우기, 이름 바꾸기 가능하고
  새로운 메시지 받기, 받은 메시지 지우기, 메일 검색 기능 등을 이용할 수 있다.

1.2.2 메일 서비스 공격 유형
● Active Contents Attack
- 메일 열람시 HTML 기능이 있는 웹 브라우저등을 사용하는 이용자들 대상 공격
- 자바 스크립트, 비주얼베이직 스크립트 등과 같은 기능을 악용하여 사용자 컴퓨터 정보 유출
<해결책>
- 스크립팅 기능을 사용하지 않도록 설정, Outlook에서 스크립팅 기능을 제거하는 방법으로는 메일을 저장할때 스크립트 태그를 다른 이름으로 바꾸어 저장 사용자는 스크립트를 해석하지 못하게 된다.
● Buffer Overflow Attack
● Trojan Horse Attack
● SendMail Attack
- sendmail 8.8.4에서 sendmail이 배달되지 않은 메시지를 /var/tmp/dead.letter파일끝에 저장한다는 사실과 링크를 이용하여 루트 권한을 얻을 수 있었다.(/var/tmp/dead.letter/etc/passwd)
- SMTP 명령어 중 EXPN(expand)와 VRFY(verify)는 사용자의 정보를 외부로 유출 가능
- 메시지 내용은 사용자 계정을 기록하고, 도착할 수 없는 메시지를 보내면 새로운 계정기록 sendmail 헤더 파싱코드의 버그에 초점 많은 수의 "To:"헤더를 가진 메시지를 생성함으로써 크래커들은 서버를 정지시킬 수 있는데 9.0.2와 그 이전 버전에 영향을 미쳤다.
- 서버와 연결 후에 사용자에게 메일을 보내는 일을 반복한다. 튻히 전송되는 메시지 안에 15,000개의 "To:" 가 있어 sendmail 을 정지 시키게 되고, 서버는 메일 송수신을 거부한다.

---------------------------여기서부터 1급 입니다..----------------------------------
1.2.3 Spam Mail
● sendmail 에서 Amti-Spam 기능과 AcessDB를 이용한 차단
- 8.9.x부터 모든곳 메일 발송 막아놓음. /etc/mail/access에서 IP를 지정하여 RELAY를 풀어줘야한다.
- 설정후 access.db 갱신
# makeup hash /etc/mail/access < /etc/mail/access

/etc/mail/access

Spam.com            REJECT

Sendmail.org         OK

Localhost             RELAY

       REJECT : 발신을 모두 거부

       OK : 다른 설정규칙이 거부하는 경우에도 전부 받아들임

       RELAY : 지정된 도메인만 수발신을 받아들임

 


---------------------------1급 끝----------------------------------------------------

1.3 웹 보안
1.3.1 웹 개념
● HTTP
- 1.0과 1.1의 차이점 이해
  - HTTP/1.1에서는 "?"를 이용하여 쿼리문을 만들 수 있다.
- 1.1의 특징으로는 계층적이지 않은 프록시(=프락시) 지원, 캐시의 지원, 부적절한 지속적인 연결과 가상 호스트를 통제
- URL : http://HOST[":" port] [absolute_path["?" query] ! query를 통해서 자료 전송
● HTTP Request
- GET : 요청 받은 정보를 검색
- HEAD : GET 방식과 비슷하지만 요청 받은 자료를 되돌려 주지 않는다.
- POST : 서버가 정보를 받고 서버에서 동작하도록 요청
- OPTIONS : 요청 받은 리소스에 가능한 통신 옵션에 대한 정보 요청
- PUT : 내용이 제공되는 리소스에 저장되기를 원하는 요청
- DELETE : 명시된 리소스를 서버가 삭제될 것을 요청
- TRACE : 루프백 메시지를 위한 요청을 송신
● HTTP Header
- Hosts : 요청을 받는 서버의 호스트명이나 IP
- Accept : 허용 가능한 타입(ex, text/html, image/gif등)
- Referer : 참조 URL
- User-Agent : 클라이언트의 웹 브라우저
- Cookie : 쿠키 정보
- Content-Length : POST 방식을 사용할 경우 동봉되는 데이터의 크기
- Content-Type : 동봉되는 데이터의 타입
- Cache-Control : 캐시값을 지정하지 않았을 경우 특정 웹 리소스의 모든 캐싱을 방지
● HTTP Reply
응답 코드(관련된 응답과 일치하는 번호), 헤더 필드 (응답에 대한 추가적인 정보), 자료(내용 또는 응답의 몸체)로 구성
<응답코드>
200~299: 성공, 300 ~ 399 : Redirection, 400 ~ 499 : 클라이언트 오류, 500~599 : 서버 오류
200 : 성공
302 : request가 요구한 데이터를 발견하였으나 실제 다른 URL에 존재
403 : 권한 없음 
404 : 페이지 없음.
410 : 요구된 자원은 더 이상 활용 가능하지 않다.
500 : 서버 내부 오류
502 : 서버에 자원을 요구 하였지만, 유효한 응답을 전달 해 오지 않음.
503 : 서버 과부화로 인한 오류
504 : 502와 비슷하나, 응답이 너무 오래 되어서 트랜잭션 실패

1.3.2 웹서비스 운영
● 아파치 웹서버 운영
(가) 디렉토리 리스팅 제거
httpd.conf파일내에 <Directory>지시어 내에 Options의 Indexes 옵션 제거
(나) 서버 정보 표시 제한
ServerTokens ProductOnly
ServerSignature Off
(다) HTTP 요청방식 제한 설정
Directory와 Limit 지시어를 이용한 요청방식 제한
 - 파일의 업로드(PUT)와 수정 (POST), 삭제(DELETE)를 패스워드 파일에 등록된 사용자만 이용가능하도록 제한
- Require valid-user
(라) SSI 실행 제한 설정
- SSI가 가능한 파일의 확장자 지정
   AddType text/html .shtml
  AddHandler werver-parsed .shtml
- SSI 페이지에서 스크립트나 프로그램의 실행 불가
   Options 지시자에서 Includes 를 IncludesNOEXEC로 교체
(마) CGI 스크립트 실행 제한 설정
- ScriptAlias 지시자에서 CGI 스크립트가 실행 가능한 디렉토리 지정
  ScriptAlias /cgi-bin/ "var/www/cgi-bin"
- Options 지시자에 ExecCGI 옵션 명시후 AddHandler로 CGI 스키립트로 처리할 파일의 확장자 지정
   Options ExecCGI
   AddHandler cgi-script .cgi 
<부록>
1. FTP 권한
- FTP에서 707 권한을 준다면 순서대로  의미는 주인의 권한(7), 그룹의 권한(0), 게스트의 권한(7)
읽기권한은 4, 쓰기권한은 2, 실행 권한은 1

'보안 > sis' 카테고리의 다른 글

[펌] MAC, DAC , RBAC 접근통제  (2) 2012.05.12
시스템보안 자주 헷갈리는 것들  (0) 2011.09.19

+ Recent posts