posted by 구름너머 2012. 12. 28. 09:44

진실의 모임까페 에서...

http://cafe.daum.net/heu3339/8JV9/7

 

 

세상이 어둡다.

진실이 사라지고 거짓이 판을 치기 때문이다.

종교도, 교육도 진리의 빛을 잃어버려 옳고 그름을 가르치지 못한다.

그래서 사람들은 양심을 잃어 버렸다.

하늘을 보아도 진리와 하늘의 뜻은 보이지 않고

무의미와 혼돈 만이 가득하다.

그래서 사람들은 배우면 배울수록 더욱 이기적이고 비양심적이 되고

자신의 출세와 욕망을 위해 수단과 방법을 가리지 않는

인간의 탈을 쓴 짐승이 양산되고 있는 것이다.

진실이 사라진 시대를 말세라 한다.

밝고 양심있는 사회는 잘못이 있으면 서로 지탄하고 분노를 하기에

사람들은 세상이 두려워 문제를 저지르지 않는다.

그러나 말세에서는 양심이 사라져

어둠과 거짓을 당연한 것으로 여기고 분노마저 하지 않는다.

어두운 세상은 음지와 같아서

모든 생명을 시들게 만들고 사회를 피폐하게 만든다.

이런 세상은 부정부패와 정실이 아니면 살아갈 수 없기에

사람들은 성실히 살아갈 필요를 느끼지 못해

그 사회는 활력을 잃고 불행해지는 것이다.

그러나 밝은 세상은 양지와 같아서

모든 존재가 생명력을 받아 자신의 능력을 최대로 발휘하기 때문에

풍성한 열매를 맺게되는 것이다.

밝은 세상은 자유롭고 모든 것이 이치대로 움직여

일한 만큼 성과가 돌아오기 때문에

모든 사람들은 자신의 능력을 최고도로 발휘하여 노력하게 되고

그 결과 풍요롭고 한이 없는 좋은 세상이 만들어지는 것이다.

그래서 밝은 세상에서는 성공하기 위해서 성실하게 일하고 이치대로 살아야 하지만

어두운 세상에서는 성실하게 일하면 바보취급을 받기 때문에

모두 줄을 잡으려고 애를 쓰고 뇌물과 아부와 거짓말로 세월을 보내는 것이다.

그러니 세상은 더욱 어둠과 불행과 가난과 한과 절망 속으로 치닫는 것이다.

그러면 어떻게 해야 절망적인 말세의 어둠을 씻어내고

밝고 정의롭고 양심적인 좋은 세상을 만들 것인가?

좋은 세상은 좋은 사람이 있어야 만들어지며

좋은 사람은 좋은 가르침이 있어야 만들어진다.

따라서 좋은 가르침이란 인간을 인간답게 하는 교육을 하는 것이다.

그러면 어떻게 인간을 인간답게 만들 것인가?

그러기 위해서는 인간을 인간답게 만들기 위해

무엇을 가르쳐야 하는지, 왜 그것을 가르쳐야 하는지

분명히 제시할 수 있어야 한다.

그러나 지금 세상은 진리의 빛을 상실했기 때문에

인간이 왜 사는지, 교육은 무엇을 가르쳐야 하는지

왜 인간에게 인간 교육을 해야 하는지

아무도 알지 못하고 그 근거가 무엇인지도 알지 못한다.

그러니 교육이 다람쥐 쳇바퀴 돌 듯 헛돌고 있는 것이다.

인간이 인간답게 되기 위해서는 양심을 길러주어야 한다.

그 이유는 인간이 짐승과 달리 양심이 있기 때문이다.

양심이 있기에 인간은 잘못을 범하지 않고

이치를 어기지 않으며 남을 해치지 않는다.

인간의 마음 속에 양심이 자리잡으면

마음에는 평화와 행복이 존재하고

세상으로 나아가면 정의가 되어 질서와 번영을 가져다 준다.

이 양심을 길러 인간은 더욱 지혜롭고 강해지며

마침내 인간완성에 이르게 되는 것이다.

그러면 양심이란 무엇인가?

그것은 거짓을 하지 않는 것, 외면해서는 안될 도리를 하는 것,

자기가 해야 할 일과 지켜야 할 일을 하는 것이다.

한 사회에 양심이 있으면

배우지 않아도 사회를 지킬 수 있고

모든 문제를 스스로 해결할 수 있으며

하나로 단합하여 살기좋은 부강한 나라로 만들 수 있다.

그러나 우리나라 교육 속에는 언제부터 양심과 정의가 사라졌으니

그 이유는 군사정권과 같은 비정통적인 정권이 들어서

양심과 정의를 세상에 권할 수 없었기 때문이다.

학생들에게 양심과 정의를 길러주면 군사정권과 유신을 부정할 것이 뻔했기 때문이다.

지금 우리 나라 교육은 양심과 정의 대신

음주가무와 갖가지 쾌락, 출세와 욕망, 허영과 사치, 무책임과 무관심을 가르치고

참된 실상의 진리대신 관념적 지식과 이데올르기와 형식논리를 가르칠 뿐이다.

그래서 배우면 배울수록 욕망이 커지고

자신의 이익을 위해 수단과 방법을 가리지 않는 사악하고 이기적인 인간이 되며

진실이 사라지고 형식논리가 앞서

비양심적이고 거짓말 잘하는 자가 출세하는 현상이 벌어지고 있는 것이다.

따라서 인간을 인간답게 만드는 인간성교육이 우리사회에 가장 중요하며

이를 위해 양심과 정의를 가르쳐야 하는 것이다.

양심을 가르치기 위해

먼저 사실과 인과법을 가르쳐야 한다.

사실을 가르치면 거짓과 부실함이 사라지고 생활에 밝은 사람이 되며

해야 할 일과 하지 말아야 할 일을 알게 된다.

망한 일을 보고 망하게 된 원인을 밝히고 흥한 일을 보고 흥한 원인을 밝히면

사람들은 거짓에 속지않고 지혜로워지며

