100: Continue
101: Switching Protocols
200: OK, 
에러없이 전송 성공
202: Accepted, 
서버가 클라이언트의 명령을 받음.
203: Non-authoritavive Information, 
서버가 클라이언트 요구중 일부만 정송
204: Non Content, 
클라이언트 요구를 처리했으나 전송할 데이터가 없음.
205: Reset Content
206: Partial Content
300: Multiple Choisces, 
최근에 옮겨진 데이터를 요청
301: Moved Permanently, 
요구한 데이터를 변경된 임시 URL에서 찾았음.
302: Moved Permanently, 
요구한 데이터가 변경된 URL에 있음을 명시.
303: See Other, 
요구한 데이터를 변경하지 않았기 때문에 문제가 있음.
304: Not modified
305: Use Proxy
400: Bad Request, 
요청실패문법상 오류가 있어서버가 요청사항을 이해하지 못함클라이언트는 수정없이 요청사항을 반복하지 않을 것이다.
401.1: Unauthorized, 
권한 없음 (접속실패)이 에러는 서버에 로그온 하려는 요청사항이 서버에 들어있는 권한과 비교했을 때 맞지 않을 경우 발생한다이 경우여러분이 요청한 자원에 접근할 수 있는 권한을 부여받기 위해 서버 운영자에게 요청해야 할 것이다.
401.2: Unauthorized, 
권한 없음(서버설정으로 인한 접속 실패)이 에러는 서버에 로그온 하려는 요청사항이 서버에 들어있는 권한과 비교했을 때 맞지않을 경우 발생한다이것은 일반적을 으로 적절한 www-authenticate head field를 전송하지 않아서 발생한다.
401.3: Unauthorized, 
권한 없음(자원에 대한 ACL에 기인한 권한 없음)이 에러는 클라이언트가 특정 자원에 접근할 수 없을 때 발생한다이 자원은 페이지가 될 수도 있고 , 클라이언트의 주소 입력란에 명기된 파일일 수도 있다아니면 클라이언트가 행당 주소로 들어갈 때 이용되는 또 다른 파일일 수도 있다여러분이 접근할 전체 주소를 다시 확인해 보고 웹 서버 운영자에게 여러분이 자원에 접근할 권한이 있는지를 확인해 본다.
401.4: Unauthorized, 
권한 없음(필터에 의한 권한 부여 실패)이 에러는 웹 서버가 서버에 접속하는 사용자들을 확인하기 위해 설치한 필터 프로그램이 있음을 의미한다서버에 접속한는 데 이용되는 인증 과정이 이런 필터 프로그램에 의해 거부되었다.
401.5: Unauthorized, 
권한 없음(ISA PI/CGI 애플리케이션에 의한 권한부여 실패)이 에러는 여러분이 이용하려는 웹 서버의 어드레스에 ISA PI CGI프로그램이 설치되어 있어 사용자의 권한을 검증하고 있음을 의미한다서버에 접속하는 데 이용되는 인증 과정이 이 프로그램에 의해 거부되었다.
402: Payment Required, 
예약됨.
403.1: Forbidden, 
금지(수행접근 금지)이 오류는 CGI ISAPI,혹은 수행시키지 못하도록 되어있는 디렉토리 내의 실행 파일을 수행시키려고 했을 때 발생한다.
403.2: Forbidden,  
금지(읽기 접근 금지)이 에러는 브라우저가 접근한 디렉토리에 가용한 디폴트 페이지가 없을 경우에 발생한다아니면 EecuteScript로 분한이 부여된 디렉토리에 들어있는 HTML페이지를 보려했을 때 발생한다.
403.4: Forbidden,  
금지(SSL 필요함)이 에러는 여러분이 접근하려는 페이지가 SSL로 보안유지 되고 있는 것일 때 발생한다이것을 보기 위해서 여러분은 주소를 입력하기 전에 먼저 SSL을 이용할 수 있어야 한다.
403.5: Forbidden,  
금지 (SSL 128필요함)이 에러는 접근하려는 페이지가 SSL로 보안유지 되고 있는 것일 때 발생한다이 자원을 보기 위해서는 여러분의 브라우저가 SSL의 행당 레벌을 지원해야 한다여러분의 브라우저가 128비트의 SSL을 지원하는 지를 확인해 본다.
403.6: Forbidden,  
금지(IP 주소 거부됨)이 에러는 서버가 사이트에 접근이 허용되지 않은 IP주소를 갖고 있는데사용자가 이 주소로 접근하려 했을 때 발생한다.
403.7: Forbidden,  
금지(클라이언트 확인 필요)이 에러는 여러분이 접근하려는 자원이 서버가 인식하기 위해 여러분의 브라우저에게 클라이언트 SSL을 요청하는 경우 발생한다이것은 여러분이 자원을 이용할 수 있는 상용자임을 입증하는데 사용된다.
403.8: Forbidden,  
금지 (사이트 접근 거부됨)이 에러는 웹 서버가 요청사항을 수행하고 있지 않거나해당 사이트에 접근하는 것이 허락되지 않았을 경우 발생한다.
403.9: Forbidden, 
접근 금지(연결된 사용자수 과다)이 에러는 웹서버 BUSY 상태에 있어서 여러분의 요청을 수행할수 없을 경우에 발생한다잠시 후에 다시 접근해 보도록 한다.
403.10: Forbidden,  
접근금지(설정이 확실 하지 않음)이 순간 웹 서버의 설정쪽에 문제가 있다
403.11: Forbidden,  
접근금지(패스워드 변경됨)이 에러는 사용자 확인단계에서 잘못된 패스워드를 입력했을 경우 발생한다페이지를 갱신한 후 다시 시도해 본다.
403.12: Forbidden,  
접근금지(Mapper 접근 금지됨)여러분의 클이언트 인증용 맵이 해당 웹 사이트에 접근하는 것이 거부되었다사이트 운영자에게 클라이언트 인증 허가를 요청한다또한 여러분은 여러분의 클라이언트 인증을 바꿀 수도 있다.
404: Not Found, 
문서를 찾을 수 없음.웹 서버가 요청한 파일이나 스크립트를 찾지 못했다. URL을 다시 잘 보고 주소가 올바로 입력되었는지 확인해본다.- 해결방법: a.도구 ▶ 인터넷옵션 ▶ 일반 ▶ 쿠키삭제파일삭제목록지우기                  b.도구 ▶ 인터넷옵션 ▶ 고급 ▶ [URL을 항상 UTF-8FH로 보냄체크 해제
405: Method not allowed, 
메쏘드 허용안됨Request 라인에 명시된 메쏘드를 수행하기 위해 해당 자원의 이용이 허용되지 않았다여러분이 요청한 자원에 적절한 MIME 타입을 갖고 있는지 확인해 본다.
406: Not Acceptable, 
받아들일 수 없음요청 사항에 필요한 자원은 요청 사항으로 전달된 Acceptheader에 따라 "Not Acceptable"인 내용을 가진Response 개체만을 만들 수 있다.
407: Proxy Authentication Required, 
대리(Proxy) 인증이 필요함해당 요청이 수행되도록 proxy 서버에게 인증을 받아야 한다. proxy서버로 로그온 한 후에 다기 시도해 본다.
408: Request timeout, 
요청시간이 지남
409: Conflict
410: Gone, 
영구적으로 사용할 수 없음.
411: Length Required
412: Precondition Failed, 
선결조건 실패Request-header field에 하나 이상에 선결조건에 대한 값이 서버에서 테스트 결과 FALSE로 나왔을 경우에 발생한다현재 자원의 메타-정보가 하나 이상의 자원에 적용되는 것을 막기 위한 클라이언트 선결조건이 의도되어졌다.
413: Request entity too large
414: Request-URI too long, 
요청한 URI가 너무 길다요청한 URI가 너무 길어서 서버가 요청 사항의 이행을 거부했다이렇게 희귀한 상황은 아래와 같은 경우에만 발생한다클라이언트가 긴 탐색용 정보를 가지고 POST 요청을 GET으로 부적절하게 전환했다클라이언트가 Redirection문제를 접하게 되었다서버가몇몇 서버가 사용하고 있는 요청한 URI 를 읽고 처리하는 고정된 길이의 메로리 버퍼를 이용해 보안체계에 들어가려는 , 클라이언트에 의한 공격을 받고 있다.
415: Unsupported media type
500: Internal Server Error, 
서버 내부 오류웹 서버가 요청사항을 수행할 수 없다다시 한 번 요청해 본다.
501: Not Implemented, 
적용안됨웹 서버가 요청사항을 수행하는 데 필요한 기능을 지원하지 않는다에러가 발생한 URL을 확인한 후에문제가 지속될 경우에는 웹 서버 운영자에게 연락한다.
502: Bad gateway, 
게이트웨이 상태 나쁨/서버의 과부하 상태Gateway proxy로 활동하고 있는 서버가 요구 사항을 접수한 upstream 서버로부터 불명확한 답변을 접수 했을 때 발생한다만약 문제가 지속된다면 웹 서버 운영자와 상의해 본다.
503: Service Unavailable, 
외부 서비스가 죽었거나 현재 멈춘 상태 또는 이용할 수 없는 서비스서버는 현재 일시적인 과부하 또는 관리(유지,보수때문에 요청을 처리할 수 없다.이것은 약간의 지연후 덜게될 일시적인 상태를 말한다.Retry-After 헤더에 지연의 길이가 표시하게 될지도 모른다.만약 Retry-After를 받지 못했다면 클라이언트는 500 응답을 위해 하고자 했는것처럼 응답을 처리해야 한다상태코드의 존재는 서버가 과부하가 걸릴때 그것을 사용해야한다는 것을 말하는 것이 아니다몇몇 서버는 접속을 거부하는 것을 바랄지도 모른다.
504: Gateway timeout
505: HTTP Version Not Supported

'Server' 카테고리의 다른 글

윈도우 제어판/관리콘솔실행명령어  (0) 2017.01.06
캐시 리미터 cache-control  (0) 2017.01.06
FTP vs NTFS  (0) 2017.01.06
ssh 이용하여 tar 로 원격 백업하기  (0) 2017.01.06
ftp를 이용한 Network 백업  (0) 2017.01.06

FAT (File Allocation Table) : NT 4에서 이용할 수 있는 가장 단순하고 최저 성능의 파일 시스템이다. FAT는 DOS와 윈도우 3.x 용의 파일 시스템이다. 윈도우 95는 FAT의 확장된 버전인 VFAT를 사용하고 있다.

 

1. FAT의 장점

-호환성 (Compatibility) : NT, DOS, 윈도우 95, 윈도우 3.x, OS/2가 모두 FAT 볼륨을 사용할 수 있다. NT만을 운영체제로 하였더라도, FAT를 사용하면 플로피에서 부트하여 파일을 사용할 수 있다. 또한, 일반적인 DOS 유틸리티를 사용하여 볼륨을 검사하고 조작할 수 있는 기능을 제공한다. 컴퓨터가 다른 운영체제들을 가지고 있고 NT를 가진 분할영역이 이용 가능한 많은 공간을 가지고 있다면, 그것을 낭비하지 않고 NT에서가 아닌 다른 어플리케이션으로부터 그 공간을 사용할 수 있다.

-단순성 (Simplicity) : FAT 파일 시스템은 단순하고 신뢰성이 있다. 자체적인 오버 헤드로써 많은 디스크 공간을 사용하지 않고, 많은 메모리를 필요로 하지 않는다. FAT는 20년 이상 그 신뢰성이 증명되어 왔다.

-저용량 볼륨에서의 파일 사용 : FAT는 상당히 단순하기 때문에 운영을 위한 추가 작업이 적다. 대용량의 볼륨을 위하여 최적인 파일 시스템은 아니지만, 저용량 볼륨을 위해서는 많은 기능을 지닌 최신의 파일 시스템들보다 많은 경우에 실제적으로 상당히 성능면에서 우수하다.

 

2. FAT의 단점

-미약한 보안 기능 : 볼륨에 있는 파일에 대한 접근을 제어할 수 있는 내장된 방지 기능이 없다. 특정 파일이나 디렉토리에 대한 이러한 종류의 보호를 필요로 한다면, FAT가 그 해결책이 되지는 못할 것이다. 여러 사용자들이 사용하는 시스템이라면, FAT는 보안 기능을 전혀 제공하지 못한다는 것을 알아야 한다.

-대용량 볼륨의 비효율적인 이용 : FAT는 오늘날의 대용량 하드 디스크를 관리할 수 있도록 설계되지는 않았다. 따라서 대용량 볼륨에서의 디스크 공간의 이용에서는 매우 낭비적일 수 있다. 많은 파일을 가진 대용량 볼륨에서의 파일 사용은 FAT가 파일을 검색하는데 정교하지 못한 프로시저를 사용하기 때문에, 매우 느려질 수 있다.

 

NTFS (New Technology File System) : 대용량, 높은 신뢰성, 보안 기능, 성능을 위해 설계된 NT 전용의 파일 시스템이다. 윈도우 NT의 서버 버전을 위해 선택할 수 있는 파일 시스템이다.

 

1. NTFS의 장점

-대용량 볼륨에 대한 효과적인 지원 : NTFS는 용량이 큰 하드 디스크 분할영역에 있는 파일들을 매우 효과적으로 관리하여, 빠른 파일 접근 기능을 제공한다.

-디스크 공간의 효과적인 사용 : NTFS는 상대적으로 작은 클러스터 크기를 사용하여 파일을 저장할 때 낭비되는 디스크 공간이 적도록 한다.

-보안 기능 (Security) : NTFS는 파일과 디렉토리에 권한을 지정할 수 있고, 플로피나 다른 운영체제를 통해 부트하여 보안 기능을 통과할 수 없도록 한다. 또한 NTFS는 파일이나 디렉토리에 접근한 사용자를 기록하는 파일 접근 로그를 유지할 수 있도록 한다. NTFS는 미국 정보의 C-2 보안 기준을 따른다.

-튼튼함 (Robustness) : NTFS는 시스템 고장이나 하드웨어 고장시 데이터의 손실을 방지할 수 있도록 파일 트랜잭션에 대한 기록을 한다. 트랜잭션은 완료되기 전에 고장이 발생하였다면, NT는 시스템이 재시작되었을 때 그 문제를 인식하고 필요한 교정 작업을 수행한다. NTFS는 디스크 결함 허용 기능(Fault Tolerance)을 제공하여 다중 디스크 시스템에서 한 하드 디스크의 손실로부터 데이터를 보호한다. 그러나 이 기능은 일반적으로 NT 4의 서버 버전에서만 이용 가능하다.

-자동 압축 (Automatic Compression) : NTFS는 특정 파일이나 파일들이 있는 디렉토리를 자동적으로 압축할 수 있도록 한다. (다른 파일 시스템에서는 파일을 압축하거나 풀기 위해서는 매번 유틸리티를 실행시켜야 한다.)

-향상된 파일이름 지원 : NTFS는 대소문자와 Unicode(16비트 문자를 허용하고, 외래어 지원을 위해 사용되는 형식), 254문자까지의 긴 파일 이름을 지원한다.

 

2. NTFS의 단점

사용자의 볼륨에서 사용되는데 있어서, NTFS는 몇가지 단점이 있다. NTFS는 사용되는 모든 볼륨에 대하여 대략 5MB를 소모한다. 수행하는 모든 작업으로 인하여, 저용량의 볼륨에서 사용될 때, 특히 512MB에서는 크게 빠르지 않다. 또한, NTFS는 다른 운영체제에서는 사용할 수 없다는 것을 주목하여야 한다. 이는 여러 운영체제들로 컴퓨터를 사용하는 이중부트 구성을 사용하려고 할 때, 매우 중요한 고려 사항이다.

'Server' 카테고리의 다른 글

캐시 리미터 cache-control  (0) 2017.01.06
HTTP Error Code  (0) 2017.01.06
ssh 이용하여 tar 로 원격 백업하기  (0) 2017.01.06
ftp를 이용한 Network 백업  (0) 2017.01.06
쉘에서 PATH 보이기  (0) 2017.01.06

nmap은 열린 포트를 확인하여 보안 점검을 위한 대표적인 툴이면서
원치 않는 서버를 대상으로 포트 스캐닝과 시스템의 OS 종류와 버전을 알아내는데 사용되기도 한다.
최근에 나온 nmap 3.45버전은 오픈된 서비스의 버전 정보까지도 확인시켜준다.

-------------------------------------------------------------- 
# nmap -A -T4 -F localhost

Starting nmap 3.45 ( http://www.insecure.org/nmap/ ) at 2003-09-16 22:45 KST
Interesting ports on truefeel (127.0.0.1):
(The 1203 ports scanned but not shown below are in state: closed)
PORT   STATE SERVICE  VERSION
21/tcp  open ftp    vsFTPd 1.2.0
25/tcp  open smtp    Sendmail smtpd Securing..214-2.0.0 This is sendmail version 8.12.
80/tcp  open http    Apache httpd 2.0.44 ((Unix) DAV/2 PHP/4.3.2)
... 중략 ...
Running: Linux 2.4.X|2.5.X
OS details: Linux Kernel 2.4.0 - 2.5.20, Linux kernel 2.4.20
Uptime 0.505 days (since Tue Sep 16 10:38:25 2003)

Nmap run completed -- 1 IP address (1 host up) scanned in 16.859 seconds
-------------------------------------------------------------- 

위에서 보는 것처럼 nmap의 뛰어난 기능으로 어느 OS를 사용하는지 쉽게 알 수 있다.

이러한 nmap의 OS를 알아내는 기능은 7단계(T1~T7)를 거치게 된다.
T1 단계에서 열린 포트로 SYN 패킷을 보내고, T2에서 열린 포트로 null 패킷 전송,
T3에서 열린 포트로 SYN, FIN, URG, PSH 패킷을 전송
T5 부터는 닫혀진 포트로 비슷한 과정을 거치게 된다.

자~ 이제 nmap OS fingerprinting을 막는 방법을 알아보자.

1. iplog 툴

iplog는 포트 스캐닝으 로깅하는 툴이다. TCP 포트, UDP 포트 스캐닝, TCP null 스캔, FIN 스캔,
smurf 공격, Xmas 스캔, ping 플러딩, IP fragment 공격 등을 감지할 수 있다.
procmisc 모드를 지원하여 같은 서브넷으로 들어오는 스캐닝을 감지할 수 있다.
또한 OS 정보를 숨기기한 목적으로도 사용할 수 있다.

1) 설치

http://ojnk.sourceforge.net/ 에서 iplog-2.2.3.tar.gz 을 받아온다.

-------------------------------------------------------------- 
# tar xvfz iplog-2.2.3.tar.gz
# cd iplog-2.2.3
# ./configure
# make
# make install
# cp example-iplog.conf /etc/iplog.conf
--------------------------------------------------------------

iplog.conf에서 다음 2가지를 수정한다.

-------------------------------------------------------------- 
user nobody          # default는 iplog 사용자로 실행함
pid-file /var/run/iplog.pid  # default는 /var/run/iplog/iplog.pid 임
-------------------------------------------------------------- 

소스 설치가 귀찮은 분 중
레드햇 사용자는 http://www.rpmfind.net/ 에서 iplog-2.2.3-fr2.i386.rpm 받아 설치한다.

FreeBSD 사용자는 포트 시스템을 이용해서 설치한다.
실행 파일은 /usr/local/sbin에, 설정파일은 /usr/local/etc에 설치된다.

-------------------------------------------------------------- 
# cd /usr/ports/net/iplog/
# make install
# make clean
-------------------------------------------------------------- 

'포트시스템이 뭐에요?' 하는 분은 최준호님이 쓴 글을 참고하기 바란다.
http://www.bsdnet.co.kr/articles/article.qsp?no=14

2) 실행

-------------------------------------------------------------- 
# iplog -o -z -i lo (테스트를 위해 lo interface를 지정함)
-------------------------------------------------------------- 

-o 등의 옵션의 의미는 nmap 테스트 후에 알아본다.

-------------------------------------------------------------- 
# nmap -sS -O localhost

Starting nmap 3.45 ( http://www.insecure.org/nmap/ ) at 2003-10-29 23:37 KST
Insufficient responses for TCP sequencing (2), OS detection may be less accurate
Insufficient responses for TCP sequencing (3), OS detection may be less accurate
Interesting ports on truefeel (127.0.0.1):
(The 1651 ports scanned but not shown below are in state: closed)
PORT   STATE SERVICE
25/tcp  open smtp
80/tcp  open http
... 중략 ...
No exact OS matches for host (If you know what OS is running on it, see
http://www.insecure.org/cgi-bin/nmap-submit.cgi).
TCP/IP fingerprint:
SInfo(V=3.45%P=i686-pc-linux-gnu%D=10/29%Time=3F9FD0B9%O=25%C=1)
T1(Resp=Y%DF=Y%W=7FFF%ACK=S++%Flags=AS%Ops=MNNTNW)
T2(Resp=Y%DF=Y%W=100%ACK=O%Flags=BAPRSF%Ops=)
T2(Resp=Y%DF=N%W=0%ACK=O%Flags=BARS%Ops=)
T2(Resp=Y%DF=Y%W=100%ACK=O%Flags=BPRF%Ops=)
T3(Resp=Y%DF=Y%W=7FFF%ACK=S++%Flags=AS%Ops=MNNTNW)
T4(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=)
T5(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=)
T6(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=)
T7(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=)
PU(Resp=N)


Uptime 0.303 days (since Wed Oct 29 16:21:04 2003)

Nmap run completed -- 1 IP address (1 host up) scanned in 21.301 seconds
-------------------------------------------------------------- 

nmap은 T1~T7까지 OS 탐지 테스트 과정을 거쳤지만 OS 종류는 알아내지 못했음을 확인했다.
그럼 도대체 스캐닝 로그는 어디에 있는건가? /etc/iplog.conf 설정에 따라 /var/log/iplog에 저장된다.

-------------------------------------------------------------- 
... 생략 ...
Oct 29 23:37:09 ICMP: echo from truefeel (127.0.0.1) (8 bytes)
Oct 29 23:37:09 TCP: port 5901 connection attempt from truefeel (127.0.0.1):49574
Oct 29 23:37:09 TCP: port 516 connection attempt from truefeel (127.0.0.1):49574
Oct 29 23:37:09 TCP: port 657 connection attempt from truefeel (127.0.0.1):49574
Oct 29 23:37:09 TCP: port 32 connection attempt from truefeel (127.0.0.1):49574
Oct 29 23:37:09 TCP: port 2044 connection attempt from truefeel (127.0.0.1):49574
Oct 29 23:37:09 TCP: port 737 connection attempt from truefeel (127.0.0.1):49574
Oct 29 23:37:09 TCP: pop2 connection attempt from truefeel (127.0.0.1):49574
Oct 29 23:37:09 TCP: port 872 connection attempt from truefeel (127.0.0.1):49574
Oct 29 23:37:09 TCP: port 670 connection attempt from truefeel (127.0.0.1):49574
Oct 29 23:37:09 TCP: SYN scan detected [ports 5901,516,657,32,2044,737,109,872,670,374,...] from
truefeel (127.0.0.1) [port 49574]
Oct 29 23:37:12 TCP: Bogus TCP flags set by truefeel (127.0.0.1):49581 (dest port 25)
Oct 29 23:37:14 TCP: ipp connection attempt from truefeel (127.0.0.1):40509
... 생략 ...
-------------------------------------------------------------- 

3) 옵션과 설정은?

-o : 백그라운드로 실행하지 않는다. (기본 백그라운드)
-z : 이게 바로 핵심이다. nmap로 OS 정보 알아내는 것을 막는다.
-L : log를 화면으로 출력한다.
-i : interface를 지정한다. (기본 eth0)
-u : iplog 실행 사용자 또는 UID를 지정한다. (기본 nobody)
-g : iplog 실행 그룹명 또는 GID를 지정한다. (기본 nobody)
-l : 로그파일을 지정한다. (기본 /var/log/iplog)
-a : promisc 모드로 전환하여 지정한 네트워크 내의 스캐닝을 로깅한다. (예. -a 192.168.123.0/24)
-k : iplog 프로세스를 kill한다. 백그라운드, 포그라운드 실행중인 것과 상관없이 kill.
-R : iplog를 재실행한다.

이 많은 옵션을 어떻게 사용하면 좋을까?

화면으로 모니터링한다면

# iplog -o -z -L

파일로 로깅을 한다면 (부팅시 실행되도록 하려면 /etc/rc.d/rc.local 등에 추가)

# iplog -z

/etc/iplog.conf 설정 파일에서는 옵션으로 사용할 것을 미리 지정해 둘 수 있다.
실행 사용자, interface, 감지에서 제외할 포트 등

2. iptables 이용하는 방법

iptables를 이용하는 방법이 있으나 커널 패치+iptables 패치를 해야하는 과정이 필요하며
커널 2.4.19 이후의 버전에 대해서는 더이상의 발표도 있지 않아 간단하게 설명한다.

http://ippersonality.sourceforge.net/ 에서 ippersonality-20020819-2.4.19.tar.gz 를
받아 커널과 iptables 각각 패치를 한 후 컴파일을 한다.

ippersonality-20020819-2.4.19/samples 디렉토리에는 OS를 속이기 위한 총 10개의 파일이 있다.
AmigaOS, Dreamcast, FreeBSD, Linux 2.0x, Linux 2.2, MacOS 9, Solaris 8, Tru64 UNIX,
Win Me 또는 Win 2000, Win 9x 이렇게 10개.

Windows를 사용하는 것 처럼 속이려면 어떻게 해야 하는가?

패치된 iptables를 이용해서

-------------------------------------------------------------- 
# insmod ipt_PERS (모듈을 로딩, 커널 컴파일시에 CONFIG_IP_NF_PERS=m로 했을 때)
# /usr/local/sbin/iptables -t mangle -A PREROUTING -s ! 서버IP -d 서버IP -j PERS --tweak dst --local --conf win2k.conf
# /usr/local/sbin/iptables -t mangle -A OUTPUT   -s 서버IP -d ! 서버IP -j PERS --tweak src --local --conf win2k.conf
-------------------------------------------------------------- 

3. 참고 자료

* A practical approach for defeating Nmap OS-Fingerprinting
 http://coffeenix.net/doc/security/nmap_os_fingerprinting.html
* IP Personality 프로젝트
 http://ippersonality.sourceforge.net/
* iplog
 http://ojnk.sourceforge.net/
* nmap 3.45의 새기능, 버전 스캐닝 (글 좋은진호)
 http://coffeenix.net/board_view.php?bd_code=71 

// coffeenix.net

'Security' 카테고리의 다른 글

FTP Active/Passive 정리  (0) 2017.01.06
ubuntu 환경에 SNORT & BASE & Metasploit 설치  (0) 2017.01.06
R.U.D.Y DDoS  (0) 2017.01.05
slowloris 분석/대응방안  (0) 2017.01.05
윈도우 로그온 유형  (0) 2016.12.29

로컬에서 백업하여 원격으로 바로 옮기는 경우
tar cvfzp - /home | ssh taejun "cat > home.tgz"
tar cvfzp - /home | ssh taejun "cat > /dev/tape"

tar cvfzp - apache | ssh taejun "cd /usr/local; mv apache apache.bak; tar xvfzp -"

ssh taejun "cd /usr/local/test; tar xvfzp -" < my.tgz
ssh taejun" cat my.tgz" | tar xvfzp -

'Server' 카테고리의 다른 글

HTTP Error Code  (0) 2017.01.06
FTP vs NTFS  (0) 2017.01.06
ftp를 이용한 Network 백업  (0) 2017.01.06
쉘에서 PATH 보이기  (0) 2017.01.06
Telnet, Ssh 특정 계정 접속 못하게 하기  (0) 2017.01.06

vi 에디터 사용시 윈도우에서 작업한 파일에 ^M 문자가 붙는경우가 있습니다.
정말 귀찮기 짝이 없죠. 아래 방법을 참고하시기 바랍니다. KLDP에서 퍼왔습니다.

1. vi(m)이 열린 상태 
1.1 문자 치환 명령 이용
다음과 같이 문자 치환 명령으로 이 문자를 없애도록 합니다. 
:1,$s/^M//g

물론 이것의 입력은 다음과 같이 하도록 합니다.
:1,$s/[Control]+v+m을 누른다.//g

1.2 파일포맷 변경 
vim 5.0 이상에서는 다음과 같이 명령을 내리도록 합니다

:set fileformat=unix
혹은
:set ff=unix
그리고, 저장하고 종료합니다.
:wq

이와 반대로 끝에 ^M붙이려면 다음과 같이 합니다.
:set fileformat=dos

이전버전에서는 다음과 같이 합니다.
:set textmode 


2. 프롬프트 상에서
2.1 dos2unix 이용
dos2unix와 unix2dos를 이용하여 변환할 수 있습니다.

다음과 같이 하면 ^M 문자가 없어집니다.
$ dos2unix [문서명](여러 파일의 경우 *.확장자)

그리고 다음과 같이 하면 ^M 문자가 생기죠.
$ unix2dos [문서명]

2.2 cat과 tr을 이용한 방법
다음과 같이 하면 해당 파일의 ^M 문자가 없어집니다.
$ cat dos-file | tr -d ^M > unix-file

2.3 perl 스크립트 
다음과 같이 하면 여러파일을 한번에 바꾸게 됩니다.

# perl -i -pe 's/\015//g' *.html

3. 다른 에디터의 사용 
pico 라는 에디터 아실겁니다. 기능은 별로 없지만 빠르고 간편하죠.
vi나 emacs에서 ^M으로 잡히는 것이 pico에서는 안 잡히는데,
파일을 pico로 열어서 다시 이 문서를 저장합니다. 
그리고 vi나 emacs로 읽으면 ^M이 모두 없어진 것을 알 수 있습니다.

4. man 페이지의 ^M, ^H 문자 
man 페이지를 일반 화일로 바꾸면 ^M, ^H 등이 생기는데(예, 한컴리눅스 ^H)
다음과 같이 하면 이 문자를 없애고 볼 수 있습니다. 
다음은 ls의 예입니다.

4.1 ps 또는 pdf로 변환하기
man -t 변경 시킬 화일 > 변경후 화일명.ps
man -t 변경 시킬 화일 > 변경후 화일명.pdf
예)
man -t ls > ls.ps 또는 ls.pdf로 보시면 됩니다.

4.2 텍스로 변환하기
man 변환시킬화일 | col -b> 변환후 화일명.txt
예)
man ls | col -b > ls.txt

