용궁전씨

全(용궁전씨)

 

본관(本貫): 용궁(龍宮)

시조(始祖): 전방숙(全邦淑)

유래(由來):

 

용궁(龍宮) 전씨의 관조는 도시조(都始祖) 전 섭(全 攝)의 28세손이며, 충렬공 전이감(全以甲)의 14세손인 전방숙(全邦淑)이다.

「전씨대동보(全氏大同譜)」에 의하면 그는 고려 충렬왕 때 한림학사(翰林學士), 문하시중평장사(門下侍中平章事) 등을 지냈고 나라에 공을 세워 용성부원군(龍城府院君)에 봉해졌다고 한다.

축산은 용궁의 옛 지명이며, 용궁은 지금의 경북 예천군 용궁면이 되므로 후손들이 그 곳에서 살면서 정선 전씨에서 분적, 관향을 용궁으로 삼아 세계를 계승하고 있다.

 

가문의 중요 인물

 

전정민(全正敏)

방숙의 아들 정민(正敏)이 고려에서 중서사인(中書舍人), 삼중대광(三重大匡), 첨의(僉議)를 거쳐 태사(太師)에 이르렀다.

 

전충경(全忠敬)

방숙의 손자 충경(忠敬)은 전법 총랑(典法摠郞)을 역임하여 가문을 크게 중흥시켰다.

 

전진(全進)

충경(忠敬)의 손자 진(進)은 전서(典書)를 지냈다.

 

전원발(全元發)

? ∼ 1421(세종 3). 고려 말 조선 초의 문신. 본관은 용궁 ( 龍宮 ). 호는 국파(菊坡). 전법총랑(典法摠郎) 충경(忠敬)의 증손으로, 할아버지는 판도총랑(判圖摠郎) 대년(大年)이며, 아버지는 응양군 민부전서(鷹揚軍民部典書) 진( 說 )이다.

고려 말기에 원나라에 가서 문과에 장원급제하여 병부상서 집현전 태학사에 오르고 영록대부 ( 榮祿大夫 )에 가자되었다. 뒤에 귀국하여 조선 태조 때 축산부원군(竺山府院君)에 봉해졌다. 서예에 뛰어났으며, 용궁의 소천서원 ( 蘇川書院 )에 제향되었다.

작품으로 〈 법주사자정국존보명탑비 法住寺慈淨國尊普明塔碑 〉 가 있다. 아들에 사복판사(司僕判事) 한( 淹 )이 있으며, 손자 강(强) · 근(謹) · 경(敬)은 모두 장원급제하여 청환(淸宦 : 학식과 문벌이 높은 인물에게 주는 벼슬)으로서 현달(顯達 : 높은 지위에 오름.)하였다

 

전삼성(全三省)

선조 때의 학자 삼성(三省)이 임진왜란 때 창의(倡義)하여 크게 공을 세웠다.

 

전오익(全五益)

오익(五益)은 인조 대의 박학다식(博學多識)한 학자로서 당세에 이름을 떨쳐 가문을 빛냈다.

 

 

 

全五倫(전오륜)의 효행.

 

도둑 떼와 늙은 어머니

 

전 오륜(全五倫), 자(字)는 천서 (天叙), 호(號)는 어주(漁洲)요 용궁인 (龍宮人)이다.

그는 1631년(인조 9년) 예천군 용궁면 가야리에서 태어났으며, 백제조에 십제공신인 시조 황성군 전 섭(全聶)의 17세 손이고, 아버지는 호조 참의로 추증된 전 상구(全尙耈)이며, 어머니는 숙부인 의성 김씨 이조 좌랑 김 시주의 딸이다.

 

그는 타고난 성품이 순하고 행실이 착하여 선비로서의 면모를 갖추었었다.

일찌기 갈암 이 현일 선생으로부터 학문을 닦아 문장이 유창하였으며, 시 또 한 흐르는 물과 같이, 맑고 깊은 호수와 같이 잔잔한 느낌을 주며, 풍류를 곁들여 마치 옛 신선의 아악을 듣는 듯하였고, 특히 성리학에 조예가 깊었다.

 

그는 1660년(현종 원년)에 사마시(司馬試)에 응시 급제하여 진사가 되었고, 매사를 부친의 뜻에 따라서 행동하였으며, 조금도 뜻에 어긋나는 일이 없었다. 언제나 의관을 바르게 하고 정좌하여 부친께서 말하는 것을 일일이 글로 적어서 실행 하였다. 부친을 대하는 것이 이러하였으니 조상을 모시는 데도 정성을 다하였다. 또한 자손들을 훈육하는 데도 스스로 마음을 맑고 깨끗하게 하여 대접하였으니 어찌 사람의 도리에 어긋남이 있었겠는가? 또한 효행 이 지극하여 100 세의 노모롤 받들어 효양(孝養)이 이르지 아니 함이 없었다.

 

그의 나이 70 세 때의 일이다. 화적 (火賊)이 칼과 창을 마구 휘두르고 들어오는지라 그는 자신의 안위보다도 어머니의 안전을 위하여 모발이 허연 늙은 아들이 늙은 어머니를 업고 황급히 나오자 도둑의 우두머리가 이를 보고 감동하여 하는 말이

“이는 진실한 효자이니 너희들은 이 집의 물건을 조금이라도 강탈하거나 해친다면 어김없이 목을 베리라.”

하니, 도둑 떼들은 우두머리의 명령대로 고히 물러가 화적의 피해를 면하게 되었다. 이와 같은 사실이 세상에 널리 알려지자 1714년(숙종 40년)에 암행어사 이 병상(李秉常)이 이 말을 듣고 포상할 것을 조정에 보고하기를

“전 오륜은 그 어머니를 봉양함에 성심을 다하고 마음을 순하게 가지고, 모시는 정성이 지극하였으므로 그 어머니의 향년이 100세에 이르고 전 오륜의 나이는 70여 세가 되도록 조석으로 맛있는 음식을 스스로 친히 검사하여 올리고, 항상 불편함이 없도록 보살펴 드렸으며, 어머니의 상(喪)을 당하여서는 매일 성묘를 하며 춥고 더움을 가리지 않았다. 그의 나이 84 세인데도 시종여일 늙음에 이르러서도 성효(誠孝)함에 게을리하지 않았으니 가히 나라에서 포상함이 합당한지라 청컨대 전 오륜이 죽기 전에 특별히 한 관직을 제수하옵소서.”

하니, 왕이 갸륵하게 여겨서 첨지중추부사(정삼품)를 제수하였다. 당시 용 궁 현감 이 지석(李志奭)이 그의 효행을 아름답게 여기어 손수 내무당(萊舞 堂) (옛날 중국의 효자 노래자가 나이 70 세인데도 색동 옷을 입고 어린 아 이 놀음을 놀며 춤을 추던 집이라는 뜻)이라는 세 글자를 새겨 붙이고 시와 서기(序記)를 지어 보냈다.

 

그의 저서로는 인심도심변(人心道心辦), 내외교수펀(內外交修篇), 사무사설 (思無邪設), 사단칠정 (四端七情) 등이 있고, 남긴 글로는 어주집 (漁州集) 이 있다. 그가 남긴 시 한 수를 소개하면

 

書釰悠悠不可期 前途人事亦難推

邇來獨立江湖上 笑矣平生我自知

(글도 칼도, 넓고 넓어 스스로 약속하지 못하니, 앞날의 어찌됨을 짐작도 힘들 수밖에, 늘그막에 낯익은 도덕의 큰물위에 나서니, 웃는 슬기로 살 인생이 저절로 트이네.)라 하였고, 또 한때 사헌부(司憲府) 지평(持平) 김 세흠(金世欽)의 시폐소(임금님께 알려는 정보)를 대신 초안 한 바 있었는데, 그 일부를 소개하면 다음과 같다.

 

“국방 요새지대인 남한산성에는 군량을 저축해 둠으로써 불시의 필요시에 도 완전 대비되어 국가 변란에 끄떡 않게 하고자 함이 가장 중요하다. 뿐만이 아니건마는 신이 몰래 듣기로는 남한의 대장이 임의로 산성 양반집에 빌려 주고 즉시 그 해로 반납하지 않고 버려둬서 여러 해를 묵히는 가운데 빈 껍데기 장부만 남았다 하니 혹시라도 나라 변이 닥칠 때 어찌 응급 되리까? 나라의 작은 걱정이 아니련마는 조정 대관들도 염려로 삼지 않음을 보고 신은 속으로 걱정되오니 원컨대 전하께서 따로 사람을 골라 뒀다가 불시에 출동시켜 문서와 현물을 따져서 내줬던 놈이나, 받아 내간 놈이나 중죄로 다스리고 조금도 빈 틈을 주지 않는다면 군량이 충족해지는 동시에 불의의 변란에도 응변될 수 있으오리다.

 