왜 이치대로 좋은 원인을 지으며 살아야 하는지를 알게 되는 것이다.

그리고 세상이 완전한 법계로 한점 어김없는 이치가 자리잡고 있으며

사랑과 공덕으로 인간이 완성된다는 것을 가르쳐주어야 한다.

세상이 말세인 이유는 진리가 사라지고

인간이 왜 인간답게 살아야 하는지 이유가 보이지 않기 때문이다.

이렇게 세상의 원리인 진리가 무시되고

삶의 의미와 가치가 사라졌으며

인간의 근본인 양심이 마비되었기에

세상을 어둡고 타락한 오탁악세(말세)라 하는 것이다.

따라서 학생들에게 이 세상은 완전한 이치 속에 작용하는 조화체이며

인간은 신성에 이를 수 있는 의미있고 가치있는 존재이며

자신의 행위는 반드시 자신에게 그에 상응한 결과를 가져온다는

우주의 실상과 법칙을 분명히 알게 해야 한다.

완전한 세상 속에서 이치대로 살기만 하면

인간의 의미와 가치를 찾을 수 있고

인간완성으로 나갈 수 있다는 것을 가르치는 것이

바른 정신과 좋은 품성을 함양하는 인성교육의 핵심인 것이다.

인성교육은 핵심은 거짓말 안하기다.

너무나 작아보이지만 이보다 소중한 가치와 덕목은 없다.

인간이 정신의 완성을 이룬다는 것은 100% 진실해지는 것을 말한다.

마음이 진실해져 아무 업도 없으면 그 마음이 바로 해탈인 것이다.

거짓을 하지 않아야 한다는 철저한 자각이 있어야

양심과 선근이 자란다.

한번 거짓을 하게 되면

그것이 습이 되어 반드시 다시 거짓을 하게 되고

그것이 업이 되어 그 영혼을 망치게 되는 것이다.

따라서 진실해진다는 것은

선근의 시작이며 인격완성의 시작이며

좋은 사회의 시작인 것이다.

모든 진실이 사라진 세상을 말세라 한다.

세상을 둘러보아도 거짓투성이어서 믿을 곳이 아무데도 없으니

사람들은 서로 불신하고 화합하지 못하고 미워해 스스로 붕괴하고 마는 것이다.

따라서 어린 시절에 엄한 가르침으로 절대 거짓을 하지 못하게 하면

그 아이는 어둠없는 맑은 정신을 얻어

항상 지혜롭고 당당하고 용기있게 살아가게 되는 것이며

선근을 길러 언젠가 그 영혼은 깨달음을 얻게 되는 것이다.

이러한 인성교육은 어린 시절에 시키는 것이 효과적이다.

성인들은 이미 어두운 세상의 흐름에 물들고

업과 욕망의 소용돌이에 빠져 있어

벗어나기가 거의 불가능하기 때문이다.

따라서 아직 세상의 혼탁한 흐름에 물들지 않고

자신이 지니고 태어난 근본이 밖으로 표출되기 전인 아이들을

어둠에서 멀리하고 좋은 덕목과 바른 이치를 가까이 하게 하면

자신이 지니고 나온 업의 구속에서 벗어나

일생 동안 밝은 정신과 좋은 품성으로 살아갈 수 있게 된다.

왜냐하면 진리의 빛이 자신 속에 강하게 비치면

마음속에 잠재되어 있던 탁한 업들이 힘을 잃고 활동하지 못하기 때문에

업의 구속에서 벗어나 새로운 운명을 살게 되는 것이다.

모든 것은 순환과 활동을 통해 자신의 세력을 이어나간다.

따라서 업도 진리의 빛에 의해 작용을 멈추게 되면

순환하여 되풀이되는 힘을 잃고 저절로 소멸하고 마는 것이다.

그러므로 어린 시절에 밝은 진리의 빛을 주입하는 것이

좋은 인간과 밝은 사회를 만드는 핵심이며

인성교육의 요체이다.

한 국가에서 교육을 중시해야 하는 이유는

교육이 그 사회가 나아갈 바와 필요로 하는 것을

가르치고 육성할 수 있기 때문이다.

따라서 교육이 세상을 지키고 가꾸는 진리를 밝혀

나라를 부강하게 만드는 좋은 덕목과 자질을 아이들에게 집중적으로 전할 수 있다면

그 나라는 진리와 우수한 국민의 힘으로 영원히 번영하게 되는 것이다.

물론 어린이들에게 교육을 하는 것은 당장 효과를 보기 어렵다.

사회의 힘을 구성하고 있는 기성세대들이

말세의 욕망과 자신의 업의 충동에 따라 세상을 난도질하고 있기 때문이다.

이러한 세상의 오탁악류와 별도로

어린이들에 대한 인성교육을 국가백년대계로 생각하여

정권과 관계없이 일관성있게 실시한다면

아이들이 성인이 되는 20년후가 되면 사회는 급변하기 시작할 것이며

아이들이 국가의 중추세력이 되는 40년 후가 되면

그 나라는 세계 최고 수준의 국민의식을 지닌 세계 최강국이 될 것이다.

즉 초등학교 때부터 거짓말을 절대 하지 않고 남에게 해를 끼치지 않으며

자신의 행위가 반드시 자신과 세상에 결과를 가져온다는 우주의 철칙을 가르치게 되면

아이는 양심과 정의를 지켜 현실에 바르고 정확하게 적응해감으로써

참되고 보람찬 인생을 살게 되며

인격완성으로 향하는 바람직한 인생을 살게되는 것이다.

이와 같이 좋은 품성과 훌륭한 자질을 지닌 국민은

질서가 바로잡힌 건강한 세상을 만들게 되며

정의가 실현되는 밝은 세상 속에서

자신의 노력이 가져올 결과를 기대하며 최선을 다함으로써

영원히 흔들리지 않는 백년대계를 세우게 되는 것이다.

이것은 너무나 작아보이지만 너무나 중요한

진리를 본 자만이 말할 수 있는

인간세상의 비밀인 것이다.

이것이 바로 인성교육의 요체이며

