gzip 명령어 사용법

Linux 2008/02/23 23:22

1. 기능
리눅스 파일 압축 명령어

2. 문법
#gzip [옵션] 파일명


3. 옵션-type pattern 형식이 pattern인 것

-d : 압축을 해제한다.

-l : 압축파일 안에 있는 파일 정보(압축된 사이즈, 압축율) 출력한다.

-r : 하위 디렉토리까지 모두 압축한다.

-S : 다른 확장자를 지정(기본값은 .gz)한다.

-v : 압축하거나 풀 때 압출율, 파일명을 출력한다.


4. 사용방법 및 정보

가) 압축파일을 생성한다.

   shell>gzip test.txt

   shell>ls -l test.txt.gz

   -rw-r--rr-- 1 root root 29 jun 12:12 test.txt.gz


나)압축을 해제할 때는 gunzip 명령을 사용한다.

   shell>gunzip test.txt.gz


*******

tar -cvf - /perf |gzip -> /perfs.tgz

gzip은 directory를 자체적으로 압축하지 못하므로 tar를 쓰는게 좋다.

Posted by 병우군

작성자 : (주)수퍼유저코리아, http://www.superuser.co.kr 서버팀

로그시스템의 이해와 활용

top


1. 리눅스 로그시스템 흐름도

2. 로그파일의 종류와 내용

3. /etc/syslog.conf 파일의 예

4. /etc/syslog.conf 파일의 이해와 활용

5. syslogdklogd의 시작과 종료

6. 로그파일의 로테이트를 위한 logrotated

7. 로테이트된 로그파일들의 실제 예

8. logrotated 관련 파일들

9. logrotated 설정파일의 이해와 활용

10. 활용1 : 중요로그기록 이중저장

11. 활용2 : 중요로그파일 원격실시간 저장


6. 로그파일의 로테이트를 위한 logrotated

top

ㅇ 로그자동관리를 위한 로테이트 처리

- crond에 의해서 주기적으로 실행되는 logrotated 데몬에 의해 수행됨.
- 로테이트(rotate)작업내용
. 로그파일 자르기(rotate), 보관하고, 삭제하고, 압축하고, 메일로 보내기등.
- 단, 해당 조건체크의 실행은 crond에 의해 주기적으로 자동실행되지만,
. 로테이트작업이 발생하기 위해서는 해당 조건에 해당되어야 함.
. 해당조건은 /etc/logrotate.conf파일과 /etc/logrotate.d/ 디렉토리내에 있는 파일들에서 설정.

ㅇ 로테이트(rotate) 처리

- 특정날짜 또는 특정용량이상이 되었을 때 로그파일을 로테이트(교체)한다.(size)

- 로테이트작업 직전과 직후에 특정작업을 수행할 수 있다.(prerotate/endscript,postrotate/endscript)

- 로테이트 작업을 하면서 압축을 하거나 하지않을 수 있다.(compress, nocompress)

- 로테이트 후에 보관할 파일의 수를 지정할 수 있다.(rotate)

- 로테이트 후에 생성되는 파일의 소유주와 퍼미션등을 설정할 수 있다.(create)

- 로테이트 후에 생성되는 파일의 확장자 임의로 지정할 수 있다.(extension)


7. 로테이트된 로그파일들의 실제 예

top


[root@edu]# ls -l /var/log/
합계 45620
-rw------- 1 root root 275 2월 14 11:40 boot.log
-rw------- 1 root root 324 2월 11 10:09 boot.log.1
-rw------- 1 root root 269 2월 3 09:43 boot.log.2
-rw------- 1 root root 721 1월 27 16:03 boot.log.3
-rw------- 1 root root 1046 1월 20 20:15 boot.log.4
-rw------- 1 root root 179056 2월 14 22:40 cron
-rw------- 1 root root 451656 2월 12 04:02 cron.1
-rw------- 1 root root 451951 2월 5 04:02 cron.2
-rw------- 1 root root 451647 1월 29 04:02 cron.3
-rw------- 1 root root 451656 1월 22 04:02 cron.4
-rw-r--r-- 1 root root 15922 12월 12 22:05 dmesg
-r-------- 1 root root 19136220 2월 14 22:40 lastlog
-rw------- 1 root root 1818881 2월 14 22:39 maillog
-rw------- 1 root root 4950358 2월 12 04:02 maillog.1
-rw------- 1 root root 4716323 2월 5 04:02 maillog.2
-rw------- 1 root root 5114028 1월 29 04:02 maillog.3
-rw------- 1 root root 5058371 1월 22 04:02 maillog.4
-rw------- 1 root root 517495 2월 14 22:40 messages
-rw------- 1 root root 998580 2월 10 15:52 messages.1
-rw------- 1 root root 1653245 2월 5 04:00 messages.2
-rw------- 1 root root 1276373 1월 29 04:00 messages.3
-rw------- 1 root root 1602436 1월 22 04:00 messages.4
-rw------- 1 root root 81232 2월 14 22:40 secure
-rw------- 1 root root 208676 2월 12 04:00 secure.1
-rw------- 1 root root 435757 2월 5 04:00 secure.2
-rw------- 1 root root 229603 1월 29 04:00 secure.3
-rw------- 1 root root 230319 1월 22 04:00 secure.4
-rw-rw-r-- 1 root utmp 2136960 2월 14 22:40 wtmp
-rw-r--r-- 1 root root 8569951 2월 14 22:35 xferlog
[mons@su020.suidc.com ~]$



8. logrotated 관련 파일들

top