그리고, 군인이 시골에서 와 번 서는 자들은 궁성을 지킴에 가장 책임이 무겁건만 신이 듣는 바로는 근래 번 나올 사람이 나오지 않고 품군을 사서 대신 서 있게 하고는 임의로 돌아가 버리면 이른 바 품삯군인 장돌뱅이거나 아니면 양반집 아랫것들이므로 품값을 바라고 나와 섰을 뿐 국방의 책임이 목숨보다 무거운 줄은 깜깜히 모르는 채 적군이 쳐들어 왔을 때 그 품군들은 그저 버리고 달아날 뿐일 터인데 어떻게 궁과 성이 지켜지며 창피도 면해질지 국가의 근심이 크나크오니 전하께서는 병권 당국을 감독하게 하여 품군 교대의 예를 금하고 금령을 범하는 자의 벌을 끔찍하게 내리신다면 군정도 소홀을 면하오리다.”

라고 되어 있다.

 

그는 이와 같이 국방의 중요성을 인식하고 유사시를 대비하여 군량미의 부정 유출을 막고 언제 침공을 받을지 모르는 산성의 경계를 일반 서민에서 군인으로 대치하고 병권 당국을 철저히 감독해야 한다는 내용이었다.

그는 만년에 용궁 향교의 세심류의 기문(記文)을 짓고, 후생 계도에 전념 하다가 1720년 (숙종 46년) 1월 24일 90 세로 세상을 떠났다. 그 후 1730년 (영종 6년)에 조정에서는 사헌부 대사헌(司憲府大司憲)으로 추종되었다.

부인은 정부인 진주 이씨 익형(益馨)의 딸이고 효녕 대군(孝寧大君) 보(補) 의 후손이다.

 

출전〈예천군 용궁초등학교 권 교감〉

〈 참고 문헌 〉 鎭南人物考, 嶺南文獻錄

 

 

항렬(行列)

 

항렬자 항렬자 항렬자
24 煥(환) 26 鎬(호) 28 植(식)
25 載(재) 27 洪(홍) 29

 

1985년에 실시한 인구 조사 결과 용궁(龍宮) 전씨는 남한에 총 5,567가구, 22,375명이 살고 있는 것으로 나타났다.

VRRP (Virtual Router Redundancy Protocol)

VRRP ? 

VRRP는 RFC Standard 문서에 정의된 표준입니다. HSRP와 다르게 Cisco 뿐만 아니라, 모든 Vendor에서도 지원되는 Protocol 입니다.

기본적으로, VRRP의 동작 원리는 여러 대 (최소 2대 이상)의 Router를 하나의 group으로 묶어서, Client가 바라보는 Gateway에 대한 IP Address를 공유하며, Priority가 높은 Router가 동작하다가, Router에 문제가 발상하면, 그 다음 Priority를 가진 Router가 Active role를 가지고 Gateway IP Address를 넘겨 받아 동작하여, Client 입자에서는 Router의 장애와 관계 없이 Gateway의 IP Address를 변경하지 않고 Data를 전달합니다.

VRRP, HSRP, GLBP에 대한 개념을 이해하기 위해서는 다음과 같은 가장 기본적인 component에 대한 이해가 필요합니다.

Real IP Address : Router의 Interface 가 가지고 있는 IP Address

VIP (Virtual IP Address) : Client에서 Gateway로 사용되고 있는 IP Address

VMAC (Virtual MAC Address) : VIP가 사용하는 MAC Address

Hello Packet : Router 간의 상태를 check 하기 위한 packet

Priority : Active / Standby Role을 결정하는 Value

위의 그림에서 보면, 동일한 Network Segment 내에서 여러 대의 Router가 존재하게 됩니다. 각 Router의 Interface는 물론, 서로 다른 IP Address를 갖게 되구요.

여기서 Client가 바라보는 Gateway는 Master로 동작하는 Router A거 되게 됩니다.

이 3대의 Router에서 Master/Backup Role을 결정하는 것은 Priority의 값입니다.

Basic Configuration 상에서의 Priority의 값은 100으로 시작하게 되며, Priority가 가장 높은 Router가 Master Role를 갖고 VIP를 사용하여 Service 하게 됩니다.

따라서, 위의 3대 Client의 Default Gateway를 10.0.0.1 로 사용하게 됩니다.

나머지 두 대의 Router(Router B, Router C)는 Router A에서 문제가 발생하여 Fail이 발생하였을 경우, 두 Router 중의 높은 Priority를 가진 Router가 Active Role를 넘겨 받게 되며, 또 한 VIP에 대한 Control도 새로운 Active Role을 갖는 Maser Router가 됩니다. 그러므로 Client 입장에서는 Default Gateway에 대한 변경이 필요없습니다.

이런한 VRRP는 최대 255개 까지 설정이 가능하며, 동작은 Router의 Performance에 따라 다르게 됩니다.

< VRRP Configuration >

<VRRP Priority>

– VRRP의 Configuration에서 Priority는 Router의 Master/Backup Role을 결정

– Default Configuration는 100으로 설정되어 있으며, Range 값은 1에서 254 까지

– Router의 Master/Backup Role는 이 Priority 값을 기준으로 Election 을 통해 결정

– 동일 VRRP의 Group 내에서 Master Role을 갖는 Router는 1대, 나머지는 모두 Standby (따라서, 만약 Router의 Priority가 254로 설정되어 있으면, 그 Router는 항상 Master )

– 만약 Router들의 Priority가 동일하다면 Interface IP Address가 높은 Router가 Master Role을 가짐

<Load Sharing on VRRP>

기본적인 VRRP를 사용할 경우, 하나의 VRRP group에서 반드시 Master/Backup이 따로 동작해야 합니다. 이 때, Backup으로 설정되어 있는 Router는 Master가 Failure 되기 전 까지는 동작하지 않게 됩니다. 이건 Router의 가용성에 문제가 발생하게 되며, Resource 낭비입니다. 따라서, 두 Router에서 서로 다른 VRRP group을 생성하고, 두 group에서의 Master Router를 Priority를 조정하여 서로 다른 Router가 되도록 조정합니다.

그리고 Client에서 바라보는 Default Gateway를 다르게 설정한다면, 하나의 VRRP Group을 사용할 때, 놀고 있는 Backup Router를 또 다른 Group의 Master로 사용할 수 있는 개념입니다.

<Virtual MAC>

VRRP는 Virtual IP를 사용하여 Client가 Router의 Failure와 관계없이, 동일한 Gateway를 사용하게 됩니다. Virtual IP를 갖는다면, 당연히 Vritual MAC을 갖게 됩니다. 하지만 이런 Virtual MAC을 가질 때, 그에 맞는 Rule가 있습니다.

Virtual MAC은 항상 “00-00-5E-00-01-{VRID}”의 형태를 갖게 됩니다.

<VRRP Advertisement Packet>

<VRRP 동작원리)

<VRRP Parameter>

참고

: http://cafe.naver.com/hoonycafe/12894

: http://www.netmanias.com/ko/?m=view&id=techdocs&no=5049

출처: http://spiceandwolf.tistory.com/54 [늑대와 향신료]

HTTP 1.1 캐시 관련 헤더

* 1 Cache의 개념
+ 1.1.1 HTTP Cache란?
* 2 HTTP1.1의 cache field
+ 2.1.1 Request header
# 2.1.1.1 Request header의 general-header 중 cache 관련 항목
# 2.1.1.2 Request header의 request header 중 cache 관련 항목
+ 2.1.2 Response header
# 2.1.2.1 Response header의 general-header 중 cache 관련 항목
# 2.1.2.2 Response header의 Entity-Header 중 cache 관련 항목
# 2.1.2.3 Response header의 Vary Header
* 3 Cache의 동작 방식
o 3.1 Expiration & Validation
+ 3.1.1 Expiration
# 3.1.1.1 Expiration의 계산
* 3.1.1.1.1 current_age의 계산
+ 3.1.2 Validation
# 3.1.2.1 E-tag, Last-Modified를 사용할 때의 규칙
* 4 사례
+ 4.1.1 nocache
+ 4.1.2 Etag, max-age
+ 4.1.3 Expires
# 4.1.3.1 Vary와 Accept-Encoding

Cache의 개념

HTTP Cache란?

브라우져가 웹 페이지 구성요소를 PC의 hard disk에 저장했다가 같은 요소가 다시 불릴 때 서버에 요청하지 않고 저장된 것을 보여주는 것
cache는 client와 svr 사이에 위치하여 기능을 수행함으로써 데이터의 전송을 줄여 양측의 부하를 줄이고, 보다 빨리 리소스를 얻을 수 있도록 한다.
HTTP1.1의 cache field

Request header

Request-Line