교육이 해야 할 일 중 가장 중요한 일인 것이다.

'세상의진리방' 카테고리의 다른 글

자연의 가르침  (0) 2013.06.28
행복과 평화  (0) 2013.06.19
살수대첩의 살수는?  (0) 2012.06.11
별중의 별 ...우주관측 사상 최고 사진들  (0) 2012.05.27
112년 4월 27일 16시 6분에 작성한 글입니다.  (0) 2012.04.27
posted by 구름너머 2012. 12. 27. 18:05

Practically Useful UNIX Security Administration
김휘강 (Sakai Kim) sakai@major.kaist.ac.kr

http://cafe.naver.com/define/82

 

======================================================================================
 

Contents


General Security Administration II 부(지난 호)


Process 관리, 감시법


General Security Administration III 부(이번 호)


시스템의 로그 관리 및 분석법.

이번호에서는 지난호에 이어 General Security Administration 중 System log file Management , 에 대해 다루겠다. 이번 호에서 중점적으로 다룰 내용은 시스템에 존재하는 로그화일들을 분석하고 문제점을 발견하는 법, 이를 통해서 해커가 침입을 했는지 유무를 구분해 내고 추적하는 법에 대해 살펴보도록 하겠다.

 


General Security(로그분석)
1. 로그화일들
시스템 내부에는 어떠한 로그화일들이 생기는가? 물론 구동시키고 있는 프로그램이나 daemon 에 따라 더 많이 존재할 수도 있고, 덜 존재할 수도 있지만, 일반적으로 다음과 같은 로그화일들이 존재하고 있다.

 


sulog - su 명령어 관련 기록


.history - 사용자 히스토리 화일


utmp - 현재 사용자 리스트.


wtmp - 로긴, reboot 정보.


lastlog - 사용자 최종 로긴 정보.


pacct - 사용자 명령 정보.


messages - 커널 에러, 리부팅 메시지.


syslog - 메일 디버깅 정보.


 

각각에 대해 자세히 살펴보기로 하자.

1.1. sulog
모든 UNIX 시스템에서는 superuser 가 되는 시도를 logging (메시지를 화일로 저장해 기록하는 것) 하도록 구현되어 있다. 이러한 로그화일들은 누가 superuser 가 되었는지 조사할 수 있는 자료가 되기 때문에 아주 유용하다.

superuser 가 되는 명령어로 su 가 있고, su에 대한 log 화일인 sulog 는 다음의 디렉토리에 보관이 되게 된다.

  


SCO UNIX , Solaris

/etc/default/su 화일에 SULOG 화일의 위치를 지정해 줄 수 있음


AIX

/var/adm/sulog


Digital UNIX

/var/adm/sialog


HP-UX 9.x

/usr/adm/sulog


HP-UX 10.x , IRIX

/var/adm/sulog


SunOS

Syslog facility 를 사용하여 메시지를 남기게 된다.


Linux

/etc/login.defs 에서 SULOG 화일의 위치를 지정해 줄 수 있음.


sudo 를 사용하는 경우

/var/adm/sudo.log 에 저장이 된다.


 

su 는 또한 argument 를 주어 su username 을 하면 username 으로 로긴할 수 있으므로 sulog 에는 root 로 su 한 것 외에도 다른 유저로 su 를 실행시킨 결과까지 logging 이 되고 있다.

다음은 그 화일의 내용이다. 다음의 형태로 저장이 된다.

SU 날짜 시간 성공유무(+/-) tty fromID-toID

SU 04/18 18:41 + ttypb guard-wkshin
SU 04/18 18:44 + ttypb guard-wjshin
SU 04/19 00:50 + ttyp2 chester-guard
SU 04/19 06:27 + ttyp1 sakai-root
SU 04/19 06:29 + ttyp1 sakai-root
SU 04/19 06:29 + ttyp1 sakai-root
SU 04/19 06:32 + ttyp1 sakai-root


 

위의 화일을 보면 sakai 란 사용자가 root 로 4/19 일 6:32 분에 ttyp1 에서 su 를 했음을 알 수 있다.

1.2. .history
% history
1 12:06 ls
2 12:06 clear
3 12:06 finger
4 12:06 cd /usr
5 12:07 bdf
6 12:07 cd /users
7 12:07 cd syscore
8 12:07 ls -asl
9 12:07 vi bounds
% cat .history
ls
clear
finger
cd /usr
bdf
cd /users
cd syscore
ls -asl
vi bounds


 

history 는 사용자가 어떠한 명령을 실행시켰는가를 보여주는 명령이고, 이명령에 대한 로그화일은 홈디렉토리의 .history 화일이다. 이 화일은 단순히 shell 의 history 관련 명령이나 history control 을 위해 있는 것은 아니다.

해커의 침입이 있을 때 root 의 상태에서 어떠한 명령을 내렸는지 알수도 있는 것이다. 하지만 해커가 어떠한 사용자의 account 로 침입을 했다면, 작업을 하고 난 뒤, 증거를 없애기 위해

% set history=0

등과 같은 명령을 수행하여 기록된 history 를 없애는 것이 보통이므로 그다지 큰 기대를 하긴 어렵지만, 해커가 실수로 저 명령을 수행하지 않았을 수도 있으니 관심을 가질 필요는 있다고 생각한다.

.cshrc , .login 과 같은 startup 화일에서 history 를 보관하도록 지정해 두는 것이 좋다.


csh 계열 사용자인 경우

set history = 100

set savehist = 100


ksh 계열 사용자

export HISTSIZE = 100

export HISTFILE= /var/adm/.rh


1.3. utmp
utmp 는 현재 사용자의 리스트를 저장하는 화일이다. w, who 와 같은 명령을 통해 현재 사용자 상황을 파악할 수 있다. 보통 /etc/utmp 나 /var/adm/utmp 로 저장이 된다.

1.4. wtmp
wtmp 는 utmp 와 같은 data structure 를 사용하고 있는데, 주로 login 이나 reboot 와 관련된 정보를 담고 있다. 보통 /etc/wtmp 나 /var/adm/wtmp 로 저장이 된다.