구 ??분 위치 및 실행방법 설 ????????????명
logrotated데몬 /usr/sbin/logrotate logrotated 데몬파일
logrotated
주로그 파일
/etc/logrotate.conf logrotated의 주된 설정파일
개별 설정파일들에는 이 파일의 설정파일
의 내용이 global하게 적용됨
개별 설정파일 /etc/logrotate.d/* 개별 설정파일들의 저장 위치
/etc/logrotate.conf파일에서 불러들임.
cron 실행 /etc/cron.daily/logrotate crond 데몬에 의해/etc/cron.daily/logrotate
파일을 실행함.
이 파일의 실행으로 logrotated 데몬이
주기적(1일 1회, 주로 새벽 4시)으로 실행됨
상황파일 /var/lib/logrotate.status logrotate한 작업내역을 보관한 파일

ㅇ /etc/logrotate.conf파일은 logrotated데몬의 주 설정파일로서 global하게 적용되는 파일임.

ㅇ /etc/logrotate.d/ 디렉토리내에 존재하는 파일들은 개별 로그파일의 개별 logrotate설정파일

ㅇ /etc/logrotate.d/ 디렉토리내에 로그파일에 대한 추가파일을 설정해 두면 그 로그파일을 로테이트(rotate)처리를 할 수 있음.


9. logrotated 설정파일의 이해와 활용

top


ㅇ /etc/logrotate.conf 파일의 예

[root@fileserver1 /]# cat /etc/logrotate.conf

weekly
rotate 4
create 0600 root root

include /etc/logrotate.d

/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}

- logrotated 데몬이 실행되면서 /etc/logrotate.conf파일을 읽어들여서 그 내용을 적용함.

- 위의 “include /etc/logrotate.d” 설정으로 인하여 /etc/logrotate.d 디렉토리에 존재하는 개별로그 파일들을
모두 읽어들여 적용함.



logrotated 설정파일의 이해와 활용

top


ㅇ /etc/logrotate.d/ 디렉토리내의 파일의 예

[root@fileserver1 /]# cat /etc/logrotate.d/syslog
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
monthly
compress
rotate 4
mail admin@superuser.co.kr
errors admin@superuser.co.kr
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
[root@fileserver1 /]#


logrotated 설정파일의 이해와 활용

top


ㅇ daily

해당 로그파일을 매일 로테이트 함.

ㅇ weekly
해당 로그파일을 매주 로테이트 함.

ㅇ monthly
해당 로그파일을 매월 로테이트 함.

ㅇ rotate 숫자
현재 로그파일을 제외한 숫자만큼까지의 로테이트된 파일을 보관함. 이전 로테이트된 파일은 삭제함.
예) “rotate 2”일 경우 해당로그파일이 secure라면
secure 파일(현재파일)과 secure.1파일, secure.2파일까지만 보관됨. 그 이전파일은 자동삭제.

ㅇ compress
순환된 로그파일이 gzip에 의해 압축됨. 예) messages.1.gz, secure.1.gz

ㅇ nocompress
순환된 로그파일이 압축되지 않고 원본상태로 저장됨. 예) messages.1, secure.1

ㅇ create 퍼미션 소유자 소유그룹
순환된 로그파일이 지정된 퍼미션을 가지고, 지정된 소유자와 소유그룹으로 생성됨.
예) create 600 root wheel


ㅇ errors 메일주소
로테이트 실행시 문제(에러)가 발생하면 관련 내용을 지정된 메일주소로 메일 발송함.

ㅇ mail 메일주소
로테이트된 후에 삭제되는 로테이트된 파일들을 지정한 메일주소로 보내게 됨.

ㅇ extension 확장자명
로테이트된 파일뒤에 지정된 확장자명을 붙여주게 됨. (로테이트파일의 개별 구분을 위한 것)
예) “extension kkk”라고 설정되었다면 messages.1.kkk, 또는 messages.1.ext.gz로 생성됨.

ㅇ ifempty
로테이트하고자 하는 원본파일의 용량이 0이라 하더라도 로테이트 시킴.(기본값)

ㅇ notifempty
로테이트하고자 하는 원본파일의 용량이 0이라면 로테이트하지 않음.

ㅇ prerotate/endscript
로테이트를 수행하기 이전에 prerotate와 endscript 사이의 내용을 실행함.

ㅇ postrotate/endscript
로테이트를 수행한 후에 postrotate와 endscript 사이의 내용을 실행함.
거의 대부분 syslogd 데몬을 재시작하기 위한 것임.

ㅇ size 용량크기
로테이트의 수행결과 로테이트된 파일의 크기가 지정한 용량크기 이상을 넘지 않도록 함.
예) size 200K, size 1024M


10. 활용1 : 중요로그기록 이중저장

top


ㅇ 시스템로그파일(messages)들 중요한 기록들을 별도 위치에 이중저장 한다.

1단계
: 별도로 저장 파일명과 저장위치를 결정하고 디렉토리를 생성한다.
예) /var/tmp/..hidden/..messages
/var/tmp/..hidden/..secure

[root@edu /]# mkdir /var/tmp/..hidden

2단계
: /etc/syslog.conf 파일의 내용을 수정한다.

*.info;mail.none;authpriv.none;cron.none /var/log/messages
*.info;mail.none;authpriv.none;cron.none /var/tmp/..hidden/..messages

authpriv.* /var/log/secure
authpriv.* /var/tmp/..hidden/..secure

3단계
: syslogd 데몬을 재시작한다.

[root@edu /]# /etc/rc.d/init.d/syslog restart
Shutting down kernel logger: [ OK ]
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
Starting kernel logger: [ OK ]
[root@edu /]#

4단계

: /var/tmp/..hidden/디렉토리에 ..messages파일과 ..secure파일이 생성되어 해당 로그가 기록되고 있는가를 확인한다.


11. 활용2 : 중요로그파일 원격실시간 저장

top


ㅇ 웹서버 설정내용

- 작업1 : 원격로그서버에 대한 호스트 설정 : /etc/hosts 설정
192.168.100.1 logserver

- 작업2 : syslog.conf파일 수정 : /etc/syslog.conf 설정

*.info;mail.none;authpriv.none;cron.none /var/log/messages
*.info;mail.none;authpriv.none;cron.none @logserver
authpriv.* /var/log/secure
authpriv.* @logserver

- 작업3 : syslogd 데몬 재시작 : /etc/rc.d/init.d/syslog restart

ㅇ 원격로그서버 설정내용

- 작업1 : 웹서버에 대한 호스트 설정 : /etc/hosts 설정
192.168.10.1 webserver

- 작업2 : 원격에서 들어오는 로그메시지를 저장할 수 있도록 syslogd 데몬 재시작
방법1 : /sbin/syslogd ?r ?m 0
방법2 : /etc/sysconfig/syslog 파일내에 설정된 SYSLOGD_OPTIONS=“-m 0”을
SYSLOGD_OPTIONS=“-r ?m 0”로 변경한다.

- 확인작업 : 로그파일에 웹서버의 로그내용이 실시간으로 저장되고 있는가를 확인한다.


Posted by 병우군

작성자 : (주)수퍼유저코리아, http://www.superuser.co.kr 서버팀

로그시스템의 이해와 활용

top


1. 리눅스 로그시스템 흐름도

2. 로그파일의 종류와 내용

3. /etc/syslog.conf 파일의 예

4. /etc/syslog.conf 파일의 이해와 활용

5. syslogdklogd의 시작과 종료

6. 로그파일의 로테이트를 위한 logrotated

7. 로테이트된 로그파일들의 실제 예

8. logrotated 관련 파일들

9. logrotated 설정파일의 이해와 활용

10. 활용1 : 중요로그기록 이중저장

11. 활용2 : 중요로그파일 원격실시간 저장


1. 리눅스 로그시스템 흐름도

top

전원 ON

init 데몬




syslogd 실행
- /etc/syslog.conf파일 읽어들임

/var/log/ 디렉토리에 지정된 파일에 로그기록
/dev/console
/var/log/messages
/var/log/secure
/var/log/maillog
/var/log/cron
/var/log/spooler
/var/log/boot.log
……………
기타 지정된 로그파일들




cron에 의한 주기적인 logrotated 데몬 실행으로 로그 로테이트 수행
위의 로그파일들 조건에 따라서 rotate됨.

/etc/logrotate.conf파일 읽음
→ /etc/logrotate.d/디렉토리내의 파일들 읽어들임.




2. 로그파일의 종류와 내용

top


로그파일 종류 관련데몬 의미와 내용
/dev/console kernel 콘솔에 뿌려지는 메시지들(콘솔로그)
/var/log/messages 거의 모든 데몬 시스템로그파일
/var/log/secure xinetd 보안인증에 관한 메시지 로그파일. tcpd로그파일(xinetd)
/var/log/maillog sendmail,pop등 메일로그파일(메일관련로그데몬에 의해 기록됨)
/var/log/cron crond 크론로그파일로서 crond에 의해 기록되는 파일
/var/log/xferlog proftpd, vsftpd ftp로그파일, ftp데몬에 의해서 기록되는 로그파일
/var/log/dmesg kernel 부팅될 당시에 각종 메시지들을 저장하고 있는
로그파일
즉, 부팅시의 로그파일을 부팅후에 확인하고자
할 때사용.
/var/log/wtmp
/var/log/utmp
시스템에 로그인 기록이 저장되는 파일.
wtmp는 전체 로그인기록을 하는 파일.
utmp는 현재 로그인사용자에 대한 기록하는 파일.
/var/log/lastlog 각계정들의 가장 최근로그인기록을 하는 파일
기타 로그파일들 ㅇ 관련데몬은 반드시 그런 것은 아님.
ㅇ syslogd데몬에 의해 각 로그파일의 기록내용이 달라질 수 있음.
ㅇ 즉, 로그파일과 관련데몬, 그리고 기록내용은 /etc/syslog.conf파일의 설정내용에 따라서 달라질 수 있음.



3. /etc/syslog.conf 파일의 예

top


[root@edu /]# cat /etc/syslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                        /dev/console

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none         /var/log/messages

# The authpriv file has restricted access.
authpriv.*                                      /var/log/secure

# Log all the mail messages in one place.
mail.*                                         
/var/log/maillog

# Log cron stuff
cron.*                                         /var/log/cron

# Everybody gets emergency messages
*.emerg                                       *

# Save news errors of level crit and higher in a special file.
uucp,news.crit                                /var/log/spooler

# Save boot messages also to boot.log
local7.*                                       /var/log/boot.log
[root@edu /]#


4. /etc/syslog.conf 파일의 이해와 활용

top


ㅇ /etc/syslog.conf파일의 각행의 형식(포맷)

서비스종류.우선순위;서비스종류.우선순위;서비스종류.우선순위 로그파일위치

ㅇ 각행의 의미
서비스종류(데몬)에 대하여 우선순위의 상황이 발생하면 로그파일위치의 파일에 그 내용을 기록한다.

ㅇ 규 칙
- 서비스종류는 facility, 우선순위는 priority, 로그파일위치는 logfile-location을 각각 의미함.
- 서비스종류와 우선순위는 .(점)으로 구분함.
- “서비스종류.우선순위” 그리고 “서비스종류.우선순위” 사이에는 ;(세미콜론)으로 구분함.
- 서비스종류에는 mail, cron, kern, uucp등과 같은 해당 서비스의 종류를 의미함.
- 우선순위에는 지정된 서비스종류의 상황정도를 의미 함.(다음페이지 참조)
- 로그파일위치는 서비스종류와 우선순위에 의해서 발생되는 로그가 기록될 파일의 위치를 의미함.
- 서비스종류 자리에 *가 설정되면 모든 서비스를 의미함.
- 우선순위 자리에 *가 설정되면 모든 우선순위(상황)을 의미함.
- 로그파일위치 자리에 *가 설정되면 모든 로그파일을 의미함.


/etc/syslog.conf 파일의 이해와 활용

top


ㅇ 서비스종류(facility,데몬종류)
- 해당 로그파일에 기록할 서비스의종류, 즉, 데몬종류를 의미함.

서비스 종류 설 명
auth 로그인과 같이 사용자 인증에 관한 메시지
authpriv 보안 및 승인에 관한 메시지
cron crond 데몬과 atd 데몬에 의해 발생되는 메시지
daemon telnet, ftp등과 같은 데몬에 의한 메시지
kern kernel에 의한 메시지로서 커널메시지라고함
lpr 프린터데몬인 lpd에 의해 발생되는 메시지
mail sendmail, pop, qmail등과 같은 메일 관련 메시지
news innd등과 같은 뉴스시스템에 의해 발생되는 메시지
uucp uucp에 의한 시스템에 의한 메시지
* 모든 서비스에 의해 발생되는 메시지


/etc/syslog.conf 파일의 이해와 활용

top


ㅇ우선순위 (priority, 상황정도)
- 지정한 서비스의 종류에 대한 우선순위(상황정도)를 의미함.

우선순위(상황정도) 설 명
9 * 모든상황의 메시지(all)
8 debug debugging에 관한 메시지(가장 낮은 단계)
7 info 단순한 프로그램에 대한 정보 메시지(information)
6 notice 에러가 아닌 알림에 대한 메시지
5 warn 주의를 요하는 메시지(warning)
4 err 에러로 인한 메시지(error)
3 crit 급한상황은 아니지만 치명적인 시스템 문제 발생 메시지(critical)
2 alert 즉각적인 조치를 해야하는 메시지
1 emerg 매우 위험한 상황의 메시지(가장 높은 단계, emergency)
0 none 해당사항없음. 메시지없음.(기록될 내용이 없음)


5. syslogd와 klogd의 시작과 종료

top


syslogd 데몬과 klogd 데몬 실행확인

[root@edu log]# ps -ef | grep syslogd
root 3070 1 0 15:37 ? 00:00:00 syslogd -m 0
root 3078 1977 0 15:38 pts/0 00:00:00 grep syslogd
[root@edu log]#
[root@edu log]# ps -ef | grep klogd
root 3072 1 0 15:37 ? 00:00:00 klogd -x
root 3080 1977 0 15:38 pts/0 00:00:00 grep klogd
[root@edu log]#


syslogd 서비스의 시작 : /etc/rc.d/init.d/syslog start

[root@edu log]# /etc/rc.d/init.d/syslog start
Starting system logger: [ OK ]
Starting kernel logger: [ OK ]
[root@edu log]#

syslogd 서비스의 종료 : /etc/rc.d/init.d/syslog stop

[root@edu log]# /etc/rc.d/init.d/syslog stop
Shutting down kernel logger: [ OK ]
Shutting down system logger: [ OK ]
[root@edu log]#

syslogd 서비스의 재시작 : /etc/rc.d/init.d/syslog restart

[root@edu log]# /etc/rc.d/init.d/syslog restart
Shutting down kernel logger: [ OK ]
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
Starting kernel logger: [ OK ]
[root@edu log]#


Posted by 병우군

TCP Wrapper

시스템 2008/01/23 19:56
1. 접근통제란?
 (1) 설명: 네트워크 환경체제에서는 항상 권한이라는 것이 있다. 어떠한 시스템에 접근하려면 그 
          시스템에 접근권한이 있어야 한다. 권한을 가지지 않은 자가 권한이 부여되지 않은 자료에
          불법적인 접근을 시도할 때 이를 차단하는 행위를 접근통제(Access Control)이라 한다. 리
          눅스시스템에서도 소유자, 그룹, 그 외의 사용자 등 3계층으로 분리하여, 파일 또는 디렉
          토리에 읽기, 쓰기, 실행에 대한 권한을 부여한다. 
 (2) 접근통제방법: 접근통제하는 방법에는 학문적으로 보면 어떤 계층에서의 통제냐 운영체제의 
                  위치가 어디냐에 따라 굉장히 많이 나누지만 여기서는 간단히 분류해보자.
   1) 완전접근통제: 말 그대로 어떠한 사람도 접근을 못하게 막는 것이다. 그러나, 완전통제라면
                    네트워크로서의 기능이 없다고 말할 수 있다.
   2) 일부접근통제: 선별적으로 접근을 허가하는 통제법이다. 대표적인 방법이 TCP Wrapper이다.

 (3) 참고: 일부접근통제방식과 Set-Uid
   1) 설명: 리눅스에서 비밀번호를 변경할 때 passwd라는 명령을 이용한다. 이 passwd의 권한은 
           root에게 있다. (실제적으로 확인해보면 소유자와 소유그룹 모두 root다. 파일의 위치는
           /usr/ bin/passwd) 그런데, 어떻게 일반 사용자가 그 명령을 사용할 수 있을까? 그것은 
           root가 패스워드 권한 일부를 양도했기 때문이다. 이를 setuid, setgid라고 부른다. 이
           러한 경우와 같이 패스워드를 바꾸는 행위 또는 그 역할에만 권한을 허용한 경우가 일부
           접근통제방법에 해당한다.
   2) passwd의 setuid 확인
     ㄱ. /etc/bin으로 이동한다.
     ㄴ. 'ls -l passwd'라고 입력
     ㄷ. 다음과 같이 결과가 출력된다.
       -r-s--x--x    1 root     root        12244 Feb  8  2000 passwd
         => 이와 같이 소유자부분에서 x가 있어야 할 자리에 s가 있다. 이런 경우가 setuid 또는
          setgid가 부여된 경우이다. 이 파일의 소유자와 그룹은 root이다.


2. TCP Wrapper란?
 리눅스 커널 2.2 버전에서 TCP Wrapper는 슈퍼데몬인 inetd데몬에 의하여 수행되는 서비스들의 접근
을 제어한다. 즉, 시스템에 접속을 허락한 호스트만 접속할 수 있도록 한다거나, 또는 원하지 않는 
호스트의 접근을 막도록 해주는 접근 제어 프로그램이다. TCP 연결을 기반으로 하는 TELNET, FTP, 
FINGER,RLOGIN 등을 감시하고 필터링할 수 있다. 현재 사용하는 커널 2.4 버전에서는 inetd가 확장
된 xinetd라는 슈퍼데몬을 사용하면서 자체적으로 접근제어를 하지만 tcp wrapper의 구성요소중 
/etc/hosts.allow와 /etc/hosts.deny을 이용한 접근제어는 아직도 사용하고 있다.

3. TCP Wrapper의 구성
 (1) 개요: TCP Wrapper는 데몬 프로세서인 /usr/sbin/inetd와 환경파일인 /etc/inetd.conf로 구성
          되어 있다. 또한 리눅스에서는 스크립트파일인 /etc/rc.d/init.d/inet이 있고, /usr/sbin
          /tcpd에서 참조하는 /etc/hosts.allow 파일과 /etc/hosts.deny파일이 있다.
 (2) 구성파일
   1) /usr/sbin/inetd 
    이 데몬은 여러 가지 다른 서버 프로그램들(telnet, ftp 등)을 관리하기 때문에 슈퍼 데몬이라고
   불리운다. 만약 호스트에서 telnet서비스를 요청하면 inetd는 환경파일인 /etc/inetd.conf파일을
   참고하여 in.telnetd를 구동하고 telnet서비스를 처리한다. 
  2) /etc/inetd.conf(커널 2.2 버전만 해당)
    ㄱ. 설명: TCP Wrapper가 구동될 때 참고하는 환경파일이다. 전반적인 설정에 관여한
             다.
    ㄴ. inetd.conf 필드의 구성 : 총 7개의 필드로 구성되어 있다.
      a. 구성예
       telnet  stream  tcp     nowait  root    /usr/sbin/in.telnetd  in.telnetd
      (서비스이름) (소켓타입)(프로토콜)(플래그)(사용자)(서버프로그램) (매개변수)
      b. 필드의 설명
        - 서비스이름 : /etc/services에 정의된 이름
        - 소켓타입 : stream은 tcp, dgram은 udp이다.
        - 프로토콜 : /etc/protocols에 있는 이름
        - 플래그 : 프로세스의 시작방법
        - 사용자 : 서비스가 수행될 때 그 서비스의 소유자
        - 서버프로그램 : 실제 서버 프로그램 및 경로
        - 매개변수 : 서버에 넘겨줄 명령어 라인 매개변수

    ㄷ. inetd.conf의 역할: 이 파일에서 TCP Wrapper에서 사용하는 서비스를 제어할 수 있다. 보통
                         telnet, ftp, shell, login, exec, talk, ntalk, dtalk, pop-2, pop-3, 
                         imap, uucp, tftp, bootps, finger, cfinger, sysstat, netstat 등 TCP연
                         결을 기반으로 하는 것들을 제어할 수 있다. 서비스를 하지 않으려면 해당
                         서비스의 맨 앞에 '#'문자를 삽입한다. 즉, 해당서비스열이 주석처리된다.
   3) /etc/rc.d/init.d/inet: 리눅스 배포판만에 있는 스크립트 파일이다. 리눅스에서 inetd 전체의
                            시작과 종료는 이 파일을 이용한다. 커널 2.4에서는 xinetd이다.
   4) /usr/sbin/inetd 와 /usr/sbin/tcpd
     리눅스에서 /etc/inetd.conf 파일의 필드 구성을 보면 위의 구성예와 서버프로그램부분이 다
    르다.
       telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd
    그럼 /usr/sbin/tcpd는 무엇인가? inetd는 /etc/inetd.conf파일을 참고하여 TCP Wrapper의 초기
    구동을 담당한다. 즉, /etc/inetd.conf 파일의 설정을 다음과 같이 했다고 가정하자.
       telnet  stream  tcp     nowait  root    /usr/sbin/in.telnetd  in.telnetd
     이 경우에 inetd는 단순히 텔넷서비스 요청이 들어오면 텔넷서비스로 연결만 해준다. 이런 설정
    은 텔넷서비스요청에 대한 어떠한 접근 거부나 허가를 할 수 없게 된다. 그래서, 중간에 접근 
    여부를 판단하는 데몬이 tcpd이다. tcpd는 접근허용 파일인 /etc/hosts.allow와 /etc/hosts.deny
    파일을 참조하여 접근 여부를 결정한다. 또한 서비스에 접근하는 과정에서 발생하는 모든 사항에
    대하여 상세한 접속 로그를 남긴다. 즉, tcpd는 inetd와 서버사이에서 중요한 판단을 수행한다.

4.TCP Wrapper의 운용
 (1) 개요: TCP Wrapper의 운용은 크게 3가지로 구분할 수 있다. 첫번째는 슈퍼 데몬인 inetd를 종료
          시켜 어떠한 서비스도 하지 않는 것이고, 두번째는 inetd.conf파일을 수정(커널 2.4에서는
          /etc/xinetd.d 디렉토리내의 서비스제어)하여 선택적으로 서비스를 제어하는 것이고, 마지
          막은 /etc/hosts.allows파일과 /etc/hosts.deny파일을 가지고 클라이언트를 선택제어하는 
         것이다.
 (2) TCP Wrapper 전체 서비스의 중단
   1) 설명: TCP Wrapper를 작동하지 않으려면 inetd 데몬을 중단시키면 된다. 보통 리눅스배포판에
           서는 스크립트파일을 이용하면 된다. 
    ㄱ. 서비스의 중단
      /etc/rc.d/init.d/inet stop
    ㄴ. 서비스의 시작
      /etc/rc.d/init.d/inet start
        => 커널 2.4버전인 경우에는 xinetd이다.
 (3)선택적인 서비스의 중단
   1) 설명: TCP Wrapper에서는 여러 서비스를 한다. telnet, ftp, rlogin등 많은 서비스등을 한꺼번
          에 관리한다. 따라서, 이중 한가지 서비스를 중단하려면 /etc/inetd.conf파일을 수정하면
          된다. 만약 현재 telnet서비스를 한다면 다음과 같이 설정되어 있을 것이다.
            telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd
          그럼, 텔넷서비스를 중단해보자. 맨 앞에 주석을 뜻하는 '#'만 붙여주면 된다.
   2) 사용예
     #telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd
 (4)호스트의 접근제어 : /etc/hosts.allow와 /etc/hosts.deny파일을 이용하여 선택적으로 호스트
                       를 제어할 수 있다. 실제적으로 xinetd를 사용하는 커널 2.4버전에서도 사용
                       가능한 파일이 이 두 개의 파일이다.
    1)/etc/hosts.allow : 접근이 허가된 호스트들의 목록을 적는다.
    2)/etc/hosts.deny : 접근이 금지된 호스트들의 목록을 적는다.
    3)hosts.allow와 hosts.deny의 검색순서 
       hosts.allow를 먼저 검색한 후 hosts.deny를 검색한다. 만약 hosts.deny에 모든 서비스에 대
     해 접근 금지로 설정했을 경우, hosts.allow에 허용된 접근외에는 모든 접근이 금지된다.

5.접근제어 규칙
 (1) 설명: /etc/hosts.allow파일과 /etc/hosts.deny파일은 정해진 접근통제규칙을 가지고 있다. 이 
         규칙대로 설정을 하여 접근을 제어해야 한다.
 (2) 파일 작성시 문법상의 규칙
   1) 새로운 줄(줄바꿈)은 무시되고, 줄을 연장할 경우에는 백슬래쉬를 사용해야 한다.
   2) 빈줄 혹은 '#'으로 시작되는 줄은 주석처리된다.
   3) 다른 모든 줄은 아래의 형식을 따라야 한다.
      예) daemon_list  :  client_list   [ : shell_command ]
     daemon_list : 한개 이상의 데몬(서버프로그램)프로세스 혹은 예약어(와일드카드)
     client_list : 한 개 이상의 호스트 이름, 주소, 패턴 혹은 예약어(클라이언트 이름 혹은
                  주소가 일치하는 것)
 (3) 예약어(와일드카드라고도 부름)
    ALL        : 모든 서비스 또는 모든 호스트를 나타냄.
    LOCAL      : 같은 네트워크에 있는 모든 호스트
    KNOWN      : 이름이 KNOWN인 호스트, 혹은 이름 또는 주소를 알고 있는 호스트
    UNKNOWN    : 이름이 UNKNOWN인 호스트, 혹은 이름이나 주소를 모르는 호스트
    PARANOID   : 호스트네임이 주소와 일치되는 않는 호스트
    B EXCEPT A : 리스트 B에서 A를 제외한 모든 B
 (4) 패턴형식 : '.'의 위치에 유념해야 하고, ALL과 ':'은 공백이 있어야 한다. 
    1)모든 서비스를 모든 호스트에 대해 거부 : /etc/hosts.deny파일에 적는다.
      ALL : ALL 
    2) 특정 호스트에 특정서비스 접근 허용 : /etc/hosts.allow파일에 적는다.
      ALL : localhost, .aaa.com   => localhost와 aaa.com의 모든 호스트들에게 모든 서비스를 
                                    허용한다는 뜻이다.
      in.telnetd : 192.168.0.2 => 192.168.0.2에서 텔넷 접속에 대해서만 접근을 허용한다.
      ALL : .aaa.com EXCEPT killer.aaa.com => killer.aaa.com를 제외한 aaa.com의 모든 호스트들
                                             에게 모든 서비스를 허용한다.
      ALL EXCEPT in.ftpd : .aaa.com EXCEPT bad.aaa.com => bad.aaa.com를 제외한 aaa.com의 모든
                                                         호스트들에게 ftp서비스를 제외한 모든
                                                         서비스를 허용한다.
      in.telnetd, in.figerd : 233.234.235., .aaa.com => 233.234.235.* 네트워크에 속한 모든 호
                                                       스트와 .aaa.com에 속하는 모든 호스트들
                                                       은 텔넷서비스와 finger서비스를 허용함.
      ALL : ALL : DENY => 그외의 모든 네트워크 호스트는 어떠한 서비스도 받을 수 없다. 만약에 
                         hosts.allow를 이렇게 설정해 놓으면 별도로 hosts.deny파일이 필요없다.
      ALL : 192.168.0.0/24 => IP/넷마스크를 이용하여 설정하는 방법으로 192.168.0.0부터 192.16
                             8.0.255까지 모든 서비스에 대하여 허가한다.
 (5) Shell Command
   1) 명령
     spawn : 현재 수행중인 프로세스의 자프로세스로 수행
     twist : 현재 수행중인 프로세스의 이미지 교체 후 수행(프로세스의 이미지가 교체되므로 규칙
            의 마지막 옵션으로 사용해야 한다.
   2) 확장 옵션
     %a (%A) : 클라이언트(서버)의 주소
     %c      : 클라이언트의 정보 (user@host 또는 user@address)
     %n (%N) : 클라이언트의 이름
     %d      : 서비스 데몬의 이름
     %h (%H) : 클라이언트(서버) 이름 또는 주소
     %n      : 클라이언트(서버) 이름
     %p      : 데몬 프로세스 ID
     %s      : 서버 정보
     %u      : 클라이언트 사용자 이름 
   3) 사용예 : 의심되는 호스트(cracker.aaa.com)가 시스템에 접근을 시도할 경우 이 접속을 거부하
              고 관리자에게 관련 정보를 전송하기 위하여 hosts.deny파일에 다음과 같이 설정한다.
      ALL : cracker.aaa.com : twist (finger -l @%h | mail -s %d -%h root) &

6.TCP Wrapper의 단점
 TCP Wrapper는 클라이언트에서 보내진 네트워크 패킷들로부터 제공된 발신지주소의 정보를 보고 그
호스트에 대해 접근을 허가를 하든지 거부를 하든지 동작을 하는데, 이 정보를 전적으로 믿을 수는
없다. 만약 TCP Wrapper에서 192.168.0.2로 부터 오는 telnet 요청을 허가하도록 설정되어 있다고
할 때, 크래커가 자신의 주소를 192.168.0.2라고 속여서 접근한다면 속수무책이다. 이런 식의 공격을
IP 스푸핑이라고 한다.
Posted by 병우군
-- chinese apnic and arin (updated 2005.08.07)

58.14.0.0 - 58.25.255.255 China
58.30.0.0 - 58.41.255.255 China
58.44.0.0 - 58.59.127.255 China
58.66.0.0 - 58.67.255.255 China
58.82.0.0 - 58.83.255.255 China
58.87.64.0 - 58.87.127.255 China
58.116.0.0 - 58.119.255.255 China
58.128.0.0 - 58.135.255.255 China
58.144.0.0- 58.144.255.255 China
58.192.0.0 - 58.197.255.255 China
58.200.0.0 - 58.223.255.255 China
58.240.0.0 - 58.255.255.255 China
59.32.0.0 - 59.42.255.255 China
59.44.0.0 - 59.73.255.255 China
59.77.0.0 - 59.83.255.255 China
59.107.0.0 - 59.107.127.255 China
59.108.0.0 - 59.109.255.255 China
59.151.0.0 - 59.151.127.255 China
59.191.0.0 - 59.191.127.255 China
59.192.0.0 - 59.255.255.255 China
60.0.0.0 - 60.13.63.255 China
60.13.128.0 - 60.31.255.255 China
60.55.0.0 - 60.55.255.255 China
60.63.0.0 - 60.63.255.255 China
60.160.0.0 - 60.191.255.255 China
60.194.0.0 - 60.195.255.255 China
60.200.0.0 - 60.204.255.255 China
60.208.0.0 - 60.223.255.255 China
60.255.0.0 - 60.255.255.255 China
61.4.64.0 - 61.4.79.255 China
61.28.0.0 - 61.28.127.255 China
61.29.128.0 - 61.29.255.255 China
61.45.128.0- 61.45.191.255 China
61.47.128.0 - 61.47.191.255 China
61.48.0.0 - 61.55.255.255 China
61.128.0.0 - 61.191.255.255 China
61.232.0.0 - 61.237.255.255 China
61.240.0.0 - 61.243.255.255 China
125.32.0.0 - 125.32.255.255 China
134.196.0.0 - 134.196.255.255 China
159.226.0.0 - 159.226.255.255 China
161.207.0.0 - 161.207.255.255 China
162.105.0.0 - 162.105.255.255 China
166.111.0.0 - 166.111.255.255 China
167.139.0.0 - 167.139.255.255 China
168.160.0.0 - 168.160.255.255 China
192.83.122.0 - 192.83.122.255 China
192.124.154.0 - 192.124.154.255 China
192.188.170.0 - 192.188.170.255 China
198.17.7.0 - 198.17.7.255 China
198.97.132.0 - 198.97.132.255 China
202.0.110.0 - 202.0.110.255 China
202.0.160.0 - 202.0.179.255 China
202.3.77.0 - 202.3.77.255 China
202.4.128.0 - 202.4.159.255 China
202.4.252.0 - 202.4.255.255 China
202.8.128.0 - 202.8.159.255 China
202.10.64.0 - 202.10.79.255 China
202.14.88.0 - 202.14.88.255 China
202.14.235.0 - 202.14.238.255 China
202.20.120.0 - 202.20.120.255 China
202.22.248.0 - 202.22.255.255 China
202.38.0.0 - 202.38.15.255    China
202.38.32.0 - 202.38.47.255 China
202.38.64.0 - 202.38.138.255 China
202.38.140.0 - 202.38.156.255 China
202.38.158.0 - 202.38.161.255 China
202.38.164.0 - 202.38.176.255 China
202.38.184.0 - 202.38.255.255 China
202.41.152.0 - 202.41.159.255 China
202.46.32.0 - 202.46.63.255 China
202.46.224.0 - 202.46.239.255 China
202.60.112.0 - 202.60.127.255 China
202.62.248.0 - 202.62.251.255 China
202.69.16.0 - 202.69.31.255 China
202.70.0.0 - 202.70.31.255 China
202.74.8.0 - 202.74.15.255 China
202.75.208.0 - 202.75.223.255 China
202.85.208.0 - 202.85.223.255 China
202.90.0.0 - 202.90.3.255 China
202.90.224.0 - 202.90.239.255 China
202.90.252.0 - 202.91.3.255 China
202.91.128.0 - 202.91.131.255 China
202.91.176.0 - 202.91.191.255 China
202.92.0.0 - 202.92.3.255 China
202.92.252.0 - 202.93.3.255 China
202.93.252.0 - 202.94.31.255 China
202.95.0.0 - 202.95.31.255    China
202.95.252.0 - 202.122.39.255 China
202.122.64.0 - 202.122.95.255 China
202.122.112.0 - 202.122.119.255 China
202.122.128.0 - 202.122.128.255 China
202.123.96.0 - 202.123.111.255 China
202.125.176.0 - 202.125.191.255 China
202.127.0.0 - 202.127.63.255 China
202.127.112.0 - 202.127.255.255 China
202.130.0.0 - 202.130.31.255 China
202.130.224.0 - 202.130.255.255 China
202.131.16.0 - 202.131.23.255 China
202.131.48.0 - 202.131.63.255 China
202.131.208.0 - 202.131.223.255 China
202.136.48.0 - 202.136.63.255 China
202.136.208.0 - 202.136.239.255 China
202.136.252.0 - 202.136.255.255 China
202.142.16.0 - 202.142.31.255 China
202.143.16.0 - 202.143.31.255 China
202.148.96.0 - 202.148.127.255 China
202.149.160.0 - 202.149.175.255 China
202.149.224.0 - 202.149.255.255 China
202.150.16.0 - 202.150.31.255 China
202.158.160.0 - 202.158.191.255 China
202.164.0.0 - 202.164.15.255 China
202.165.96.0 - 202.165.111.255 China
202.166.192.0 - 202.166.223.255 China
202.168.160.0 - 202.168.175.255 China
202.170.128.0 - 202.170.159.255 China
202.173.8.0 - 202.173.15.255 China
202.173.224.0 - 202.173.255.255 China
202.180.128.0 - 202.180.159.255 China
202.192.0.0 - 202.207.255.255 China
203.79.0.0 - 203.79.15.255 China
203.81.16.0 - 203.81.31.255 China
203.86.0.0 - 203.86.95.255 China
203.87.224.0 - 203.88.3.255 China
203.88.32.0 203.88.63.255 China
203.88.192.0 - 203.88.223.255 China
203.89.0.0 - 203.89.3.255 China
203.90.0.0 - 203.90.3.255 China
203.90.128.0 - 203.90.223.255 China
203.91.0.0 - 203.91.3.255 China
203.91.32.0 - 203.91.63.255 China
203.91.96.0 - 203.91.111.255 China
203.92.0.0 - 203.92.3.255 China
203.92.160.0 - 203.92.191.255 China
203.93.0.0 - 203.94.31.255 China
203.95.0.0 - 203.95.7.255 China
203.95.96.0 - 203.95.111.255 China
203.100.32.0 - 203.100.47.255 China
203.100.96.0 - 203.100.127.255 China
203.110.160.0 - 203.110.191.255 China
203.118.192.0 - 203.118.223.255 China
203.119.24.0 - 203.119.35.255 China
203.128.32.0 - 203.128.63.255 China
203.128.96.0 - 203.128.159.255 China
203.130.32.0 - 203.130.63.255 China
203.132.32.0 - 203.132.63.255 China
203.134.240.0 - 203.134.247.255 China
203.135.96.0 - 203.135.111.255 China
203.135.160.0 - 203.135.175.255 China
203.148.0.0 - 203.148.63.255 China
203.152.64.0 - 203.152.95.255 China
203.156.192.0 - 203.156.255.255 China
203.175.128.0 - 203.175.159.255 China
203.175.192.0 - 203.175.255.255 China
203.184.0.0 - 203.184.3.255 China
203.187.160.0 - 203.187.191.255 China
203.191.64.0 - 203.191.127.255 China
203.192.0.0 - 203.192.31.255 China
203.196.0.0 - 203.196.3.255 China
203.207.64.0 - 203.208.19.255 China
203.212.0.0 - 203.212.15.255 China
203.222.192.0 - 203.222.207.255 China
203.223.0.0 - 203.223.15.255 China
210.2.0.0 - 210.2.31.255 China
210.5.0.0 - 210.5.47.255 China
210.5.128.0 - 210.5.143.255 China
210.12.0.0 - 210.13.255.255 China
210.14.64.0 - 210.14.95.255 China
210.14.160.0 - 210.15.191.255 China
210.16.128.0 - 210.16.191.255 China
210.21.0.0 - 210.22.255.255 China
210.25.0.0 - 210.47.255.255 China
210.51.0.0 - 210.53.255.255 China
210.56.192.0 - 210.56.223.255 China
210.72.0.0 - 210.78.255.255 China
210.79.64.0 - 210.79.127.255 China
210.79.224.0 - 210.79.255.255 China
210.82.0.0 - 210.83.255.255 China
210.87.128.0 - 210.87.191.255 China
210.185.192.0 - 210.185.255.255 China
210.192.96.0 - 210.192.127.255 China
210.211.0.0 - 210.211.15.255 China
211.64.0.0 - 211.71.255.255 China
211.80.0.0 - 211.103.255.255 China
211.136.0.0 - 211.167.255.255 China
218.0.0.0 - 218.31.255.255 China
218.56.0.0 - 218.99.255.255 China
218.104.0.0 - 218.109.255.255 China
218.192.0.0 - 218.207.255.255 China
218.240.0.0 - 218.247.255.255 China
218.249.0.0 - 218.249.255.255 China
219.72.0.0 - 219.72.255.255 China
219.82.0.0 - 219.82.255.255 China
219.128.0.0 - 219.159.255.255 China
219.216.0.0 - 219.239.255.255 China
219.242.0.0 - 219.247.255.255 China
220.101.192.0 - 220.101.255.255 China
220.112.0.0 - 220.115.255.255 China
222.125.0.0 - 222.125.255.255 China
220.160.0.0 - 220.207.255.255 China
220.231.0.0 - 220.231.63.255 China
220.231.128.0 - 220.231.255.255 China
220.232.64.0 - 220.232.127.255 China
220.234.0.0 - 220.234.255.255 China
220.248.0.0 - 220.251.255.255 China
221.0.0.0 - 221.11.223.255 China
221.12.0.0 - 221.12.191.255 China
221.13.0.0 - 221.15.255.255 China
221.122.0.0 - 221.123.255.255 China
221.129.0.0 - 221.131.255.255 China
221.136.0.0 - 221.137.255.255 China
221.172.0.0 - 221.183.255.255 China
221.192.0.0 - 221.199.47.255 China
221.199.128.0 - 221.199.207.255 China
221.200.0.0 - 221.239.255.255 China
222.16.0.0 - 222.95.255.255 China
222.128.0.0 - 222.143.255.255 China
222.160.0.0 - 222.163.255.255 China
222.168.0.0 - 222.223.255.255 China
222.240.0.0 - 222.249.249.255 China
Posted by 병우군

1. 계정 생성하기

adduser 명령어에 대해 기본값을 설정 -> 사용자 추가 -> 추가된 내용확인 의 순으로 진행이 된다.

 

#adduser -v

Use option ``-silent'' if you don't want to see all warnings and questions.
Check /etc/shells
Check /etc/master.passwd
Check /etc/group
Enter your default shell: csh date no sh tcsh [sh]: bash <- 기본적인 쉘을 bash 로 변경하였다.
Your default shell is: bash -> /usr/local/bin/bash <- bash 쉘로 바뀌었다는 알림이다.
Enter your default HOME partition: [/home]: <- 그냥 엔터
Copy dotfiles from: /usr/share/skel no [/usr/share/skel]:  <-그냥 엔터
Send message from file: /etc/adduser.message no

[/etc/adduser.message]: <- 그냥 엔터
Do not send message
Use passwords (y/n) [y]: y
   
Write your changes to /etc/adduser.conf? (y/n) [n]: y
   
Ok, let's go.
Don't worry about mistakes. I will give you the chance later to correct any input.
Enter username [a-z0-9_-]: swingme <- 추가할 사용자 계정명 입력
Enter full name []: navaer cafe swingme <- 계정의 풀 네임을 입력
Enter shell bash csh date no sh tcsh [bash]: bash <- bash 셀을 사용한다고 입력, 엔터를 치면 []안에있는 쉘이 적용 
Enter home directory (full path) [/home/swingme]: <- 계정을 swingme 라고 입력을 하여서 자동적으로 생성, 그냥 엔터
Uid [1001]: <- 그냥 엔터
Enter login class: default []: <- 그냥 엔터
Login group swingme [swingme]: <- 그냥 엔터
Login group is ``swingme''. Invite swingme into other groups: guest no
[no]: wheel <- wheel 그룹으로  지정
Enter password []: <- swingme 계정에 대한 비밀번호를 입력
Enter password again []: <- 비밀번호를 재 입력
   
Name:   swingme
Password:   ****
Fullname:     naver cafe swingme

Uid:   1000
Gid:   1000 (swingme)
Class:  
Groups:    swingme wheel
HOME:         /home/swingme
Shell:    /usr/local/bin/bash
OK? (y/n) [y]: y <- 계정생성에 대해 확인된 내용이 맞냐는 질문, 맞으면 y 입력
Added user ``swingme''
Copy files from /usr/share/skel to /home/swingme
Add another user? (y/n) [y]: n <-계정을 계속 생성하겠냐는 질문, 더이상 할필요없으면 n 입력
Goodbye!

#

 

앞으로 adduser 명령을 인자없이 ( -v ) 없이 사용할 수가 있다.

만약 기본설정과 관계없이 만들고 싶으면 adduser -s 로 사용자를 추가할 수 있다.

 

 

2. 계정 삭제하기

rmuser 명령어로 시스템에서 사용자를 삭제하고 데이터베이스의 흔적들까지 삭제한다.

 

rmuser 명령은 아래의 단계 절차를 밟으면서 한다.

 1) 삭제할 사용자의 crontab 항목을 검사하여 만약 있을경우 삭제를 한다.

 2) 삭제할 사용자로부터 귀속된 모든 작업을 삭제한다.

 3) 삭제할 사용자가 소유한 모든 프로세스들을 종료한다.

 4) 시스템의 로컬 패스워드 파일로부터 사용자를 삭제한다.

 5) 삭제할 사용자의 홈 디렉토리를 삭제한다.

 6) /var/mail 등의 메일이라던지 메세지들을 삭제한다.

 7) /tmp 등과 같은 임시 파일 저장 디렉토리내의 삭제할 사용자가 소유하고 있는 파일들을 삭제한다.

 8) /etc/group 에 있는 모든 그룹들에서 사용자의 이름을 삭제한다.

 

#rmuser swingme <- swingme 라는 계정을 삭제

Matching password entry: <- swingme 계정의 비밀번호를 입력한다.
swingme:Q4PXGgzkWmS0E:1004:0::0:0:naver cafe swingme:/home/swingme:/usr/local/bin/bash
Is this the entry you wish to remove? y
Remove user's home directory (/home/jru)? y
Updating password file, updating databases, done.
Updating group file: trusted (removing group swingme -- personal group is empty) done.
Removing user's incoming mail file /var/mail/swingme: done.
Removing files belonging to swingme from /tmp: done.
Removing files belonging to swingme from /var/tmp: done.
Removing files belonging to swingme from /var/tmp/vi.recover: done.

#



3. 수정하기

passwd 명령어를 이용하여 자신의 비밀번호를 바꾸거나 수퍼유저(root) 가 다른 사용자 계정의 비밀번호를 바꿀 수 있다.


swingme 계정으로 로긴상태에서 passwd 를 입력하였을 경우


#passwd

Changing local password for swingme

Old password: <- swingme 계정이 기존에 사용하고 있던 비밀번호 입력
New password: <- swingme 계정이 새로 사용할 비밀번호 입력
Retype new password: <- 새로운 비밀번호 재 입력
passwd: updating the database...
passwd: done
   

root 계정이 다른 사용자의 비밀번호를 변경할 경우

# passwd swingme <- swingme 계정의 비밀번호를 변경
Changing local password for swingme
New password: <- swingme 계정이 새로 사용할 비밀번호 입력
Retype new password: <- 새로운 비밀번호 재 입력
passwd: updating the database...
passwd: done

Posted by 병우군

Pmail0 에서 backup0 으로 ssh 암호없이 로그인 하는법

----------------------------------------------------

ssh를 사용하여 iizs@serverA에서 giraffe@serverB로 로긴하는 경우, 아무런 설정이 되어있지 않은 경우라면, 다음과 같이 로긴할 때마다 암호를 입력해야만 한다.


[iizs@serverA]$ ssh giraffe@serverB
giraffe@serverB's password:
[giraffe@serverB]$


자주 들락거리는 서버의 경우라 매번 암호를 입력하는 것이 번거롭다고 느껴진다면, 다음과 같은 작업으로 인증을 자동으로 수행하도록 할 수 있다.


먼저 serverA에서 ssh key를 생성해야한다. 다음과 같이 생성한다.


[iizs@serverA]$ ssh-keygen -t rsa
Enter file in which to save the key (/home/iizs/.ssh/id_rsa)
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/iizs/.ssh/id_rsa
Your public key has been saved in /home/iizs/.ssh/id_rsa.pub
The key fingerprint is:
b6:a5:b9:87:3f:4e:5a:f3:19:11:22:33:55:66:22:99
iizs@serverA


화면에 나오는 지시를 따르면, 다음과 같이 id_rsa, id_rsa.pub 두 개의 파일이 생성된 것을 확인할 수 있다.


[iizs@serverA]$ ls -l /home/iizs/.ssh/
합계 12
-rw-------    1 iizs     user          887  1월 14 17:50 id_rsa
-rw-r--r--    1 iizs     user          218  1월 14 17:50 id_rsa.pub
-rw-r--r--    1 iizs     user          234  1월 14 17:45 known_hosts


id_rsa는 private key이고, id_ras.pub는 public key이다. permission을 보면 알 수 있겠지만, public key는 다른 사람들에게 노출되어도 관계없지만, private key는 다른 사람들에게 노출되면 곤란하다.


public key의 내용을 보면 다음과 같다. 여러 줄로 나누어져 보이겠지만, 모두 한 줄에 있는 내용이다.


[iizs@serverA]$ cat /home/iizs/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA5DpyjQOwyqTnCorIlW6u1h0QA+xjiT7gqsCasdfghjPsng/r/cKNWFenw7oB+1gDSV7WOzW1sbA/1234567890EWczfX3ZNhlbInvgC1cX6+721234567890T8Qp3x5w2hYlD+PqMatnlmiBTFrju3Ndls2AYUcMkxepUduDBwU=
iizs@serverA


이제 serverB로 가자. serverB의 ~/.ssh/ 디렉토리에 authorized_keys라는 파일이 있을 것이다. (없다면 새로 만든다.) 그리고 그 파일에 위 내용을 입력한다. 입력 내용을 다음과 같이 확인해보자.


[giraffe@serverB]$ tail -1 /home/giraffe/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA5DpyjQOwyqTnCorIlW6u1h0QA+xjiT7gqsCasdfghjPsng/r/cKNWFenw7oB+1gDSV7WOzW1sbA/1234567890EWczfX3ZNhlbInvgC1cX6+721234567890T8Qp3x5w2hYlD+PqMatnlmiBTFrju3Ndls2AYUcMkxepUduDBwU=
iizs@serverA


이제 serverA에서 serverB로 접속해보자.


[iizs@serverA]$ ssh giraffe@serverB


바로 접속이 되는 것을 볼 수 있을 것이다. 혹시, 자동으로 접속이 되지 않고 암호를 물어온다면, 다음과 같이 명령을 내린다.


[iizs@serverA]$ ssh -i /home/iizs/.ssh/id_rsa giraffe@serverB


이렇게해도 안된다면, 위 과정에서 무엇인가 실수를 한 것이니 천천히 실수한 것을 찾아보도록 한다. =)


덧붙임. 위에 나온 각종 key 및 서버이름들은 악용의 소지를 막기 위해 의도적으로 조작되었음.

Posted by 병우군

오피스텔

룸 갤러리 2007/11/29 17:20




Posted by 병우군
중요한 데이터를 보다 안전하게 보관하기
(TrueCrypt를 사용한 중요 데이터의 암호화)

노트북 또는 이동식 디스크의 사용이 보편화되면서 사용자는 필요한 데이터를 휴대하는 것이 가능해지게 되었습니다. 반면에 이러한 이동식/휴대 저장장치를 사용자의 부주의로 분실할 경우 저장되어 있는 데이터가 외부에 노출될 수 있고 그로 인해 개인정보의 누출에서부터 금전적인 손실까지 발생할 수 있습니다. 실제로 각종 언론매체를 통해 기업 또는 공공기관 직원들이 가지고 다니던 노트북을 도난 당하거나 분실함으로써 중요 자료들이 외부로 유출되는 사례가 있었음을 접해본 적 있었을 것입니다.
이번 호에서는 업무의 특성 또는 직업적인 여건상 중요한 데이터를 가지고 다녀야 하는 사람 또는 공용 PC에서 개인적인 데이터를 작업하는 경우, 데이터를 안전하게 보관할 수 있는 방법에 대해서 알아보고자 합니다.




1. TrueCrypt 소개


TrueCrypt는 암호화된 파일/디바이스를 가상의 드라이브로 사용할 수 있는 무료 프로그램입니다.
다양한 암호화 알고리즘 및 Hash 알고리즘을 이용하여 데이터를 안전하게 보호할 수 있습니다.
지원 O/S : Windows XP/2000/2003, Linux (32/64 bit 지원)
지원 알고리즘 : AES-256, Blowfish(448-bit key), CAST5, Serpent, 3DES, Twofish
다운로드 : http://www.truecrypt.org/downloads.php




2. TrueCrypt 설치


위의 URL을 클릭하여 최신 버전을 다운로드 받습니다. 이번 호에서 필자는 4.2a를 이용하였습니다.



[그림 1] TrueCrypt 다운로드 페이지


다운 받은 파일을 풀면「TrueCrypt Setup.exe」라는 파일이 보이는데 실행을 시키면 아래의 화면이 나타납니다. 설치는 여느 프로그램이 그러하듯 Install 버튼을 누르면 설치가 완료됩니다.




[그림 2] TrueCrypt 설치 초기화면



[그림 3] TrueCrypt 설치 완료화면


3. TrueCrypt 실행/Device 생성하기



[그림 4] 시작메뉴에서 TrueCrypt


시작버튼을 눌러서 TrueCrypt를 실행시키면 아래와 같은 화면을 확인할 수 있습니다.
이 화면이 가상의 디스크를 생성/Mount하는 기본화면입니다.




[그림 5] TrueCrypt 실행 화면

현재는 만들어진 가상 디스크가 없는 관계로 「Create Volume」를 클릭하여 암호화된 가상의 디스크를 생성하는 과정을 진행합니다.



[그림 6] Crate Volume를 클릭하여 Volume 생성을 위한 마법사 실행


위 [그림6]에 보이는 화면처럼 2가지 형태의 Volume을 지원하게 됩니다.
● Create a standard TrueCrypt volume
● Create a hidden TrueCrypt volume


일단 일반적인 방법에 대해서 먼저 설명을 하고 Hidden Volume에 대해서는 뒤에서 언급하도록 하겠습니다.



[그림 7] Volume Creation Wizard 가상파일 생성위치 선택 화면


위에 보이는 [그림 7]은 암호화된 영역을 만들기 위한 화면으로 가상의 파일을 Device처럼 인식하도록 하는 방법과 실제의 Device를 암호화 시키는 방법을 모두 지원합니다.


[그림 8-1] Select Device              [그림 8-2] Select File


여기서는 임의의 파일을 가상 Device로 생성하는 부분에 대해서 설명을 하겠습니다.




[그림 9] Encryption Option


만들어지는 파일에 대한 암호화 방식을 설정하는 메뉴로 다양한 암호화 방식을 사용하고 있기에 사용자들이 원하는 암호화 방식을 선택할 수 있습니다.




[그림 10-1] Encryption Algorithm                   [그림 10-2] Hash Algorithm


암호화 방식에 따른 데이터 처리 속도에 대해 궁금하다면 「Benchmark」 버튼을 클릭해서 버퍼에 따른 암/복호화 속도의 벤치마크 결과를 볼 수 있습니다. 그 결과를 보고 적절한 암호화 알고리즘 방식을 설정하는데 참고하는 자료로 활용할 수 있도록 지원을 해 주고 있습니다.




[그림 11] Benchmark Test


그뿐 아니라 사용하는 암호화가 제대로 되었는지 의문을 품는 사용자를 위해 암/복호화에 대한 테스트 역시 지원을 하고 있습니다. 확인하는 방법은 다음과 같습니다.
「Test」라는 버튼을 클릭하면 아래의 창이 나타나게 되는데 이 창에서 각종 암호화 알고리즘에 따른 암/복호화 테스트를 수행할 수 있습니다.




[그림 12] En/Decrypt Test


충분한 고민을 통해 자신에게 적합한 암호화 알고리즘을 선택하였다면 과감하게 Next 버튼을 클릭하여 다음 단계로 넘어가겠습니다.




[그림 13] Volume Size


위 [그림 13]은 생성할 가상 Device의 사이즈를 설정하는 화면으로 물리적인 Device의 남은 공간에 따라 생성할 수 있는 Size가 제한이 되도록 되어 있으며 FAT와 NTFS중 원하는 방식을 선택할 수 있습니다.




[그림 14] Volume Password


사이즈를 설정하였다면 이제는 암호를 설정하는 단계로 넘어가실 수 있습니다. 암호의 설정은 2가지 방식을 지원합니다. 하나는 흔히 볼 수 있는 암호의 설정이고 「Use Keyfiles」를 선택할 경우 Keyfile을 만들거나 기존의 Keyfile을 이용할 수 있습니다. 일반적인 암호 설정 시 암호의 자릿수를 작게 설정할 경우 20자 이상으로 설정하라는 경고 창이 뜰 수 있으니 적절하게 판단하여 암호의 자릿수를 설정하시면 됩니다.




[그림 15] Volume Password


처음 Keyfile을 생성하는 경우 위 그림에 보이는 「Generate Random Keyfile」버튼을 클릭하면 Keyfile을 생성할 수 있습니다. 이 외에도 mp3, jpg, zip, avi, txt 같은 다양한 파일을 사용하여 Key를 생성할 수 있기 때문에 정확한 Key를 모르는 사용자는 접근이 불가능하게 됩니다.




[그림 16] Generate Random Keyfile


Keyfile을 생성하는 화면으로 위 [그림 16]에 붉은 상자로 선택된 내용이 Random하게 변경되면서 임의의 Key를 생성하게 됩니다.




[그림 17] Volume Format


암호화 방식과 Size를 모두 설정한 후 실질적인 데이터를 쓸 수 있도록 가상 Device에 대한 Format을 수행하는 화면입니다. 앞서서 설명한 것처럼 FAT와 NTFS 방식을 지원하고 있습니다.
필자의 경우 NTFS를 선택하여 Format을 수행하였습니다.




[그림 18] Volume Format Key 생성결과


「Format」버튼을 클릭하게 되면 [그림 18]처럼 Device File에 대한 Key를 생성하고 Format을 수행하게 됩니다.




[그림 19] Volume Format 완료


성공적으로 작업을 완료하면 [그림 19]와 같은 창이 뜨고 확인을 하게 되면 작업이 완료됩니다.




[그림 19] Volume 생성 완료


지금까지 프로그램을 실행하여 가상 Device를 생성하는 부분에 대해서 알아보았습니다.
이 부분에서 다루지 못한 부분은 뒤에서 간략하게나마 소개하도록 하겠습니다.


4. Device 연결하여 사용하기




[그림 20] Device Mount


① 파일 또는 Device를 선택합니다.
② 설정할 Drive 명을 선택합니다.
③ Mount를 하여 Drive를 연결합니다.


- [그림 21]에서처럼 Password 또는 KeyFile를 요구합니다.



[그림 21] Device Mount 인증창


④ 인증 절차를 완료하면 [그림22]에서 보이는 것처럼 연결된 Drive의 내용이 화면에 표시가 됩니다.




[그림 22] Device Mount 결과


⑤ [그림 22]에서는 Standard Volume와 Hidden Volume의 차이를 보여주기 위하여 2개의 Device를 Mount하였습니다.




[그림 23] Device Mount 상태 탐색기에서 확인한 결과


⑥ [그림 23]에서 보이는 것처럼 탐색기에서는 일반 Disk Drive로 표현이 되며 파일 복사/삭제 역시 기존에 사용하던 디스크와 동일하게 사용할 수 있습니다.


5. 그 외의 기능


- 다국어 지원 : 20여가지 언어를 지원하나 아쉽게도 한국어는 지원하지 않습니다.

  (http://www.truecrypt.org/localizations.php)

- Hidden Volume 지원 : Standard Volume 영역에 Hidden Volume을 지원합니다.




[그림 24] Standard/Hidden Volume 구조 정보


[그림 24]에서처럼 일반 Standard 영역의 빈 영역을 Hidden으로 설정하여 별도의 파티션을 잡기 때문에 비밀 데이터를 보관할 수 있도록 지원을 하게 됩니다.



- Backup/Restore Volume Header 지원 : 사용하면서 암호를 분실하거나 데이터에 문제가 생긴 경우 복구를 하기 위한 기능을 지원합니다. 사용방법은 [Volume Tools..]라는 버튼을 눌러서 작업을 할 수 있습니다.



지금까지 TrueCrypt의 기능과 사용방법에 대해서 알아보았습니다. 무료로 제공하는 프로그램이지만 강력한 암호화 기능을 가지고 있으며 Key 관리를 통해 데이터를 안전하고 편리하게 보관할 수 있도록 지원을 합니다. 또한 예기치 않는 문제로 인하여 데이터의 손실을 방지 할 수 있도록 백업/복구와 관련한 기능을 지원하여 사용자의 편의성을 높였으며 64Bit 운영체계를 지원하기 때문에 최신 기종에서도 사용이 가능합니다. 이러한 이유로 노트북/이동식 디스크 사용자의 경우 이 프로그램을 사용한다면 중요한 데이터를 안전하게 보호할 수 있으며 분실로 인하여 발생할 수 있는 중요 데이터의 유출을 해결할 수 있는 도구입니다.



[ 참고사이트 ]
A. http://www.truecrypt.org/

[ 출 처 ]
-AHNLAB coconut
Posted by 병우군
'Buffer Overflow 공격'.. 보안에 대해서 관심있는 사람뿐 아니라 시스템/네트웤, 개발자에 이르기까지 한 번 쯤은 들어봤을 만한 용어이다. 적어도 IT분야에서는 널리 알려진 이 용어에 대해서 인터넷, 보안서적 등을 살펴보면 "지정된 크기의 저장공간(Buffer) 보다 넘치게(overflow) 입력되는 Overflow 현상을 이용하여 Buffer에 입력되지 못한 조작된 데이터를 시스템의 특정 위치에 기록하여 공격하는 기법" 이라는 간략한 설명으로 시작되는 Buffer Overflow에 대해서 그 원리에 대해서 충분히 이해하기란 쉽지않아 이번 Lecture에서는 Overflow 공격의 기본 원리를 Buffer Overflow 공격기법 중 하나인 Stack Overflow를 중심으로 정리한다.


기본 메모리 구조 - Stack, Heap, Code
Overflow 공격을 설명하기에 앞서서 우선은 시스템의 메모리 구조에 대한 이해가 필요하다. 일반적인 시스템에서 메모리는 아래의 그림처럼 3가지로 구분되는데 메모리의 상세구조에 대해서 설명하기 보다는 우선 Stack Overflow 공격과 관련된 Stack 영역과, Code 영역에 대한 이해를 돕기로 한다.



[그림 1] 일반적인 메모리 구조

STACK 영역
Stack 영역은 프로그램안에 함수에 의해서 선언된 변수에 할당되는 영역으로 시스템이 특정 함수를 실행하는 경우 함수내에 선언된 변수와 이들 값을 저장하기 위해서 할당되었다가, 함수의 실행이 종료되면서 해제되는 영역이다.
프로그램의 함수가 실행되면 Stack 영역에 Stack Frame 이라는 영역이 함수에 할당되는데 이 Stack Frame에 해당 함수가 실행하는데 필요한 정보들이 저장되어있다.



[ Stack & Stack Frame ]


CODE 영역
Code 영역은 프로그램이 실질적으로 실행될 명령어가 저장되는 공간으로 기계어로 프로그램(또는 함수)의 실행코드가 기계어 형태로 저장되어있다.


Buffer Overflow에 취약한 프로그램?
Buffer Overflow에 취약한 프로그램에 대해서 설명하기 전에 우선은 아래의 샘플코드를 살펴보자.
먼저 6라인의 char var[10]; 부분에서는 var라는 변수에 최대 10Byte의 자료가 저장될 수 잇는 공간을 할당하였다. 다음 7라인을 보면 strcpy()함수를 실행하는데 6라인에서 선안한 10Byte 크기의 var 변수공간에 32byte 크기의 문자열을 저장하고 있어 이 샘플코드를 컴파일하고 실행하면 Buffer Overflow 현상이 발생하여 프로그램이 정상적으로 실행하지 못할 것을 예상할 수 있다.



위 샘플코드를 컴파일하고 실행하고 로그를 확인한 결과를 다음에 보여주는데 프로그램이 실행한 직후 프로그램상에서 오류가 발생하였으며, 이벤트 로그를 확인한 결과 주소 0x45454545 부분에서 문제가 발생했음을 알 수 있다.



[ 샘플코드 실행결과 ]



[ 로그 확인 결과 ]



Buffer Overflow 현상과 Stack Frame
이제 지정한 크기의 저장공간에 큰 값을 입력하였을 경우 시스템 내부적으로 어떻게 동작하여 Overflow가 발생하면서 오류가 발생하는지 살펴보자.

최초 샘플프로그램이 실행되면서 Stack 영역에 하나의 Stack Frame에 할당되며, 이 Stack Frame에 'var' 변수를 위한 공간이 할당된다.

그 다음으로 scrcpy()함수가 실행되면서 'var'변수에 문자열 'AAAABBBBCCCCDDDDEEEEFFFF GGGGHHHH' 문자열이 저장되는데 문제는 12byte 크기의 저장소에 32byte 크기의 문자열이 저장되면서 'var'에 할당된 12byte 까지는(주1) 정상적으로 저장될 것이다.

※ 주1 : 샘플 프로그램에서 'var'에 할당한 메모리 크기는 10byte 이지만 테스트한 시스템은 32bit 시스템으로 실제 'var' 변수에는 12byte의 공간이 할당되며, 문자열도 12byte 크기가 저장된다.)

그렇다면 'var'에 저장되고 남은 문자열은 어디에 있는지 살펴보면, 운영체제가 var에 할당해준 12byte 공간에 이어서 문자열이 저장되는 것을 메모리 맵을 통해서 확인할 수 있다.




[ 문자열 저장확인 ]


이제 주어진 문자열이 지정한 공간의 넘어서 메모리에 쓰여졌을을 확인하였는데, 이렇게 불필요하게 쓰여진 데이터가 프로그램에 미치는 영향을 확인해야 한다.


Strack Frame의 구조를 다시 살펴보면 Stack Frame의 argument영억에 이어서 Instruction 영역이 존재하는데 Instruction 영역은 함수가 종료한 후에 실행될 명령어가 저장된 주소값을 가지고 있다.
따라서 위 그림에서 '45 45 45 45' 문자열에 위치한 곳은 strcpy()함수가 실행되고 다음 실행할 명령어가 있는 위치한 주소값을 저장한 곳이다.

그러나 잘못된 프로그래밍에 의해서 strcpy() 다음 명령어가 저장된 주소값이 지워져 버린것이다.
이를 확인하지 위해서 메모리 주소 '45 45 45 45 '를 확인한 메모리 맵이 아래 그림이다.



메모리 상의 '45 45 45 45' 위치를 확인한 결과 '?' 표기로 되어있어 아무런 기계어 코드가 없는 것을 확인할 수 있으며, 프로그램은 strcpy()를 실행한 후에 '45 45 45 45' 위치의 '????' 명령어를 실행하던 중 오류가 발생한 것이며 프로그램의 각 실행코드와 메모리 동작을 나타내면 아래 그림으로 표현 할 수 있다.




[ 출 처 ]
-AHNLAB coconut
Posted by 병우군