2011년 3월 24일 목요일

2011년 3월 23일 수요일

SYN flooding

link: http://isecure-public.blogspot.com/2009/07/syn-flooding.html

TCP의 3-way handshaking을 이용한 공격방법
방어책으로는 timeout 시간을 줄이거나 SYN cookie를 이용하는 방법이 있단다.

(예전에 시스템소프트웨어 시간에 keep-alive packet에 관한 숙제가 있었는데,
 이런 공격에 대한 방어책이었나보다..)

3-way handshaking이 필요한 이유 (TCP 연결방식)

link: http://4network.tistory.com/entry/TCP-3-way-Handshaking%EC%9D%80-%EC%99%9C-%ED%95%84%EC%9A%94%ED%95%9C%EA%B0%80

구글링을 하면서 TCP가 3단계를 거쳐 연결을 만드는 건 알았는데
왜 이런 SYN 패킷을 이용한 연결이 필요한 것인지를 몰랐다.
여기서 쉬운 예를 가지고 설명하는 것 같아 이해가 된다.

프록시 (proxy)

link(프록시서버):
http://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9D%EC%8B%9C_%EC%84%9C%EB%B2%84
link2(공개프록시): http://ko.wikipedia.org/wiki/%EA%B3%B5%EA%B0%9C_%ED%94%84%EB%A1%9D%EC%8B%9C

프록시 서버라는 것은 '다리' 역할을 하는 매개체이다.
예를 들면,
Client_A ----- Client_B ----- Client_C 이고
A와 C는 직접 연결되어 있지 않다고 할때,
A가 C에 접속할 수 있게 해주는 중계 기능을 하는 B를 말하는 것이다.

또한, 공개 프록시는 아무나 자유롭게 접속하여 사용가능한 프록시 서버를 말하는데,
위의 예에서 B가 공개 프록시라 할 때 A가 B를 사용해 C로 접속하면
C는 A가 아닌 B의 IP주소를 인식하기 때문에 주소 숨김이 가능하다고 한다.
그래서 해킹에 주로 쓰인다고 하는데...
딱히 원래 A주소를 알아낼 방법이 없는 건 아닌 것 같은데 어떻게 하는진 잘..

터널링 (tunneling)

link: http://ask.nate.com/qna/view.html?n=3104446

간단하게 말해서 shared medium을 이용하는 네트워크에서
암호화를 통해 마치 peer to peer처럼 보이게 한다는 건가보다.


[링크 내용]
VPN에서 나오는 말인 것 같은데요. 맞나요?
네트워크망은 두가지로 나누어 본다면, 사설망과(Private Network) 공용망(Public Network)으로 나눌 수 있습니다.
사설망을 전용선이라고 하고요.
이런한 전용선은 통신을 할려고 하는 두 지점에서 선을 깔았다고 보시면 됩니다.
그러린간 전용 도로죠. 두 곳에서 만 사용 할 수 있는
따라서 그 전용선에서 흐르는 데이터는 다른 사람이 물리적 개입이 없이는 접근할 수 없습니다. 따라서 보안이 좋죠. 하지만 모두 전용망을 사용한다면 비용이 많이 드는 것이 단점입니다. n(n-1)/2 만큼 전용선을 깔아야 하닌깐.
따라서 비용이 적게 드는 방법으로 한 망을 서로가 공유하는 방식이 있습니다.
그것이 public 망이죠 기본적으로 public망에 흐르는 데이터는 누가 보내고 받을 사람이 누구인지가 들어 있죠. 그래서 주소가 필요하고 이러한 주소중에 한가지가 IP주소죠. 다른 주소도 많이 있는데 그것은 주제와 많이 벗어나고요.
그래서 받는 주소가 내 주소가 같은 데이터만 받아 들여서 보면 한망을 공유해서 여러 시스템이 사용할 수 있겠죠. 하지만 흐르는 데이터를 다 들여다 볼 수 있죠. 주소가 네 것이 아니더라도 고의로 볼려고 하면 물리적인 개입없이 들여다 볼 수 있는 단점이 있습니다. 보안에 취약한 거죠.
이 두가지 방식을 장점을 다 사용하기 위해서, 혹은 공용망에서 전용망 처럼 가상으로 사용하기 위해서 암호화 기술을 사용을 합니다.
데이터를 보낼때 대상이 아닌 다른 곳에서 봐도 모르게 암호화를 해서 데이터를 보내고 받는 사람은 암호화됀 테이터를 풀어서 보고...
이런식으로 하는 작업을 터널링(터널을 뚫다)이라고 합니다.
그러닌깐 가상으로 다른 곳에서는 접근을 못하게 한다고 해서 이것을 터널링이라고 하죠.

예를 들자면 은말한 장소에서 대화를 나눌 수 없을 때 서로가 암호를 사용해서 대화를 나눈다면 다른 사람은 들어도 무슨 뜻인지 모르고 둘만 안다면, 은밀한 장소에서 대화를 나누는 효과를 낼 수 있죠. 이렇게 되면 둘만의 대화 통로(터널)이 생기죠.
이것이 터널링입니다.

DDoS와 Zombie PC

이 요약은 사용할 수 없습니다. 이 글을 보려면 여기를 클릭하세요.

2011년 3월 21일 월요일

Mac OS X 타임머신 동작원리

link: http://forest.nubimaru.com/entry/how-macosx-leopard-time-machine-works

비록 완벽히 의미가 이해된 것은 아니지만
하드 링크와 소프트 링크에 대해 새로 알게 되었다.

하드 링크는 파일을 실제로 변경할 수 있는 레퍼런스같은 것이고
소프트 링크는 바로가기와 같이 실제 파일을 건드릴 수는 없는 거란다.

맥 오에스의 타임머신은 이 하드 링크를 이용하는데,
한 시간마다 백업을 실행하는 과정에서
변경없이 단지 복사된 파일A에 대해서는 하드 링크만을 생성하고
파일A가 변경되어 파일A'이 되었으면 파일 A를 실제로 복사한 후 A'로 변경한다.
그리고 그 이후 A'가 다시 복사되면 A'의 하드링크를 생성할 것이다.
(물론 파일 내용이 변경되면 A'을 복사,변경한 A''을 만들테지만.)

결론적으로 변경이 없으면 하드링크만 생기고 파일의 복사는 없다.
그리고 변경이 있으면 파일이 실제로 복사된다.
이런 방식으로 저장할 용량을 최소화시키는 것이긴 하지만
파일의 변경이 빈번히 일어난다면 저장공간을 감당하지 못할 것이다.

어쨌든간에 이런 방식의 복사로 인해
타임머신을 설정한 시점 이후의 어느 시점이든
내가 원하는 시점으로 내 디스크를 돌려놓을 수 있다는 것이다.
별 아이디어가 아닌 것 같으면서도 신기하다.