1.5. lastlog
lastlog 는 사용자가 마지막으로 로긴한 것은 언제인지에 대한 정보가 저장이 된다. 보통 lastlog 는 /var/adm/lastlog 로 저장이 되고, AIX 의 경우에는 /etc/security 디렉토리에 저장이 된다.

last명령을 통해서 lastlog, wtmp 에 대한 정보를 볼 수 있는데 ,argument 로 keyword 를 주어 해당사항만 볼 수 있는 장점이 있다. 다음은 그 예이다.

$ last
sakai pts/14 A.miso.co.kr Fri Nov 8 15:05 계속 로그인 중
vector console Fri Nov 8 14:05 - 14:22 (00:16)
gangster pts/13 B.miso.co.kr Fri Nov 8 13:15 - 13:24 (00:09)
jahng ftp night Fri Nov 8 13:03 - 13:08 (00:04)
$ last console
root console Mon Apr 21 12:07 - 12:08 (00:00)
w3master console Mon Apr 21 12:06 - 12:07 (00:00)
root console Mon Apr 21 11:48 - 11:59 (00:10)
root console Mon Apr 21 11:23 - 11:37 (00:13)
root console Mon Apr 21 11:12 - 11:22 (00:09)
$ last reboot
reboot system boot Fri Apr 18 22:15
reboot system boot Thu Apr 17 09:19
reboot system boot Thu Apr 17 00:17
reboot system boot Wed Apr 9 20:43
$ last sakai -3
sakai pts/12 eve.kaist.ac.kr Fri Nov 8 12:51 계속 로그인 중
sakai pts/0 cspc15.kaist.ac. Fri Nov 8 12:25 계속 로그인 중
sakai pts/0 cspc15.kaist.ac. Fri Nov 8 12:00 - 12:23 (00:22)
.login 에 last login 로긴시마다 last -3 을 이용하여 침입당했는지 점검하는 것도 좋은 방법이다.


1.6. pacct
모든 사용자가 로긴한 후 로그아웃할 때가지 입력한 command 와 시간, 작동된 tty 등을 저장한다. 하지만 로그화일의 사이즈가 쉽게 증가하여 시스템의 리소스를 많이 차지하므로 대부분의 시스템에서는 이를 logging 하고 있지 않으나, logging 한다면 시스템에 문제가 생겼을 때 hacker 를 추적하고, 이 hacker 가 무슨 작업을 했는지를 쉽게 알 수 있게 된다. 단, command 의 argument 로 무엇을 입력하였는지까지는 로그가 남지 않는 단점이 있다.

보통 /var/adm/pacct 에 위치한다.

관련된 명령어로는 lastcomm, acctcom, acctcms 가 있다. 이에 대해 자세히 살펴보도록 하자.


lastcomm

lastcomm 은 SCO UNIX 와 IRIX 를 제외한 모든 UNIX 시스템에서 제공되는 명령이다. 실행되었던 모든 명령을 기본적으로 보여주게 된다. 다음은 실행 예이다.

# lastcomm
lpd F root ___ 0.08 secs Mon Sep 19 15:06
date sakai ttyp7 0.02 secs Mon Sep 19 15:06
sh cenda ttyp3 0.05 secs Mon Sep 19 15:04
calculus D mtdog ttyq8 0.95 secs Mon Sep 19 15:09
more X urd ttypf 0.14 secs Mon Sep 19 15:03
mail S root ttyp0 0.95 secs Mon Sep 19 15:03
로그는 다음과 같은 형식으로 남는다.

process 를 수행한 명령어, 데몬 : Flag : ID : tty : CPU time : 시작한 시간이 Flag 에는 다음과 같은 것이 있다.


S : Superuser 가 사용한 명령


F : fork 후에 사용된 명령


D : core 를 덤프하고 종료된 명령


X : Signal 에 의해 종료된 명령

즉 위의 log 를 보면, lpd 는 init process 에 의해 fork 되었으므로 F flag 을 가지게 되고, root 가 실행시켰으며 daemon process 이므로 잡고 있는 tty 는 없다는 것을 알 수 있다.

명령도, last 명령과 비슷하게 keyword 를 주어 정보를 얻을 수 있다.

# lastcomm mtdog
calculus D mtdog ttyq8 0.95 secs Mon Sep 19 15:09


 

lastcomm 과 비슷한 역할을 하는 명령으로 acctcom, acctcms 이 있다. 이에 대해 살펴보도록 하자.


acctcom

acctcom 은 System V 계열에서 제공되는 명령어이다. (Linux 에서는 포함이 되어 있지 않다.) 다음은 실행 예이다.

# acctcom
COMMAND START END CPU
NAME USER TTYNAME TIME TIME (SECS)
calculus mtdog ttyq8 15:52:49 16:12:23 0.95
grep sakai ttyq3 15:52:51 15:52:55 0.02


 

명령을 통해 실행시킨 command 이름, 사용자, tty , 시작시간, 종료시간, CPU time 등을 알 수 있다. 또한 옵션을 주어 필요한 정보를 얻어낼 수 있다.

# acctcom -u root -n vi
COMMAND START END CPU
NAME USER TTYNAME TIME TIME (SECS)
vi root tty01 10:33:12 10:37:44 0.04


acctcom 명령에 단점이 있다면 명령이 실행된 date 가 나오지 않아 /usr/adm/pacct 화일과 대조를 해보아야 한다는 점이다.

 


acctcms

이 프로그램 역시 System V 계열에서 제공되는 명령어 이다.( 역시 Linux 에는 포함되어 있지 않다.) 이 명령을 통해서 주로 실행된 명령어의 통계적 분석을 할 수 있는 장점이 있다.다음은 그 실행 예이다.

 

# acctcms -a -o -n /var/adm/pacct
NON-PRIME TIME COMMAND SUMMARY
COMMAND NUMBER TOTAL TOTAL
NAME CMDS KCOREMIN CPU-MIN
Ls 26 0.00 0.02
Grep 21 0.80 0.01
More 15 0.10 0.03
...............
fuckfuck 1 0.26 1.10