'Coding' 카테고리의 다른 글

색을 랜덤하게 뽑아서 출력합니다.  (0) 2017.01.07
php predefined variables  (0) 2017.01.06
주민번호 생성원리  (0) 2017.01.06
CGI Setting  (0) 2017.01.06
쉘프로그래밍 문법  (0) 2017.01.06

#!/bin/sh

################# 개요 ##################
# 인자로 들어온 server1의 특정 db를 백업한다
# 인자가 생략되면 db1 이다.
# split로 분할 압축후 server2의 /home/myid/db_backup 에 ftp로 전송한다
# 파일명 : "db명"_"날짜"_"aa" , "ab" ...
######################################

############### 필요한 변수들 #############
# host : 백업될 서버
# username : ftp로 접속할 id
# password : 비번
# db_name : server1의 db명
# mysql_dir : mysql 데이터 디렉토리
# backup_dir : server1의 분할압축된 파일이 놓일 임시 디렉토리
# today_date : 오늘날짜 (파일명에 사용됨)
# size : 한 조각의 크기
#####################################
host="server2.test.com"
username="myid"
password="mypasswd"
db_name=${1:-db1}
mysql_dir="/home/mysql/data/"
backup_dir="/tmp/pieces/"
today_date=`date +%Y%m%d`
size="650m"

