<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Developer Story</title>
		<link>http://onurmark.co.kr/tc/</link>
		<description>네트워크, SSL, VPN, 보안장비, Linux 정보 제공.</description>
		<language>ko</language>
		<pubDate>Tue, 31 Aug 2010 11:55:46 +0900</pubDate>
		<generator>Textcube 1.7.8 : Con moto</generator>
		<item>
			<title>Linux file descriptor 제한 늘리기</title>
			<link>http://onurmark.co.kr/tc/141</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;Linux 프로그램은 기본적으로 stdin, stdout, stderr 3개의 파일 디스크립터를 사용한다. 여기에 다가 file을 오픈하거나 Socket을 오픈하는 것도 파일 디스크립터를 하나씩 점유하게 된다. 다수의 요청을 처리하는 소켓 프로그램의 경우 너무 많은 요청이 들어 올 경우 파일 디스크립터의 수가 제한 되어 &#039;too many open file&#039;과 같은 에러가 발생하게 된다. &lt;br&gt;&amp;nbsp;쉘에서 ulimit -a 명령어를 사용하면 현재 커널에 할당되어 있는 정보를 볼 수 있다. &lt;br&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228);&quot;&gt;core file size &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; (blocks, -c) 0&lt;br&gt;data seg size &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (kbytes, -d) unlimited&lt;br&gt;max nice &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; (-e) 0&lt;br&gt;file size &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (blocks, -f) unlimited&lt;br&gt;pending signals &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (-i) 8064&lt;br&gt;max locked memory &amp;nbsp; &amp;nbsp; &amp;nbsp; (kbytes, -l) 32&lt;br&gt;max memory size &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (kbytes, -m) unlimited&lt;br&gt;open files &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; (-n) 1024&lt;br&gt;pipe size &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; (512 bytes, -p) 8&lt;br&gt;POSIX message queues &amp;nbsp; &amp;nbsp; (bytes, -q) 819200&lt;br&gt;max rt priority &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (-r) 0&lt;br&gt;stack size &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; (kbytes, -s) 10240&lt;br&gt;cpu time &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (seconds, -t) unlimited&lt;br&gt;max user processes &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; (-u) 8064&lt;br&gt;virtual memory &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; (kbytes, -v) unlimited&lt;br&gt;file locks &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; (-x) unlimited&lt;br&gt;file locks &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; (-x) unlimited&lt;/div&gt;&lt;br&gt;위 항목중 open files 항목이 하나의 프로세스에서 열 수 있는 파일 디스크립터의 수 이다.&amp;nbsp; ulimit -n 명령어를 사용하여 설정 할 수도 있으나 여기에서는 C 언어에서 할당하는 방법을 알아보자&lt;br&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228);&quot;&gt;&amp;nbsp;#include &amp;lt;sys/time.h&amp;gt;&lt;br&gt;&amp;nbsp;#include &amp;lt;sys/resource.h&amp;gt;&lt;br&gt;&amp;nbsp;#include &amp;lt;unistd.h&amp;gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;int getrlimit (int resource, struct rlimit *rlim);&lt;br&gt;&amp;nbsp;int setrlimit (int resource, const struct rlimit *rlim);&lt;br&gt;&lt;br&gt;struct rlimit&lt;br&gt;{&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; rlim_t &amp;nbsp;&amp;nbsp; rlim_cur; //soft&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; rlim_t &amp;nbsp;&amp;nbsp; rlim_max; //hard&lt;br&gt;};&lt;br&gt;&lt;/div&gt;&lt;br&gt;사용법은 아래와 같다.&lt;br&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228);&quot;&gt;void print_rlim()&lt;br&gt;{&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; struct rlimit limit;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; getrlimit(RLIMIT_NOFILE, &amp;amp;limit);&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf(&quot;cur=%lu max=%lu\n&quot;, limit.rlim_cur, limit.rlim_max);&lt;br&gt;}&lt;br&gt;void set_rlim()&lt;br&gt;{&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; struct rlimit limit;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; limit.rlim_cur = 20480lu;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; limit.rlim_max = 20480lu;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; setrlimit(RLIMIT_NOFILE, &amp;amp;limit);&lt;br&gt;}&lt;/div&gt;&lt;br&gt;&lt;br&gt;</description>
			<category>Linux</category>
			<category>linux file descriptor c</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/141</guid>
			<comments>http://onurmark.co.kr/tc/141#entry141comment</comments>
			<pubDate>Tue, 13 Oct 2009 12:21:01 +0900</pubDate>
		</item>
		<item>
			<title>[Fedora core 5] Linux permanent routing</title>
			<link>http://onurmark.co.kr/tc/140</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;윈도우즈에서는 route 명령어에 -p 옵션이 있다. 윈도우에서는 Persistent Route로 불리는 옵션으로 퍼머넌트 라우팅이라고도 한다. 지속성을 가지는 라우팅으로 이 옵션을 사용하면 라우팅이 항상 존재하게 된다.&lt;br&gt;&lt;br&gt;&amp;gt;route -p add 192.168.1.123 mask 255.255.255.255 192.168.1.1&lt;br&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1203900755.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;294&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;br&gt;위의 라우팅 테이블을 보면 Persistent Routes: 항목에 라우팅이 들어가는 것을 확인 할 수 있다. 이 라우팅은 일반라우팅과 달리 PC를 재시작하거나 NIC를 disable 상태로 만들어도 항상 존재하게 된다.&lt;br&gt;&lt;br&gt;리눅스에서도 마찬가지로 라우팅을 사용하게 되는데 이때 route 명령이나 ip(iproute2) 명령어를 살펴보면 Permanent 라우팅 옵션은 존재하지 않는다. 그러면 리눅스에서는 재시작할때마다 route 명령을 사용하여 라우팅을 추가하는 방법을 선택하는 수 밖에 없는데 많은 이들이 init 스크립트에 route add 명령을 사용하여 라우팅을 추가하는 방법을 택하게 된다. 하지만 우리는 이 방법 이외의 RHEL에서 제공하는 방법을 택하여 라우팅을 추가해 보자&lt;br&gt;&lt;br&gt;RHEL 계열의 리눅스에서는 네트워크 스크립트를 잘 살펴보면 라우팅을 위한 스크립트가 있다. 바로 /etc/sysconfig/network-scrips/ifup-routes 라는 스크립트 인데 이를 이용하면 Permanent 라우팅과 같이 동작하도록 할 수 있다. &lt;br&gt;&lt;br&gt;먼저 /etc/sysconfig/network-scripts 는 네트워크 관련 스크립트를 모아놓은 곳으로 PC를 부팅하거나 service network restart 명령을 실행할 때 실행되는 스크립트들이다. 이 곳에 route-&amp;lt;xxxx&amp;gt; 형식으로 파일을 생성한다.&lt;br&gt;&lt;br&gt;&amp;gt; vi route-eth0&lt;br&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228);&quot;&gt;192.168.1.55/32 via 192.168.1.1&lt;br&gt;192.168.1.100/32 via 192.168.1.1&lt;br&gt;192.168.1.0/25 via 192.168.1.1&lt;br&gt;192.168.1.105/32 via 211.41.163.1&lt;/div&gt;&lt;br&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1206414050.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;282&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;br&gt;ifup-routes 파일을 잘 살펴보면 route-&amp;lt;xxxx&amp;gt;파일을 한줄씩 읽어들여 &quot;ip route add &quot; 명령어 뒤에 삽입한 후 실행시키는 역할을 한다. 자세한 옵션은 iproute2의 manpage를 참고하도록 하고 위의 명령줄 형식은 다음과 같다.&lt;br&gt;&amp;lt;dest_addr&amp;gt;/&amp;lt;prefix&amp;gt; via &amp;lt;gateway&amp;gt;&lt;br&gt;&lt;br&gt;이제 service network restart나 PC를 재부팅하여 제대로 올라오는지 확인하면 모든 것이 끝난다. 참고로 route-eth0는 eth0장치가 올라올때 활성화된다.&lt;br&gt;&lt;br&gt;</description>
			<category>Linux</category>
			<category>linux</category>
			<category>permanent route</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/140</guid>
			<comments>http://onurmark.co.kr/tc/140#entry140comment</comments>
			<pubDate>Mon, 09 Feb 2009 20:07:14 +0900</pubDate>
		</item>
		<item>
			<title>월세도 현금영수증으로 소득공제...</title>
			<link>http://onurmark.co.kr/tc/139</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;2009년 2월 4일 이후의 월세 지급분에 대해서는 현금영수증이 발급 가능 하도록 되었네요.&lt;br&gt;&lt;br&gt; 세무관서에 &quot;현금거래확인신청서&quot;와 &quot;임대차계약서&quot;를 한번만 제출하시면 계약기간동안의 월세지급분에 대해서는 현금영수증이 발급이 됩니다. 물론 임대차 계약의 만료나 변경이 있을 경우에는 다시 신고를 하셔서 변경을 하셔야 겠구요. 신고기한은 월세 지급일로부터 1개월 이내이며, 2009년 2월 4일 이후의 거래분부터 적용이 되므로 지금신고하시면 2월달 부터는 현금영수증이 발급이 되겠네요...&lt;br&gt;&lt;br&gt;이 사항은 주택에만 적용되고 상가에는 적용이 되지 않습니다. 그리고 임대인이 임대사업자가 아닌 경우에도 즉, 사업자 등록여부와 관계 없이 신고가 가능합니다.&lt;br&gt;&lt;br&gt;자세한 사항은 &lt;a href=&quot;http://www.nts.go.kr/news/news_06.asp?minfoKey=MINF5320080211205338&amp;amp;mbsinfoKey=MBS20090203183632150&amp;amp;top_code=&amp;amp;sub_code=&amp;amp;sleft_code=&amp;amp;ciphertext=&amp;amp;type=V&quot; target=&quot;_blank&quot;&gt;국세청 공지사항&lt;/a&gt; 에서 확인 하세요..&lt;br&gt;</description>
			<category>일상다반사</category>
			<category>소득공제</category>
			<category>월세</category>
			<category>일상다반사</category>
			<category>현금영수증</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/139</guid>
			<comments>http://onurmark.co.kr/tc/139#entry139comment</comments>
			<pubDate>Wed, 04 Feb 2009 09:56:04 +0900</pubDate>
		</item>
		<item>
			<title>Redmine 백업 및 복구 하기</title>
			<link>http://onurmark.co.kr/tc/138</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;h3&gt;백업하기&lt;/h3&gt;1. 데이터베이스 백업(mysqldump 를 사용)&lt;br&gt;&amp;nbsp;&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228);&quot;&gt;# mysqldump -u &amp;lt;username&amp;gt; -p &amp;lt;redmine_database&amp;gt; | gzip &amp;gt; /path/to/backup/db/redmine_`date +%y_%m_%d`.gz&lt;br&gt;&lt;/div&gt;mysqldump를 이용하여 특정 DB(이 경우 redmine의 DB)를 출력하고 이를 pipe를 사용하여 gzip으로 보내고 이 결과를 파일로 출력한다. 주의 할점은 파일 이름에 백업시간을 지정하기 위해 date를 사용하였는데 여기에 사용된 기호는 &lt;span style=&quot;font-weight: bold;&quot;&gt;Grave&lt;/span&gt;이다.(Apostrophe가 아님)&lt;br&gt;&lt;br&gt;2. 첨부파일 백업(rsync를 사용)&lt;br&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228);&quot;&gt;rsync -a /path/to/redmine_`date +%y_%m_%d`/files /path/to/backup/files&lt;/div&gt;rsync는 원격지에서 파일을 백업하기 위한 용도로 사용되지만 로컬에서 사용하여도 상관 없다..&lt;br&gt;&lt;br&gt;&lt;h3&gt;복구하기&lt;/h3&gt;1. 데이터베이스 복구 (mysql 이용)&lt;br&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228);&quot;&gt;gzip -d &amp;lt;backup_file&amp;gt;&lt;br&gt;mysql -u &amp;lt;username&amp;gt; -p &amp;lt; &amp;lt;backup_file&amp;gt;&lt;/div&gt;&lt;br&gt;2. 첨부파일 복구&lt;br&gt;백업한 파일을 redmine/files에 복사한다.&lt;br&gt;&lt;br&gt;작업을 편리하게 하기 위해서 cron과 rsync를 사용하면 특정한 시간에 원격지 서버로 백업하게 할 수도 있다.&lt;br&gt;</description>
			<category>Linux</category>
			<category>linux</category>
			<category>redmine</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/138</guid>
			<comments>http://onurmark.co.kr/tc/138#entry138comment</comments>
			<pubDate>Mon, 02 Feb 2009 16:08:12 +0900</pubDate>
		</item>
		<item>
			<title>올해 크리스마스는 이거닷!!</title>
			<link>http://onurmark.co.kr/tc/137</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1135096244.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;252&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;br&gt;직소퍼즐 1000 pieces... 거기에 이벤트 사은품으로 500 피스 한박스 더.. 보통 이틀정도 걸린다는데...&lt;br&gt;마치고 나면 모든 악몽이 끝나는거야!!&lt;br&gt;&lt;br&gt;&lt;br&gt;........................................................&lt;br&gt;쳇 무거워서 500 피스만 들고 왔더니... 5시간밖에 안걸렸자나... 이런...&lt;br&gt;&lt;br&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1298463964.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;252&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;br&gt;--------------------------------------------------------------------------&lt;br&gt;드디어 1000 피스 완성...&lt;br&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1153512530.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;252&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;</description>
			<category>일상다반사</category>
			<category>일상다반사</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/137</guid>
			<comments>http://onurmark.co.kr/tc/137#entry137comment</comments>
			<pubDate>Wed, 24 Dec 2008 17:29:13 +0900</pubDate>
		</item>
		<item>
			<title>PXE를 이용한 네트워크 부팅 및 kickstart를 이용한 설치 자동화-1</title>
			<link>http://onurmark.co.kr/tc/136</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;P&gt;PXE(Preboot Execution Environment)란 운영체제가 설치되어 있지 않는 원격지의 컴퓨터를 네트워크 도메인에 참가시키는 것만으로도 부팅을 시킬 수 있는 환경을 말한다. 말은 되게 어려워 보이는데 실제로는 아주 간단한 기능으로 동작을 한다. &lt;BR&gt;&amp;nbsp;요즘에 출시되는 대부분의 메인보드들은 PXE를 지원한다. BIOS설정에서 찾아보면 PXE라 든지 Network on boot rom과 같은 옵션들이 보이는 보드들은 PXE를 지원하는 보드들이다. 이 기능을 활성화 한 다음 부트 오더에 가장 첫번째에 LAN을 두면 활성화 된다. 보드 별로 설정하는 방법이 상이 할 수 있으니 보드 메뉴얼을 참조 하여 PXE를 활성화 하도록 하자&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1182021383.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;276&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;PXE의 기본 동작을 보면 위와 같은 구성으로 되어있다. PXE는 기본적으로 클라이언트이기 때문에 서버가 필요하다. 서버에는 DHCP 서버와 tftp서버 그리고 초기 램디스크 이미지(initrd.img)와 커널 이미지(vmlinuz)가 있으면 모든 준비가 된다. 일단 서버의 설치는 나중에 보도록 하고 먼저 PXE의 코드에서 가장 먼저 실행되는 것은 DHCP 클라이언트이다. 서버로 부터 IP를 가져오기 위해 DHCP 리퀘스트를 전송하면 서버에서는 적당한 IP를 하나 던져 주는데 일반적인 DHCP 응답 메시지가 아니라 PXE를 위한 부가적인 옵션을 전송하도록 설정을 해야한다. 이렇게 DHCP 서버로 부터 IP를 할당 받은 후에는 tftp 프로토콜을 이용하여 초기 램디스크 이미지와 커널이미지를 서버로부터 다운로드 받게 된다. tftp는 이름에서도 알 수 있듯이 ftp와 비슷하지만 전혀 다른 프로토콜이다. udp를 사용하는 파일전송 프로토콜로 파일전송과정이 아주 단순하고 데이터의 완전한 전송을 보장하지는 못한다. 하지만 아주 가볍고 프로토콜이 간단하기 때문에 커널이미지의 전송과 같은 업로드에 많이 사용된다. 이렇게 전송받은 초기 램디스크 이미지와 커널 이미지로 부팅을 하게 되는 것이다. &lt;BR&gt;&amp;nbsp;글이 복잡해 보이지만 간단하게 IP 할당 받고 커널 이미지 전송받고 부팅한다. 라고 생각하면 된다.&lt;BR&gt;&lt;BR&gt;1. 네트워크 구성&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1339777631.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;285&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;서버에는 100.100.100.1을 할당하고 L2 스위치(또는 허브)에는 리눅스를 설치할 클라이언트를 연결하였다. 이제 서버에 dhcpd와 tftp 서버를 올려서 PXE부팅이 가능하도록 설정하면 된다.&lt;BR&gt;&lt;BR&gt;2. DHCPD 설정&lt;BR&gt;linux에서의 DHCP 서버의 지원은 dhcpd가 하고 있다. dhcpd를 yum이나 rpm 또는 소스로 설치를 한다음 /etc/dhcpd.conf 파일을 수정한다.&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;ddns-update-style ad-hoc;&lt;BR&gt;ignore client-updates;&lt;BR&gt;default-lease-time 600;&lt;BR&gt;max-lease-time 7200;&lt;BR&gt;&lt;BR&gt;subnet 100.100.100.0 netmask 255.255.255.0 {&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; range 100.100.100.2 100.100.100.254; &lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;option routers 100.100.100.1;&lt;BR&gt;option subnet-mask 255.255.255.0;&lt;BR&gt;&lt;BR&gt;option root-path &quot;/tftpboot&quot;;&lt;BR&gt;filename &quot;pxelinux.0&quot;; &lt;/DIV&gt;&lt;BR&gt;설정을 잠깐 살펴보면 100.100.100.2 ~ 254 까지의 IP를 클라이언트에 할당하게 하고 디폴트 라우팅은 100.100.100.1로 주도록하였다. option root-path &quot;/tftpboot 는 나중에 tftp 설치때 지정할 루트 디렉토리로 설정하였다. filename &quot;pxelinux.0&quot;은 SYSLINUX를 설치하면 볼 수 있는 파일로 네트워크 서버를 통한 부팅을 사용할 때 필수적인 파일으로 Intel PXE의 스펙에 맞는 네트워크 ROM이다.&lt;BR&gt;&lt;BR&gt;3. tftpd 설치&lt;BR&gt;tftpd는 위에서도 잠깐 설명했듯이 ftp와는 전혀 다른 프로토콜이지만 하는 기능은 비슷하다. ftp에 비해 프로토콜이 단순하며 전송된 파일의 유효성을 검증하지는 못한다. udp 프로토콜을 사용하므로 실제로 전달 받은 파일에 에러가 있더라도 검출해내지 못한다는 뜻이다. 하지만 커널이미지와 같은 아주 작은 파일을 전송할 경우에 에러가 나는 경우는 거의 없다고 해도 무방할정도로 신뢰성이 보장되는 프로토콜이며 단순하고 가벼워서 임베디드 시스템에서 많이 사용되는 프로토콜이다.&lt;BR&gt;&amp;nbsp;배포판 리눅스에서는 보통 xinetd라는 인터넷 접속 관리 서비스와 많이 연계되어서 사용되어진다. xinetd는 접속 포트에 대해 접속 권한 제어와 같은 역할을 하는데 자세한 사항은 따로 찾아보도록 하자. 물론 tftpd를 standalone 방식으로 사용할 수 있기도 하지만 여기서는 xinetd에 연계하여 사용하는 방식으로 설명하겠다.&lt;BR&gt;&amp;nbsp;tftp를 설치한 후 /etc/xinetd.d 에 들어가면 xinetd가 관리하는 여러 접속 프로그램에 대한 설정 들이 있다. echo, time 서비스 등등 여러 포트에 대한 접속 제어 파일을 볼 수 있는데 여기에다 tftp에 대한 설정을 추가 하도록 하자.&lt;BR&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;service tftp&lt;BR&gt;{&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; socket_type &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = dgram&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; protocol &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; = udp&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wait &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; = yes&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; user &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; = root&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; server &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; = /usr/sbin/in.tftpd&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; server_args &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = -s /tftpboot&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; disable &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = no&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; per_source &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; = 11&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cps &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 100 2&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; flags &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = IPv4&lt;BR&gt;}&lt;/DIV&gt;&lt;BR&gt;tftp라는 이름으로 파일을 생성하고 위와 같이 타이핑을 하도록 한다. in.tftpd는 xinetd를 사용하여 서비스를 시작할 때 사용되는 명령어이며 -s /tftpboot는 /tftpboot를 루트 디렉토리로 사용하겠다는 의미이다. disable 항목을 no로 넣으면 xinetd가 실행할 때 tftp 서비스를 실행시켜 준다.&lt;BR&gt;&lt;BR&gt;4. pxelinux.0 및 램 디스크 이미지, 커널 이미지의 설정&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1022743021.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;271&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;BR&gt;위와 같이 파일들을 배치하도록한다.&lt;BR&gt;&lt;BR&gt;pxelinux.0는 syslinux를 설치하면 /usr/lib/syslinux 디렉토리 및에서 찾아 볼 수 있다. 이 파일을 복사하여 /tftpboot/에 집어 넣도록한다. &lt;BR&gt;램 디스크 이미지와 커널 이미지는 배포판 시디에 보면 /images/pxeboot/ 디렉토리에 initrd.img와 vmlinuz라는 파일이 있다 이 파일들이 각각 램 디스크 이미지와 커널 이미지이다. 이 파일을 복사하여 /tftpboot/배포판이름/ 에 집어 넣도록 하자&lt;BR&gt;그런 다음 pxelinux.cfg 디렉토리(파일이 아니다)를 생성하고 그 디렉토리에서 default라는 파일을 생성하도록 한다. PXE에서는 pxelinux.cfg에 있는 설정파일을 읽게 되는데 일치하는 설정이 없을 경우 마지막으로 default를 읽게 된다. &lt;BR&gt;&lt;BR&gt;default 파일을 변경한다.&lt;BR&gt;&lt;BR&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;prompt 0&lt;BR&gt;&lt;BR&gt;LABEL fedora5&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; MENU LABEL fedora5&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; kernel fedora5/vmlinuz&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; append ksdevice=link load_ramdisk=1 initrd=fedora5/initrd.img network ks=nfs:100.100.100.1:/nfs/ks/fedora5.cfg&lt;BR&gt;&lt;/DIV&gt;menu.c32를 이용하여 메뉴를 만들어 설치할 os나 설정등을 선택하도록 만들 수도 있지만 설명이 길어지므로 생략하도록 한다. 위의 append 옵션을보면 nfs를 사용하여 서버IP에 있는 kickstart 파일을 읽어오도록 설정하였다.&lt;BR&gt;&lt;BR&gt;이렇게 설정을 완료하면된다. 마지막으로 nfs를 사용하여 OS 배포판의 이미지를 올리고 kickstart파일을 작성하여 자동으로 설치되도록 할 수 있으나... 설명이 너무 길어져서 다음에 설명하도록 한다.. --;;&lt;BR&gt;&lt;BR&gt;------------------------------------------&lt;BR&gt;&lt;FONT color=#0000ff&gt;2009년 1월 23일 추가&lt;BR&gt;&lt;BR&gt;헉.. 그러고 보니 NFS 설정이 빠져있네요 ㅎㅎ&lt;BR&gt;NFS(Network File System) 서비스는 원격지의 PC가 지정한 디렉토리를 마운트하여 사용할 수 있도록 해주는 서비스입니다.&lt;BR&gt;&lt;BR&gt;/etc/exports 파일을 수정합니다.&lt;BR&gt;&lt;/FONT&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;&lt;FONT color=#0000ff&gt;/nfs/fedora5 *(ro)&lt;BR&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;FONT color=#0000ff&gt;/nfs/fedora5 디렉토리를 *(모든 IP)에 대해서 ro(읽기 전용)으로 허용한다는 의미입니다.&lt;BR&gt;&lt;BR&gt;/nfs/fedora5 디렉토리를 생성하고 fedora 미러 사이트에서 FC5 ISO 이미지를 다운로드 받아 복사합니다.&lt;BR&gt;&lt;BR&gt;service nfs start 명령으로 NFS 서비스를 실행시켜주세요&lt;BR&gt;&lt;/FONT&gt;</description>
			<category>Linux</category>
			<category>kickstart</category>
			<category>linux</category>
			<category>PXE</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/136</guid>
			<comments>http://onurmark.co.kr/tc/136#entry136comment</comments>
			<pubDate>Tue, 16 Dec 2008 09:59:03 +0900</pubDate>
		</item>
		<item>
			<title>JNDI javax.naming 패키지에서 SSL Cipher Suites 변경하기</title>
			<link>http://onurmark.co.kr/tc/135</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;p&gt;SSL을 사용한 통신에서 암호화 방식의 선택은 Client Hello와 Server Hello를 주고 받을 때 Cipher suites을 주고 받는다. 즉, 클라이언트에서는 자신이 지원하는 암호화 방식의 리스트(Cipher Suites)을 서버에 전송하고 서버에서는 클라이언트가 준 Cipher suites에서 자신이 지원하는 암호화 방식을 택하여 서버와 클라이언트간의 암호화 방식을 택하게 된다. &lt;br&gt;&lt;br&gt;Client Hello&lt;/p&gt;