headers : general-header, request-header, Entity-Header, …

CRLF

message-body

Request header의 general-header 중 cache 관련 항목

General-header 안에 Cache Control이라는 지시자로 cache의 제어가 가능하다.
Cahce-Control :

cache-request-directive=

“no-cache” 캐시 하지 않는다.

“no-store” 신속히 넘긴 후에 정보를 제거한다.

“max-age = seconds” seconds에 지정한 것보다 오래된 entry는 캐시하지 않는다.

“max-stale [=seconds]” 만료된 데이터를 보낸다. 만약 seconds가 지정되어 있다면 지정한 숫자보다 적은 만료된 데이터를 보낸다.

“min-fresh [=seconds]” 명시된 seconds의 수 이후의 변경된 새 데이터만 보낸다.

“only-if-cached” 새로운 데이터를 검색하지 않고 캐시에 있는 데이터만 반환한다.

Request header의 request header 중 cache 관련 항목

“If-Match” 이미 이전에 캐시되었던 entity는 연관된 entity tag(이하 E-tag)를 포함하여 이 entity과 현재의 것임을 증명할 수 있다.

사용형식 – If-Match: E-tag

“If-None-Match” 조건적으로 요청하는 것으로 주어진 엔티티 태그와 어떠한 것도 매치되지 않아야 요청 계속

Response header

Status-Line

headers : general-header, request-header, Entity-Header, …

CRLF

message-body

Response header의 general-header 중 cache 관련 항목

General-header 안에 Cache Control이라는 지시자로 cache의 제어가 가능하다.
Cahce-Control :

cache-response-directive=

“public” 어떠한 캐쉬라도 캐싱할 수 있다.

“private” 공유된 캐쉬는 캐시하지 않는다.

“no-cache” 캐쉬하지 않는다.

“no-transform” 데이터를 변환하지 않는다.

“must-revalidate” 클라이언트는 데이터를 재확인 해야 한다.

“proxy-revalidate” 개인적인 클라이언트 캐시를 제외하고 데이터를 재확인 해야한다.

“max-age”=”delta-seconds” 문서는 지정된 seconds만큼 변화가 없는 상태라고 생각

Response header의 Entity-Header 중 cache 관련 항목

“E-tag” Data 고유의 entity tag. INode, MTime, Size값을 나타내는 것으로 파일의 갱신 여부를 확인하기 위해 사용된다.

“Last-Modified” : Tue, 15 Nov 1994 12:45:26 GMT 의 형식으로 사용되며 origin svr에서의 최종 수정시간을 뜻한다.

웹 페이지 전송시간을 기록해 뒀다가 Last-Modified이 값과 비교한 다음 페이지가 수정되었을 때만 Data를 가져가도록 작동한다.

“Expires” date의 형식으로 문서가 변경될 수도 있을 때의 시간 또는 그것의 정보가 유효하지 않을 때의 시간을명시한다.

그 시간 이후, 문서는 변경 또는 삭제되거나 그렇지 않을 수 있다.

Response header의 Vary Header

Vary : 캐시된 entity가 다중 자원을 가지고 있으므로 요청한 헤더를 지정한 목록이 상황에 따라 변할 수 있다는 것을 지정한다. 여러 개의 헤더는 세미콜론으로 구분하여 나열한다.Vary 헤더를 포함하여 캐시가 해당 자원에 대한 향후 요구를 적절하게 해석할 수 있도록 한다.
Accept-encoding : Request header의 Accept-encoding은 compress 또는 gzip과 같은 클라이언트가 받아들일 수 있는 인코딩 방식을 지정한다. 여러 개의 인코딩 방식을 쉼표로 구분하여 나열한다. 만약 인코딩 형태를 지정하지 않으면 어떤 형태도 클라이언트에게 받아들여지지 않는다.
Accept-encoding: gzip 가 수신되는 경우 미리 압축된 내용을 서비스하도록 구성된 디렉토리의 파일에 대한 모든 요청이 해당 디렉토리의 상응하는 압축 파일에 대한 요청으로 리다이렉션됩니다(해당 파일이 존재하는 경우).웹 서버가 myfile.html에 대한 요청을 수신하고 myfile.html 및 myfile.html.gz가 모두 존재하는 경우 적절한 Accept-encoding 헤더를 가진 이러한 요청에서 압축된 파일을 수신하게 된다.
Vary : 서버는 자신이 캐쉬한 응답을 적절한 Accept-Encoding 요청 헤더를 보낸 클라이언트에게만 보내도록 Vary: Accept-Encoding으로 설정할 수 있다.
Cache의 동작 방식

Expiration & Validation

HTTP/1.1의 캐시의 목적은 response, request의 round-trip을 줄이고, 또 full response의 발송을 줄여 대역폭을 절약하는 것이다. 이를 위해 expiration, validation 두 가지 방법을 사용한다.

Expiration : response-request의 roundtrip 줄이기 위해 expiration(만기일)방식을 사용한다.
Validation : full response의 발송을 줄여 network bandwith를 절약한다.
Expiration

http 캐시는 origin SVR로 request를 보내고, response를 받는 round-trip 과정을 최소화할 때 최상으로 작동한다
roundtrip 과정을 최소화하기 위해 User-Agent(브라우져)가 웹 문서를 요구할 때 캐시에 저장되어있는 만기일 을 확인하여 만기일이 지나지 않았을 경우에 캐시된 문서를 브라우져로 응답하는 매커니즘을 사용한다.
서버는 Expires header 또는 Cache-Control header의 max-age 지시자를 사용하여 만기일을 선정한다.
Expires header나 Cache-Control header에 지정값이 없으면 heuristic Expiration을 사용한다.
Expires Header
헤당 오브젝트가 얼마동안 유효한지를 표시해주는 항목
Expiration의 계산

서버는 Expires header 또는 Cache-Control header의 max-age 지시자를 사용하여 만기일을 선정한다.
expires_value : expires 헤더 값을 표시
max_age_value : cache control 헤더에 max-age 지시자가 가지고 있는 값

만기일을 선정하는 과정은 Expires header보다 Max Age가 우선이다. 즉 Expires header가 설정되어 있어도 Max Age가 설정되어있다면 그 값이 우선이 된다.
만기일에대한 별다른 설정이 없다면 heuristic expiration time(자동설정 만기시간)을 할당한다.
Data가 만기일을 지나지 않았다면 이 자료는 fresh하다고 표현한다. 이 때, fresh한 지의 여부는 다음과 같은 방법으로 결정된다.
freshness_lifetime = max_age_value
freshness_lifetime = expires_value – date_value
response is fresh = ( freshness_lifetime > current_age)

current_age의 계산

fresh 여부를 판단할 때 사용되는 current_age는 다음과같이 계산된다.
date_value(Date head) : 응답이 생성된 시간
age_value : 캐쉬 잔류시간 + 네트워크 이동시간
corrected_received_age = max(now-date_value, age_value)
request_time : 요청이 생성된 시간
response_time : 캐쉬가 응답을 받은 시간
now : 현재 시간
corrected_initial_age = connected_received_age + (now – request_time)
apparent_age = max(0, response_time – date_value)
corrected_received_age = max(apparent_age, age_value)
response_dalya = response_time – request time
corrected initial age = corrected_received_age + response_delay
resident_time = now – response time
current_age = corrected_initial_age + resident_time
Validation

http SVR는 캐시된 엔트리를 아직도 사용할 수 있는지 알아보는 Validation 작업을 수행한다.
full response를 주고 받는 것은 BW overhead가 크고, 이런 overhead를 줄이기 위해 Cache Validator를 사용한다.
Cache Validator를 비교하여 변화가 없는 경우는 304(Not Modified), 변화가 있을 경우 200(OK)를 리턴하고 문서를 전송한다.
Cache Validator로 E-tag와 Last-modified header가 사용된다.
E-tag의 값이 Last-Modifed 값보다 우선적으로 Validating된다.
E-tag, Last-Modified를 사용할 때의 규칙

HTTP/1.1 origin sever:
새로운 것을 생성하는 것이 불가능하지 않는 한 E-tag validator를 발송해야 함.
성능에 대해 고려했을 때 weak E-tag를 사용해도 될 때 또는 E-tag를 발송하는 것이 효과적이지 못할 때 강한 엔터티 태그 대신 weak entity 태그를 발송할 수도 있음.
(달리 표현하면 HTTP/1.1 원서버의 바람직한 행태는 Stroing E-tag와 Last-Modified 값 모두를 발송해야함)
HTTP/1.1 client:
서버가 E-tag를 제공하였으면 클라이언트는 If-Match 또는 If-None-Match를 사용하여 그 E-tag를 반드시 사용해야 함.
strong entity : 검증자가 동일한 entity인지를 검증하는 과정에서 entity가 어떤 식으로든 변경이 되었다면 그에 해당하는 validator도 변경되었을 것이다. 이런 경우 validator를 strong validator라고 부른다.
weak entity : entity의 변화가 상대적으로 중요한 의미를 갖지 않는다면 validator를 일일이 변경하지 않는 경우가 있을 수 있다. 이런 validator는 weak 태그를 붙여 weak validator로 설정 가능하다.