# 기존에 만들어진 파일들을 없앤다
# /tmp/pieces 로 이동후 원하는 db 디렉토리를 분할압축 한다.
# ftp로 server2 의 /home/foremost/db_backup 으로 옮긴다.

echo "[`date +%Y-%m-%d\ %T`] $db_name backup Start !!!"
if [ -d "$backup_dir" ]; then
rm -f ${backup_dir}*
fi

cd $backup_dir
tar cf - ${mysql_dir}${db_name} | bzip2 -c | split -b $size - ${db_name}_${today_date}_

{
echo user $username $password
echo cd /home/myid/db_backup
echo lcd /tmp/pieces
echo prompt
echo mput *
echo quit
} | ftp -n $host 21

echo "[`date +%Y-%m-%d\ %T`] $db_name backup End !!!"
exit 0


# 1G 용량의 db를 백업하는데 약 20여분이 소요되더군요.
# bzip2 대신 gzip을 사용하면 좀더 빨라지지 않을까 싶습니다.

// kltp.kldp.org

'Server' 카테고리의 다른 글

FTP vs NTFS  (0) 2017.01.06
ssh 이용하여 tar 로 원격 백업하기  (0) 2017.01.06
쉘에서 PATH 보이기  (0) 2017.01.06
Telnet, Ssh 특정 계정 접속 못하게 하기  (0) 2017.01.06
쉘다루기/쉘의 종류  (0) 2017.01.06