&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228);&quot;&gt;*** ClientHello, TLSv1&lt;br&gt;RandomCookie:&amp;nbsp; GMT: 1226648498 bytes = { 200, 58, 111, 214, 101, 210, 35, 45, 30, 95, 248, 152, 164, 79, 190, 173, 246, 107, 75, 117, 87, 53, 57, 130, 181, 247, 4, 49 }&lt;br&gt;Session ID:&amp;nbsp; {}&lt;br&gt;&lt;font color=&quot;#ff0000&quot;&gt;Cipher Suites: [SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_DES_CBC_SHA, SSL_DHE_RSA_WITH_DES_CBC_SHA, SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA]&lt;br&gt;&lt;/font&gt;Compression Methods:&amp;nbsp; { 0 }&lt;br&gt;***&lt;/div&gt;
&lt;p&gt;위에 처럼 Cipher Suites 가 ClientHello에 실려 날아가게된다.&lt;br&gt;&lt;br&gt;Server Hello&lt;br&gt;&lt;/p&gt;
&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228);&quot;&gt;*** ServerHello, TLSv1&lt;br&gt;RandomCookie:&amp;nbsp; GMT: 1226648580 bytes = { 5, 238, 245, 170, 224, 35, 204, 164, 117, 25, 117, 146, 156, 96, 177, 125, 190, 18, 220, 170, 62, 65, 6, 108, 174, 253, 27, 67 }&lt;br&gt;Session ID:&amp;nbsp; {103, 15, 0, 0, 41, 170, 156, 123, 141, 32, 89, 224, 116, 103, 216, 190, 48, 141, 19, 213, 138, 211, 210, 218, 165, 23, 132, 90, 120, 77, 134, 26}&lt;br&gt;&lt;font color=&quot;#ff0000&quot;&gt;Cipher Suite: SSL_RSA_WITH_RC4_128_MD5&lt;br&gt;&lt;/font&gt;Compression Method: 0&lt;br&gt;***&lt;/div&gt;
&lt;p&gt;위와 같이 서버에서는 Client Hello에 실린 Cipher Suites중 하나를 택하여 사용하게 된다. 이로써 이후의 통신은 선택된 방식을 사용하여 암호화 하게 된다.&lt;br&gt;&lt;br&gt;사실 클라이언트 입장에서 자신이 지원하는 모든 Cipher suites를 전송하는게 맞으나.. 어느 회사에서 자신들은 3DES이상의 암호화만 안전한 것으로 판단하니 Cipher Suites를 바꿔 달라는 요청이 있었다.. ㅡㅡ;; 그럴바에 그냥 LDAP 서버에서 지원하는 암호화 리스트를 3DES 이상의 것들만 선택하는게 더 간단할텐데.. 왜 이런 삽질을 요구하는지 ㅡㅡ;;;;;&lt;br&gt;&lt;br&gt;Java에서의 LDAP의 지원은 javax.naming 패키지에서 지원을 한다. LDAP 프로그래밍을 해 본 사람이면 아래의 구문은 익숙할 것이다.&lt;br&gt;&lt;br&gt;LDAP 프로토콜을 사용한 통신&lt;/p&gt;
&lt;p&gt;[code Java]&lt;br&gt;Hashtable&amp;lt;String,String&amp;gt; env = new Hashtable&amp;lt;String,String&amp;gt;();&lt;br&gt;env.put(Context.INITIAL_CONTEXT_FACTORY,&quot;com.sun.jndi.ldap.LdapCtxFactory&quot;);&lt;br&gt;env.put(Context.PROVIDER_URL, &quot;ldap://IP주소:389/&quot;);&lt;br&gt;env.put(Context.SECURITY_PRINCIPAL, &quot;계정의 도메인&quot;);&lt;br&gt;env.put(Context.SECURITY_CREDENTIALS,&quot;계정의 암호&quot;);&lt;br&gt;&lt;br&gt;DirContext ctx = new InitialDirContext(env);&lt;br&gt;[/code]&lt;/p&gt;
&lt;p&gt;위의 예제는 LDAP 프로토콜을 이용하여 389번 포트로 평문 통신을 하여 사용하는 것의 예제이다.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;LDAPS 프로토콜을 사용한 통신&lt;/p&gt;
&lt;p&gt;[code]&lt;br&gt;System.setProperty(&quot;javax.net.ssl.trustStore&quot;,&quot;c:\\java\\trust.keystore&quot;);&lt;br&gt;&lt;br&gt;Hashtable&amp;lt;String,String&amp;gt; env = new Hashtable&amp;lt;String,String&amp;gt;();&lt;br&gt;env.put(Context.INITIAL_CONTEXT_FACTORY,&quot;com.sun.jndi.ldap.LdapCtxFactory&quot;);&lt;br&gt;env.put(Context.PROVIDER_URL, &quot;ldaps://IP주소:636/&quot;);&lt;br&gt;env.put(Context.SECURITY_PRINCIPAL, &quot;계정의 도메인&quot;);&lt;br&gt;env.put(Context.SECURITY_CREDENTIALS,&quot;계정의 암호&quot;);&lt;br&gt;env.put(Context.SECURITY_PROTOCOL,&quot;ssl&quot;);&lt;br&gt;&amp;nbsp;&lt;br&gt;DirContext ctx = new InitialDirContext(env);&lt;br&gt;[/code] &lt;br&gt;&lt;/p&gt;
&lt;p&gt;위의 예제는 LDAPS 프로토콜을 사용하여 636 포트로 SSL암호화 통신을 한 예제이다. 다른게 있다면 포트가 636으로 바뀌었고 시스템 프로퍼티에 신뢰된 저장소(Trust store)를 지정한 것 그리고 암호화 프로토콜로 SSL을 지정 하였을 뿐이다. &lt;br&gt;&lt;br&gt;이렇게 자바에서 LDAP 프로그래밍은 아주 간단히 큰 변화를 일으키지 않고도 많은 LDAP에서 LDAPS로의 변경이 가능하다. 여기서 문제가 되는 것은 이렇게 내부의 로직이 숨어 있어서 우리가 하고 싶은 Cipher Suites을 변경하는 작업이 어렵다는 점이다.&lt;br&gt;&lt;br&gt;이런 문제점을 해결하기 위해 Jndi에서는 CustomSocketFactory라는 방식으로 지원을 한다. CustomSocketFactory는 이름에서도 알 수 있듯이 사용자 정의 소켓을 생성하도록 해주는 Factory 패턴이다. LDAP나 LDAPS 통신을 할때 기본적으로 SocketFactory나 이를 상속 받는 SSLSocketFactory를 사용하도록 되어 있다. 우리가 할일은 SSLSocketFactory를 상속받은 CustomSSLSocketFactory를 생성하고 jndi가 앞으로 소켓을 생성할때는 우리가 만든 CustomSSLSocketFactory를 사용하도록 지정하면 되는 것이다. &lt;br&gt;&lt;br&gt;각설하고 소스코드는 다음과 같이 변한다.&lt;br&gt;&lt;br&gt;[code]&lt;br&gt;System.setProperty(&quot;javax.net.ssl.trustStore&quot;,&quot;c:\\java\\trust.keystore&quot;);&lt;br&gt;&lt;br&gt;Hashtable&amp;lt;String,String&amp;gt; env = new Hashtable&amp;lt;String,String&amp;gt;();&lt;br&gt;env.put(Context.INITIAL_CONTEXT_FACTORY,&quot;com.sun.jndi.ldap.LdapCtxFactory&quot;);&lt;br&gt;env.put(Context.PROVIDER_URL, &quot;ldaps://IP주소:636/&quot;);&lt;br&gt;env.put(Context.SECURITY_PRINCIPAL, &quot;계정의 도메인&quot;);&lt;br&gt;env.put(Context.SECURITY_CREDENTIALS,&quot;계정의 암호&quot;);&lt;br&gt;env.put(Context.SECURITY_PROTOCOL,&quot;ssl&quot;);&lt;br&gt;env.put(&quot;java.naming.ldap.factory.socket&quot;, &quot;CustomSSLSocketFactory&quot;);&lt;br&gt;&amp;nbsp;&lt;br&gt;DirContext ctx = new InitialDirContext(env);&lt;br&gt;[/code]&lt;br&gt;&lt;br&gt;기본 LDAPS 소스코드에다 단지&lt;br&gt;env.put(&quot;java.naming.ldap.factory.socket&quot;, &quot;CustomSSLSocketFactory&quot;); 을 삽입한 것 뿐이다.&lt;br&gt;&lt;br&gt;이는 LDAP에서 사용할 Socket은 CustomSSLSocketFactory 라는 클래스를 사용하여 생성하라는 것을 알려주는 것이다.&lt;br&gt;&lt;/p&gt;[code]&lt;br&gt;&lt;br&gt;import java.io.IOException;&lt;br&gt;import java.net.InetAddress;&lt;br&gt;import java.net.Socket;&lt;br&gt;
import javax.net.SocketFactory;&lt;br&gt;import javax.net.ssl.SSLContext;&lt;br&gt;import javax.net.ssl.SSLSocket;&lt;br&gt;import javax.net.ssl.SSLSocketFactory;&lt;br&gt;import javax.net.ssl.TrustManager;&lt;br&gt;
public class CustomSSLSocketFactory extends SSLSocketFactory {&lt;br&gt;&amp;nbsp;private SSLSocketFactory factory;&lt;br&gt;&amp;nbsp;String suites[] = {&lt;br&gt;&amp;nbsp; &amp;nbsp;&quot;SSL_RSA_WITH_3DES_EDE_CBC_SHA&quot;,&lt;br&gt;&amp;nbsp;};&lt;br&gt;
&lt;br&gt;&amp;nbsp;public CustomSSLSocketFactory() {&lt;br&gt;&amp;nbsp; try {&lt;br&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp;SSLContext sslcontext = null;&lt;br&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp;if (sslcontext == null) {&lt;br&gt;&amp;nbsp; &amp;nbsp; sslcontext = SSLContext.getInstance(&quot;TLS&quot;);&lt;br&gt;&amp;nbsp; &amp;nbsp; sslcontext.init(null, // No KeyManager required&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; new TrustManager[] { new CustomTrustManager() },&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; new java.security.SecureRandom());&lt;br&gt;&amp;nbsp; &amp;nbsp;}&lt;br&gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp;factory = (SSLSocketFactory) sslcontext.getSocketFactory();&lt;br&gt;&amp;nbsp; } catch (Exception ex) {&lt;br&gt;&amp;nbsp; &amp;nbsp;ex.printStackTrace();&lt;br&gt;&amp;nbsp; }&lt;br&gt;&amp;nbsp;}&lt;br&gt;
&lt;br&gt;&amp;nbsp;public static SocketFactory getDefault() {&lt;br&gt;&amp;nbsp; return new CustomSSLSocketFactory();&lt;br&gt;&amp;nbsp;}&lt;br&gt;
&lt;br&gt;&amp;nbsp;public Socket createSocket(Socket socket, String s, int i, boolean flag) throws IOException {&lt;br&gt;&amp;nbsp; SSLSocket sock = (SSLSocket)factory.createSocket(socket, s, i, flag);&lt;br&gt;&amp;nbsp; sock.setEnabledCipherSuites(suites);&lt;br&gt;&amp;nbsp; return sock;&lt;br&gt;&amp;nbsp;}&lt;br&gt;
&lt;br&gt;&amp;nbsp;public Socket createSocket(InetAddress inaddr, int i, InetAddress inaddr1, int j) throws IOException {&lt;br&gt;&amp;nbsp; SSLSocket sock = (SSLSocket)factory.createSocket(inaddr, i, inaddr1, j);&lt;br&gt;&amp;nbsp; sock.setEnabledCipherSuites(suites);&lt;br&gt;&amp;nbsp; return sock;&lt;br&gt;&amp;nbsp;}&lt;br&gt;
&lt;br&gt;&amp;nbsp;public Socket createSocket(InetAddress inaddr, int i) throws IOException {&lt;br&gt;&amp;nbsp; SSLSocket sock = (SSLSocket)factory.createSocket(inaddr, i);&lt;br&gt;&amp;nbsp; sock.setEnabledCipherSuites(suites);&lt;br&gt;&amp;nbsp; return sock;&lt;br&gt;&amp;nbsp;}&lt;br&gt;
&lt;br&gt;&amp;nbsp;public Socket createSocket(String s, int i, InetAddress inaddr, int j) throws IOException {&lt;br&gt;&amp;nbsp; SSLSocket sock = (SSLSocket)factory.createSocket(s, i, inaddr, j);&lt;br&gt;&amp;nbsp; sock.setEnabledCipherSuites(suites);&lt;br&gt;&amp;nbsp; return sock;&lt;br&gt;&amp;nbsp;}&lt;br&gt;
&lt;br&gt;&amp;nbsp;public Socket createSocket(String s, int i) throws IOException {&lt;br&gt;&amp;nbsp; SSLSocket sock = (SSLSocket)factory.createSocket(s, i);&lt;br&gt;&amp;nbsp; sock.setEnabledCipherSuites(suites);&lt;br&gt;&amp;nbsp; return sock;&lt;br&gt;&amp;nbsp;}&lt;br&gt;
&lt;br&gt;&amp;nbsp;public String[] getDefaultCipherSuites() {&lt;br&gt;&amp;nbsp; return suites;&lt;br&gt;&amp;nbsp;}&lt;br&gt;
&lt;br&gt;&amp;nbsp;public String[] getSupportedCipherSuites() {&lt;br&gt;&amp;nbsp; return suites;&lt;br&gt;&amp;nbsp;}&lt;br&gt;
&lt;br&gt;}&lt;br&gt;&lt;br&gt;[/code]&lt;br&gt;
&lt;p&gt;이름에서도 알 수 있듯이 Factory 패턴은 새로운 객체를 생성하는 디자인 패턴이다. 소스코드를 살펴보면 SSLSocket을 생성하고 Cipher suites를 지정한것 밖에 없다.&lt;br&gt;&lt;br&gt;그리고 Trust Store를 찾기 위해 X509TrustManager의 구현을 참조하기 때문에 가짜로 CustomTrustManager라는 파일을 하나 생성하자. 그렇지 않으면 NULL Exception이 발생하니 가짜로라도 만들어 놓아야한다. 앞의 메인 프로그램에서 시스템 프로퍼티에 Trust Store를 지정하였으므로 가짜라도 상관이 없다.&lt;br&gt;&lt;/p&gt;[code]&lt;br&gt;CustomTurstManager.java&lt;br&gt;&lt;br&gt;import java.security.cert.X509Certificate;&lt;br&gt;import javax.net.ssl.X509TrustManager;&lt;br&gt;&lt;br&gt;public class CustomTrustManager implements X509TrustManager {&lt;br&gt;&amp;nbsp;public void checkClientTrusted(X509Certificate[] cert, String authType) {&lt;br&gt;&amp;nbsp; return;&lt;br&gt;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;public void checkServerTrusted(X509Certificate[] cert, String authType) {&lt;br&gt;&amp;nbsp; return;&lt;br&gt;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;public X509Certificate[] getAcceptedIssuers() {&lt;br&gt;&amp;nbsp; return new X509Certificate[0];&lt;br&gt;&amp;nbsp;}&lt;br&gt;}&lt;br&gt;[/code] 
&lt;p&gt;이로써 LDAPS에서 사용할 클라이언트 Cipher suites는 위의 CustomSSLSocketFactory에서 지정한 것으로 Client Hello를 날리게 될 것이다. 제대로 된 Cipher suites가 날라가는지 알고 싶으면 실행시에 -Djavax.net.debug=ssl 옵션을 줘서 실행하자. SSL 통신 절차들이 모두 디버그 코드로 화면에 출력 될 것이다.&lt;br&gt;&lt;br&gt;&lt;br&gt;참조 : JNDI Tutorial: &lt;a href=&quot;http://java.sun.com/products/jndi/tutorial/ldap/security/ssl.html&quot; target=&quot;_blank&quot;&gt;SSL and Custom Sockets&lt;/a&gt;&lt;/p&gt;</description>
			<category>Java</category>
			<category>Cipher suites</category>
			<category>JAVA</category>
			<category>LDAP</category>
			<category>SSL</category>
			<category>암호화</category>
			<category>프로그래밍</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/135</guid>
			<comments>http://onurmark.co.kr/tc/135#entry135comment</comments>
			<pubDate>Fri, 14 Nov 2008 16:36:48 +0900</pubDate>
		</item>
		<item>
			<title>Subversion과 Redmine을 사용하여 프로젝트 관리하기</title>
			<link>http://onurmark.co.kr/tc/134</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;p&gt;&lt;font color=&quot;#ff0000&quot;&gt;* 이 문서는 제가 작업한 내용을 잊지 않기 위해 기록하는 것으로 자세히 설명되어 있지 않습니다. 도움이 필요하시다면 답글이나 email을 통해서 도와드리겠습니다.&lt;/font&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;Redmine은 프로젝트를 관리하는 웹 어플리케이션으로 유연하고 손쉬운 프로젝트 관리를 돕는 툴이다. 간트(gantt) 차트, 일정, wiki, 포럼, 다양한 역할 할당과 같은 기능들이 포함되어 있고 Subversion, Darcs, Mercurial, CVS, Bazzar, Git와 같은 다양한 소스 형상관리 툴을 지원한다.&lt;br&gt;&lt;br&gt;설치 완료 후 화면&lt;br&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1152359715.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;330&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;설치 구성&lt;br&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1304935920.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;336&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;Redmine은 mongrel_rails 를 사용하여 8000, 8001,8002 포트로 클러스터링하고 apache에서 443포트로의 접속을 로드밸런싱하여 redmine에 접속하도록 하였다. SVN은 mod_dav를 사용하여 SVN에 접속할 수 있도록 설정하였다. 클라이언트와 서버간의 접속프로토콜은 SSL 프로토콜을 사용한 HTTPS프로토콜을 사용하도록 하였다.&lt;br&gt;&lt;br&gt;설치에 사용한 프로그램&lt;/p&gt;
&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228);&quot;&gt;Apache httpd(ver.2.2.8)&lt;br&gt;MySQL(ver.5.0.18)&lt;br&gt;Redmine(ver.0.7)&lt;br&gt;BerkeleyDB(ver.4.3)&lt;br&gt;Subversion(ver.1.5.4)&lt;/div&gt;
&lt;p&gt;1. BerkeleyDB 설치&lt;br&gt;저장소를 Berkeley-DB를 사용하지 않고 file로만 사용한다면 Berkeley-DB를 설치 하지 않아도 무관하다.&lt;br&gt;압축을 해제 후 build_unix 디렉토리로 이동한다.&lt;/p&gt;
&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228);&quot;&gt;
&lt;p&gt;../dist/configure&lt;br&gt;make&lt;br&gt;make install&lt;br&gt;echo &quot;/usr/local/BerkeleyDB4.3/lib&quot; &amp;gt;&amp;gt; /etc/ld.so.conf&lt;/p&gt;
&lt;p&gt;ldconfig&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;2. apache 설치&lt;br&gt;&lt;a href=&quot;http://www.apache.org/&quot;&gt;http://www.apache.org&lt;/a&gt; 에서 아파치를 다운로드 할 수 있다.&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228);&quot;&gt;./configure --prefix=/opt/apache-2.2.8 --enable-rewrite --enable-dav --enable-unique-id --enable-proxy --enable-proxy_http --enable-proxy_connect --enable-headers --enable-logio --enable-ssl --enable-deflate --with-mpm=worker --enable-nonportable-atomics=yes --with-berkeley-db=/usr/local/BerkeleyDB.4.3&lt;br&gt;make &amp;amp;&amp;amp; make install&lt;br&gt;&lt;/div&gt;
&lt;p&gt;configure옵션은 자신이 필요한 모듈을 알아서 설정하도록 한다. 만일 wiki를 설치하고싶다면 php 모듈도 같이 설치 한다. 위의 구성에서 다음 모듈 rewrite, dav, proxy, ssl모듈은 반드시 설치하도록 한다.&lt;br&gt;&lt;br&gt;Rewrite 모듈은 80포트로의 접속을 443으로 리다이렉트 할 때 사용하며 이외에도 유연한 기능을 지원한다.&lt;br&gt;dav 모듈은 SVN서버를 웹에서도 볼 수 있도록 지원하며 이 모듈이 없을 경우에는 http 프로토콜을 사용하여 SVN에 접속 할 수 없다.&lt;br&gt;proxy는 Redmine 서버를 로드밸런싱을 위해 사용한다.&lt;br&gt;ssl 모듈은 서버를 https 프로토콜을 사용하도록 설정하기 위함이다. &lt;br&gt;&lt;br&gt;3. MySQL 설치&lt;br&gt;(생략)&lt;br&gt;&lt;br&gt;4. Redmine 설치&lt;br&gt;Redmine은 Ruby on Rails로 작성되어 있는 웹 어플리케이션 프로그램이다. 즉 설치를 위해서는 Ruby와 Rails를 설치하여야 한다. 설치가 간단하니 웹 문서를 참조하여 설치를 한 후 다음으로 진행한다.&lt;br&gt;&lt;br&gt;a. Redmine가 사용할 데이터 베이스를 생성한다. mysql에 root권한으로 접속한 후 아래의 명령어를 입력하여 데이터베이스를 생성한다.&lt;br&gt;create database redmine character set utf8;&lt;br&gt;&lt;br&gt;b. config/database.yml.example 파일을 config/database.yml 파일로 복사 한 후 수정한다.&lt;/p&gt;
&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228);&quot;&gt;production:&lt;br&gt;&amp;nbsp; adapter: mysql &amp;lt;- mysql을 지정&lt;br&gt;&amp;nbsp; database: redmine &amp;lt;- 사용할 데이터베이스 이름&lt;br&gt;&amp;nbsp; host: localhost &amp;lt;- 데이터베이스의 위치&lt;br&gt;&amp;nbsp; username: dbuser &amp;lt;- 사용자 ID&lt;br&gt;&amp;nbsp; passwd: dbpasswd &amp;lt;- 사용자 PW&lt;/div&gt;
&lt;p&gt;c. mysql 데이터베이스에 테이블들을 생성한다.&lt;/p&gt;
&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228);&quot;&gt;rake db:migrate RAILS_ENV=&quot;production&quot;&lt;/div&gt;
&lt;p&gt;d. redmin의 초기 설정을 mysql데이터베이스에 입력한다.&lt;/p&gt;
&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228);&quot;&gt;rake redmine:load_default_data RAILS_ENV=&quot;production&quot;&lt;/div&gt;
&lt;p&gt;e. redmine은 실행시에 redmine:redmine 권한으로 실행이 된다. files, log, tmp 폴더에 redmine:redmine 사용자가 읽고 쓸 수 있도록 권한을 부여한다.&lt;/p&gt;
&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228);&quot;&gt;mkdir tmp&lt;br&gt;chown -R redmine:redmine files log tmp&lt;br&gt;chmod -R 755 files log tmp&lt;/div&gt;
&lt;p&gt;f. mongrel 설치 및 cluster 구성&lt;br&gt;mongrel 및 mongrel_cluster 설치&lt;br&gt;&lt;/p&gt;
&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228);&quot;&gt;gem install mongrel mongrel_cluster daemons&lt;br&gt;&lt;/div&gt;
&lt;p&gt;cluster 설정&lt;br&gt;port 8000 번 부터 3개(즉, 8000, 8001, 8002)를 사용하도록 하고 사용자와 그룹을 redmine로 설정한다.&lt;/p&gt;
&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228);&quot;&gt;mongrel_rails cluster::configure -e production -p 8000 -N 3 -c /opt/redmine-0.7 --user redmine --group redmine&lt;/div&gt;
&lt;p&gt;cluster 시작&lt;br&gt;&lt;/p&gt;
&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228);&quot;&gt;mongrel_rails cluster:start&lt;/div&gt;
&lt;p&gt;5. subversion 설치&lt;/p&gt;
&lt;div style=&quot;padding: 10px; background-color: rgb(228, 228, 228);&quot;&gt;./configure --prefix=/opt/subversion-1.5.4 --with-zlib=/usr/local/include --with-ssl=/usr/local/ssl --with-apr=/opt/apache-2.2.8 --with-apr-util=/opt/apache-2.2.8 --with-apxs=/opt/apache-2.2.8/bin/apxs --with-berkeley-db=/usr/local/BerkeleyDB.4.3&lt;br&gt;make &amp;amp;&amp;amp; make install&lt;br&gt;&lt;/div&gt;
&lt;p&gt;--with-apr, --with-apr-util, --with-apxs는 설치 된 아파치의 위치로 적절하게 잡아주고 berkeleyDb의 위치를 지정한다. &amp;nbsp; &lt;br&gt;&lt;br&gt;6. apache 설정&lt;br&gt;conf/httpd.conf 파일을 수정&lt;/p&gt;&lt;p&gt;[code]&lt;br&gt;Listen 80&lt;br&gt;Listen 443&lt;br&gt;Listen 8443&lt;br&gt;&lt;br&gt;&amp;lt;VirtualHost *:80&amp;gt;&lt;br&gt;RewriteEngine On&lt;br&gt;RewriteCond %{SERVER_PORT} !^443$&lt;br&gt;RewriteRule ^(.*)$ https://%{SERVER_NAME}:443/$1 [L,R]&lt;br&gt;&amp;lt;/VirtualHost&amp;gt;&lt;br&gt;&lt;br&gt;# redmine Server and Repository&lt;br&gt;&amp;lt;VirtualHost *:443&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ServerName svn.secuwiz.net&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DocumentRoot /opt/redmine-0.7/public&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;Directory &quot;/opt/redmine-0.7/public&quot;&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Options FollowSymLinks&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AllowOverride None&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Order allow,deny&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Allow from all&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/Directory&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;Proxy balancer://redmine_cluster&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Order allow,deny&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Allow from all&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BalancerMember http://127.0.0.1:8000&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BalancerMember http://127.0.0.1:8001&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BalancerMember http://127.0.0.1:8002&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/Proxy&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RewriteEngine On&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RewriteRule ^/(.*)$ balancer://redmine_cluster%{REQUEST_URI} [P,QSA,L]&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RequestHeader set X_FORWARDED_PROTO &#039;https&#039;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SSLEngine On&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SSLCertificateFile &quot;conf/server.crt&quot;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SSLCertificateKeyFile &quot;conf/server.pem&quot;&lt;br&gt;&amp;lt;/VirtualHost&amp;gt;&lt;br&gt;&lt;br&gt;&amp;lt;VirtualHost *:8443&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;Location /svn/sample&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DAV svn&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SVNPath /opt/SvnRepo/sample&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AuthType Basic&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AuthName &quot;Sample Repository&quot;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AuthUserFile conf/.passwd&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AuthGroupFile conf/.groups&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Require group alluser &amp;lt;= alluser라는 그룹에게 공개&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/Location&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;LocationMatch &quot;/svn/sample/branches.*&quot;&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AuthType Basic&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AuthName &quot;Sample Repository&quot;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AuthUserFile conf/.passwd&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AuthGroupFile conf/.groups&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Require user admin &amp;lt;= admin이라는 사용자에게 공개&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/LocationMatch&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SSLEngine On&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SSLCertificateFile &quot;conf/server.crt&quot;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SSLCertificateKeyFile &quot;conf/server.pem&quot;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LogFormat &quot;%t %u %h %l \&quot;%r\&quot; %&amp;gt;s %b&quot; comonvhost&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CustomLog &quot;logs/svn_access_log&quot; comonvhost&lt;br&gt;&amp;lt;/VirtualHost&amp;gt;&lt;br&gt;[/code]&lt;br&gt;&lt;/p&gt;&lt;p&gt;설정을 살펴보면 80포트에서는 들어오는 모든 요청을 Rewrite 모듈을 사용하여 443 포트로 리다이렉트 하고 있다.&lt;br&gt;443은 들어온 요청에 https 헤더를 붙이고 SSL 인증서와 키를 지정하여 암호화 하도록 하고 있다.&lt;br&gt;8443은 dav 모듈이 SVN을 사용하도록 하고 있고 Basic 인증을 사용하여 사용자 인증을 처리하고 있다. LocationMatch를 사용하여 사용자의 권한별 접근제한을 수행하고 있다.&lt;br&gt;사용자 생성과 그룹 생성, SSL 인증서 생성에 관한 것은 &lt;a href=&quot;http://www.apache.org/&quot;&gt;http://www.apache.org&lt;/a&gt;를 참고 하도록 하자.&lt;br&gt;&lt;br&gt;위에 사용된 httpd.conf 파일은 예제일 뿐이다(즉, 실행되지 않는다.). 저 파일을 참고로 설치 시 기본으로 생성된 httpd.conf 파일을 수정하도록 하자&lt;/p&gt;</description>
			<category>Linux</category>
			<category>linux</category>
			<category>redmine</category>
			<category>subversion</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/134</guid>
			<comments>http://onurmark.co.kr/tc/134#entry134comment</comments>
			<pubDate>Wed, 12 Nov 2008 11:37:11 +0900</pubDate>
		</item>
		<item>
			<title>Fedora core 5에서 serial console 사용하기</title>
			<link>http://onurmark.co.kr/tc/133</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;P&gt;일반 데스크탑이나 랩탑 같은 PC기종에서는 모니터 출력을 위한 VGA카드가 필요하지만 서비스를 위한 서버 컴퓨터 환경의 경우는 특별한 경우를 제외하고는 필요가 없을 경우가 많다. 원가 절감이나 전력 절감의 차원에서도 서버용 컴퓨터에서 VGA카드가 없는 경우가 대부분이다. 이 같은 환경에서는 VGA를 이용한 입출력을 대신하여 serial console을 이용한 텍스트 방식의 입출력이 주로 사용이 된다.&lt;BR&gt;&lt;BR&gt;1. BIOS(Basic Input Output System)에서의 지원&lt;BR&gt;이름에서 알 수 있듯이 기본적인 입출력을 지원하는 곳이다. 컴퓨터에 전원이 공급되면 가장 먼저 BIOS에서 기본적인 테스트를 실시하는데 이부분에서 keyboard, mouse, video와 같은 입출력 장치를 찾게 된다. 만일 이와 같은 기본적인 입출력 장치가 존재하지 않을 경우 beep음과 함께 부팅이 되지 않게 된다. 그러나 요즘 나오는 대부분의 board에서는 이를 회피하기 위한 기술들이 있으니 board 메뉴얼을 살펴보고 CMOS의 설정값을 변경하자.(일부 board에서는 지원하지 않을 수도 있다.)&lt;BR&gt;&lt;BR&gt;2. boot loader의 입출력을 콘솔로 출력&lt;BR&gt;GRUB의 기본적인 옵션에 splashimage가 설정이 되어있다. 최신의 linux 배포판의 경우 부트로더 배경에 이미지가 설정이 되어 있는데 이것이 바로 splashimage이다. serial console 같은 경우는 그림을 출력할 수 없으므로 GRUB 설정에서 splashimage항목을 제외한다. kernel의 부팅 message를 serial로 출력하기 위해 커널 command에 console 항목을 추가한다. 이 설정들은 /boot/grub/grub.conf 파일에서 설정을 한다.&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;default=0&lt;BR&gt;timeout=5&lt;BR&gt;&lt;FONT color=#0000ff&gt;# splashimage=(hd0,0)/boot/grub/splash.xpm.gz # comment 처리&lt;BR&gt;# 부트로더의 화면을 serial로 출력&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;serial --unit=0 --speed=19200 --word=8 --parity=no --stop=1 terminal --timeout=5 serial console&lt;/FONT&gt;&lt;BR&gt;hiddenmenu&lt;BR&gt;title Fedora Core (2.6.20.19)&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; root (hd0,0)&lt;BR&gt;&lt;FONT color=#0000ff&gt;# 커널 메시지를 ttyS0(com1)로 출력&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; kernel /boot/vmlinuz-2.6.20.19 ro root=LABEL=/ &lt;FONT color=#0000ff&gt;console=ttyS0,19200&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; initrd /boot/initrd-2.6.20.19.img&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;3. 터미널을 ttyS0로 입출력&lt;BR&gt;/etc/inittab 설정을 보면 터미널 들이 설정되어 있다. 기본적으로 6개의 터미널이 모니터를 통해서 출력이 되도록 설정이 되어있다. 여기에 ttyS0에 터미널을 하나 등록을 한다.&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;