사례

nocache

ctrl+F5로 새로고침 했을 때 Cache-Control : no-cache(캐쉬하지 않음)가 설정이 되는 것을 알 수 있다.

Etag, max-age

동일 파일에 대해 새로고침 했을 때 response로 304(not-modified)status를 받았다.
Validation을 위해 요청 해더에 If-None-Match값이 삽입되었고, 응답헤더의 Etag값과 동일함을 알 수 있다.
Etag값으로 파일이 동일함을 확인하였고, 캐시의 자료를 사용한다.
max-age=0을 설정하여 매번 expire 캐시 엔트리를 재검증한다.

Expires

max-age가 지정되지 않았으므로 Expires를 확인한다.
Expires값을 과거로 설정되어 무조건 revalidating 하도록 하였다.
Cache-Control 지시자에 no-cache, must-revalidate를 설정하여 캐시를 지나지 않고 무조건 origin서버에서 revalidate한 이후 response를 받는다.

Vary와 Accept-Encoding

Accept Encoding에 giz, deflate를 주어 모든 요청을 gzip, deflate에 대한 요청으로 redirect한다.
캐쉬한 응답이 적절한 Accept-Encoding 요청 헤더를 보낸 클라이언트에게만 보내지도록 Vary: Accept-Encoding가 설정되었다.

서비스 거부 공격(DoS : Denial of Service) 종류 및 탐지

● TCP SYN Flooding

▲ 공격방법
DOS 공격의 한 방법으로서 서버가 정상적인 서비스를 지연 또는 불능상태로
만들기 위해서 사용하는 공격으로 사용된다. 이는 TCP 프로토콜을 이용하여
클라이언트가 서버에 접속을 시도할 때 TCP헤더에 SYN Flag을 보내면, 서버
는 이에 대한 답변으로 SYN/ACK를 보내고 다시 클라이언트의 ACK를 받는다는
점을 이용하는 것으로, 공격자가 임의로 자신의 IP Address를 속여 (응답을
할 수 없는 IP Address) 이를 다량 서버에 보내면 서버는 클라이언트에 SYN/
ACK를 보내고, 이에 대한 클라이언트의 응답 ACK 를 받기 위한 대기 상태에
빠짐으로써 공격이 이루어진다.

▲ 탐지방법
① 공격자가 보낸 Packet에서 IP Header, TCP Header를 분석한다.
② TCP Header분석결과 flag 가 SYN 이면 공격자가 보내는 Packet의 Count를
증가 시키고, SYN/ACK 이면 Count를 감소시켜 SYN의 개수를 파악한다.
③ Count가 공격인정 시간내에 공격인정회수 이상이면 SYN Flooding 으로 탐
지한다.

▲ 조치방법
SNIPER는 클라이언트가 서버에 요구한 SYN의 개수만큼 서버에게 RESET 신호
를 보내어 서버가 대기 상태에서 벗어나게 함으로서 공격을 무력화 시킨다.
또한 이러한 사실을 Network 및 System 관리자에게 주지 시키고 서버의 Conn
-ect Queue Size 증대, Time Out 조절 및 O.S. 를 버전업하여 공격의 피해를
최소화 할 수 있다.
● TCP NULL Flooding

▲ 공격방법
DOS 공격의 한 방법으로, 서버가 정상적인 서비스를 지연 또는 불능상태로
만들기 위한 공격으로 사용된다. 
이는 TCP 프로토콜을 이용하여, 클라이언트가 서버에 TCP Header의 Flags를
NULL(0x00)으로 Setting하여 대량의 Packet을 보내면, 서버는 이를 처리하기
위해서 대부분의 자원(System Resource)을 소모하게 되고, 정상적인 서비스
를 하지 못하는 현상이 발생한다

▲ 탐지방법 
① 공격자가 보낸 Packet에서 IP Header, TCP Header를 분석한다.
② TCP Header분석결과 flag가 NULL이면, 공격자가 보내는 Packet의 수를
Count한다.
③ Count가 공격인정 시간내에 공격인정회수 이상이면 NULL Flooding으로 탐
지한다.

▲ 조치방법
이러한 사실을 Network 및 System 관리자에게 주지시키고, 공격자의 주소에
대해서 F/W 또는 기타 보안장비에서, 이를 Filtering함으로써 공격의 피해를
최소화 할 수 있다.
● TCP FIN Flooding

▲ 공격방법
DOS 공격의 한 방법으로, 서버가 정상적인 서비스를 지연 또는 불능상태로
만들기 위한 공격으로 사용된다. 
이는 TCP 프로토콜을 이용하여, 클라이언트가 서버에 TCP Header의 Flags를
FIN(0x01)으로 Setting하여 대량의 Packet을 보내면, 서버는 이를 처리하기
위해서 대부분의 자원(System Resource)을 소모하게 되고, 정상적인 서비스
를 하지 못하는 현상이 발생한다

▲ 탐지방법 
① 공격자가 보낸 Packet에서 IP Header, TCP Header를 분석한다.
② TCP Header분석결과 flag가 FIN 이면, 공격자가 보내는 Packet의 수를
Count한다.
③ Count가 공격인정 시간내에 공격인정회수 이상이면 FIN Flooding으로 탐
지한다.

▲ 조치방법
이러한 사실을 Network 및 System 관리자에게 주지시키고, 공격자의 주소에
대해서 F/W 또는 기타 보안장비에서, 이를 Filtering함으로써 공격의 피해를
최소화 할 수 있다.
● TCP ACK Flooding

▲ 공격방법
DOS 공격의 한 방법으로, 서버가 정상적인 서비스를 지연 또는 불능상태로
만들기 위한 공격으로 사용된다. 
이는 TCP 프로토콜을 이용하여, 클라이언트가 서버에 TCP Header의 Flags를
ACK(0x10)으로 Setting하여 대량의 Packet을 보내면, 서버는 이를 처리하기
위해서 대부분의 자원(System Resource)을 소모하게 되고, 정상적인 서비스
를 하지 못하는 현상이 발생한다

▲ 탐지방법 
① 공격자가 보낸 Packet에서 IP Header, TCP Header를 분석한다.
② TCP Header분석결과 flag가 ACK 이면, 공격자가 보내는 Packet의 수를
Count한다.
③ Count가 공격인정 시간내에 공격인정회수 이상이면 ACK Flooding으로 탐
지한다.

▲ 조치방법
이러한 사실을 Network 및 System 관리자에게 주지시키고, 공격자의 주소에
대해서 F/W 또는 기타 보안장비에서, 이를 Filtering함으로써 공격의 피해를
최소화 할 수 있다.
● TCP PUSH Flooding

▲ 공격방법
DOS 공격의 한 방법으로, 서버가 정상적인 서비스를 지연 또는 불능상태로
만들기 위한 공격으로 사용된다. 
이는 TCP 프로토콜을 이용하여, 클라이언트가 서버에 TCP Header의 Flags를
PUSH(0x08)으로 Setting하여 대량의 Packet을 보내면, 서버는 이를 처리하기
위해서 대부분의 자원(System Resource)을 소모하게 되고, 정상적인 서비스
를 하지 못하는 현상이 발생한다

▲ 탐지방법 
① 공격자가 보낸 Packet에서 IP Header, TCP Header를 분석한다.
② TCP Header분석결과 flag가 PUSH이면, 공격자가 보내는 Packet의 수를
Count한다.
③ Count가 공격인정 시간내에 공격인정회수 이상이면 PUSH Flooding으로 탐
지한다.

▲ 조치방법
이러한 사실을 Network 및 System 관리자에게 주지시키고, 공격자의 주소에
대해서 F/W 또는 기타 보안장비에서, 이를 Filtering함으로써 공격의 피해를
최소화 할 수 있다.
● TCP RESET Flooding

▲ 공격방법
DOS 공격의 한 방법으로, 서버가 정상적인 서비스를 지연 또는 불능상태로
만들기 위한 공격으로 사용된다. 
이는 TCP 프로토콜을 이용하여, 클라이언트가 서버에 TCP Header의 Flags를
RESET(0x04)으로 Setting하여 대량의 Packet을 보내면, 서버는 이를 처리하
기 위해서 대부분의 자원(System Resource)을 소모하게 되고, 정상적인 서비
스를 하지 못하는 현상이 발생한다