/root아래에 backup.sh 이라는 파일을 만들어 놓고 백업 명령어를 다음과 같이 주었다.

#!/bin/bash
/usr/local/mysql/bin/mysqldump -uroot -p***** mysql > mysql_db_bak_$(date +%Y%m%d).sql
/usr/local/mysql/bin/mysqldump -uyanemone -p***** yanemone > yanemone_db_bak_$(date +%Y%m%d).sql
mv *.sql /backup
tar cvfpz /backup/html_bak.tar.gz /var/www/html
tar cvfpz /backup/yanemone_html_bak.tar.gz /home/yanemone/public_html
tar cvfpz /backup/dichang_html_bak.tar.gz /home/dichang/public_html

백업할 내용이라던지 파일 이름은 자신의 상황에 맞게 주면 되겠다.

이렇게 하고 나면 backup.sh파일을 chmod 100 backup.sh로 단단히 무장하라.

그리고 crontab -e 명령으로 cron 작업을 명시하자
그럼 vi가 열리면서 편집이 가능하다

00 06 * * * /root/backup.sh

를 추가하고 :x 로 저장하고 나오자.
위의 작업은 매일 새벽 6시에 /root/backup.sh을 실행하라 라는 말이다.

그리고 /var/spool/cron/root가 있는지 확인해보자. 있다면 정상적으로 수행할 것이다.