위의 실행결과를 살펴보면 fuckfuck 이란 명령은 자세히 조사해야 할 필요가 있음을 알 수 있다. 사용빈도도 1 일뿐 아니라 , 해당 커맨드의 이름이 OS 에 없는 명령이기 때문이다.

1.7. messages
보통 /var/adm/messages 로 저장이 되며 커널 에러, 리부팅 메시지, 로긴 실패, su 로그 등이 남는 화일이다. 다음은 그 예이다.

 

% cat /var/adm/messages
Apr 19 12:44:13 miso named[93]: zoneref: Masters for secondary zone 15.104.192.in-addr.arpa unreachable
Apr 19 12:45:23 miso telnetd[22005]: gethostbyaddr: librb126.kaist.ac.kr != 143.248.8.126
Apr 19 12:46:57 miso login: REPEATED LOGIN FAILURES ON ttype FROM sgs115.kaist.ac., x
Apr 19 16:18:08 miso vmunix: /: file system full
Apr 19 16:18:38 miso su: 'su soyeon' succeeded for acorn on /dev/ttyq5


1.8. syslog
위에서도 살펴 보았지만, 시스템 내에는 수많은 로그화일이 이곳저곳에 남게 된다. 이를 전체적으로 관리를 할 필요가 있는데 즉, 메시지들의 분산을 해결한 것이 syslog facility 이다.

log 화일이 저장되는 위치는 /etc/syslog.conf 에서 지정할 수 있다.

/etc/syslog.conf 에서 다음과 같은 내용을 정의할 수 있다. (단, DG-UX 의 경우에는 syslog 의 configuration 화일은 /var/adm/sysyslog.dated/auth.log 에 위치한다. 또한 IRIX 의 경우에는 syslog.conf 가 다른 OS 들의 것에 비해 기능이 확장되어 filtering 을 할 program 을 각 항목마다 지정해 줄 수 있다.

다음은 IRIX 에서의 syslog.conf 의 예이다.

*.alert |/var/adm/sysmonpp /var/adm/SYSLOG

Linux 의 경우에는 klogd 를 syslogd 대신에 사용한다.)

syslog.conf 는 다음과 같은 형태로 저장이 된다.

facility.level destination

facility 는 로그정보를 요청한 프로그램 종류로 구분지어지는데 다음과 같다.

kern (kernel 에서 요청한 경우)

mail (mail subsystem 에서 요청한 경우)

lpr (printing subsystem 에서 요청한 경우)

daemon (System server processes 에서 요청한 경우)

auth (login authentication system 에서 요청한 경우)


level 은 severity level 를 의미하는데 다음과 같은 단계로 구분지을 수 있다.

심각한 정도는 emerg > alert > crit > err > warn > notice > info > debug 순이다.

 

emerg (System 이 "panic" 을 일으킬 정도로 심각(emergency)한 상황)
alert (즉시 주의를 요하는 serious 한 에러가 발생한 경우)
crit (하드웨어 같은 device 족에서 critical 한 에러가 발생한 경우)
err (Errors , 에러들)
warn (Warning, 경고들)
notice (critical 하진 않은 메시지들)
info (유용한 정보를 담고 있는 메시지들)
debug (문제해결을 할 때 도움이 될만한 외부정보들)
none (facility 에서 무시하는 정보들)
mark (몇분마다 메시지들을 생성할 것인지를 결정한다. 디폴트 값은 20 분이다.)


mark (몇분마다 메시지들을 생성할 것인지를 결정한다. 디폴트 값은 20 분이다.)

주의할 점은 mart 를 제외한 나머지 level 들은 *.alert , *.debug 등과 같이 facility 를 wild card 를 사용하여 나타낼 수 있지만, mark 의 경우에는 wild card 를 사용할 수 없다는 것이다.

다음은 /etc/syslog.conf 의 예이다. 예제 화일을 보면 위에 설명한 내용들이 쉽게 이해가 갈 것이다.

*.err /dev/console
*.err;daemon,auth.notice;mail.crit /var/adm/messages
lpr.debug /var/adm/lpd-errs
mail.debug /var/spool/mqueue/syslog
*.alert root
*.emerg root,sysadmins, operators
auth.info;*.warn @hamlet
*.debug /dev/tty01


위의 예는 다음과 같은 뜻이다.


모든 facility 에서 발생한 err 메시지들은 /dev/console 에 뿌려준다.


모든 facility 에서 발생한 에러 메시지, daemon 과 auth facility 에서 발생한 notice 메시지들, mail facility 에서 발생한 crit 메시지들은 /var/adm/messages 에저장한다.


lpr facility 에서 발생한 debug 메시지들은 /var/adm/lpd-errs 에 저장한다.


mail facility 에서 발생한 debug 메시지들은 /var/spool/mqueue/syslog 화일에 저장한다.


모든 facility 에서 발생한 alert 메시지들은 root 에게 메일로 전송한다.


모든 facility 에서 발생한 emerg 메시지들은 root, sysadmins, operators 에게 메일로 전송한다.


auth facility 에서 발생한 info 메시지들과 모든 facility 에서 발생한 warn 메시지들은 hamlet 이란 호스트에 로그를 남긴다.


모든 facility 에서 발생한 debug 메시지들은 /dev/tty01 에 뿌려준다.


2. 로그화일 점검하기
앞에서는 로그화일 들의 의미가 무엇이고, 어떠한 사항들이 어떠한 로그화일에 남는다는 것을 살펴보았다.

즉, 로그화일은 시스템 내에 있었던 일들, 문제가 될만한 사항등을 기록으로 남겨주기 때문에 중요한 자료인 것이다. 이를 통해 시스템이 crash 되었을 때 디버그 할 수 있게 되는 것이고, 또한 시스템에 해커가 침입했는지, 또 침입한 후에 무슨 일을 했는지를 알 수 있는 근거가 되는 것이다. 하지만 해커도 바보가 아닌 이상 머리를 쓴다.