▲ 탐지방법 
① 공격자가 보낸 Packet에서 IP Header, TCP Header를 분석한다.
② TCP Header분석결과 flag가 RESET이면, 공격자가 보내는 Packet의 수를
Count한다.
③ Count가 공격인정 시간내에 공격인정회수 이상이면 RESET Flooding으로 탐
지한다.

▲ 조치방법
이러한 사실을 Network 및 System 관리자에게 주지시키고, 공격자의 주소에
대해서 F/W 또는 기타 보안장비에서, 이를 Filtering함으로써 공격의 피해를
최소화 할 수 있다.
● TCP URG Flooding

▲ 공격방법
DOS 공격의 한 방법으로, 서버가 정상적인 서비스를 지연 또는 불능상태로
만들기 위한 공격으로 사용된다. 
이는 TCP 프로토콜을 이용하여, 클라이언트가 서버에 TCP Header의 Flags를
URG(0x20)으로 Setting하여 대량의 Packet을 보내면, 서버는 이를 처리하기
위해서 대부분의 자원(System Resource)을 소모하게 되고, 정상적인 서비스
를 하지 못하는 현상이 발생한다

▲ 탐지방법 
① 공격자가 보낸 Packet에서 IP Header, TCP Header를 분석한다.
② TCP Header분석결과 flag가 URG 이면, 공격자가 보내는 Packet의 수를
Count한다.
③ Count가 공격인정 시간내에 공격인정회수 이상이면 URG Flooding으로 탐
지한다.

▲ 조치방법
이러한 사실을 Network 및 System 관리자에게 주지시키고, 공격자의 주소에
대해서 F/W 또는 기타 보안장비에서, 이를 Filtering함으로써 공격의 피해를
최소화 할 수 있다.
● TCP XMAS Flooding

▲ 공격방법
DOS 공격의 한 방법으로, 서버가 정상적인 서비스를 지연 또는 불능상태로
만들기 위한 공격으로 사용된다. 
이는 TCP 프로토콜을 이용하여, 클라이언트가 서버에 TCP Header의 Flags를
FIN(0x01), URG(0x20), PUSH(0x08), RST(0x04) 등으로 Setting하여, 대량의
Packet을 보내면, 서버는 이를 처리하기 위해서 대부분의 자원 (System Re-
source)을 소모하게 되고, 정상적인 서비스를 하지 못하는 현상이 발생한다

▲ 탐지방법 
① 공격자가 보낸 Packet에서 IP Header, TCP Header를 분석한다.
② TCP Header분석결과 flag가 FIN(0x01), URG(0x20), PUSH(0x08), RST(0x04)
등으로 설정되어 있으면, 공격자가 보내는 Packet의 수를 Count한다.
③ Count가 공격인정 시간내에 공격인정회수 이상이면 XMAS Flooding으로 탐
지한다.

▲ 조치방법
이러한 사실을 Network 및 System 관리자에게 주지시키고, 공격자의 주소에
대해서 F/W 또는 기타 보안장비에서, 이를 Filtering함으로써 공격의 피해를
최소화 할 수 있다.
● UDP Flooding

▲ 공격방법
DOS 공격의 한 방법으로서 UDP 프로토콜을 이용하여 클라이언트가 서버에 가
상의 데이터를 연속적으로 보내어 서버의 부하 및 Network Overload 를 발생
시켜 정상적인 서비스를 하지 못하도록 한다. 특히 MS Windows 계열의 O.S에
치명적인 영향을 미칠 수 있다.

▲ 탐지방법
① 공격자가 보낸 Packet에서 UDP를 분석한다.
② 대상 Port 번호를 확인하여 7,17,19,135,137 번이 아니고, UDP Port Scan
공격 아니면 UDP Flood공격으로 간주한다.
③ 공격자가 보내는 Packet의 횟수를 Count하여 공격인정 시간내에 공격인정
회수 이면 UDP Flooding으로 탐지한다

▲ 조치방법
이러한 정보를 관리자에게 알리고, 관리자는 불필요한 UDP 서비스를 Disable
함으로서 공격의 피해를 최소화 할 수 있다. 또한 방화벽(F/W) 및 Router에
서 불필요한 UDP 서비스를 차단함으로써 해결할 수 있다.
● ICMP Unreachable Storm

▲ 공격방법
공격자는 연속적으로 ICMP의 port-unreachable frame 을 보내서 시스템의 성
능을 저하시키거나 마비 시킨다.

▲ 탐지방법
① 공격자가 보낸 Packet에서 ICMP를 분석한다.
② Source IP Address, Destnation IP Address 를 확인하여 도달할 수 없는
IP Address이면 ICMP Unreachable STORM 공격으로 간주한다.
③ 공격자가 보내는 Packet의 횟수를 Count하여 공격인정 시간내에 공격인정
회수이면 ICMP Unreachable Storm으로 탐지한다

▲ 조치방법
공격정보를 Network, System 관리자에게 알림으로써 관리자가 침입차단 시스템
에서 ICMP(ECHO)서비스를 close함으로써 해결할 수 있다.
● FTP PASV Dos

▲ 공격방법
DOS 공격의 한 방법으로서 FTP서비스에 접속하여 서버가 응답하기 전에 대량
의 FTP PASV 명령어를 연속적으로 보내어 FTP Server를 Down 시키거나, 부하
를 발생시켜 정상적인 서비스를 하지 못하도록 한다.

▲ 탐지방법
① 공격자가 보낸 Packet에서 TCP를 분석한다.
② FTP 서버가 응답하기 전에 공격자(Client)로부터 FTP PASV 명령어가 서버
로 보내지면 FTP PASV공격으로 간주한다.
③ 공격자가 보내는 Packet의 횟수를 Count하여 공격인정 시간내에 공격인정
회수이면 FTP PASV DOS 공격으로 탐지한다.

▲ 조치방법
공격 클라이언트와 서버에 RESET 신호를 보내어 공격을 무력화시킴으로서
서버 의 정보를 보호한고, FTP PASV Dos에 취약하지 않은 최신버전의 FTP
서버로 업그레이드 할 것을 권장한다.
● ICMP Ping of Death

▲ 공격방법
공격할 시스템에 Fragmented된 Packet과 비정상적인 OOB (Out of Band)를 함
께 대량으로 전송하여 System 자원을 무의미하게 소모 시키며, 심할 경우 대
상 시스템을 Crash시킬 수도 있다. 이로 인해 내부 네트워크 자원에 심각한
Collision을 임의로 일으켜서 내부자원의 소모율을 높여서 네트워크 성능을
저하시킬 수 있다.

▲ 탐지방법
① 공격자가 보낸 Packet에서 ICMP를 분석한다.
② 분석결과 ICMP type이 ECHO이고 ICMP message-specific data의 크기가 10
24 byte이상인지 확인한다.
③ 공격자가 보내는 Packet의 횟수를 Count하여 공격인정 시간내에 공격인정
회수이면 Ping of Death로 탐지한다.

▲ 조치방법
공격정보를 Network,System관리자에게 알려서 관리자가 침입차단시스템(F/W)
에서 ICMP(ECHO) 서비스를 차단 함으로써 해결할 수 있다.
● ICMP Checksum Error

▲ 공격방법
공격자는 임의적으로 ICMP의 비정상적인 Packet 을 대상서버에 보냄으로써
서버에 과부하를 발생시키고 이로 인해서 서버의 정상적인 서비스를 방해하
는 DOS 공격이다.

▲ 탐지방법
① 공격자가 보낸 Packet에서 ICMP를 분석한다.
② 분석결과 ICMP Checksum에 오류가 발생했으면 ICMP Checksum Error로 Sca
-n한다.
③ 공격자가 보내는 Packet의 횟수를 Count하여 공격인정 시간내에 공격인정
회수이면 ICMP Checksum Error 공격으로 탐지한다.

▲ 조치방법
공격정보를 Network,System관리자에게 알려서 관리자가 침입차단시스템(F/W)
에서 ICMP(ECHO) 서비스를 차단 함으로써 해결할 수 있다. 또한 최신의 O.S
및 서비스를 설치 함으로써 공격을 최소화 할 수 있다.
● TCP Checksum Error

▲ 공격방법
공격자는 임의적으로 TCP의 비정상적인 Packet을 대상서버에 보냄으로써 서
버에 과부하를 발생시키고 이로 인해서 서버의 정상적인 서비스를 방해하는
DOS 공격이다.

▲ 탐지방법
① 공격자가 보낸 Packet에서 TCP를 분석한다.
② 분석결과 TCP Checksum에 오류가 발생했으면 TCP Checksum Error 로 Scan
한다.
③ 공격자가 보내는 Packet의 횟수를 Count하여 공격인정 시간내에 공격인정
회수이면 TCP Checksum Error 공격으로 탐지한다.