*************************************************************************************
팁팁팁
이렇게 하면 cron의 결과를 cron 데몬이 root에게 친절하게도 메일을 자꾸 날려준다. (x10)
정말 귀찮고 용량도 만만치 않다.
안오게 할 수 있다.

/etc/crontab이라는 파일을 열어보자
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=ROOT
HOME=/

부분이 있다. MAILTO=ROOT를 다음과 같이 고쳐보자
MAILTO=""
************************************************************************************

크론에 등록시 아래와 같이 하면 메일이 날아오지 않는다.
위에꺼는 전체 메일이 다 날아오지 않으므로 주의 해야 한다.
그러므로 아래꺼 사용하믄 된당...
00 06 * * * /root/backup.sh >/dev/null 2>&1 


************************************************************************************
추가팁 저장할 파일의 크기가 클경우 분할하여 압축할수 있다.
백업을 하다보면 기가단위가 넘을때가 많습니다.
그때는 분할백업(CD 1장 단위가 좋겠죠...)
tar -zcvpf - /압축할dir | split -b 670mb - 압축파일.tar.gz 

그러면 압축파일.tar.gzaa 
압축파일.tar.gzab순으로 파일이 생깁니다. 

-b 670mb는 압축파일을 670mb단위로 분할 하라는 옵션입니다. 