호스트에 침입한 후, 자신과 관계되는 로그화일을 전부 지우거나, 편집해서 자신에 대한 기록을 모두 지우고 나가는 것이 보통이다. 가령 telnet 을 통해 침입했다면 messages, utmp , wtmp 등을 지우려 할 것이고, 로그아웃하기 전에 set history=0 등과 같은 명령을 실행하고, pacct 화일을 삭제하여 수행한 명령에 대한 기록을 지울 것이다.

이런 식으로 특정 ID 에 대한 로그들을 모두 지워주는 프로그램도 해커들 사이에 유통이 되고 있다. 그 예로 wtmp , lastlog 와 같은 화일에서 자신의 기록을 지우는 프로그램으로 zap.c , zap2.c 등이 있고, 이는 anonymous ftp site 에도 공개되어 있을 정도이다.

또한 들어와서 수행시키는 명령도 가급적 정보를 남기지 않으려 노력할 것이다.

ftp 를 통해 화일을 전송시켰다면 프롬프트상에서는 ftp -n 을 입력해 history file 이나 pacct 화일에서는 어느곳으로 접속을 시도했는지 모르도록 할 것이고 , 원래 OS 에서 제공하는 프로그램의 이름이 아닌 다른 이름으로 aliasing 을 하여 명령을 수행하는 것이 보통이다.

결론적으로 말해 아무리 log 를 강력하게 남겨도 ,해커는 강력하게 지우고 간다는 점을 잊지 말라는 것이다. 그렇기 때문에 정기적으로 로그 화일을 점검,분석하는 것이 요구된다는 것과 또한 로그화일들에 대한 백업이 중요하다.

그렇다고 절망적인 것은 아니다. lastlog , pacct , wtmp 는 고유한 data structure 를 사용하는 non-text 화일이기 때문에, 해커가 자신의 정보를 삭제하였다면 화일에서 삭제한 부분에 공백이 생기게 되어 이를 통해 로그화일이 해커에 의해 변조되었는지 유무를 파악할 수 있다.

이런 일을 하는 툴에는 다음과 같은 것이 있다. 이 프로그램들은 DFN-CERT 에서 개발된 툴들이다.

chkacct 의 경우 dot 화일들(e.g. .rhosts )까지 점검을 하게 된다.


chkacct

ftp://ftp.kreonet.re.kr/pub/security/tools/etc/chkacct


chklastlog

ftp://ftp.kreonet.re.kr/pub/security/tools/etc/chklastlog


chkwtmp

ftp://ftp.kreonet.re.kr/pub/security/tools/etc/chkwtmp


다음은 위의 프로그램들의 실행 예이다.

% chklastlog
user ley deleted from lastlog!
% chkwtmp
1 deletion(s) between Thu Sep 29 08:23:57 1994 and Thu Sep 29 14:11:58 1994


이런 부수적인 툴 외에도 OS 자체에서 제공하는 명령을 이용하여 log 화일들을 점검해 줄 수 있다.

AIX 의 경우 /etc/security/ 에 다양한 종류의 로그화일들을 생성시키는데 다음은 user 에 기록된 자료를 조사하는 예이다.

이를 통해 사용자들의 실패한 로긴의 횟수를 파악할 수 있다. 실패한 로긴수가 많은 사용자의 경우 적절한 조치를 취하면 된다.

 

# egrep '^[^*].*:$|gin_coun' /etc/security/user |\
awk {if (NF >1 && $3>3) {print s,$0}} ;\
NF==1 {s=$0}'
sakai: unsuccessful_login_count = 27


위의 명령과 같은 역할을 해주는 명령어도 다른 OS 에서 존재한다.

Linux 의 경우 shadow 패키지를 설치한 경우 /var/adm/faillog 란 화일에 로그인 실패한 경우를 기록하게 된다. 관련된 명령어로는 faillog 가 있다.

# faillog -p
Username Failures Maximum Latest
root 2 0 Fri Mar 17 17:4..
sakai 5 0 Fri Mar...


3. 맺으며
단순한 로그화일 분석에 너무 지면을 할애한 건 아닌지 모르겠다. 하지만 로그화일 분석은 상당히 중요한 보안의 한 부분이라는 점을 잊지 말기 바란다.


General Security Administration IV 부 (다음 호)


다음호에서는 File System 에 대한 관리를 보안에 관련지어 다루어 보겠다.

(footnote)

# 는 root shell 프롬프트를 뜻한다.

$ 은 일반 사용자의 borne shell 계열 쉘 프롬프트를 뜻한다.

% 는 일반 사용자의 C shell 계열 쉘 프롬프트를 뜻한다.


 

Reference


System Administration, O'Reilly & Assoiates, Inc.


[General Security Technique - Practically Useful], 김휘강, 제 4 회 WWW-KR Conference

 

posted by 구름너머 2012. 12. 24. 14:07

'아무거나방' 카테고리의 다른 글

지수귀문도 풀이..진행중  (0) 2017.03.27
영화:하이보고  (0) 2013.07.08
2011년 가을_서울숲,난지도하늘공원,아파트  (0) 2011.10.30
MP3파일 찾기  (0) 2011.06.16
중1수학 심화문제  (1) 2011.03.09
posted by 구름너머 2012. 12. 20. 09:18

unix/linux의 OS 32/64bit 확인 방법

LINUX
# getconf LONG_BIT


HP UX

11.xx 일 경우
# getconf KERNEL_BITS
64

10.xx 일 경우
# getconf LONG_MAX
2147483647
(64비트임)로 확인할 수 있습니다

AIX

현재 load된 kernel 이 32-bit 혹은 64-bit 인지 확인하는 명령어
# bootinfo -K
32

사용중인 machine이 32-bit 혹은 64-bit 인지 확인하는 명령어
# bootinfo -y
32


SOLARIS

# isainfo -kv
64-bit sparcv9 kernel modules
현재 이 시스템은 64bit 커널을 가지고 운영을 하는 시스템 이다.