▲ 조치방법
공격정보를 Network,System관리자에게 알려서 관리자가 침입차단시스템(F/W)
에서 TCP의 불필요한 서비스를 차단 함으로써 해결할 수 있다. 또한 최신의
O.S 및 서비스를 설치 함으로써 공격을 최소화 할 수 있다.
● UDP Checksum Error

▲ 공격방법
공격자는 임의적으로 UDP의 비정상적인 Packet을 대상서버에 보냄으로써 서
버에 과부하를 발생시키고 이로 인해서 서버의 정상적인 서비스를 방해하는
DOS 공격이다.

▲ 탐지방법
① 공격자가 보낸 Packet에서 UDP를 분석한다.
② 분석결과 UDPChecksum 에 오류가 발생했으면 UDPChecksum Error로 Scan한
다.
③ 공격자가 보내는 Packet의 횟수를 Count하여 공격인정 시간내에 공격인정
회수이면 UDPChecksum Error 공격으로 탐지한다.

▲ 조치방법
공격정보를 Network,System관리자에게 알려서 관리자가 침입차단시스템 (F/W
)에서 UDP의 불필요한 서비스를 차단 함으로써 해결할 수 있다. 또한 최신의
O.S 및 서비스를 설치 함으로써 공격을 최소화 할 수 있다.
● IP Checksum Error

▲ 공격방법
공격자는 임의적으로 TCP/IP의 비정상적인 Packet을 대상서버에 보냄으로써
서버에 과부하를 발생시키고 이로 인해서 서버의 정상적인 서비스를 방해하
는 DOS 공격이다.

▲ 탐지방법
① 공격자가 보낸 Packet에서 TCP/IP의 IP를 분석한다.
② 분석결과 IPChecksum에 오류가 발생했으면 IPChecksum Error로 Scan한다.
③ 공격자가 보내는 Packet의 횟수를 Count하여 공격인정 시간내에 공격인정
회수이면 IPChecksum Error 공격으로 탐지한다.

▲ 조치방법
공격정보를 Network, System 관리자에게 알려서 관리자가 침입차단시스템(F/
W)에서 TCP/IP의 불필요한 서비스를 차단 함으로써 해결할 수 있다. 또한 최
신의 O.S 및 서비스를 설치 함으로써 공격을 최소화 할 수 있다.
● ICMP Smuf

▲ 공격방법
공격자(클라이언트)가 대상 서버 및 Network에 Over load를 발생시켜 정상적
인 서비스를 하지 못하게 하는 공격으로, 공격자가 ICMP Packet의 Source IP
Address 에 공격대상 서버의 IP Address 를 Setting 하고 임의의 Broadcast
Address로 ICMP ECHO Packet 을 발송하면 이를 수신한 경유지 서버는 동시에
대상서버에 응답을 하게 함으로써 Network Traffic 을 기하급수적으로 증가
시키고, 서버에 과부하를 발생시킨다.

▲ 탐지방법
① 공격자가 보낸 Packet에서 ICMP를 분석한다.
② 분석결과 ICMP type이 REPLY인지 확인한다.
③ Source IP의 변조(IP Spoofing)여부를 확인한다.
④ 공격자가 보내는 Packet의 횟수를 Count하여 공격인정 시간내에 공격인정
회수이면 ICMP Smurf 공격으로 탐지한다.

▲ 조치방법
공격정보를 Network, System 관리자에게 알려서 관리자가 침입차단시스템(F/
W)에서 ICMP(ECHO)서비스를 차단함으로써 해결할 수 있다.
● Windows Nuke

▲ 공격방법
TCP가 OOB-out of band 데이터를 처리할 때 사용하는 URG(Urgent) 신호를 Wi
-ndows의 139포트(NetBios over TCP)에 보냄으로써 시스템이 다운되거나 Win
-dows시스템 서비스중의 하나인 HDD공유 기능을 마비 시킨다.

▲ 탐지방법
① 공격자가 보낸 Packet에서 TCP를 분석한다.
② TCP Header의 가상 port 를 확인하여 Pakcet의 흐름이 Client에서 Server
이고 sport가 TCP_PORT_NBSS(139)인지 확인한다.
③ TCP Header의 flags를 확인하여 TH_URG이면 Windows Nuke공격으로 간주한
다.
④ 공격자가 보내는 Packet의 횟수를 Count하여 공격인정 시간내에 공격인정
회수이면 Windows Nuke로 탐지한다

▲ 조치방법
SNIPER는 공격자에게 RESET신호를 보내어 공격을 무력화하고, 공격 클라이
언트를 차단하여 공격으로부터 서버를 보호한다. 또한 서버의 OS를 버전업
시킨다.
● Land Attack

▲ 공격방법
공격자가 임의로 자신의 IP Address와 Port를 대상 서버의 IP Address와 Por
-t와 동일하게 하여 서버에 접속함으로서 서버의 실행속도가 느려지거나, 마
비되게 한다.

▲ 탐지방법
① 공격자가 보낸 Packet에서 TCP를 분석한다
② TCP Packet의 Source의 IP, Port 와 Destination의 IP, Port가 동일한지
확인한다.
③ 공격자가 보내는 Packet의 횟수를 Count하여 공격인정 시간내에 공격인정
회수 이면 Land Attack으로 탐지한다.

▲ 조치방법
공격정보를 Network, System관리자에게 알림으로써 관리자가 침입차단시스템
(F/W)에서 Source IP/Port와 Destination IP/Port와 동일하면 차단하도록 설
정한다.
● Ping Flooding

▲ 공격방법
Network이 정상적으로 작동하는지 여부를 확인하게 위해서 사용하는Ping Tes
-t를 해커가 해킹을 하기 위한 대상 컴퓨터를 확인하기 위한 방법으로 사용
한다. 또한 대상 system에 ICMP packet을 계속해서 보내서, 대상 system이
Request 에 응답하느라 다른 일을 하지 못하도록 하는 공격이며, 해당 시스
템은 끊임없는 응답에 내부 Service queue counter 자원의 고갈로 서비스불
능 상태에 빠진다. 동시에 Network에 Over load를 발생시키는 치명적인 공격
이 될 수도 있다.

▲ 탐지방법
① 공격자가 보낸 Packet에서 ICMP를 분석한다
② 분석결과 ICMP type이 ECHO인지 확인한다.
③ 공격자가 보내는 Packet의 횟수를 Count하여 공격인정 시간내에 공격인정
회수이면 Ping Flooding으로 탐지한다

▲ 조치방법
공격정보를 Network, System 관리자에게 알려서 관리자가 침입차단시스템(F/
W)에서 ICMP(ECHO)서비스를 차단함으로써 해결하고, 공격을 한 클라이언트를
집중적으로 관찰하도록 한다.
● Ping Sweep

▲ 공격방법
공격자(Client)가 대상 Network에 어떤 서버가 존재하는지를 파악하기 위해
서 ICMP 를 이용하여 대상 Network의 Broadcast IP 를 입력한 다음 응답되는
패킷을 분석하여 정보를 파악할 수 있는 기법이다. 또한 대상 Network전체에
Overload를 발생 시킬 목적으로 사용 되기도 한다.

▲ 탐지방법
① 공격자가 보낸 Packet에서 ICMP를 분석한다
② 분석결과 ICMP type이 ECHO이면서 대상 IP Address가 Broadcast IP이면 P
-ing Sweep으로 간주한다.
③ 공격자가 보내는 Packet의 횟수를 Count하여 공격인정 시간내에 공격인정
회수이면 Ping Flooding으로 탐지한다

▲ 조치방법
공격정보를 Network, System 관리자에게 알려서 관리자가 침입차단시스템(F/
W)에서 ICMP(ECHO)서비스를 차단함으로써 해결하고, 공격을 한 클라이언트를
집중적으로 관찰하도록 한다.
● Snork Attack

▲ 공격방법
공격자가 대상서버(MS Windows 계열) 의 Resource를 소진 시키기 위해서 UDP
의 destination 포트를 135(Microsoft Location Service)번으로 source 포트
를 7(Echo), 19(Chargen), 135 로 하여 Packet를 보내면 서로가 무한 통신을
한다는 취약점을 이용하여 공격하는 방법이다.

▲ 탐지방법
① 공격자가 보낸 Packet에서 UDP를 분석한다
② 분석결과 destination Port가 135번 이고, Source Port가 7,19,135번 중
의 하나 이면 Snork Attack으로 간주한다.
③ 공격자가 보내는 Packet의 횟수를 Count하여 공격인정 시간내에 공격인정
회수이면 Ping Flooding으로 탐지한다

▲ 조치방법
공격정보를 Network, System 관리자에게 알려서 관리자가 침입차단시스템(F/
W)에서 UDP 서비스를 차단함으로써 해결하고, 공격을 한 클라이언트를 집중
적으로 관찰하도록 한다. 또한 대상 서버를 취약점이 해결된 O.S로 Version
Up을 하여 공격을 최소화한다.
● Open Teardrop Attack