압축풀라고 할때는 (쿠쿠 바로 답해 주셔서 캄솨함다.)
cat test.tar.gza* > test.tar.gz
로 하여 tar.gz파일로 만들어서 풀면 된다.
***********************************************************************************

***********************************************************************************
삼바로 마우트한 윈도우즈 백업서버에 데이터 저장
mount -t smbfs -o username=윈도우계정아이디,password=윈도우패스워드 //서버이름/backup /backup
***********************************************************************************

#!/bin/bash 
BACKUP_DIR=/var/backup 
FILE_PFX =MY_DB 

DATE=$(date +%Y%m%d) 
OF = $FILE_PFX-$DATE.sql 
rm -rf $BACKUP_DIR/$FILE_PFX-*.sql 

mysqldump -uUSER -pPASS DB_NAME > $BACKUP_DIR/$OF 

'Tip' 카테고리의 다른 글

이메일 체크 함수  (0) 2017.01.06
ubuntu 메일 보내기  (0) 2017.01.06
host 커맨드를 이용해 특정 도메인의 메일서버 알아내기  (0) 2017.01.06
Linux cpu, mem 등 확인하기  (0) 2017.01.06
mutt 메일 보내기  (0) 2017.01.06

[iz4u@junghyun ~]$cat .bash_profile 
# .bash_profile 