# isainfo -kv
32-bit sparcv kernel modules
이 시스템은 32bit 커널을 가지고 운영을 하는 시스템이다.

# isainfo -v
64-bit sparcv9 applications 32-bit sparc applications
"-v"만 했을 경우 이 시스템에서는 32bit / 64bit 체계의 프로그램을 사용할 수 있다.

# isainfo -v
32-bit sparc applications
이 시스템은 32bit 체계의 프로그램만 구성하여 사용할 수 있다.

'UNIX' 카테고리의 다른 글

UNIX 1회성 작업 예약하기 : at  (0) 2013.02.28
보안 & 트랙킹  (0) 2012.12.27
리눅스 GUI 인터페이스 부팅  (0) 2012.12.12
[UNIX] vi 에디터에서 괄호나 중괄호 짝맞추기  (0) 2011.10.21
bsearch  (0) 2011.06.24
IT
posted by 구름너머 2012. 12. 12. 21:06
posted by 구름너머 2012. 12. 12. 14:55

리눅스 GUI 인터페이스 부팅

부팅시킬때마다 텍스트 모드로 나와요...
Ctrl + Alt + F7 눌러야 그놈 환경으로 로그인 되거든여??
처음 부팅될때부터 그놈환경으로 로그인창 뜨게 하려면 어떻게 해야 되나요?


그 부분을 runlevel 이라고 합니다..^^
/etc/inittab 파일에 보면 알수가 있죠.
1. single user  mode (  제한 적인 기능을 가진 복구모드)
2. 제한된 multi user mode(  nfs 같은 네트워크 서비를 제외한 기능을 가진다.  텍스트 모드)
3. Full multi user mode ( 현재  이 모드로 되어 있어서 그런겁니다.)
4. unused mode  ( 사용안함  사실  자신이 원하는 형태로 조합 해서 사용한다고 하지만 거의 쓰질 않습니다.)
5. X11 ( 질문 하신 분께서 원하시는 모드  그래픽모드)
6. reboot

id:3:initdefault    아마도 이런 형식으로 선언 되어 있을 겁니다.

이 목록을 3 이라는 숫자를 5로 변경 하시면 됩니다.

자 여기 까지 끝나면 리부팅 하시면  자연스럽게 부팅시 xwindow가 동작을 할것 입니다.
 
만약 부팅 하지 않고 파일에 적용 하고 싶으시면

telinit q
 
하시면 됩니다. 뭐 이것을 한다고 해서 당장  xwindow가 동작 하는 것은 아니죠.
 
몇가지 팁은 init 5 라고 선언 하시면 바로 변신

그리고 startx  하시면 xwindow를 띄우는 명령입니다.
 

'UNIX' 카테고리의 다른 글

보안 & 트랙킹  (0) 2012.12.27
리눅스/유닉스 OS 32bit or 64bit 확인방법  (0) 2012.12.20
[UNIX] vi 에디터에서 괄호나 중괄호 짝맞추기  (0) 2011.10.21
bsearch  (0) 2011.06.24
ls가 안먹힐 때(arg list too long)  (0) 2011.06.23
WEB
posted by 구름너머 2012. 11. 29. 21:16

<구글 크롬 버전별 다운로드하기>
http://www.oldapps.com/google_chrome.php

'WEB' 카테고리의 다른 글

JQuery 로 만든 UI  (0) 2013.01.03
windows script 5.6 한글 매뉴얼  (0) 2013.01.02
WebLogic SSL 설정  (0) 2012.11.13
HTML5 변경 및 Validator를 이용한 검사  (0) 2012.11.09
appengine templete 렌더링시 한글오류 처리  (0) 2012.11.07
WEB
posted by 구름너머 2012. 11. 13. 10:38

1.첫번째

http://image.inames.co.kr/upload/1193292118.pdf

2.두번째 

http://cheese.springnote.com/pages/4649569

Applies to: WLS 8.1 / WLS 6.1 - how to generate self-signed SSL certificates [ID 775115.1]

Oracle Weblogic Server / WebLogic Server / 8.1, 6.1
Information in this document applies to any platform

Goal

          What is the procedure to generate self-signed SSL certificates for use with WLS 8.1 and WLS 6.1?  The certificates will
          be used for internal testing; permanent certificates issued by a CA are not required.
          