▲ 공격방법
TCP/IP 통신에서 보내는 쪽에서는 IP 데이타그램을 쪼개고 받는 쪽에서는 이
를 합치는(프레그멘테이션과 리어셈블리) 아주 정상적으로 일어나야 할 과정
을 공격자가 임의적으로 과도하게 발생 시키거나, 꼬이게 함으로써 대상컴퓨
터가 다운되게 하는 DOS공격의 일종이다. 또한 이 공격은 어떤 OS의 IP frag
-ment 재조합 코드 안에 버그를 일으키는 invalid fragmented IP 패킷을 보
낸다. 이 취약성은 공격자가 목적 시스템을 손상시켜 서비스손실을 유발시키
고, 서버를 다운 시킬 수도 있다. Open Tear공격이 일반적인 Tear Drop과 다
른점은 Packet를 보냄에 있어서 IP가 fragment 되어 있다는 Signal만 보내고
실질적인 Data는 보내지 않는 것이다. 이는 서버에게 Tear Drop보다 더 많은
부하를 발생시킬 수 있으며, 이로 인하여 정상적인 서비스를 하지 못하는 경
우가 발생한다.

▲ 탐지방법
① Packet을 분석하여 확인한 결과 Fragmentation이 되어있으면 이를 Count
한다.
② Packet의 Data부분에 Data가 있는지 여부를 확인하여 Data가 없으면Open
Tear공격으로 간주한다.
③ 공격자가 보내는 Packet의 횟수를 Count 하여 공격인정 시간내에 공격인
정회수이면 OpenTear 공격으로 탐지한다

▲ 조치방법
대상 시스템의 O.S를 보안에 관련된 모든 hot fix 뿐만 아니라 최신의 버전
또는 최신의 서비스팩을 설치하여 더 이상 시스템이 영향을 받지 않도록 한
다. 또한 이러한 사실을 System, Network 관리자에게 공지하고 공격자의 IP
를 방화벽(F/W)에서 차단한다.
● Telnet Flooding

▲ 공격방법
DOS 공격의 한 방법으로서 TCP 프로토콜을 이용하여 클라이언트가 서버의 Te
-lnet port에 ^D문자를 연속적으로 보내어 서버의 부하를 발생시켜 정상적인
서비스를 하지 못하도록 한다. 이는 Solaris의 특정 O.S 에 치명적인 영향을
미칠 수 있으면, 대부분의 서버에서 Over Load가 발생하고 있다.

▲ 탐지방법
① 공격자가 보낸 Packet에서 TCP를 분석한다
② 분석결과 대상 Port가 Telnet(23) Port 이고 연속해서 ^D문자가 검출되면
Telnet Flooding 공격으로 간주 한다.
③ 공격자가 보내는 Packet의 횟수를 Count하여 공격인정 시간내에 공격인정
회수이면 Ping Flooding으로 탐지한다

▲ 조치방법
공격정보를 Network, System 관리자에게 알려서 관리자가 침입차단시스템(F/
W)에서 불필요한 Telnet Port서비스를 차단함으로써 해결하고, 공격을 한 클
라이언트를 집중적으로 관찰하도록 한다. 또한 대상 서버를 취약점이 해결된
O.S로 Version Up을 하여 공격의 피해를 최소화 한다.
● Mail Bomb

▲ 공격방법
Mail 서버에 대량(수십, 수십만 통)의 동일 또는 쓰레기 E-Mail을 보내어 서
버의 용량을 초과하게 만들어 E-Mail서비스 불능 상태에 빠지게 하여 정상적
인 E-Mail의 송.수신을 방해하는 DOS 공격으로 사용한다.

▲ 탐지방법
대량의 E-Mail을 보내기 위해서는 수작업으로는 불가능하기 때문에 프로그램
을 이용하여 동일한 내용(반드시 동일하지 않을 수 있지만 대부분 유사한 방
식으로 구성되어 있음)의 E-Mail이 특정 클라이언트에서 서버에 전달되는 내
용을 감시하여 탐지한다.

① 공격자가 보낸 TCP Packet를 분석하여 SMTP(25Port)를 확인한다.
② SMTP Packet의 State가 MAIL일 경우 From, To, Subject Address를 확인한
다.
③ 공격자가 동일한 수신자 및 내용의 Packet를 보내는 횟수를 Count하여 공
격인정 시간내에 공격인정회수이면 Mail Bomb으로 탐지한다.

▲ 조치방법
동일 또는 유사한 E-Mail 이 3회 이상 특정 서버에 전달 될 경우 TCP/IP 의
RESET 신호를 클라이언트와 서버에게 동시에 보냄으로써 더 이상의 E-Mail이
서버에 전달 못되게 함으로 서버를 보호한다. 또한 이러한 사실을 System,
Network관리자에 알려 공격자 IP Address를 방화벽에서 차단하도록 설정한다.
그리고 sendmail 최신의 버전으로 Upgrade한다.
● Mail Spam

▲ 공격방법
Mail 서버에 대량의 동일 또는 악성 광고 E-Mail을 보내어 서버의 용량을 초
과하게 만들어 서버의 고유 기능을 마비 시키거나, 사용자가 불필요하게 Ma
-il을 열람하게 함으로서 업무의 효율성을 저하 시킨다.

▲ 탐지방법
① 공격자가 보낸 TCP Packet를 분석하여 SMTP(25Port)를 확인한다.
② Packet Data가 571(Unsolicited email refused), 550 (Requested action
not taken: mailbox unavailable), 501(Syntax error in parameters or
argument), 554(Transaction failed)인지 확인한다.
③ 공격자가 동일한 데이터를 보내는 Email 의 횟수를 Count하여 공격인정시
간내에 공격인정회수이면 Mail Spam으로 탐지한다.

▲ 조치방법
Mail Spam으로 탐지된 내용을 관리자에게 알려주고 침입차단시스템(F/W)에서
발송자의 IP Address를 차단하도록 하고 Sendmail 프로그램을 Patch한다. 또
한 SNIPER는 SPAM MAIL 발송자에게 Reset Packet 를 보내어 더 이상 Mail 이
송.수신되지 않게 하도록 한다.
● UDP LoopBack

▲ 공격방법
공격자가 UDP의 Source와 Destination 포트를 7(Echo), 17(Quoteof the day),
19(Chargen)으로 동일하게 조작한 다음 Packet를 발송하면 서로간에 무한 통
신을 한다는 Protocol의 취약점을 이용한 DOS 공격으로 이로 인하여 Server
및 Network 에 Overload가 발생하고, 정상적인 서비스가 마비되는 현상이 발
생할 수 있다.

▲ 탐지방법
① 공격자가 보낸 Packet에서 UDP를 분석한다
② 분석결과 source 및 destination Port가 7, 17, 19번 중의 하나이면서 동
일하면 UDP Loopback공격으로 간주한다.
③ 공격자가 보내는 Packet의 횟수를 Count하여 공격인정 시간내에 공격인정
회수이면 UDP Loopback공격으로 탐지한다
▲ 조치방법
공격정보를 Network, System 관리자에게 알려서 관리자가 침입차단시스템(F/
W)에서 UDP 서비스를 차단함으로써 해결하고, 공격을 한 클라이언트를 집중
적으로 관찰하도록 한다. 또한 대상 서버를 취약점이 해결된 O.S로 Version
Up을 하여 공격을 최소화한다.

bash shell 매개변수 확장

매개 변수 확장(Parameter Expansion)

아래 예를 테스트하기 위한 변수: string="abc-efg-123-abc"