# Get the aliases and functions 
if [ -f ~/.bashrc ]; then 
. ~/.bashrc 
fi 

# User specific environment and startup programs 

export PS1='[\h@\u \w]$' <--이 부분을 추가 
PATH=$PATH:$HOME/bin 

export PATH 
unset USERNAME 
[iz4u@junghyun ~]$ 

\h : 호스트 
\u : 계정아이디 
\w : 경로명 

pwd 처도 볼수 있지만...... 
[iz4u@junghyun ~]$cd public_html/ 
[iz4u@junghyun ~/public_html]$cd board/ 
[iz4u@junghyun ~/public_html/board]$cd include/ 
[iz4u@junghyun ~/public_html/board/include]$

참고 1 :
# .bash_profile 
# 제 .bash_profile 입니다. 
# 주석을 달아 놓았으니 튜닝해서 쓰세요. 

# Get the aliases and functions 
# 사용자 정의 알리어스와 함수 정의 포함 
#if [ -f ~/.bashrc ]; then 
. ~/.bashrc 
#fi 

# User specific environment and startup programs 
# 사용자별 환경 변수, 시작 프로그램 설정 

PATH=$PATH:$HOME/bin 
BASH_ENV=$HOME/.bashrc 
USERNAME="Christian Junguhn Hwang" 