Solution

          Demo certificates are provided with all of these releases of WLS.  If these demo certificates are not appropriate,
          however, here are some procedures that can be used.
          
          For WLS 8.1:
          There are (at least) 2 approaches to generating your own certificates:
          1) Use self-signed certificates, with you as the certificate authority.
          2) Use WLS's CertGen utility to create certificates signed by the WLS demonstration certificate authority.
          
          Useful references for information about certificates, etc., are:
          - The man page for the keytool utility, which is part of the JDK.  See
          http://java.sun.com/j2se/1.4.2/docs/tooldocs/solaris/keytool.html
          - The WLS document "Managing WebLogic Security" at http://e-docs/bea.com/wls/docs81/pdf/secmanage.pdf,
          especially Chapter 7.
          - The documentation for the openssl utility at http://www.openssl.org.  openssl can be downloaded from this web site.
          
          Procedure for generating a self-signed certificate for use with WLS 8.1 (option 1):
          
          1) Generate the key pair and self-signed certificate.
          Use keysize 512 if you have an export license (look for SSL/Export in license.bea).
          Use keysize 1024 if you have a domestic license (look for SSL/Domestic in license.bea).
          Pick your own keystore name, alias name, and passwords; these are only examples.
          See also Table 7.1 in "Managing WebLogic Security".
          
          $JAVA_HOME/bin/keytool -genkey -keyalg rsa -keystore mykeystore.jks -alias weblogic -keysize 512 -keypass weblogic
          -storepass weblogic -validity 365
          
          Supply your hostname to the prompt "First and last name" (e.g., myhost.bea.com)
          
          2) Now extract the self-signed certificate into trust.pem
          
          keytool -export -alias weblogic -file trust.pem -keystore mykeystore.jks -storepass weblogic -rfc
          
          3) Import the self-signed certificate (which functions as its own certificate authority) into trust.jks.
          
          keytool -import -alias weblogic -file trust.pem -keystore trust.jks -storepass weblogic
          
          Now you have mykeystore.jks containing your own host-specific certificate and private key, and trust.jks containing
          the trusted certificate.
          
          4) Configure WLS via the console to use this custom identity and custom trust keystores.
          
          Point your browser to http://host:port/console
          Go to servers->myserver->Keystore & SSL->Change
          Choose Custom Identity and Custom Trust and supply mykeystore.jks as the custom identity keystore file name, type JKS,
          pass phrase weblogic.
          Use trust.jks as the customer trust keystore file name, etc.
          Then restart WLS.
          
          The result is a modified <Server> section in your config.xml file that looks approximately like this (with your
          own file names, encrypted passwords, etc.):
          
          <Server CustomIdentityKeyStoreFileName="./certgen/mykeystore.jks"
                  CustomIdentityKeyStorePassPhrase="{3DES}diJlCtIrNaBWwZfoa66Glg=="
                  CustomIdentityKeyStoreType="JKS"
                  CustomTrustKeyStoreFileName="./certgen/mykeystore.jks"
                  CustomTrustKeyStorePassPhrase="{3DES}diJlCtIrNaBWwZfoa66Glg=="
                  CustomTrustKeyStoreType="JKS"
                  KeyStores="CustomIdentityAndCustomTrust"
                  ListenAddress="1.2.3.4" ListenPort="7001" Name="myserver"
                  NativeIOEnabled="true" ReliableDeliveryPolicy="RMDefaultPolicy"
          ServerVersion="8.1.2.0">
                  <SSL Enabled="true" HostnameVerificationIgnored="false"
                      IdentityAndTrustLocations="KeyStores" ListenPort="7002"
                      Name="myserver" ServerPrivateKeyAlias="weblogic"
          ServerPrivateKeyPassPhrase="{3DES}diJlCtIrNaBWwZfoa66Glg=="/>
              </Server>
          
          Note that you must generate a self-signed certificate for each host system (the CN will be different in each
          certificate) unless you disable host name verification (HostnameVerificationIgnored="true" in the config.xml
          file).
          
          Procedure for generating a self-signed certificate for use with WLS 8.1 (option 2):
          
          This procedure is an alternative to option 1.  It uses the demonstration certificate authority.
          
          The following instructions are derived from page 7-6 in "Managing WebLogic Security".  See also
          http://e-docs.bea.com/wls/docs81/admin_ref/utils.html#1184336 for additional details.
          
          1) Copy the needed files into the current directory for easy access.
          
          cp $WL_HOME/server/lib/CertgenCA.der .
          cp $WL_HOME/server/lib/CertgenCAKey.der .
          
          2) Generate a certificate signed by the demonstration CA with domestic key strength.  The common name (CN) is the same
          as the current hostname.  The issuer CA name is CN=CertGenCAB,OU=FOR TESTING
          ONLY,O=MyOrganization,L=MyTown,ST=MyState,C=US.
          The following command must be executed with CLASSPATH set for the WLS 8.1 environment.
          
          java utils.CertGen weblogic mycertfile mykeyfile
          
          The files created are mycertfile.{der,pem} and mykeyfile.{der.pem}
          
          3) Convert CertgenCA.der to .pem format
          
          java utils.der2pem CertgenCA.der
          
          4) Concatenate the 2 certificates to form a chain.
          
          cat mycertfile.pem CertgenCA.pem > certs.pem
          
          5) Create a new keystore, load the private key and certificate chain.
          
          java utils.ImportPrivateKey mykeystore.jks weblogic weblogic weblogic certs.pem mykeyfile.pem
          
          6) List the keystore to make sure it's OK.
          
          keytool -v -list keystore mykeystore.jks
          
          7) Create a separate keystore for the trusted CA certificate.
          
          keytool -import -alias weblogic -file CertgenCA.pem -keystore trust.jks -storepass weblogic
          
          8) Configure WLS 8.1 as previously to use mykeystore.jks and trust.jks.
          
          
          For WLS 6.1:
          
          1) Create a new copy of the configuration file used by openssl and modify it so that the basic constraint is marked
          "critical".
          
          cp $OPENSSL_HOME/bin/openssl.cnf .
          edit openssl.cnf.  In the section [ v3_ca ] uncomment the line
            basicConstraints = critical,CA:true
          and comment the line (about 2 lines down)
            basicConstraints = CA:true
          
          2) Generate a self-signed certificate for use as a root CA and an associated unencrypted private key (i.e., no
          password).  When prompted, supply the hostname as the common name and omit the email address.  For an export
          certificate use rsa:512.  For a domestic certificate use rsa:1024.
          
          openssl req -config ./openssl.cnf -nodes -extensions v3_ca -x509 -newkey rsa:512 -keyout key.pem -out cert.pem -days
          365
          
          You can also supply the answers to the prompted on the command line if wished:
          
          openssl req -config ./openssl.cnf -nodes -extensions v3_ca -x509 -newkey rsa:512 -keyout key.pem -out cert.pem -days
          365 -subj '/C=US/ST=NJ/L=Liberty Corner/O=BEA Systems/OU=Support/CN=<hostname>'
          
          where <hostname> is the hostname.
          
          3) Inspect the generated certificate.
          
          openssl x509 -in cert.pem -noout -text
          
          4) Modify the WLS 6.1 SSL configuration (through the console or by editing the config.xml file).
          
          The resulting config.xml file should look something like this:
          
          <SSL Enabled="true" KeyEncrypted="false" ListenPort="7002"
          Name="myserver"
          ServerCertificateChainFileName="d:/meq/cases.d/492379/cert/cert.pem"
          ServerCertificateFileName="d:/meq/cases.d/492379/cert/cert.pem"
          ServerKeyFileName="d:/meq/cases.d/492379/cert/key.pem" 
          TrustedCAFileName="d:/meq/cases.d/492379/cert/cert.pem"/>