Study- MSC/Computer2010. 7. 25. 23:45
Posted by 머리
Study- MSC/Computer2010. 7. 19. 16:49
Operating System Concepts- Chapter9. Virtual Memory

Posted by 머리
나의 이야기/Pictures2010. 7. 18. 03:50
본익이랑 놀려고 불렀는데 갑자기 사진찍자고 사상을 가자고 했다. 난또 사상에 잘하는 사진관 있어서 같이 가자는 줄 알았는데 알고보니 모처럼 날씨가 개어서 출사 가는거 따라오라고 하는 거였다. 

난 카메라가 없어서 따라만 다녔는데, 하다가 심심해서 멋진 사진은 못찍겠고, 폰으로 본익이 사진 찍는거나 찍어 보았다. 

삼락공원 돌아다니면서 처음 찍은 사진


위 사진 장소 지나서 바로 있던 길. 호박이나 박같은걸로 만들어 놓은 길인데, 다 농약 쳤다고 먹지 말란다.


이거 찍을때 비행기가 떠서 찍었는데, 비행기는 안보이네. 본익이 사진 달라 해야지.


습지 쪽 들어가면서 찍은것


본익이 사진 찍는동안 기다린다고 심심해서 찍은 사진. 이때부터 폰이 이상해지더라. 갑자기 막 재부팅이 되고 그랬음.


무슨 습지 꽃들 모여 있는 곳인데, 아직 많이 피진 않았더라. 그냥 하나 찍은 비비추라는 식물.


마지막 사진. 한참 더 걷긴 했지만, 더이상 폰이 재부팅 되는걸 못기다리겠더라.



다 폰으로 찍은 것들. 내가 워낙 사진 보는 눈이 없어서 그런지, 잘만 보이는데 좋은 카메라는 얼마나 좋게 보일지를 모르겠다. 아 확실히 풍경같은 것 찍을때는 잘 찍히긴 하더라. 

날씨가 더운날 밖에 있는걸 워낙 싫어해서 되게 짜증 많이 냈는데, 걷다 보니까 나름 재미있었다. 다음에 또 가자고 할때 갈지는 모르겠지만... 아직 날씨가 좋지 않아 찍을게 별로 없어서 둘다 아쉬웠다. 장마 끝나고 9월쯤 되면 볼만하겠다.
Posted by 머리
Study- MSC/Computer2010. 7. 17. 02:12
Operating System Concepts. Chapter 8 - Memory Management
Posted by 머리
Project/Firewall2010. 7. 5. 22:42
Netfilter Framework를 이용해서 만든 방화벽이다.

Packet Header들을 분석해서 원하는 정보를 추출 후 정책에 알맞게 Filtering할 수 있게 하였는데,
여기서는 IP와 Port 차단만 구현하였다. 이외 시험적으로 시험해 본것은 UPD에서 Word Filtering이 있다.

Netfilter에서 Packet를 얻어 오면 sk_buff 구조체로 들어온다. 이 구조체 안에 NIC를 통해 들어온 Raw 상태의 Packet 데이터가 들어 있다.

Packet에서 Header의 구조



즉 Packet의 Pointer는 IP Header의 Pointer와 같고, TCP/UDP Header의 Pointer를 얻으려면

 struct tcphdr *tcph = (struct tcphdr*)(char*)iph + sizeof(struct iphdr));

와 같이 IP Header의 크기만큼 Pointer를 이동시켜 주어야 한다. TCP/UDP Header 다음에는 Application Layer에서 생성한 데이터를 가리키는 Pointer가 있다.

이번에 제작한 방화벽의 구조는 다음과 같다.

방화벽 구조 1


방화벽 구조 2


일반적인 방화벽처럼 외부 네트워크로부터 Host를 보호하기 위해 네트워크 중간에 위치하여 동작하며, 방화벽의 Rule를 정하기 위하여 외부 Control PC가 존재한다. 

Control PC는 Control Client를 통해서 Host내부의 Daemon과 정보를 주고 받고, Daemon은 실제 방화벽 모듈과 정보를 주고 받는 구조로 되어 있다.

Client 프로그램

Client 프로그램은 서버에 접속 후 서버에서 현재 Filtering하고 있는 IP와 Port의 목록을 얻어와 표시한다. 관리자는 차단을 원하는 IP와 Port를 추가 할 수있다. 삭제도 필요하지만 추가와 구현방법이 다를 것이 없기에 추가만 구현하였다.

실행 결과는 다음과 같다.

IP 차단 테스트

Port 차단 테스트



첫 번째 그림은 방화벽이 설치된 PC의 IP를 차단하였다. 즉 이 PC로 들어오는 모든 Packet은 차단된다. 테스트로 Ping Test를 하였는데, 차단 전에는 잘 되다가 차단 후에는 막히는 것을 확인 할 수 있다.

두 번째 그림은 HTTP Port인 80번 Port를 차단해 보았다. 웹 브라우저를 통해서 접속 테스트를 해 보니 차단되어 접속이 되지 않음을 확인 할 수 있었다.

이번 방화벽 제작 프로젝트는 제작 자체는 그렇게 어렵지 않았지만 기초 지식을 쌓는 데 많은 어려움이 있었다. Packet Capturing을 하기 위해 Netfilter Framework가 필요하다는 사실을 알기까지도 꽤나 많은 시간이 들었고, Module Compile방법, Device Driver의 이해등도 만만치 않은 작업이였다. 또한 socket buffer를 얻고 난 후에 각각의 Header를 알아내는 법을 알기까지도 꽤 오래 걸렸다. 

그리고 처음 하는 단체 프로젝트인데, 이점에서는 완전히 실패하였다. 도중에 인원들이 지쳐서 나가버리고, 팀 간에 불화도 생겨서 많이 안타까웠다. 결국 마지막에는 둘이서 하다가 마무리는 내가 하였는데, 이끌고 있던 내가 좀 더 잘했으면 더 좋은 결과를 낳았을것을 하는 생각이 자꾸만 남는다.


Posted by 머리