&lt;P&gt;# Run gettys in standard runlevels&lt;BR&gt;1:2345:respawn:/sbin/mingetty tty1&lt;BR&gt;2:2345:respawn:/sbin/mingetty tty2&lt;BR&gt;3:2345:respawn:/sbin/mingetty tty3&lt;BR&gt;4:2345:respawn:/sbin/mingetty tty4&lt;BR&gt;5:2345:respawn:/sbin/mingetty tty5&lt;BR&gt;6:2345:respawn:/sbin/mingetty tty6&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;# ttyS0에 터미널을 만든다.&lt;BR&gt;S0:2345:respawn:/sbin/agetty -L 19200 ttyS0 vt100&lt;/FONT&gt;&lt;BR&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;4. console에 root 사용자가 접속할 수 있도록 허용&lt;BR&gt;/etc/securetty 파일을 열어보면 루트권한으로 접속을 허용하는 터미널들의 목록이 들어 있다. 이 파일에 ttyS0를 추가한다. 만일 console에서 root 사용자가 접속 할 수 없도록 제한 할려면 이과정을 생략한다.&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#0000ff&gt;* serial console은 windows에서 com1 com2와 같은 이름으로 불리운다. 리눅스에서는 ttyS0 ttyS1과 같은 이름으로 분류를 한다.&lt;/FONT&gt;&lt;/P&gt;</description>
			<category>Linux</category>
			<category>console</category>
			<category>linux</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/133</guid>
			<comments>http://onurmark.co.kr/tc/133#entry133comment</comments>
			<pubDate>Fri, 31 Oct 2008 15:31:00 +0900</pubDate>
		</item>
		<item>
			<title>러시아 펀드... 도대체 어디로 가는겨?</title>
			<link>http://onurmark.co.kr/tc/132</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;P&gt;수익율이 30%가 넘은 적도 있었는데... 유가 떨어지고, 그루지아랑 전쟁하고, 거기다 서브 프라임까지.. 완전 엎친데 덮친격이구만... 현재 -66%까지.. --;; 환매시기를 놓쳐버린겨... &lt;BR&gt;&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1088858828.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;398&quot; width=&quot;450&quot; /&gt;&lt;/div&gt; &lt;/P&gt;&lt;BR&gt;투자자 여러분. 그리고 기관 종사자분들. 후회하시죠? 당연합니다.&lt;BR&gt;방금 보신 수익율은 쓰레기입니다. 이건 뭐 도저히 참아 줄 수가 없네요.&lt;BR&gt;비싼 수수료주고 들어오셨죠? 당장 기관에 가서 환매 하시고, 그 돈으로 CD(양도성 예금증서)를 사세요.&lt;BR&gt;전 더 이상 펀드를 이따위 수익율로 더럽힐 수 없습니다.&lt;BR&gt;집에가서 샤워들 꼭 하시고, 특히 대박 수익율에 대한 환상을 빡빡 밀어주시길 바랍니다.&lt;BR&gt;&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1074674953.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;246&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;BR&gt;</description>
			<category>일상다반사</category>
			<category>일상다반사</category>
			<category>펀드</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/132</guid>
			<comments>http://onurmark.co.kr/tc/132#entry132comment</comments>
			<pubDate>Tue, 21 Oct 2008 14:58:25 +0900</pubDate>
		</item>
		<item>
			<title>양심적 예비군 훈련 거부!! 태환아 너도 예비군 훈련 가.</title>
			<link>http://onurmark.co.kr/tc/131</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;div class=&quot;imageblock left&quot; style=&quot;float: left; margin-right: 10px;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1135343588.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;592&quot; width=&quot;300&quot; /&gt;&lt;/div&gt;젠장... 또 예비군이야.. 그것도 야간으로 --;;&lt;BR&gt;&lt;BR&gt;한해에 야간훈련이 두번이나 걸리다니... 재수도 없지;;&lt;BR&gt;공가도 낼 수 없는 야간작계가 한해에 연속으로 두번 나오는거는 너무하자나..&lt;BR&gt;&lt;BR&gt;&#039;일하면서 싸우고 싸우면서 일하는 범국민적인 자유방위의 역군&#039;이라는 개념에 너무 충실한거 아냐 --;;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;참고로 제목은 그냥 한번 적어 본거고 태환선수도 4주 기본 교육을 이수하고 예비군에 참가합니다. 너무 예민하게 받아들이지 말아주세요..</description>
			<category>일상다반사</category>
			<category>예비군</category>
			<category>일상다반사</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/131</guid>
			<comments>http://onurmark.co.kr/tc/131#entry131comment</comments>
			<pubDate>Tue, 14 Oct 2008 17:22:33 +0900</pubDate>
		</item>
		<item>
			<title>나의 애마 검은 고양이 3.0D LIMITED</title>
			<link>http://onurmark.co.kr/tc/130</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;거금을 주고 구입한 나의 애마~~ 아니 애묘(愛猫) 블랙캣 3.0D 리미티드~~&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1084311583.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;299&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;BR&gt;자동차에는 자동차 등록번호가 있듯이 자전거에는 자전거 등록번호가 있다. P8CZR0653&lt;BR&gt;자동차와는 달리 자전거는 등록할 필요가 없지만 일본이나 유럽의 자전거 선진국에서는 자전거도 등록하여서 법적인 보호를 받고 있다고 하니.. 우리나라와는 자전거에 대한 시각이 많이 다르다..&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1201647625.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;299&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;BR&gt;일반적으로 사용하는 V모양의 브레이크 대신 유압식 디스크 브레이크가 달려있는 리미티드 모델..&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1127132951.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;299&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;BR&gt;&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1022878634.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;299&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;BR&gt;벌써 자전거 출근한지 1달이 넘었다.. 몸무게는 그대로 인대 뱃살은 조금 들어간듯~~</description>
			<category>일상다반사</category>
			<category>3.0D</category>
			<category>블랙캣</category>
			<category>자전거</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/130</guid>
			<comments>http://onurmark.co.kr/tc/130#entry130comment</comments>
			<pubDate>Mon, 08 Sep 2008 15:19:02 +0900</pubDate>
		</item>
		<item>
			<title>상암으로 이사했습니다.</title>
			<link>http://onurmark.co.kr/tc/129</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;상암에 위치한 DMC 산학협력센터로 회사를 이전하였습니다. 왕십리에서 지하철로 출퇴근으로 70~80분 정도 걸리네요.&lt;br&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1273179632.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;272&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;이번 기회에 운동도 할겸 자전거로 출퇴근을 시도해 보려 하는데... 20km 과연 자전거로 가능할까요?? ㅋㅋ&lt;br&gt;지금 심하게 고민하고 있는중.. 자전거도 안전장치하고 다 구매하려면 가격이 장난이 아닌것 같은데 괜히 돈만 날리는건 아닐지 심히 걱정이 되네요..&lt;br&gt;&lt;br&gt;&lt;div class=&quot;imageblock left&quot; style=&quot;float: left; margin-right: 10px;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1118688742.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;604&quot; width=&quot;383&quot; /&gt;&lt;/div&gt;&lt;br&gt;오늘 점심시간을 이용해서 DMC 산학협력센터에서 무료로 대여해주는 자전거로 회사동료와 함께 돌아봤어요. 6.75km 정도를 달린것 같은데 가능할지도 모르겠다는 느낌이 팍팍..&lt;br&gt;&lt;br&gt;한강에 자전거도로도 깨끗하고 다리로 올라오는 곳도 타워로 잘 만들어져있고.. 가능할 것도 같기는 한데..&lt;br&gt;&lt;br&gt;아 어떡하지?? ㅋㅋ&lt;br&gt;&lt;br&gt;</description>
			<category>일상다반사</category>
			<category>일상다반사</category>
			<category>자전거</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/129</guid>
			<comments>http://onurmark.co.kr/tc/129#entry129comment</comments>
			<pubDate>Thu, 17 Jul 2008 17:31:05 +0900</pubDate>
		</item>
		<item>
			<title>Something is wrong!!</title>
			<link>http://onurmark.co.kr/tc/128</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;P&gt;[onurmark@localhost ]# ./lifed&lt;BR&gt;Jul&amp;nbsp; 7 18:11:06 localhost lifed: lost connection&lt;BR&gt;Jul&amp;nbsp; 7 18:11:06 localhost lifed: hangup&lt;BR&gt;Jul&amp;nbsp; 7 18:11:06 localhost lifed: Conection terminated.&lt;BR&gt;Jul&amp;nbsp; 7 18:11:06 localhost lifed: exit&lt;BR&gt;Jul&amp;nbsp; 7 18:11:06 localhost lifed: Something is wrong!!&lt;BR&gt;Jul&amp;nbsp; 7 18:11:06 localhost lifed: kernel panic!!&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY#$GGDFW#FR$#TGERFDH%$^YHYFTGR^%UH^TY&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;</description>
			<category>일상다반사</category>
			<category>일상다반사</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/128</guid>
			<comments>http://onurmark.co.kr/tc/128#entry128comment</comments>
			<pubDate>Mon, 07 Jul 2008 18:15:24 +0900</pubDate>
		</item>
		<item>
			<title>Cort Earth-200 결국은 질러버렸다..</title>
			<link>http://onurmark.co.kr/tc/127</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1081686529.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;337&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1087240633.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;337&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;BR&gt;&lt;BR&gt;결국 사고를 치고 마는구나...</description>
			<category>기타 등등</category>
			<category>일상다반사</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/127</guid>
			<comments>http://onurmark.co.kr/tc/127#entry127comment</comments>
			<pubDate>Thu, 26 Jun 2008 20:34:25 +0900</pubDate>
		</item>
		<item>
			<title>휴대폰을 바꿨습니다.</title>
			<link>http://onurmark.co.kr/tc/126</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;div class=&quot;imageblock left&quot; style=&quot;float: left; margin-right: 10px;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1324854599.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;420&quot; width=&quot;300&quot; /&gt;&lt;/div&gt;주요 기능&lt;BR&gt;&lt;BR&gt;1. HSUPA&lt;BR&gt;2. 블루투스&lt;BR&gt;3. WCDMA / GSM 로밍 / 영상통화&lt;BR&gt;4. 무선랜(802.11b/g)&lt;BR&gt;5. 200만 화소 카메라&lt;BR&gt;6. 2.4 인치 터치 스크린&lt;BR&gt;7. PDA&lt;BR&gt;&lt;FONT color=#ff0000&gt;8. 너 핸드폰아냐? 주요기능에 전화기능이 빠져있어 --&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;근 1년 동안 사용하던 휴대폰이 심심하면 약간의 흔들림에도 전원이 꺼져버리는 바람에 휴대폰을 바꾸기로 했다.&lt;BR&gt;개발용 장비로 구입한 것이지만 새로운 휴대폰 살 여유도 없고 해서 사용하기로했다. 사실 휴대폰이 전화만 되면 되었지 무슨 쓸데 없는 기능을 많이 넣어놓았는지... 한 10년 후에는 휴대폰에 NASA 우주 탐사 모듈 지원.. 이렇게 되어버리는건 아닐지..</description>
			<category>일상다반사</category>
			<category>일상다반사</category>
			<category>휴대폰</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/126</guid>
			<comments>http://onurmark.co.kr/tc/126#entry126comment</comments>
			<pubDate>Thu, 26 Jun 2008 16:59:15 +0900</pubDate>
		</item>
		<item>
			<title>은하수를 여행하는 히치하이커를 위한 안내서</title>
			<link>http://onurmark.co.kr/tc/125</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;div class=&quot;imageblock left&quot; style=&quot;float: left; margin-right: 10px;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1259344551.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;400&quot; width=&quot;270&quot; /&gt;&lt;/div&gt;지은이: 더글라스 애덤스&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&quot;훌륭해요, 위대한 통치자님. 마음대로 말하세요.&quot; 자포드가 말했다.&lt;BR&gt;&amp;nbsp;&quot;아니, 이것 보세요. 사람들이 당신에게 오죠, 네? 우주선을 타고....&quot; 자니우프가 말했다.&lt;BR&gt;&amp;nbsp;그는 술병을 트릴리언에게 넘겼다.&lt;BR&gt;&amp;nbsp;&quot;그리고 그 사람들이 당신한테, 자기들 대신 결정을 해달라고 부탁하죠? 사람들의 인생, 세상, 경제, 전쟁, 저 바깥 우주에서 벌어지는 모든 문제들에 대해서 말이에요.&quot; 자니우프가 말했다.&lt;BR&gt;&amp;nbsp;&quot;저 바깥이라고요? 어디요?&quot; 그 사람이 말했다.&lt;BR&gt;&amp;nbsp;&quot;저 바깥 우주 말입니다!&quot; 자니우프가 문을 가르키며 말했다.&lt;BR&gt;&amp;nbsp;&quot;저 바깥에 뭐가 있는지 어떻게 알겠어요?&quot; 그사람이 예의 바르게 말했다. &quot;저 문은 닫혀 있는데.&quot;&lt;BR&gt;&amp;nbsp;비가 계속해서 지붕을 때려댔다. 오두막 안은 따뜻했다.&lt;BR&gt;&amp;nbsp;&quot;하지만 저 바깥에 우주 전체가 있다는 걸 당신도 알잖아요! 그게 존재하지 않는다는 말로 당신의 책임을 회피할 수는 없어요!&quot; 자니우프가 소리쳤다.&lt;BR&gt;&amp;nbsp;우주의 통치자는 오랫동안 생각에 잠겼고, 그동안 자니우프는 분노로 몸을 떨었다.&lt;BR&gt;&amp;nbsp;&quot;당신은 당신이 알고 있는 사실들에 대해 대단히 확신하는군요.&quot; 그 사람이 마침내 입을 열었다. &quot;난 우주를---그런게 정말 있다면 말입니다---그렇게 당연히 받아들이는 사람의 생각을 믿을 수가 없어요.&quot;&lt;BR&gt;&amp;nbsp;자니우프는 여전히 몸을 떨면서 침묵을 지키고 있었다.&lt;BR&gt;&amp;nbsp;&quot;난 나의 우주에 대해서만 결정을 내리죠.&quot; 그 사람이 조용히 말을 이었다.&quot; 내 우주는 나의 눈이고 귀에요. 그 외의 것들은 소문에 불과하죠.&quot;&lt;BR&gt;&amp;nbsp;&quot;그럼 당신은 아무것도 믿지 않는단 말입니까?&quot;&lt;BR&gt;&amp;nbsp;그 사람은 어깨를 으쓱하더니 고양이를 안아 올렸다.&lt;BR&gt;&amp;nbsp;&quot;당신이 말하는 걸 이해 못하겠군요.&quot; 그가 말했다.&lt;BR&gt;&amp;nbsp;&lt;FONT color=#ff0000&gt;&quot;당신이 이 오두막 안에서 결정하는 일들이 수백만 사람들의 생명과 운명에 영향을 미친다는 사실을 이해 못한단 말이에요? 이건 정말 어마어마하게 잘못된 일이라고요!&quot;&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&quot;모르겠군요. 당신이 말하는 그 모든 사람들을 만나본 일도 없는걸요. 그리고 내 생각에 당신도 안 만나봤을 거예요. 그 사람들은 우리가 듣는 말 속에서만 존재하죠. 다른 사람들에게 어떤 일이 벌어지는지 당신이 안다고 말한다면 그건 잘못이에요. 그 사람들만이 알죠. 그 사람들이 정말 존재한다면 말이에요. 그 사람들도 눈과 귀라는 자신들만의 우주를 가지고 있으니까요.&quot;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;