# PS1##################################################################### 
# These comments are for the environmental variables of PS1 
# a: idk s: show the name of this shell 
# d: show date informations t: show time as 24 hours 
# e: hostname u: show id 
# j: idk v: show the version of this shell maybe 
# l: show the number of the konsoles w: show the absolutely path 
# n: idk 
# H: show the name of host and domain V: show the version 
# T: show time as 12 hours W: show the name of current path 
# this is my shell program for PS1 from here ############################# 
hour=`date | cut -f4 -d' ' | cut -f1 -d:` 
#time=`date | cut -f4 -d' ' 
if [ $hour -gt 12 ]; then 
PS1='[Joobaragy@\u \t PM] ' 
else 
PS1='[Joobaragy@\u \t AM] ' 
fi ############################# this is the end of my shell program for PS1 

export USERNAME BASH_ENV PATH PS1

// 해커즈뉴스

'Server' 카테고리의 다른 글

ssh 이용하여 tar 로 원격 백업하기  (0) 2017.01.06
ftp를 이용한 Network 백업  (0) 2017.01.06
Telnet, Ssh 특정 계정 접속 못하게 하기  (0) 2017.01.06
쉘다루기/쉘의 종류  (0) 2017.01.06
DISK Quota 설정하기  (0) 2017.01.06
LISTEN : 서버의 데몬이 떠서 접속 요청을 기다리는 상태 

SYS-SENT : 로컬의 클라이언트 애플리케이션이 원격 호스트에 연결을 요청한 상태 

SYS-RECEIVED : 서버가 클라이언트로 부터 접속 요구를 받아 클라이언트에게 응답을 했지만 아직 클라이언트에게 확인 메세지는 받지 않은 상태 

ESTALISHED : 3-way-Handshaking 이 완료된후 서로 연결된 상태 

FIN-WAIT, CLOSE-WAIT, FIN-WAIT2 : 서버에서 연결을 종료하기 위해 클라이언트에게 종결을 요청하고 회신을 받아 종료하는 과정의 상태 

CLOSING : 흔하지 않지만 주로 확인 메세지가 존송 도중 분실된 상태 

TIME-WAIT : 연결은 종료 되었지만 분실되었을지 모를 느린 세그먼트를 위해 당분간 소켓을 열어 놓은 상태 

CLOSED : 완전히 종료


+ Recent posts