문자 설명
${변수} $변수와 동일하지만 {} 사용해야만 동작하는 것들이 있음(예: echo ${string})
${변수:위치} 위치 다음부터 문자열 추출(예: echo ${string:4})
${변수:위치:길이} 위치 다음부터 지정한 길이 만큼의 문자열 추출(예: echo ${string:4:3})
${변수:-단어} 변수 미선언 혹은 NULL일때 기본값 지정, 위치 매개 변수는 사용 불가(예: echo ${string:-HELLO})
${변수-단어} 변수 미선언시만 기본값 지정, 위치 매개 변수는 사용 불가(예: echo ${string-HELLO})
${변수:=단어} 변수 미선언 혹은 NULL일때 기본값 지정, 위치 매개 변수 사용 가능(예: echo ${string:=HELLO})
${변수=단어} 변수 미선언시만 기본값 지정, 위치 매개 변수 사용 가능(예: echo ${string=HELLO})
${변수:?단어} 변수 미선언 혹은 NULL일때 단어 출력 후 스크립트 종료,(예: echo ${string:?HELLO})
${변수?단어} 변수 미선언시만 단어 출력 후 스크립트 종료(예: echo ${string?HELLO})
${변수:+단어} 변수 선언시만 단어 사용(예: echo ${string:+HELLO})
${변수+단어} 변수 선언 혹은 NULL일때 단어 사용(예: echo ${string+HELLO})
${#변수} 문자열 길이(예: echo ${#string})
${변수#단어} 변수의 앞부분부터 짧게 일치한 단어 삭제(예: echo ${string#a*b})
${변수##단어} 변수의 앞부분부터 길게 일치한 단어 삭제(예: echo ${string##a*b})
${변수%단어} 변수의 뒷부분부터 짧게 일치한 단어 삭제(예: echo ${string%b*c})
${변수%%단어} 변수의 뒷부분부터 길게 일치한 단어 삭제(예: echo ${string%%b*c})
${변수/찾는단어/변경단어} 처음 일치한 단어를 변경(예: echo ${string/abc/HELLO})
${변수//찾는단어/변경단어} 일치하는 모든 단어를 변경(예: echo ${string//abc/HELLO})
${변수/#찾는단어/변경단어} 앞부분이 일치하면 변경(예: echo ${string/#abc/HELLO})
${변수/%찾는단어/변경단어} 뒷부분이 일치하면 변경(예: echo ${string/%abc/HELLO})
${!단어*}, ${!단어@} 선언된 변수중에서 단어가 포함된 변수 명 추출(예: echo ${!string*}, echo ${!string@})

force10 포트 미러링

Configure Port Monitor Session

Command Purpose
Force10# configure Enter configuration mode.
Force10(conf)# interface te 0/2 Enter the destination port to be used for monitor session. Confirm that it has no configuration.
Force10(conf-if-te-0/2)# no ip address Remove any ip address that may be configured.
Force10(conf-if-te-0/2)# no shutdown Enable the port.
Force10(conf-if-te-0/2)#exit Leave the destination port interface.
Force10(conf)# monitor session 0 Set up and identify the session number. Range 0 – 65535.
Force10(conf-mon-sess-0)#source te 0/1 destination te 0/2 direction both Set the source (the port you want to monitor). Set the destination (the port where you send the monitored packets). Set the direction (Both/Rx/Tx).

Verify Port Monitor Session

Force10#show monitor session 0
SessID Source Destination Dir Mode Source IP Dest IP
—— —— ———– — —- ——— ——–
0 Te 0/1 Te 0/2 both Port N/A N/A

mysql Procedure/Function 생성 권한 주기

출처 : http://idchowto.com/index.php/mysql-procedurefunction-%EC%83%9D%EC%84%B1-%EA%B6%8C%ED%95%9C-%EC%A3%BC%EA%B8%B0/

웹호스팅을 운영하면서 일반 사용자도 함수 및 프로시저 권한을 달라는 요청을 받았습니다

당연히 기본으로 권한이 포함되어 있는지 알았더니 이부분은 따로 설정을 해줘야 생성이 가능합니다

일반적인 웹호스팅 사용자  대부분이 프로시저나 함수등을 등록해서 사용하는 분들이 없기 때문에  모르고 있던 내용이기도 하다

 

1. 프로시저 및 함수 생성 권한 확인
SHOW VARIABLES LIKE '%log_bin_trust_function_creators%'; 
스크린샷, 2015-01-27 15:08:05

mysql 디폴트 값은 OFF 상태 입니다


2. 프로시저 및 함수 생성 권한 주기
SET GLOBAL log_bin_trust_function_creators = 1;
스크린샷, 2015-01-27 15:08:53
위와 같이 쿼리를 실행하면 Value 값이 ON 으로 변경이 됩니다


3. 생성된 함수나 프로시저를 확인하는 쿼리 입니다
SELECT * FROM information_schema.ROUTINES;



이제 일반 사용자들도 함수 및 프로시저를 생성 할 수가 있습니다

Fail2Ban을 이용한 POST GET 공격 필터링

출처 : http://idchowto.com/index.php/fail2band%ec%9d%84-%ec%9d%b4%ec%9a%a9%ed%95%9c-post-get-%ea%b3%b5%ea%b2%a9-%ed%95%84%ed%84%b0%eb%a7%81/

 

GET,POST 공격을 필터링하는 방법입니다.

단순 차단 형태이며, 서버상에서 악성 접근등을 막는데 요긴하게 쓰여집니다.

 

1. Fail2ban 설치 :

http://idchowto.com/index.php/fail2ban/ 페이지에서 확인하세요

 

2. 필터 파일 생성

설치를 완료 하면 /etc/fail2ban/filter.d 경로에 여러 파일들이 보입니다.

이중에 apache 의 post,get 를 필터하는 룰은 없습니다.

아래와 같이 생성해주세요!

http-get-dos.conf 의 내용입니다.

fail2ban_1

 

3. jail.conf 설정

해당 설정파일은 filter.d에 생성한 필터를 로드하는 역할을 합니다.

아래 설정을 설명 드리자면 2초에 10번 시도시 해당 IP는 600초간 밴을 당하게 되는 형테입니다.

참조 로그는 apache access 로그가 되겠습니다.

fail2ban_2

 

 

4. 확인

Fail2ban은 Iptables 의 상위 체인으로 올라가게됩니다.

jail에 올라간 해당 서비스 포트를 필터링하게 되며, 비정상 접근시 차단하게 됩니다.

개인 서버의 일인 DDOS, 악성 댓글로 인한 트래픽 유출등에서 큰효과를 기대할 수 있습니다.

fail2ban_3

BGP – 경로설정(local preference, weight)

bgp_local

BGP 경로결정 우선순위

– 웨이트(weight) 가 가장 큰 경로
– 로컬 프리퍼런스(local preference) 가 가장 큰 경로
– 현재 라우터가 bgp 에 포함시킨 경로(network, redistribute )

로컬 프리퍼런스(local preference)
– 인접 AS 로 나가는 경로 조절시 사용
– iBGP 피어간에만 전달 되며 AS 외부로는 전송되지 않는다.
– 높은값이 우선(0 ~ 4294967295)

웨이트(weight)
– 해당 라우터에서만 의미를 갖는다
– 다른 네이버에게는 전송되지 않는다
– 높은 값이 우선

******************* 로컬 프리퍼런스 ***********************
==R1
interface Loopback0
ip address 1.1.1.1 255.0.0.0
!
interface Serial1/0
ip address 192.168.12.1 255.255.255.
!
interface Serial1/1
ip address 192.168.15.1 255.255.255.
!
router bgp 100
no synchronization
network 1.0.0.0
neighbor 192.168.12.2 remote-as 100
 neighbor 192.168.12.2 next-hop-self
neighbor 192.168.15.5 remote-as 500
neighbor 192.168.15.5 route-map setlocal in
!
route-map setlocal permit 10
set local-preference 1000

==R2
interface Serial1/0
ip address 192.168.12.2 255.255.255.0
!
interface Serial1/1
ip address 192.168.23.2 255.255.255.0
!
router bgp 100
no synchronization
network 2.0.0.0
neighbor 192.168.12.1 remote-as 100
neighbor 192.168.23.3 remote-as 300

==R3
interface Serial1/0
ip address 192.168.12.2 255.255.255.0
!
interface Serial1/1
ip address 192.168.23.2 255.255.255.0
!
router bgp 300
no synchronization
neighbor 192.168.23.2 remote-as 100
neighbor 192.168.34.4 remote-as 400

==R4
interface Loopback0
ip address 4.4.4.4 255.0.0.0
!
interface Serial1/2
ip address 192.168.34.4 255.255.255.0
!
interface Serial1/3
ip address 192.168.54.4 255.255.255.0
!
router bgp 400
no synchronization
network 4.0.0.0
neighbor 192.168.34.3 remote-as 300
neighbor 192.168.54.5 remote-as 500

==R5
interface Loopback0
ip address 5.5.5.5 255.0.0.0
!
interface Serial1/1
ip address 192.168.15.5 255.255.255.0
!
interface Serial1/3
ip address 192.168.54.5 255.255.255.0
!
router bgp 500
no synchronization
neighbor 192.168.15.1 remote-as 100
neighbor 192.168.54.4 remote-as 400
[테스트]
R4#debug ip packet

R1->R4 ping 테스트(출발지 1.1.1.1  목적지 4.4.4.4)
R2->R4 ping 테스트(출발지 2.2.2.2  목적지 4.4.4.4)

또는
R1,R2#traceroute   4.4.4.4

*******************  weight 경로결정 *************************

== R2
router bgp 100
no synchronization
network 2.0.0.0
neighbor 192.168.12.1 remote-as 100
neighbor 192.168.23.3 remote-as 300
neighbor 192.168.23.3 weight 1000