&lt;DIV style=&quot;TEXT-ALIGN: right&quot;&gt;눈과 귀를 막고 나라를 다스리는 모든 정치인이 아닌 정치꾼들에게...&lt;BR&gt;-2권 우주의 끝에 있는 레스토랑의 내용 중 우주의 통치자와의 대화-&lt;/DIV&gt;</description>
			<category>Civilized living</category>
			<category>책소개</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/125</guid>
			<comments>http://onurmark.co.kr/tc/125#entry125comment</comments>
			<pubDate>Mon, 21 Apr 2008 13:07:20 +0900</pubDate>
		</item>
		<item>
			<title>정규식을 사용하여 문자열 파싱하기</title>
			<link>http://onurmark.co.kr/tc/124</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;P&gt;&amp;nbsp;프로그램을 작성하다보면 파일에서나 문자열중에서 원하는 부분만 추출하는 작업이 필요할때가 아주 많다. 물론 xml과 같은 구조화된 문서일 경우 아주 쉽게 원하는 부분을 추출할 수 있겠지만 특별한 경우를 제외한 대부분의 경우에는 노가다 작업에 의존하게 된다. 가장 많이 사용하는 방법으로 if문과 String 비교의 조합으로 사용을 하게 되는데 코드가 길어질뿐더러 나중에는 내가 뭘하고 있는지 회의감마저 드는 작업이되게 되어 버린다. 좀 더 진보된 방법을 사용하기 위해 StringTokenizer를 사용하여 작업을 하게 되는데.. 이 경우도 문서의 구조가 아주 단순화되어 있지 않다면 노가다이기는 마찬가지이다.&lt;BR&gt;&amp;nbsp;그래서 생각한것이 정규식이다. 정규식은 실제로 우리의 대부분의 에디터에서 사용되고 있는 기능인데 익스플로어에서 Ctrl + F를 이용한 찾기 기능마저도 실제로는 정규식이다. 정규식의 힘을 느끼게 되는 진정한 프로그램은 가장 많이 사용되는 에디터중에 하나인 VI 에디터에서 진가를 볼 수 있다. 명령어 모드에서 &#039;/&#039;키를 누르고 정규식을 입력하면 원하는 데이터를 정확하게 찾아준다.&lt;BR&gt;&amp;nbsp;각설하고 JAVA에서는 정규식을 java.util.regex 패키지에서 지원을 하고 있다. Pattern 클래스와 Matcher 클래스만으로도 우리가 원하는 문자열 파싱을 진행 할 수 있다. 자세한 내용은 JAVA API를 참조하기로 하고 다음으로 진행한다.&lt;BR&gt;&amp;nbsp;만일 HTTP 헤더의 Request line을 분석한다고 하자. Request Line 형식은 아래와 같다.&lt;BR&gt;&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1318341382.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;79&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;method는 GET, POST, PUT, HEAD 등등 15가지나 되지만 지금은 GET과 POST에만 관심을 두고&lt;BR&gt;URL은 /login/check.jsp?userid=test&amp;amp;passwd=test 형식으로 파라미터 세퍼레이터인 ?를 기준으로 앞부분은 디렉토리 및 파일구조를 나타내고 뒷부분은 파라미터를 나타내고 있다.&lt;BR&gt;HTTP version은 0.9, 1.0, 1.1, 3가지가 있다.&lt;BR&gt;&lt;BR&gt;즉 우리가 작성해야 될 정규식에 매칭되는 문자열은 다음의 문자열들이다.&lt;BR&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: rgb(228,228,228)&quot;&gt;GET /login/check.jsp HTTP/1.0&lt;BR&gt;POST / HTTP/1.0&lt;BR&gt;GET /site/index.jsp?flag=true HTTP/1.1&lt;BR&gt;... 기타 등등&lt;/DIV&gt;
&lt;P&gt;(?:^(GET|POST) ([^?]+)[?]?(.*) (HTTP/(0.9|1.0|1.1))$) 이 정규식이 내가 원하는 데이터를 추출 할 수 있는 정규식이다. 간단히 해석을 해보면&lt;BR&gt;&lt;FONT color=#0000ff&gt;(): 캡춰할 영역&lt;BR&gt;^: 문자열 시작&lt;BR&gt;$: 문자열 종료&lt;BR&gt;|: 둘중 하나&lt;/FONT&gt;&lt;BR&gt;^(GET|POST): 문자열의 시작이 GET이나 POST로 시작하고 이영역은 내가 캡춰하길 원하는 영역&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#0000ff&gt;[]: 문자 클래스지정 ^: 문자 클래스 내에서의 ^기호는 제외의 의미다&lt;BR&gt;?: 수량 0 또는 1&lt;BR&gt;+: 수량 1이상 (1 또는 more)&lt;BR&gt;*: 수량 없을 수도 있고 무한정 많을 수도 있다.(0 또는 more)&lt;BR&gt;.: 모든 문자셋&lt;/FONT&gt;&lt;BR&gt;([^?]+)[?]?(.*): 앞쪽은 ?문자를 제외한 문자열이 하나이상 반복되고 이 영역은 내가 캡춰하길 원하는 영역, ?문자는 0 또는 1이며 뒷쪽은 모든 문자가들어갈 수 있으며 내가 캡춰하길 원하는 영역&lt;BR&gt;&lt;BR&gt;HTTP/(0.9|1.0|1.1)$: HTTP/0.9, HTTP/1.0, HTTP/1.1 이라는 문자열&lt;BR&gt;&lt;BR&gt;자 아래는 이문자열을 파싱하기 위한 테스트 프로그램이다.&lt;/P&gt;
&lt;P&gt;[code java]&lt;BR&gt;import java.util.regex.Matcher;&lt;BR&gt;import java.util.regex.Pattern;&lt;BR&gt;&lt;BR&gt;public class TestReg {&lt;BR&gt;&amp;nbsp; &amp;nbsp; Pattern pattern = Pattern.compile(&quot;(?:^(GET|POST) ([^?]+)[?]?(.*) (HTTP/(0.9|1.0|1.1))$)&quot;);&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;nbsp; public static void main(String[] args) {&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TestReg reg = new TestReg();&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String line = &quot;POST /tomcat-docs/images/tomcat.gif?userid=admin HTTP/0.9&quot;;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg.testRun(line);&lt;BR&gt;&amp;nbsp; &amp;nbsp; }&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;nbsp; public void testRun(String line) {&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Matcher matches = pattern.matcher(line);&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (matches.find()) {&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&quot;Match find&quot;);&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&quot;Method: &quot; + matches.replaceAll(&quot;$1&quot;));&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&quot;URL: &quot; + matches.replaceAll(&quot;$2&quot;));&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&quot;Param: &quot; + matches.replaceAll(&quot;$3&quot;));&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&quot;Version: &quot; + matches.replaceAll(&quot;$4&quot;));&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;BR&gt;&amp;nbsp; &amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;[/code]&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: rgb(228,228,228)&quot;&gt;---------- 실행결과 ----------&lt;BR&gt;Match find&lt;BR&gt;Method: POST&lt;BR&gt;URL: /tomcat-docs/images/tomcat.gif&lt;BR&gt;Param: userid=admin&lt;BR&gt;Version: HTTP/0.9&lt;/DIV&gt;&lt;BR&gt;
&lt;P&gt;정규식을 compile하여 Pattern을 작성하고 Pattern.matcher()함수에 인자로 검사할 문자열을 입력한다.&lt;BR&gt;그 결과물로 Matcher가 나오는데 Matcher.find()함수는 찾은 문자열이 있을 경우 true를 반환한다.&lt;BR&gt;&lt;BR&gt;Matcher.replaceAll() 함수에 &quot;$1&quot;, &quot;$2&quot;와 같은 인자들은 캡춰할 &amp;nbsp;데이터 영역을 지정하는 것이다. &lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: rgb(228,228,228)&quot;&gt;&lt;FONT size=4&gt;&lt;FONT size=4&gt;(?:^&lt;FONT color=#ff0000&gt;(GET|POST)&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;([^?]+)&lt;/FONT&gt;[?]?&lt;FONT color=#009966&gt;(.*)&lt;/FONT&gt; &lt;FONT color=#8e8e8e&gt;(HTTP/(0.9|1.0|1.1))&lt;/FONT&gt;$)의 경우에는 &lt;BR&gt;&lt;FONT color=#ff0000&gt;빨간색&lt;/FONT&gt;: $1&lt;BR&gt;&lt;FONT color=#0000ff&gt;파란색&lt;/FONT&gt;: $2&lt;BR&gt;&lt;FONT color=#009966&gt;녹 &amp;nbsp; 색&lt;/FONT&gt;: $3&lt;BR&gt;&lt;FONT color=#8e8e8e&gt;회 &amp;nbsp; 색&lt;/FONT&gt;: $4&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;P&gt;위에 보는것과 같이 정규식을 이해하는데에 대한 노력을 조금만 하면 실제로 코드는 굉장히 짧아지게 되며 속도 또한 스트링 비교나 StringTokenizer를 사용하는것보다 훨씬 빠른것을 알 수 있다. &lt;BR&gt;&amp;nbsp;&lt;BR&gt;정규식에 관한 정보는 &lt;A href=&quot;http://www.pcre.org/&quot;&gt;http://www.pcre.org&lt;/A&gt;에서 찾아 볼 수 있다. pcre는 perl에 호환되는 정규 표현식을 c 라이브러리로 만드는 프로젝트이다. 물론 JAVA에서 사용되는 정규식과는 조금은 다른 표현이 있기는 하지만 크게 다르지 않고 과거부터 지금까지 가장 많이 사용되었고 사용되고 있는 표현식이므로 반드시 읽고 익히도록 하자&lt;/P&gt;</description>
			<category>Java</category>
			<category>JAVA</category>
			<category>정규식</category>
			<category>프로그래밍</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/124</guid>
			<comments>http://onurmark.co.kr/tc/124#entry124comment</comments>
			<pubDate>Thu, 17 Apr 2008 16:16:29 +0900</pubDate>
		</item>
		<item>
			<title>Fedora core 5에서의 드라이버 설치 문제</title>
			<link>http://onurmark.co.kr/tc/123</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;P&gt;SSL 가속기인 CAVIUM 카드를 장비에 꽂고 드라이버를 컴파일 한후 insmod 명령어를 사용하여 드라이버를 로드를 시도 하였으나 에러를 뿌리면서 로드되지 않는문제가 발생하였다.&lt;BR&gt;dmesg로 로그를 올려보니 module license &#039;CAVIUM&#039; taints kernel 이라는 에러메시지만 떠 있었다.&lt;BR&gt;&lt;BR&gt;결론은 fedora core 5에서 일시적으로 GPL라이센스를 가진 모듈들만 로드할 수 있도록 막아 놓았던 것이다. 소스코드중에 MODULE_LICENSE 매크로를 수정하여 해결하면 된다. &lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;드라이버소스코드중&lt;BR&gt;MODULE_LICENSE(&quot;CAVIUM&quot;); 이라는 매크로를&lt;BR&gt;MODULE_LICENSE(&quot;GPL&quot;);로 수정하여 해결&lt;/DIV&gt;&lt;BR&gt;</description>
			<category>Linux</category>
			<category>GPL</category>
			<category>linux</category>
			<category>드라이버설치</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/123</guid>
			<comments>http://onurmark.co.kr/tc/123#entry123comment</comments>
			<pubDate>Tue, 15 Apr 2008 18:23:45 +0900</pubDate>
		</item>
		<item>
			<title>요즘 어떻게 지내세요??</title>
			<link>http://onurmark.co.kr/tc/122</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;P&gt;#include &quot;휴식&quot; // warning: The global variable &#039;휴식&#039; is never read.&lt;BR&gt;&lt;BR&gt;function myLife() {&lt;BR&gt;&amp;nbsp; &amp;nbsp; while(true) {&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; for (i = 0; i &amp;lt; 5; i++) {&amp;nbsp; // 주5일&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;goCompany();&lt;BR&gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; if(!야근) { &lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; goHome();&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; sleep(주말);&lt;BR&gt;&amp;nbsp; &amp;nbsp; }&lt;BR&gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; happyLife(); // Error: Unreached function&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;function goCompany() {&lt;BR&gt;&amp;nbsp; &amp;nbsp; doWork();&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;function goHome() {&lt;BR&gt;&amp;nbsp; &amp;nbsp; doSleep(6HOUR);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;---- compile result ----&lt;BR&gt;&lt;FONT color=#ff0000&gt;1 Error, 1warning!!&lt;BR&gt;Compile Error: Unreached function! You need break time!! but not necessary!!&lt;BR&gt;Warning: The global variable &#039;휴식&#039; is never read!!&lt;/FONT&gt;&lt;FONT color=#ff0000&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;</description>
			<category>일상다반사</category>
			<category>일상다반사</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/122</guid>
			<comments>http://onurmark.co.kr/tc/122#entry122comment</comments>
			<pubDate>Wed, 19 Mar 2008 21:53:55 +0900</pubDate>
		</item>
		<item>
			<title>SecureCRT와 Putty에서의 비대칭키를 통한 로그인 사용하기</title>
			<link>http://onurmark.co.kr/tc/117</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;P&gt;SSH 서버 : OpenSSH_4.3p2, OpenSSL 0.9.8a&lt;BR&gt;&lt;BR&gt;&amp;nbsp;ssh는 서버와 클라이언트간에 모든 데이터를 SSL로 암호화 하는 쉘이다. 패킷을 암호화 하기 때문에 스니핑 공격에 강력하지만 패스워드 인증만으로 사용할 경우 패스워드가 누출 될 경우 아주 취약하다. 그래서 앞으로의 장비에는 비대칭키를 통한 로그인을 사용하기로 하였다. zterm의 경우는 비대칭키 로그인을 지원하지 않는 터미널이기 때문에 앞으로는 사용하지 않기로 하였다. &lt;BR&gt;&lt;BR&gt;&amp;nbsp;비밀키-공개키 생성은 SecureCRT에 있는 키 생성기를 사용하였다. SecureCRT의 Tools-&amp;gt;Create public key메뉴를 실행하면 다음과 같은 화면이 보인다.&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1211101204.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;238&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;DSA 키를 사용하도록 설정한다. 서버가 RSA암호화를 지원할 경우 RSA 비밀키를 사용해도 무방하다.&lt;BR&gt;&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1212867542.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;238&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;키의 암호를 지정한다. 키의 암호를 지정하지 않을 경우 키의 노출만으로도 쉽게 로그인 할 수 있으므로 꼭 암호를 설정하자 보통 영어, 숫자, 특수문자를 섞은 16자 이상의 암호를 권장하지만.. 과연 외울 수 있는 사람이 --;;&lt;BR&gt;&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1310027746.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;238&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;키의 길이를 지정한다. 2048이 최대치로 가장 안전하나 1024로도 충분하다.&lt;BR&gt;&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1288791314.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;238&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;창위에서 마우스를 이리저리 움직이면 랜덤한 키를 생성한다.&lt;BR&gt;&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1094371833.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;238&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;BR&gt;OpenSSH 서버에 공개키를 올리려면 OpenSSH Key format를 사용해야 하지만 추후에 변경해도 상관없으므로 일단은 VanDyke Private Key format을 선택하여 파일을 생성하자. Identity라는 이름으로 작성을하면 Identity라는 비밀키와 Identity.pub라는 비대칭키 쌍이 생성된다.&lt;BR&gt;&lt;FONT color=#ff0000&gt;* 설명을 쉽게 하기 위해 비밀키는 Identity 공개키는 Identity.pub로 하겠다.&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;알다시피 비밀키는 아무에게도 노출되어서는 안되는 키이다. 서버에게는 생성된 인증서의 공개키를 업로드하고 신뢰하게 만들면 된다.&lt;BR&gt;&lt;BR&gt;FTP를 이용하여 공개키 identity.pub를 서버에 업로드한 후 ssh를 이용하여 접속하자. 예제에서는 certuser라는 사용자가 비대칭키를 사용하도록 설정하겠다. ssh에 접속할때 certuser라는 아이디를 사용하여 로그인한다. 홈디렉토리에 .ssh 폴더가 생성되어 있지 않을 경우 .ssh 폴더를 생성하고 자신이외에는 사용할 수 없게 퍼미션을 지정한다. 그 후 업로드한 identity.pub파일을 신뢰할 수 있도록 지정해 주면 되는데 identity.pub파일이 VanDyke key format이므로 OpenSSH key 형식으로 변환해주면 된다.&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;만약 .ssh폴더가 없을 경우&lt;BR&gt;# mkdir /home/certuser/.ssh&lt;BR&gt;# chmod 700 /home/certuser/.ssh&lt;BR&gt;그 후 identity.pub 파일을 /home/certuser/.ssh에 복사한다.&lt;BR&gt;# cp identity.pub /home/certuser/.ssh&lt;BR&gt;# ssh-keygen -i -f /home/certuser/.ssh/identity.pub &amp;gt;&amp;gt; /home/certuser/.ssh/authorized_keys&lt;BR&gt;공개키 파일을 다른 사용자로부터 보호하기 위해 파일 퍼미션을 부여한다.&lt;BR&gt;# chmod go-rwx /home/certuser/.ssh/*&lt;/DIV&gt;
&lt;P&gt;OpenSSH 서버 설정&lt;BR&gt;/etc/ssh/sshd_config 파일을 열어 다음 항목을 수정한다.(파일을 수정하기 위해서는 루트 권한이 필요하다.)&lt;BR&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;PubkeyAuthentication &amp;nbsp; &amp;nbsp;&amp;nbsp; yes&lt;BR&gt;AuthorizedKeysFile &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .ssh/authorized_keys&lt;BR&gt;PasswordAuthentication&amp;nbsp; no&lt;BR&gt;* 비대칭키 방식의 인증을 사용하고 신뢰된 키는 각 유저의 홈디렉토리의 .ssh/authorized_keys로 설정하고 패스워드 인증을 사용하지 않도록 설정했다.&lt;BR&gt;&lt;BR&gt;파일을 저장후 service sshd restart명령어로 ssh 서버를 재시작한다. 이제부터는 비대칭키 설정 없이는 접속할 수 없다.&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;SecureCRT 클라이언트의 비밀키 설정&lt;BR&gt;Options에 Global Options를 눌러 보면 아래와 같은 항목이 보인다.&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1367307749.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;416&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;BR&gt;Use identity or certificate file을 선택하고 비밀키 Identity를 선택 후 OK를 눌러 저장한다. 이제 서버로 접속하면 Password 대신 &lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1201290148.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;133&quot; width=&quot;362&quot; /&gt;&lt;/div&gt;와 같이 비밀키의 패스워드를 입력하라고 나올 것이다. &lt;BR&gt;&lt;BR&gt;Putty 클라이언트의 비밀키 설정&lt;BR&gt;우선 Vandyke format의 키는 Putty에서 사용불가능함으로 일단 OpenSSH형식의 키로 변환한다. &lt;BR&gt;Tools의 Convert private key to OpenSSH Format메뉴를 선택하면 변경할 키를 지정하는 항목이 나온다. Identity라는 비밀키를 선택 후 패스워드를 입력하고 Identity_openssh로 저장을 하자. 이렇게 생성된 비밀키 Identity_openssh는 Putty에서 그대로 사용할 수 없다. Putty Format 형식의 키로 변환을 하자. &lt;BR&gt;&lt;BR&gt;&lt;A href=&quot;http://www.putty.org&quot;&gt;http://www.putty.org&lt;/A&gt; 에서 puttygen이라는 키생성기를 다운로드 받아 키형식을 변환한다.&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1188117081.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;438&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;BR&gt;Load를 클릭하여 Identity_openssh를 로드 한 후 Save private key를 눌러 Identity.ppk 파일로 저장을 하자. 이렇게 생성된 Identity.ppk가 putty format의 비밀키이다.&lt;BR&gt;&lt;BR&gt;putty를 실행시켜 Identity.ppk 파일을 지정하자&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1270514394.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;436&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;SSH -&amp;gt; Auth 항목에 들어가면 위와 같은 화면이 보인다. Identity.ppk파일을 지정한 후 Default Setting에 저장을 하면 설정이 완료된다. &lt;BR&gt;&lt;BR&gt;이렇게 해서 OpenSSH서버에 공개키를 넣고 클라이언트 SecureCRT와 putty에 비밀키를 세팅하였다. 비대칭키 표준 포멧을 따르지 않고 자신들 마음대로 키포멧을 지정해 놓았기 때문에 설치가 무진장 복잡해 보이지만 사실은 아주 간단하다. 처음에는 openssl을 가지고 키생성을 설명하려했으나 옵션에 대한 설명이 복잡해 보일 것 같아서 SecureCRT의 키생성기를 가지고 설명을 하였는데.. 그림이 너무 많이 들어가서 오히려 설명이 복잡해진것 같다. &lt;/P&gt;</description>
			<category>Security</category>
			<category>linux</category>
			<category>security</category>
			<category>ssh</category>
			<category>대칭키</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/117</guid>
			<comments>http://onurmark.co.kr/tc/117#entry117comment</comments>
			<pubDate>Fri, 22 Feb 2008 13:23:13 +0900</pubDate>
		</item>
		<item>
			<title>iptables의 NAT (Network Address Translation)의 이해</title>
			<link>http://onurmark.co.kr/tc/116</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;P&gt;참고: &lt;A href=&quot;http://iptables-tutorial.frozentux.net/iptables-tutorial.html&quot; target=_blank&gt;Iptables Tutorial 1.2.2&lt;/A&gt;&amp;nbsp;(Oskar Andreasson)&lt;BR&gt;&lt;BR&gt;&amp;nbsp;기본적으로 NAT는 여러 호스트들이 같은 IP를 공유하도록 한다. 우리가 많이 사용하는 IP공유기 또한 이 기능을 활용하여 만들어진 것이다. 구형 486 컴퓨터 한대에 리눅스를 설치하고 iptables를 올린 다음 이 컴퓨터를 호스트의 디폴트 게이트웨이로 설정하면 IP 공유기가 구축되게 된다. NAT 서버는 들어오는 패킷의 출발지 주소와 목적지 주소를 수정하고 Checksum을 다시 계산하여 전송하게 되는데 이것이 바로 SNAT(Source Network Address Translation)과 DNAT(Destination Network Address Translation)이다. &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;1. SNAT (Source Network Address Translation)&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp; SNAT는 하나의 IP를 공유하여 여러 호스트들이 인터넷 통신을 가능하게 해주는 방식이다. 기본적으로 출발지 주소를 변경하는 방법으로 동작을 한다.&lt;BR&gt;&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1201107118.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;293&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1056748965.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;293&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;BR&gt;&amp;nbsp;위의 그림은 DMZ에 NAT 서버를 설치 한 후의 네트워크 그림을 표시한 것이다. 라우터뒤의 DMZ에 NAT 서버를 설치하여 NAT서버와 호스트들은 사설 IP대역으로 설정하고 디폴트 게이트웨이는 NAT서버를 설정을 해두었다. 이제 호스트에서 인터넷으로 나가는 패킷들은 NAT서버가 출발지를 자신의 IP(123.12.32.12)로 변경하여 인터넷으로 보내게 되고 들어오는 패킷에 대해서는 연결 추적(Connection Tracking)에 기록된 원래 호스트에 전송하는 방식이다. &lt;BR&gt;&amp;nbsp;SNAT의 특성은 공인 IP하나만으로도 수 많은 호스트들이 통신을 가능하게 해준다. 여기에도 물론 제약사항이 따르게 마련인데 만일 네부 네트워크에서 서버를 운영을 할때 외부에서 접속할 수 있는 방법이 없다. 내부 네트워크는 사설 IP를 사용하게 되는데 외부에서 이 사설 IP는 도메인(Domain)이 다르기 때문에 접속할 수 있는 방법이 없다. 이를&amp;nbsp; 해결하기 위해서는 위해서는 고비용의 VPN(Virtual Private Network)장비를 사용하여 도메인에 참가시키는 방법이나 NAT의 기능중의 하나인 DNAT를 사용하면 된다.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;2. DNAT (Destination Network Address Translation)&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;DNAT의 기능은 위에도 설명했다시피 목적지 주소를 변경하는 것이다. NAT 서버 뒤에 웹서버나 FTP, 메일 서버를 운영하여야 할때에는 SNAT를 사용해서는 접속을 할 수가 없다. &lt;BR&gt;&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1334955930.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;293&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1107458176.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;293&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;BR&gt;&amp;nbsp;위와 같이 네트워크를 구성을 하였을 경우 외부에서는 123.12.32.12라는 서버 하나밖에 볼 수 없다. 이때 NAT서버는 들어오는 모든 트래픽에 대해서 목적지를 내부 서버의 IP(192.168.1.0/24)로 변경하여 뒷단 서버로 넘겨 통신을 처리한다. 즉 웹서버의 IP를 사설 192.168.1.12라고 했을 경우, 외부에서 웹서버(포트 80)에 접속을 하려면 웹브라우저에서 123.12.32.12에 80포트에 접속을 하면 NAT 서버가 목적지의 주소를 사설 IP 192.168.1.12로 변경을 하여 뒷단에 넘겨주어 처리하게 되는 것이다. &lt;BR&gt;&amp;nbsp;이 방식의 특징은 물리적으로 분리된 서버들을 하나의 IP로 묶어서 사용할 수 있도록 해주며 공인 IP하나만을 사용함으로 효율적으로 IP 공간(IP Space)을 사용할 수 있도록 해준다. 또한, SNAT 환경에서도 서버를 운영할 수 있도록 지원해준다. &lt;BR&gt;&lt;BR&gt;&lt;FONT color=#0000ff&gt;* 참고: VPN은 외부의 컴퓨터를 내부 도메인에 참여시키는 역할을 하지만 주 목적은 안전한 보안 채널을 생성하여 외부의 사용자들이 내부 서버에 접속할 때 안전한 통신을하게 하는 것이다.&lt;/FONT&gt;&lt;BR&gt;&lt;/P&gt;</description>
			<category>Network</category>
			<category>DNAT</category>
			<category>iptables</category>
			<category>NAT</category>
			<category>SNAT</category>
			<category>네트워크</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/116</guid>
			<comments>http://onurmark.co.kr/tc/116#entry116comment</comments>
			<pubDate>Wed, 20 Feb 2008 14:47:48 +0900</pubDate>
		</item>
		<item>
			<title>토지</title>
			<link>http://onurmark.co.kr/tc/114</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;STRONG&gt;작가: 박경리&lt;br /&gt;&lt;/STRONG&gt;
&lt;P&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1232545031.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;273&quot; width=&quot;450&quot; /&gt;&lt;/div&gt; &lt;/P&gt;&amp;nbsp;간난 할멈의 장례날은 쾌청했다.&lt;br /&gt;&amp;nbsp;음식도 많이 차려 마을사람들은 배불리 먹었으며 마을 상여를 빌려 오긴 했으나 만장이 여러 개 바람에 나부꼈고 자식 없는 종 신분의 일생이니 호상이랄 수는 없지만 윤씨 부인이 죽은 사람을 깍듯이 대접한 만큼 꽤 큰 장례식이었다. 간난 할멈은 살 만큼 살았었고 뜻밖의 죽음이 아니었으므로 그를 위해 뜨겁게 울어줄 사람은 없었으나 그러나 열두 상두꾼이 멘 상여, 상두채에 올라서서 앞소리를 하는 서 서방의 가락은 여전히 아낙들을 울려놓았다. 제 술움에 울고 인간사가 서러워 울고 창자를 끊는 것같이 가락과 구절이 굽이쳐 넘어가고 바람에 날리어 흩어지는 상두가에 눈물을 흘린다. &lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 어하넘 어하넘&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 어나라 남천 어하넘&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 명정공포 우뇌상에 요령소리 한심허다&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 멀고먼 황천길을&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 인지가면 언제 오리&lt;/STRONG&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;상여는 개울을 넘을 때 멈추었다. 다리가 아파 못 가겠고 개울을 넘는데 망령이 노자 달란다면서 상여꾼이 제자리 걸음을한다. 두만네, 두만 아비, 봉순네가 상두채에 엽전을 놓아준다.&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 어하넘 어하넘&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 어나라 남천 어하넘&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 이 길을 인지 가면&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 언제 다시 돌아오리&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 활장 겉이 굽은 길을&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 살대 겉이 내가 가네&lt;/STRONG&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;개울을 넘고 길을 돌면 마을이 사라진다. 길손들이 서서 구경하고 강물 위에 뗏목에서 뗏목꾼도 상여를 바라본다. 고개를 넘는다.&lt;br /&gt;&amp;nbsp;&quot;아아니 저기이 와 따라오노?&quot;&lt;br /&gt;&amp;nbsp;뒤를 돌아본 김 서방댁이 혀를 찼다. 속곳 가랑이는 발등을 덮었는데 새끼줄로 허리를 동여맨 또출네가 엉기정 엉기정 따라오고 있었다.&lt;br /&gt;&amp;nbsp;&quot;그만 놔두소, 밥이라도 얻어묵을라꼬 오는 기지요.&quot;&lt;br /&gt;&amp;nbsp;제 어미의 큰 목청을 경계하듯이 남이가 낮은 목소리로 말했다.&lt;br /&gt;&amp;nbsp;&quot;미친년이, 일 친 뒤가 맑아얄 긴데,&quot;&lt;br /&gt;&amp;nbsp;&quot;가만 내비리두소.&quot;&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 북망 산천 들어가서&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 띠잔디를 이불 삼고&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 쉬포리를 벗을 삼고&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 가랑비 굵은 비는&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 시우 섞어 오시는데&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 어느 누가 날 찾으리&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 어하넘 어하넘-&lt;/STRONG&gt;&lt;br /&gt;&lt;br /&gt;만장이 바람에 나부낀다. 오르막길에서 상여는 기울고 갈가마귀가 우짖으며 앞장선다.&lt;br /&gt;&lt;br /&gt;
&lt;DIV style=&quot;TEXT-ALIGN: right&quot;&gt;-토지 1부 2권 본문 중-&lt;br /&gt;&lt;/DIV&gt;&lt;br /&gt;동학군이 봉기하고 일본의 침략이 시작되면서 작품은 시작되고 광복을 맞으면서 끝이난다. 이렇게 어지러운 시대에도 불구하고 우리네 산천의 풍경과 삶은 너무나 아름다웠다.</description>
			<category>Civilized living</category>
			<category>civilized living</category>
			<category>책소개</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/114</guid>
			<comments>http://onurmark.co.kr/tc/114#entry114comment</comments>
			<pubDate>Tue, 19 Feb 2008 14:22:15 +0900</pubDate>
		</item>
		<item>
			<title>Apache의 mod_proxy 모듈을 이용한 웹 프록시 서버</title>
			<link>http://onurmark.co.kr/tc/113</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;P&gt;알다시피 Apache Foundation에서 개발하고 있는 HTTP Server는 전세계적으로 가장 많이 사용되고 있는 웹 서버이다. 이 HTTPD는 모듈 형식으로 많은 서비스를 지원하고 있는데 그 많은 기능들 중 하나인 프록시 모듈에 활용에대해 설명하려 한다.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;1. Forward와 Reverse 프록시&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;Apache는 포워드 프록시와 리버스 프록시 2가지 모드를 지원한다. 포워드 프록시는 클라이언트와 웹 서버 사이에 위치하게된다. 클라이언트가 웹 서버에서 컨텐츠를 얻기 위해서는 클라이언트에서 프록시 설정이 필요하다.&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1368519790.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;227&quot; width=&quot;450&quot; /&gt;&lt;p class=&quot;cap1&quot;&gt;포워드 프록시의 네트워크 구성&lt;/p&gt;&lt;/div&gt;&lt;BR&gt;&amp;nbsp;일반적으로 내부의 클라이언트가 내부에 위치한 방화벽을 회피하기 위한 목적으로 많이 사용되며 mod_cache 모듈을 사용하게 될 경우는 접속할 서버의 컨텐츠를 캐쉬를 하게 되어 네트워크 사용량을 줄일 수도 있다.&lt;BR&gt;&lt;BR&gt;&amp;nbsp;리버스 프록시의 경우에는 포워드 프록시와는 반대의 위치 즉 웹 서버쪽에 설치가 된다. 이때 클라이언트는 특정한 설정이 없이도 리버스 프록시에 접속할 수 있는데 이 말은 클라이언트는 리버스 프록시의 존재를 알 수 없다는 뜻이다.&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1313835959.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;227&quot; width=&quot;450&quot; /&gt;&lt;p class=&quot;cap1&quot;&gt;리버스 프록시의 네트워크 구성&lt;/p&gt;&lt;/div&gt;&amp;nbsp;리버스 프록시는 보안 목적을 위해서 많이 사용한다. 웹 서버 앞단에 방화벽을 붙이고 리버스 프록시를 통한 패킷들만 통과시키게 설정을 할 경우 클라이언트는 내부 웹 서버의 직접적인 접근이 차단이 되게되고 만일 DDos 공격이나 기타 공격이 들어 올 경우 프록시가 파괴 될지라도 내부 웹서버의 자원은 보호 할 수 있게 된다. 또한 포워드 프록시와 마찬가지로 캐쉬 모듈을 사용하여 서버쪽의 네트워크 사용량을 줄여 줄 수 있다.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;2. 아파치에 proxy 모듈을 포함하여 빌드하기&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&lt;A href=&quot;http://www.apache.org/&quot;&gt;http://www.apache.org&lt;/A&gt; 에서 HTTPD를 다운로드 하여 /usr/local/src에 압축해제 하자. 웹 프록시를 구성하기 위해서는 다음 모듈들이 필요하다.&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;프록시 모듈&lt;BR&gt;mod_proxy: mod_proxy_http, mod_proxy_ajp, mod_proxy_connect, mod_proxy_ftp, mod_proxy_balancer, mod_ssl&lt;BR&gt;캐쉬 모듈&lt;BR&gt;mod_cache: mod_mem_cache, mod_file_cache, mod_disk_cache&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#0000ff&gt;* 이 모듈이 전부 필요한 것은 아니다. proxy_ftp는 ftp 프록시를 구축할 때 사용되며 proxy_balancer는 로드 밸런싱 서버를 구축 할때 필요한 것이다. 자신의 상황에 맞게 설정하자. mod_ssl은 SSL proxy를 구축하기 위해서 필요하다.&lt;/FONT&gt;&lt;/DIV&gt;
&lt;P&gt;이 모듈을 포함하여 빌드를 하려면&lt;BR&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;&amp;gt; ./configure --prefix=/usr/local/apache --enable-proxy \ &lt;BR&gt;--enable-proxy_http \&lt;BR&gt;--enable-proxy_connect \&lt;BR&gt;--enable-ssl \&lt;BR&gt;--enable-cache \&lt;BR&gt;--enable-mem-cache \&lt;BR&gt;--enable-disk-cache&lt;BR&gt;&amp;gt; make &amp;amp;&amp;amp; make install&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#0000ff&gt;*자신의 원하는 기능과 모듈들을 설치하라. 꼭 이렇게 빌드 할 필요는 없다.&lt;/FONT&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;* 프록시 환경설정: &lt;A href=&quot;http://httpd.apache.org/docs/2.2/mod/mod_proxy.html&quot;&gt;http://httpd.apache.org/docs/2.2/mod/mod_proxy.html&lt;/A&gt;&lt;BR&gt;&amp;nbsp;*캐쉬 환경설정 &amp;nbsp; : &lt;A href=&quot;http://httpd.apache.org/docs/2.2/en/mod/mod_cache.html&quot;&gt;http://httpd.apache.org/docs/2.2/en/mod/mod_cache.html&lt;/A&gt;&lt;/P&gt;</description>
			<category>Security</category>
			<category>apache</category>
			<category>linux</category>
			<category>proxy</category>
			<category>security</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/113</guid>
			<comments>http://onurmark.co.kr/tc/113#entry113comment</comments>
			<pubDate>Fri, 15 Feb 2008 14:50:20 +0900</pubDate>
		</item>
		<item>
			<title>이 블로그에 모든 글은 아래와 같은 조건하에서 자유롭게 사용하실 수 있습니다.</title>
			<link>http://onurmark.co.kr/tc/112</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;P&gt;비록 허술하게 작성된 문서임에도 불구하고 이 블로그에 있는 글을 사용해 주시는 몇몇 분들에게 감사를 드립니다. 저는 정보 공개에 의한 재생산 어쩌구 저쩌구.. 잘 모릅니다. 그냥 보안 개발자로써 공부해 나가면서 배운 것들이나 느낀 것들을 하나하나씩 기록을 남긴다는 생각으로 글을 작성하고 있습니다. 이 블로그에 있는 모든 문서는 자유롭게 사용하실 수 있습니다. 단.. 아래와 같은 조건을 충족하는 경우에만 사용하실 수 있다는 것만 알아두셨으면 좋겠습니다. 물론 그냥 퍼가신다고 제가 고발 조치를 취하는 것도 아니고 법적인 강제 능력도 없습니다만.. 적어도 출처 정도는 표시해 주는게 에티켓 아닐까요? 문서 상단에 있는 CCL(Creative Commons License)는 보기 좋으라고 붙여 놓은게 아니죠.&lt;br /&gt;&lt;br /&gt;CCL을 클릭하시면 다음과 같은 조항을 보실 수 있습니다. &lt;br /&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1136676393.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;292&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;br /&gt;저작자 표시는 단순히 Developer Story의 URL만 적고 링크 하나 달아 주시면 됩니다. 비영리 목적하에서만 사용해 주시구요. 이 문서를 변경하지 말아주세요. 잘못된 내용이 있을 경우는 덧글만 달아주세요.&lt;br /&gt;&lt;br /&gt;생색 내기라고 생각 하실 수도 있지만... 예 맞습니다. 다른 곳에 출처도 안 밝히고 걸려 있는 제 글을 보면 사실 배 아픕니다...&lt;/P&gt;</description>
			<category>일상다반사</category>
			<category>CCL</category>
			<category>일상다반사</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/112</guid>
			<comments>http://onurmark.co.kr/tc/112#entry112comment</comments>
			<pubDate>Tue, 12 Feb 2008 15:12:30 +0900</pubDate>
		</item>
		<item>
			<title>Paros 로컬 웹 프록시 방식의 웹 취약성 분석 툴</title>
			<link>http://onurmark.co.kr/tc/111</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;p&gt;&lt;div class=&quot;imageblock left&quot; style=&quot;float: left; margin-right: 10px;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1389871421.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;69&quot; width=&quot;221&quot; /&gt;&lt;/div&gt;원문: &lt;a href=&quot;http://www.onurmark.co.kr/111&quot; target=&quot;_blank&quot;&gt;http://www.onurmark.co.kr/111&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Paros 툴은 웹 프록시 툴의 하나로써 해킹도구로 사용하고 있지만 원래의 목적은 개발자가 웹 취약점을 알아내서 보완 할 수 있도록 해주는 툴이다. 모든 취약성 점검 툴들은 해킹 도구로 사용할 수 있는 양날의 검과 같다고 할 수 있다. 특히 HTTP 프로토콜은 대부분의 다른 프로토콜들과 마찬가지로 보안에 대해서는 전혀 고려되지 않고 작성된 프로토콜이며 구조가 단순하여 쉽게 해킹이 가능하다.&lt;br&gt;&lt;br&gt;paros 툴은 HTTP 프로토콜의 요청과 응답을 모두 기록하며 웹 사이트의 구조 또한 트리로 표현함으로써 웹 사이트의 취약점을 분석 할 수 있다. 또한 HTTP 프로토콜을 변조, 위장이 가능하며 여러 Encoding과 HASH 값들을 encoding/decoding할 수 있다. &lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.parosproxy.org/&quot;&gt;http://www.parosproxy.org/&lt;/a&gt;&amp;nbsp;에서 paros를 다운로드 받을 수 있으며 실행을 위해서는 jdk가 설치되어 있어야 한다.&lt;br&gt;&lt;br&gt;Paros를 실행 시킨 후 웹 브라우저의 프록시 설정으로 paros를 사용 가능하다. 익스플로어를 기준으로 보면 도구-&amp;gt;인터넷 옵션-&amp;gt;연결-&amp;gt;LAN 설정-&amp;gt;프록시 설정 항목에서 paros의 Listen 포트를 지정하면 된다. paros의 기본설정은 local에서 8080포트를 Listen하고 있다. &lt;br&gt;&lt;br&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1288310272.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;325&quot; width=&quot;447&quot; /&gt;&lt;p class=&quot;cap1&quot;&gt;프록시 설정&lt;/p&gt;&lt;/div&gt;&lt;br&gt;간단히 메뉴를 살펴보면 좌측 상단에는 Sites항목이 방문한 웹사이트의 구조를 보여주며 우측 상단에는 Request, Response, Trap 메뉴가 존재한다. 하단에는 진행했던 HTTP 프로토콜의 히스토리를 보여주고 있다.&lt;br&gt;&lt;br&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1027379904.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;337&quot; width=&quot;450&quot; /&gt;&lt;p class=&quot;cap1&quot;&gt;Paros의 메인 화면&lt;/p&gt;&lt;/div&gt;&lt;br&gt;여기서 가장 많이 사용되는 메뉴는 Trap 메뉴이다. 이 메뉴는 요청이나 응답을 보내기 전에 메시지를 가로채어 변조 할 수 있도록 제공 되는 메뉴이다. JavaScript를 우회할 때를 보면 Trap response를 체크하고 요청을 진행하면 응답메시지를 웹브라우저로 보내기 전에 메시지를 가로채어 일시 정지를 시킨다. 이 때 전송되어 온 요청메시지의 자바스크립트를 변조 또는 파괴하여 JavaScript를 무용지물로 만들 수 있다. 보통 JavaScript에 입력값을 검증하는 부분을 없앨 때 주로 사용되는 방법이다.&lt;br&gt;&lt;br&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1083633113.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;279&quot; width=&quot;450&quot; /&gt;&lt;p class=&quot;cap1&quot;&gt;Trap한 요청 메시지의 JavaScript를 변조하는 모습&lt;/p&gt;&lt;/div&gt;&lt;br&gt;Tools-&amp;gt;Encoder/Hash... 항목을 보면 웹에서 많이 사용하는 인코딩이나 해쉬를 볼 수 있다. 웹에서 정보를 보호하거나 데이터 전송의 편의를 위해 인코딩이나 해쉬를 많이 사용하는데 이를 보안의 목적으로 사용하는 경우가 종종있다. 인코딩이나 해쉬는 절대로 보안을 위해서는 사용하면 안되는 것들이다. 인코딩의 경우는 어떤 인코딩인지만 알면 디코딩이 가능하며 해쉬의 경우는 입력값이 동일하면 같은 결과가 나오는 취약점을 가지고 있다.&lt;br&gt;&lt;br&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1002762060.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;337&quot; width=&quot;450&quot; /&gt;&lt;p class=&quot;cap1&quot;&gt;&#039;Encode Test&#039;라는 문자열을 Base64 Encoding한 화면. 역변환으로 원래의 문자열을 알아낼 수 있다.&lt;/p&gt;&lt;/div&gt;&lt;br&gt;지금까지 Paros에 대해서 조금의 사용법을 알아 보았다. 이외에도 더 많은 사용법이 있지만 지금까지 배운 것만으로도 매우 많은 취약점을 우회할 수 있다. 입력값 검증을 회피하거나 SQL Injection, DOM Injection과 같은 Injection공격, Cross-Site Scripting 등등 많은 공격을 하거나 시발점이 될 수 있다.&lt;br&gt;&lt;font size=&quot;4&quot; color=&quot;#ff0000&quot;&gt;&lt;strong&gt;&lt;br&gt;&lt;/strong&gt;&lt;em&gt;&lt;font color=&quot;#ff0000&quot;&gt;We wrote a program called &quot;&lt;strong&gt;Paros&lt;/strong&gt;&quot; for people who need to evaluate the security of their web applications.&lt;br&gt;&lt;/font&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div style=&quot;text-align: right;&quot;&gt;&lt;font size=&quot;4&quot; color=&quot;#ff0000&quot;&gt;&lt;em&gt;&lt;font color=&quot;#ff0000&quot;&gt;-PAROS의 홈페이지 중-&lt;/font&gt;&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;</description>
			<category>Security</category>
			<category>owasp</category>
			<category>paros</category>
			<category>security</category>
			<category>웹취약점</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/111</guid>
			<comments>http://onurmark.co.kr/tc/111#entry111comment</comments>
			<pubDate>Tue, 12 Feb 2008 11:24:05 +0900</pubDate>
		</item>
		<item>
			<title>에너미 앳 더 게이트 (Enemy at the gates)</title>
			<link>http://onurmark.co.kr/tc/110</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;div class=&quot;imageblock left&quot; style=&quot;float: left; margin-right: 10px;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1335333471.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;441&quot; width=&quot;300&quot; /&gt;&lt;/div&gt;감독: 장 자끄 아노&lt;br /&gt;주연: 주드 로, 조셉 파인즈, 레이첼 와이즈&lt;br /&gt;&lt;br /&gt;당신과 다닐로브 같은 사람들은 살아 남아야 해. 책을 많이 읽고 교육 받은 사람들은... 전쟁이 끝난 후 많이 필요할테니까.&lt;br /&gt;&lt;br /&gt;&lt;EM&gt;당신이 살아 남으면? 쓸모없는 바실리 자이체프는 그때 가서 뭘 하죠?&lt;/EM&gt;&lt;br /&gt;&lt;br /&gt;공장에서 일하고 싶어. 할아버지가 공장에 데려간적이 있었지. 한 남자가 있었는데, 난간에 올라 서 있었어. 다른 사람들처럼 푸른 옷을 입고 있었지. 감독하는 사람들은 자신들의 일조차 제대로 이해하지 못했지만... 그 위의 남자에게는 모든게 간단했지, 분명했어. 언젠가 저 사람처럼 될 수 있다면...&lt;br /&gt;&lt;br /&gt;
&lt;DIV style=&quot;TEXT-ALIGN: right&quot;&gt;- 자이체프와 타냐의 대화 중 -&lt;/DIV&gt;</description>
			<category>Civilized living</category>
			<category>civilized living</category>
			<category>영화소개</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/110</guid>
			<comments>http://onurmark.co.kr/tc/110#entry110comment</comments>
			<pubDate>Tue, 12 Feb 2008 02:00:06 +0900</pubDate>
		</item>
		<item>
			<title>Bridge-utils을 사용한 네트워크 bridge 만들기</title>
			<link>http://onurmark.co.kr/tc/109</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;bridge-utils는 NIC(Network Interface Card) 두개를 하나로 묶어 브릿지로 만들어 주는 역할을 한다. 정식 프로젝트 명칭은 &lt;SPAN&gt;IEEE 802.1d ethernet bridging으로 IEEE의 표준 이더넷 브릿지의 구현이다. &lt;BR&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1143220918.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;258&quot; width=&quot;450&quot; /&gt;&lt;p class=&quot;cap1&quot;&gt;이더넷 브릿지 구성 후의 네트워크 구성도&lt;/p&gt;&lt;/div&gt;&lt;BR&gt;위의 그림은 네트워크를 절제한 후 bridge를 적용한 상태의 모습이다. 네트워크 일부분을 절제한 후 브릿지로 구성된 머신을 삽입한 상태이다. 브릿지는 방화벽이나 IPS, IDS에서도 사용되는 기술로 네트워크 일부분에 삽입하여 공격을 차단하거나 탐지하여 트래픽을 조정 할 수 있도록 해주는 방식이다. 예를 들어 iptables와 bridge를 사용하면 브릿지 방식의 방화벽이 되고 snort와 bridge를 사용하면 inline방식의 IDS를 구축할 수 있다. &lt;BR&gt;&lt;BR&gt;과거 linux kernel 2.4 버전에서는 bridge를 사용하기 위해서는 kernel patch를 사용하여 커널 모듈을 올리고 커널 컴파일을 하는 과정이 필요하였으나. 요즘에 나오는 배포판 리눅스(kernel 2.6 이상)에서는 대부분 기본으로 지원하고 있다. 만일 커널 옵션을 살펴봐서 bridge에 관련된 모듈이 설치되어 있지 않다면 모듈을 선택하고 커널을 새로 컴파일 하는 것만으로도 브릿지를 위한 커널을 생성할 수 있다.&lt;BR&gt;&lt;BR&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;Network options ---&amp;gt;&lt;BR&gt;&amp;lt;*&amp;gt; 802.1d Ethernet Bridging &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;nbsp; [*] &amp;nbsp; netfilter (firewalling) support&lt;BR&gt;&lt;BR&gt;* 대부분 위와 같이 커널 옵션 설정을 마칠 수 있는데 일부 커널 버전에서는 다를 수도 있다.&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;A href=&quot;http://sourceforge.net/project/showfiles.php?group_id=26089&quot;&gt;http://sourceforge.net/project/showfiles.php?group_id=26089&lt;/A&gt;&amp;nbsp;에서 bridge-utils를 다운로드 받을 수 있다. 다운로드 받은 후 아래와 같은 명령으로 설치 할 수 있다.&lt;BR&gt;&lt;BR&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;&amp;gt; tar -xvzf bridge-utils-1.4.tar.gz&lt;BR&gt;&amp;gt; cd bridge-utils-1.4&lt;BR&gt;&amp;gt; autoconf&lt;BR&gt;&amp;gt; ./configure&lt;BR&gt;&amp;gt; make &amp;amp;&amp;amp; make install&lt;BR&gt;* autoconf가 설치되어 있지 않을 경우에는.... 그냥 autoconf를 설치하자.. 그게 확실히 간단하다.&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;브릿지를 구성하기 위해서는 최소 2개의 NIC가 필요하다. 서버 장비의 경우에는 포트가 10~20개인 것도 있지만 일반 PC의 경우 대부분 하나의 NIC만 있을 것이다. 어떻게든 구해서 2개를 달고 드라이버를 설치해주면 두개의 장치를 볼 수 있을 것이다. 설명을 간단하게 하기 위해 2개의 NIC가 있는 상태를 가정하고 eth0, eth1이라고 명명하겠다. &lt;BR&gt;&lt;BR&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;브릿지 설정&lt;BR&gt;&amp;gt; modprobe bridge &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // bridge를 커널 모듈 형식으로 작성했을 경우에만 적재해 주면 된다.&lt;BR&gt;&amp;gt; brctl addbr br0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; // br0의 이름으로 브릿지를 생성한다.&lt;BR&gt;&amp;gt; brctl addif br0 eth0 &amp;nbsp; &amp;nbsp;&amp;nbsp; // br0브릿지에 eth0을 추가한다.&lt;BR&gt;&amp;gt; brctl addif br0 eth1 &amp;nbsp; &amp;nbsp;&amp;nbsp; // br0브릿지에 eth1을 추가한다.&lt;BR&gt;&amp;gt; brctl stp br0 off &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Spanning-Tree Protocol 사용 유무를 설정. 자신의 상황에 맞게 설정 하자&lt;BR&gt;&lt;BR&gt;* STP(Spanning-Tree Protocol)란 브릿지를 redundancy구성을 할 경우. 즉, 이중화 할 경우 브릿지 loop가 발생할 수 있는데 이를 제거하거나 형상(Topology) 관리를 할 때 사용하는 프로토콜로써 이중화 하지 않았을 경우에는 off로 설정하자.&lt;BR&gt;&amp;nbsp;&lt;BR&gt;IP 설정&lt;BR&gt;&amp;gt; ifconfig eth0 0.0.0.0 &amp;nbsp; &amp;nbsp; // eth0를 0.0.0.0으로 초기화&lt;BR&gt;&amp;gt; ifconfig eth1 0.0.0.0 &amp;nbsp; &amp;nbsp; // eth1을 0.0.0.0으로 초기화&lt;BR&gt;&amp;gt; ifconfig br0 &amp;lt;IP_ADDR&amp;gt; netmask &amp;lt;NETMASK&amp;gt; up&lt;BR&gt;&amp;gt; route add -net 0/0 gw &amp;lt;GATEWAY&amp;gt;&lt;BR&gt;&lt;BR&gt;* IP를 꼭 부여할 필요는 없다. 단순히 ifconfig br0 up 만으로도 통신은 브릿지 통신은 가능하나 브릿지 머신에 접속하기 위해서 IP를 부여한 것이다.&lt;/DIV&gt;&lt;BR&gt;자 이 것으로 브릿지의 모든 구성은 완료되었다. 네트워크를 절제 한 후 브릿지 장비를 집어넣고 통신이 되는지 확인만하면 모든것이 완료된다.</description>
			<category>Linux</category>
			<category>brctl</category>
			<category>bridge</category>
			<category>linux</category>
			<category>네트워크</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/109</guid>
			<comments>http://onurmark.co.kr/tc/109#entry109comment</comments>
			<pubDate>Mon, 11 Feb 2008 15:26:49 +0900</pubDate>
		</item>
		<item>
			<title>국보 1호 숭례문이 무너졌다.</title>
			<link>http://onurmark.co.kr/tc/108</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;P&gt;&lt;div&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1380414898.jpg&quot;  /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1402619610.jpg&quot;  /&gt;&lt;/div&gt;무너져 내리는 숭례문과 전소된 후의 숭례문&lt;br /&gt;서울 올라온지 1년이 지났지만 가보지 않은 곳이 많다. 국보 1호 숭례문도 그 중 하나인데.. 이제는 보고 싶어도 복원될 때까지 기다리는 수 밖에 없겠네.. 겨우 3시간 40분 만에 국보가 붕괴되다니.. 참 쉽게 사라지는 구나.. &lt;/P&gt;</description>
			<category>일상다반사</category>
			<category>숭례문</category>
			<category>일상다반사</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/108</guid>
			<comments>http://onurmark.co.kr/tc/108#entry108comment</comments>
			<pubDate>Mon, 11 Feb 2008 09:29:27 +0900</pubDate>
		</item>
		<item>
			<title>Snort를 이용한 네트워크 침입탐지 시스템(IDS) 구축하기</title>
			<link>http://onurmark.co.kr/tc/107</link>
			<description>&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-nd/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;참조: &lt;A href=&quot;http://blog.naver.com/nonce4?Redirect=Log&amp;amp;logNo=140028166905&quot;&gt;http://blog.naver.com/nonce4?Redirect=Log&amp;amp;logNo=140028166905&lt;/A&gt;&lt;BR&gt;참조: &lt;A href=&quot;http://dan.drydog.com/apache2php.html&quot;&gt;http://dan.drydog.com/apache2php.html&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;작성일시: 2008년 2월 1일&lt;BR&gt;작성자 &amp;nbsp; : 박재영(&lt;A href=&quot;mailto:jypark@secuwiz.net&quot;&gt;jypark@secuwiz.net&lt;/A&gt;)&lt;BR&gt;&lt;BR&gt;Snort는 네트워크 침입탐지 프로그램으로 libpcap 라이브러리를 사용하여 네트워크 패킷을 검사하여 불법적인 네트워크 접근이나 스니핑, 스캔 등등 네트워크 공격을 탐지하는 툴이다. 전세계적으로 가장 많이 사용되는 IDS로써 사실표준(De facto)이다. (자세한 정보: &lt;A href=&quot;http://www.snort.org/&quot;&gt;http://www.snort.org/&lt;/A&gt;)&lt;BR&gt;&lt;BR&gt;네트워크 구성&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1295175892.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;270&quot; width=&quot;450&quot; /&gt;&lt;p class=&quot;cap1&quot;&gt;네트워크 구성도&lt;/p&gt;&lt;/div&gt;위와 같이 DMZ 구역에 설치 할 예정이며 외부에서 들어온 패킷들 중 방화벽을 통과한 트래픽에 대하여 침입탐지를 수행하게 된다.&lt;BR&gt;&lt;BR&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;필요한 라이브러리&lt;BR&gt;libpcap(패킷 캡춰 라이브러리) 다운로드: &lt;A href=&quot;http://www.tcpdump.org/&quot;&gt;http://www.tcpdump.org&lt;/A&gt;&lt;BR&gt;pcre(Perl 호환 정규식 라이브러리) 다운로드: &lt;A href=&quot;http://www.pcre.org/&quot;&gt;http://www.pcre.org&lt;/A&gt; &lt;BR&gt;&lt;BR&gt;어플리케이션&lt;BR&gt;Snort 다운로드: &lt;A href=&quot;http://www.snort.org/&quot;&gt;http://www.snort.org&lt;/A&gt; &lt;BR&gt;Snortrules 다운로드: &lt;A href=&quot;http://www.snort.org/&quot;&gt;http://www.snort.org&lt;/A&gt;&lt;BR&gt;Apache 다운로드: &lt;A href=&quot;http://www.apache.org/&quot;&gt;http://www.apache.org&lt;/A&gt;&amp;nbsp;&lt;BR&gt;PHP 다운로드: &lt;A href=&quot;http://www.php.org/&quot;&gt;http://www.php.org&lt;/A&gt;&amp;nbsp;&lt;BR&gt;MySQL 다운로드: &lt;A href=&quot;http://www.mysql.org/&quot;&gt;http://www.mysql.org&lt;/A&gt;&lt;BR&gt;ADODB(php로 작성된 ADO객체): &lt;A href=&quot;http://sourceforge.net/projects/adodb/&quot;&gt;http://sourceforge.net/projects/adodb/&lt;/A&gt;&lt;BR&gt;BASE 다운로드: &lt;A href=&quot;http://sourceforge.net/projects/secureideas/&quot;&gt;http://sourceforge.net/projects/secureideas/&lt;/A&gt;&lt;/DIV&gt;&lt;BR&gt;동작방식을 간단히 보면 Snort가 libpcap을 사용하여 패킷을 캡춰하고 정규식으로 작성된 룰을 기반으로 pcre를 사용하여 매칭을 한다. 공격으로 판단된 로그는 MySQL DB에 남기게 되고 사용자는 PHP로 작성된 BASE로 접속하여 웹페이지에서 로그를 쉽게 볼 수 있게된다.&lt;BR&gt;&lt;BR&gt;1) 라이브러리 설치&lt;BR&gt;libpcap과 pcre설치는 아래와 같은 명령으로 설치 할 수 있다.&lt;BR&gt;/usr/local/src 밑에서 압축을 해제 한 다음 아래와 같이 명령어를 입력한다.&lt;BR&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;&amp;gt; ./configure&lt;BR&gt;&amp;gt; make &amp;amp;&amp;amp; make install&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;2) 어플리케이션 설치&lt;BR&gt;MySQL 설치는 생략한다. 웹 문서에도 많이 나와 있으며 홈페이지에서도 쉽게 나와 있으므로 참조를 하자.&lt;BR&gt;MySQL 설치: &lt;A href=&quot;http://www.onurmark.co.kr/4&quot;&gt;http://www.onurmark.co.kr/4&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;Snort를 /usr/local/src에 압축을 해제하고 아래와 같은 명령어를 입력한다. 이때 --with-mysql 옵션은 MySQL이 설치된 디렉토리를 지정한다.(위치가 다를 수 있으니 확인)&lt;BR&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;&amp;gt; ./configure --with-mysql=/usr/local/mysql --enable-dynamic&lt;BR&gt;&amp;gt; make &amp;amp;&amp;amp; make install&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;snort라는 그룹과 사용자를 등록하고 룰과 로그를 남길 디렉토리를 만든다.&lt;BR&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;&amp;gt; groupadd snort&lt;BR&gt;&amp;gt; useradd -g snort snort -s /sbin/nologin&lt;BR&gt;&amp;gt;&lt;BR&gt;&amp;gt; mkdir -p /etc/snort/rules&lt;BR&gt;&amp;gt; mkdir /var/log/snort&lt;BR&gt;&amp;gt;&lt;BR&gt;&amp;gt; cp etc/* /etc/snort&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;snortrules는 /etc/snort에 압축을 해제하면 된다.&lt;BR&gt;&lt;BR&gt;MySQL 설정은 다음과 같이한다. 다른 이름으로 줘도 상관없다.&lt;BR&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;User: snort&lt;BR&gt;PW: snort&lt;BR&gt;DB: snort&lt;BR&gt;&lt;/DIV&gt;
&lt;P&gt;사용자 계정과 패스워드를 지정하고 snort라는 DB를 생성하여 사용자가 snort라는 DB에 권한을 가지도록 설정한다. 기본적인 내용이므로 이 문서에는 설명하지 않도록 하겠다.&lt;BR&gt;&lt;BR&gt;snort 소스파일에 schems/create_mysql이라는 DB 덤프 파일이 들어 있다. 아래의 명령어로 테이블들을 생성한다.&lt;BR&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;&amp;gt; mysql -u snort -p snort &amp;lt; create_mysql&lt;BR&gt;Enter password: *****&lt;BR&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;snort DB를 확인해보면 테이블들이 생성된 것을 확인 할 수 있다.&lt;BR&gt;&lt;BR&gt;Apache 와 PHP 설치&lt;BR&gt;아파치를 /usr/local/src에 압축 해제 후 다음 명령어로 설치를 진행하자&lt;BR&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;&amp;gt; ./configure --prefix=/usr/local/apache \&lt;BR&gt;&amp;nbsp;--enable-so \&lt;BR&gt;&amp;nbsp;--enable-cgi \&lt;BR&gt;&amp;nbsp;--enable-info \&lt;BR&gt;&amp;nbsp;--enable-rewrite \&lt;BR&gt;&amp;nbsp;--enable-speling \&lt;BR&gt;&amp;nbsp;--enable-usertrack \&lt;BR&gt;&amp;nbsp;--enable-deflate \&lt;BR&gt;&amp;nbsp;--enable-ssl \&lt;BR&gt;&amp;nbsp;--enable-mime-magic&lt;BR&gt;&amp;gt; make &amp;amp;&amp;amp; make install&lt;BR&gt;&lt;/DIV&gt;
&lt;P&gt;빌드 옵션에 대한 내용은 Apache홈페이지의 Document에 자세하게 나와 있으니 참조하자&lt;BR&gt;&lt;BR&gt;PHP를 /usr/local/src에 압축 해제 후 아래와 같이 입력하자&lt;BR&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;&amp;gt; ./configure \&lt;BR&gt;&amp;nbsp;--with-apxs2=/usr/local/apache/bin/apxs \&lt;BR&gt;&amp;nbsp;--with-mysql=/usr/local/mysql \&lt;BR&gt;&amp;nbsp;--prefix=/usr/local/apache/php \&lt;BR&gt;&amp;nbsp;--with-config-file-path=/usr/local/apache/php \&lt;BR&gt;&amp;nbsp;--enable-force-cgi-redirect \&lt;BR&gt;&amp;nbsp;--disable-cgi \&lt;BR&gt;&amp;nbsp;--with-zlib \&lt;BR&gt;&amp;nbsp;--with-gettext&lt;BR&gt;&amp;gt; make &amp;amp;&amp;amp; make install&lt;BR&gt;&amp;gt; cp -p php.ini.recommended /usr/local/apache/php/php.ini&lt;BR&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;Apache와 PHP가 설치 되었으면 /usr/local/apache/conf/httpd.conf파일을 아래와 같이 수정한다.&lt;BR&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;
&lt;P&gt;# Make sure there&#039;s only **1** line for each of these 2 directives:&lt;BR&gt;# Use for PHP 4.x:&lt;BR&gt;#LoadModule php4_module &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; modules/libphp4.so&lt;BR&gt;#AddHandler php-script &amp;nbsp; php&lt;/P&gt;
&lt;P&gt;# Use for PHP 5.x:&lt;BR&gt;LoadModule php5_module &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; modules/libphp5.so&lt;BR&gt;AddHandler php5-script php &lt;/P&gt;
&lt;P&gt;# Add index.php to your DirectoryIndex line:&lt;BR&gt;DirectoryIndex index.html index.php&lt;/P&gt;
&lt;P&gt;AddType text/html &amp;nbsp; &amp;nbsp; &amp;nbsp; php&lt;/P&gt;
&lt;P&gt;# PHP Syntax Coloring&lt;BR&gt;# (optional but useful for reading PHP source for debugging):&lt;BR&gt;AddType application/x-httpd-php-source phps&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;ADODB와 BASE를 /usr/local/apache/htdocs에 압축을 해제하면 모든 설치가 완료 되었다.&lt;BR&gt;&lt;BR&gt;마지막으로 snort와 BASE의 환경 설정만 남았다. /etc/snort/snort.conf 파일을 자신의 환경에 맞게 설정한 후 다음의 내용을 추가한다.&lt;BR&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;var RULE_PATH=/etc/snort/rules&lt;BR&gt;output database:log,mysql,user=snort password=snort dbname=snort host=localhost&lt;BR&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;/usr/local/apache/htdocs/base/base_conf.php.dist 파일을 base_conf.php파일로 복사한 다음 수정한다.&lt;BR&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;
&lt;P&gt;$DBlib_path=&quot;/usr/local/apache/htdocs/adodb&quot;;&lt;BR&gt;$DBtype=&quot;mysql&quot;;&lt;/P&gt;
&lt;P&gt;$alert_dbname=&quot;snort&quot;;&lt;BR&gt;$alert_host=&quot;localhost&quot;;&lt;BR&gt;$alert_port=&quot;3306&quot;;&lt;BR&gt;$alert_user=&quot;snort&quot;;&lt;BR&gt;$alert_password=&quot;snort&quot;;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;설정이 완료 된 후 MySQL을 실행하고 Apache를 실행하고 snort를 실행한 후 &lt;A href=&quot;http://[설치된IP]/base&quot;&gt;http://[설치된IP]/base&lt;/A&gt;로 접속하면 다음과 같은 화면이 보일 것이다.&lt;BR&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #e4e4e4&quot;&gt;&amp;gt; /usr/local/mysql/bin/mysqld_safe &amp;amp;&lt;BR&gt;&amp;gt; /usr/local/apache/bin/apachectl start&lt;BR&gt;&amp;gt; snort -i eth0 -c /etc/snort/snort.conf -D&lt;BR&gt;-i 옵션은 감시할 NIC카드를 선택하고 -c는 설정파일을 지정하고 -D는 데몬으로 띄우겠다는 옵션이다.&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://onurmark.co.kr/tc/attach/1/1172688634.jpg&quot; alt=&quot;사용자 삽입 이미지&quot; height=&quot;382&quot; width=&quot;450&quot; /&gt;&lt;/div&gt;&lt;BR&gt;다른 호스트에서 스노트가 설치된 PC로 nmap으로 포트 스캐닝을 수행하고 로그가 남는지 확인해 보자&lt;BR&gt;&amp;gt; nmap -O -sS [snort IP]&lt;BR&gt;&lt;BR&gt;자 이제 모든 설치가 완료 되었고 정상적으로 수행하는 것도 확인을 했다. 이제 마지막으로 남은 것은 브릿지 유틸을 사용하여 NIC카드 2개를 브릿지 한다음 snort가 브릿지를 탐지하도록 설정하면 완료가 된다. brctl을 사용하여 브릿지를 구성한 후 snort를 실행할 때 -i [브릿지 이름] 옵션을 주면 된다.&lt;BR&gt;&lt;BR&gt;브릿지 설치에 대한 자세한 정보: &lt;A href=&quot;http://www.onurmark.co.kr/109&quot;&gt;http://www.onurmark.co.kr/109&lt;/A&gt;&lt;/P&gt;</description>
			<category>Security</category>
			<category>bridge</category>
			<category>IDS</category>
			<category>linux</category>
			<category>security</category>
			<category>snort</category>
			<author>(느긋나긋)</author>
			<guid>http://onurmark.co.kr/tc/107</guid>
			<comments>http://onurmark.co.kr/tc/107#entry107comment</comments>
			<pubDate>Thu, 31 Jan 2008 21:20:26 +0900</pubDate>
		</item>
	</channel>
</rss>
