336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
1-0 리눅스관련사이트
네트윅 보안 신기술http://www.security.org.il/
보안 컨설팅http://www.njh.com/
nmap 포트스캔http://www.insecure.org/nmap/index.htm
saint 단정검사http://www.wwdsi.com/saint/
nessus 단정검사http://www.nessus.org/
네트윅감시http://www.nfr.com/
화일변경관리http://tripwiresecurity.com/
패킷로깅ftp://ftp.ee.lbl.gov/
egcs http://egcs.cygnus.com/
CESDIS http://cesdis.gdfc.nasa.gov/linux/linux.html
Kernelnotes.org http://kernelnotes.org/
linux Gazette http://www.linuxgazette.com/
The AlphaLinux http://www.alphalinux.org/
Linux on SGI http://www.linux.sgi.com/
linuxCE http://www.linuxe.org/
linux for PowerPC http://www.linuxppc.org/
Power Macintosh http://www.mklinux.apple.com/
UltraLinux http://www.ultralinux.org/
Caldera OpenLinux http://www.calderasystem.com/
SuSe Linux http://www.suse.com/index_us.html/
Enoch http://enoch.masslinux.com/
Window Maker http://www.windowmaker.org/
Enlishtenment http://www.rasterman.com/
fvwm http://www.fvwm.org/
Security Forcus http://www.securityfocus.com/
Security Toolkit http://www.trinux.org/
SOCKS proxy protocol http://www.socks.nec.com/
SSLeay and SSLapps FAQ http://www.infoscience.com/
Linux Documentation Project http://metalab.unc.edu/mdw/linux.html
HyperRFC http://www.csl.sony.co.jp/rfc/
Accelrerated-X http://www.xig.com/
VMware http://www.vmware.com/
1-1 서버재시작
설정사항 변경후 다시 서비스적용
#/etc/init.d/xineted restart
1-2 네트워크 재시작
설정사항 변경후 다시 서버적용
#/etc/rc.d/init.d/network restart
1-3 보안설정
보안설정을 위한 명령어
#lokkit
1-4 스타트업 스크립터 조절
데몬 실행 상태 확인및 수정
시동되도록 돼어있는 것을 먼추게 하려면 대문자S를 소문자롤 변경하면된다.
#chkconfig --list
#chkconfig kudzu off
1-5 ftp세션에 대한 모든것을 저장
/etc/ineted.conf 파일수정
ftp stream tcp nowait root /usr/sbin/tcpd i.ftpd-l-L-i-o
1-6 특정유저만 수퍼유저 가능하게 설정
/etc/pam.d/su 파일에 다음을 추가
authsufficient/lib/security/pam_rootok.sodebug
autherequired/lib/secrity/Pam_wheel.sogroup=wheel
/etc/group의 wheel 그룹에 suroot를 허용하는 사용자 그룹을 등록
wheel:x:10:root/iampro
1-7 TCPWrapper 설정으로 특정IP접속 허용, 거부
/etc/hosts.allow : 모든 접속거부
all : ALL
hosts.allow 파일에서 허용할 IP를 여러 개 설정할 경우 다음과 같이 스페이스로 구분하여 준다.
all : xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx ....
/etc/hosts.deny 설정변경
in.telnet:127.0.0.1
#tcpchk 로 명령어가 올바른지 체크
1-8 시스템 변조확인 SUID/SGID찾기
#find . -name "*.c" -print
-atime n n일전에 접근했으면 참 -7 일이내 +7일이상
-ctime n 생성했으면 참
-exec cmd 명령을 실행
-mtime n n일전에 수정했으면 참
-nname pattern 화일명이 패턴과 일치하면 참
-print 발견된 화일명 인쇄
-type c 화일명 종류가 c이면 참
d 디렉토리이면 참
f 파일
l 링크
-user name 사용자가 name이면 참
#find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls {} \;
#chmod a-s filename #해제
파일찾기
#find / -type f -print0 | xargs -r0 grep "패턴" /dev/null
#find /usr/src -type f -name '*.c' -print0 | xargsr0 grep 'sound' /dev/null
#find / -type f -rpint0 | perl -01ne 'print if -T $_' | xargs -r0 egrep '패턴' /dev/null
#find . -type d -exec ls -ld {} \;
#find . -name core -ctime +4 -exec /bin/rm -f {}\;
#find . -type f -exec grep -l -i mapping {} /; <-느림
#find . -type f -print | xargs -l -i mapping <-빠름
1-9 변경된 정보찾기
diff
rpm verify
find -newer 사용
751 /var/log
644 /var/log/messages
660 /var/log/wtmp
640 /var/log/lastlog
400 /etc/cron.allow
400 /etc/cron.deny
600 /etc/crontab
600 /etc/ftpusers
600 /etc/hosts.allow
600 /etc/hosts.deny
600 /etc/inetd.conf
600 /etc/lilo.conf
750 /etc/pam.d
644 /etc/passwd
600 /etc/securetty
700 /etc/security
600 /etc/services
600 /etc/shadow
400 /etc/shutdown.allow
750 /etc/ssh
751 /etc/sysconfig
400 /etc/sysctl.conf
640 /etc/syslog.conf
750 /etc/rc.d/init.d
#rpm -Vf /bin/login
#find -newer /etc/sysconfig/clock
1-10 보안설정지침
/etc/fstab 파일을 수정해서 /home 파티션에 대해 SUID/SGID접근불가(nosuid)
/tmp 파티션에는 사용자가 실행파일의 실행을 거부(noexec)
/dev/sda1 /tmp ext2 defaults,rw,nosuid,nodev,noexec 1 2
/dev/sda2 /home ext2 defaults,rw,nosuid,nodev 1 2
1-11 부팅시의 메시지
/etc/rc.d/rc.local 이 /etc/issue와 /etc/motd를 덮어쓰는지 확인해야한다 덮어쓰게 되어 있다면 편집해서 바꾼다
1-12 리눅스부팅
1. 컴퓨터가 켜지면 post 과정에 의해서 시스템초기화
2. boot record나 master boot record를 읽어들인다.
3. lilo실행 ctrl등의 키는 부팅운영체계를 물어본다.
4. kernel이 메모리로딩 커널이 압축된것을 압축해제
5. 커널은 하드, 플로피, 네트윅 검사를 하여 디바이스 설치
6. 프로세스를 보호모드로 전환, 화면변화는 없다.
7. root시스템 마은트, rdev, lilo설정, 자동검출
8. 커널은 /etc/init를 백그라운드 initab을 실행 /etc/rc실행
init -> inittab화일을 읽어 수행(login레벨, 터미널설정)
runrevel은 1-6, S는 수행하지 않는다.
inittab에서
initdefault runrevel을 정함
시스템 기동시 수행 단계르 ㄹ초기 단계로 지정한다
sysinit 부팅시 실행, boot나 bootwait보다 먼저실행
boot runlevel은 무시
단일모드에서 다중모드로 갈때 한번수행, 프로세스를 수행하고
대기하지 않는다
bootwait /etc/rc값은 외부프로세스가 끝날때까지 기다린다.
단일모드에서 다중모드로 갈때 한번 수행하며 프로세스를 시작하고
종료하기 위하여 대기한다
nespawn 프로세스 종료후 다시 실행한다
powerwait 전원문제 SIGPWR
wait level 실행시 프로세스를 시작하고 대기한다
clrlaltdel init가 SIGINT를 받을 때 실행
once 프로세스 1회실행, 종료시 재시작 안함
off level 접근시 프로세스를 죽이거나 무시
9. /etc/rd.rocal실행 /etc/gettytabs을 직렬라인 getty를 실행
10. id, password, shell, profile, prompt
시스템의 파일시스템, 루트파일시스템, /usr/같은 파일 시스템구조를 검사
파일시스템을 검사
주요한 unix부트시스템 초기화
사용자로그인
0 전원꺼짐
1 S 단일사용자모드
2 다중사용자모드
3 원격파일공유 -> 기본
5 펌웨어 상태
6 종료,재부트
시스템꺼짐 3 - 0 - 2 - 3
단일사용자 3 - 0 - S
재부트 3 - 6 - 0 - 2 - 3
1-13 방화벽설정
syn을 이용해 서비스 타운서버는 tcp syn cookies
소스라우팅 - 패킷통과 라우트지정
#ps aux 모든프로세스
#netstat -an 네트워크소켓
/etc/inetd.conf inetd에서 소켓열고 프로세스 실행 제거
telnet, ftp 중시 ssh을 통해 ssh,ftp서비스
#tcpd 허가내리기
/etc/host.allow /etc/host.deny
telnet stream tcp nowait root \
/usr/sbin/tcpd /usr/sbin/in.telnetd
/etc/inetd.conf에서
in.telnetd 대신 새로운 스크립트 실행을 위해
telnet steam tcp nowait root /usr/sbin/tcpd/telnetd.new
kill -HUP 'ps -aux | grep inetd | awk '{print $2}''
ftp는 ftpaccess
mountd /etc/exports
lpd - 510번 port /etc/hosts.equiv /etc/host.lpd
#xhost +호스트이름(실행가능)
#xhost -호스트이름(실행불가능)
/etc/sendmail.cf
NIS 썬의 네트워크 정보서비스
NFS 네트워크 파일시스템
도메인이름 /etc/sysconfig/network
make xconfig, make menuconfig
/etc/exports
/etc/dfs/dfstab
showmount -e 마운트
클라이언트 /etc/fstab에 적용
/etc/auto
특정 IP만 텔넷허용
#file /etc/xinetd.d/telnet
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
#아래가 특정아이피만 텔넷을 가능하게 합니다.
#127.0.0.1과 로컬호스트만 가능,중복설정가능
only_from = 127.0.0.1 localhost
server = /usr/sbin/in.telnetd
log_on_failure = HOST RECORD
}
수정후 /etc/init.d/xinetd restart
1-14 디스크 마운트
#mount -t ntfs -o iocharset=cp949, uid=201 /dev/hda1 /mnt/c
#mount -t vfat -o codepage=949, iocharset /dev/hda1 /mnt/c
#mount -o conv=auto -t msdos /dev/fd0 /mnt
#mount -t iso9660 -o loop isofile.iso /mnt/cdrom
#mount -w -o remount / 체크후 다시 마운트
1-15 부팅
다른 시스템으로 부팅
lilo boot : linux root=/dev/hda3
#loadlin.exe vmliuz root=/dev.hda3
#/sbin/shutdown -t3 -rf now #안전한 시스템 부팅
#/sbin/shutdown -h now #시스템다운
1-16 파일시스템체크
#fsck -t ext2 /dev/hda2
#e2fsck 장치명
#e2fsck -y 장치명
1-17 스왑공간 늘이기
8MB의 스왑파일 만들려면 파일을 열고 원하는 만큼 바이트를 써 넣으면 된다.
#dd if=/dev/zero of=/swap bs=1024 count=8192 #//dev/zero는 널바이틀 반환 <->/dev/null
#mkswap -c /swap 8192
#swapon /swap <-> #swapoff /dev/hda3
1-18 디렉토리의 순환목록
#ls -laR $HOME | gzip > filelist.gz
#tar cvf - files... | gzip -9 > tarfile.tar.gz
#gunzip -9c tarfile.tar.gz | tar xvf -
1-19 변환파일만 백업
하루 일주일 동안 변한 화일만 백업
#find / -mtime -1 \! -type d -print > /tmp/filelist.daily
#find / -mtime -7 -print > /tmp/filelist.weekly
#tar -cv -T /tmp/filelist.daily -f /dev/rft0
1-20 시간맞추기
#rdate -s time.kriss.re.kr ; 원격서버 시간 적용
#rdate -p time.kriss.re.kr ; 원격서버 시간알기
1-21 파일자르기
#tail -3200c /etc/wtmp > /temp/wtmp ; 64의 배수로한다.
#mv /tmp/wtmp /etc/wtmp
2-1 RPM관련
rpm 바이너리 패키지 설치
#rpm -qp VMware-1.1.2-364.i386.rpm => 패키지이름,버전,릴리즈,아키텍처,rpm
#rpm -qpi rpm파일명
패키지 설치
#rpm -Uvh [rpm파일명]
#rpm -ivh [rpm파일명]
#rpm -e 제거
i(install) -U(upgrade) -e(erase) -q(query:질의) -V(verify:검증) -b(build:패키지제작시기본)
낮은버전의 패키지가 있으면 제거한후 설치하고 없으면 그냥설치한다.
#rpm -i ftp://ftp.freshmeat.net/pub/rpms/minicom/minicom-1.78-2.i386.rpm
질의및 검증하기
#rpm -q [옵션][패키지목록]
-a 모든패키지
-c 설정파일만 보여준다.
-changlog 패키지를 제작한 사람이 작업할때 바꾼 기록의내용
-d 문서파일만 보여준다.
-f file+file을 포함한 패키지를 보여준다.
-F 표준 입력으로 파일명르 입력받아 포함하는 패키지를 보여준다.
-i 패키지의 기본정보를 보여준다
-l 패키지에 포함된 파일들을 보여준다
-p +지정한 패키지 파일을 보여준다
-P 표준 입력으로 패키지명을 입력받아 보여준다
-provides 패키지가 제공하는 기능을 보여준다
-R/--requires 패키지의 의존성 관계를 보여준다
-s 패키지 파일의 상태를 보여준다
-scriputs 패키지 안에 들어있는 설치 전/후 실행 스크립트를 보여준다
#rpm -q 패키지
#rpm -qa | sort | more
#rpm -qip 설치할 패키지명 : 아직설치하지 않은 패키지 파일에 대해 간단한 정보
#rpm -V/y [옵션][패키지목록]
5 MD5 checksum 파일내용체크
S file size
L symbolic link
T 최근 업그레이드 한 시간
D Device
U User
G group
M mode(permission or file type)
이상이 없는 항목은 점으로 나타나고 이상이 있으면 해당문자
#rpm -V ppp
S.5....Tc /etc/ppp/pap-secrets
--nofiles는 파일의 의존성만 --nodeps는 파일검증 --md5 md5검사않고 검증만
#rpm -qa | grep netscape*
#rpm -Uvh netscape-common-4.61-kr.i386.rpm
2-2 문자열변경
^M 문자열없애기
:1,$ s/^M(CTRL-V M)//g
이상한 모든 문자출력
#cat -t -v -e filename
#cat -s 공백제거
-v 제어문자 표시(^N)
#cat -n 라인번호붙이기
#nl filename 라인번호붙이기
-ba 번호넣기 -bt인쇄가능 -bn 해제 -bp pattern 특정패턴번호
-s 번호와 라인사이 문자삽입( nl -s ',line is :' test )
#perl -pe 's/리낙스/라이낙스/리눅스/g' me.txt > menew.txt
#perl -pi.bak -e 's/윈도/리눅스/g' *.txt
#perl -pe 's/([이그저]것)/$1g' me.txt
#tr/ABC/xyz/
#tr/A-Z/a-z/
#tr/\r/d 행끝의 복귀문자 삭제
#tr/\t/s 탭변환
#perl -ne 'print if s/((은,는,이,가,에,을,로,의,도,까,와,라)\2+)/\e[31m;7m$1\e[m/g' me.txt 검색대상에 색깔주기
#perl -ne 'print "$ARGV: $_"if s/((은,는,이,가,에,을,로,의,도,까,와,라)\2+)/\e[31;7m$1\e[m/g' 파일명
2-3 문자열검색
#grep
-c 일치하는 라인출력 -i 자형무시 -l 패턴일치출력 -n 라인번호
#grep -v hawaii trave.plans
hawaii패턴이 없는 것을 모두 출력
#grep '$100*' *(현재디렉토리) */*(하위디렉토리)
#grep '\.' disk.txt
정규표현
c 문자와 c의 일치
\c c글자자체를 읽어옴 다른의미없다.
^ 라인의 시작
$ 라인의 끝
. 하나의 단일문자
[xy] 속한문자
[^xy] 안속한문자
c* c문자의 제로또는 그이상의 반복
#egrep 추가 정규표현
c+ c문자의 하나또는 그이상 발생
c? 문자의 제로 또는 하나 발생
a|b a또는 b, (a)정규표현
1문자에 매치
. \문자 :리터를을 문자로 [...]열거한 문자중 한문자 [^...]열거한 문자제외
반복
+ * ? {m.n} {m} (...)
선택
| (...)
위치지정
^앞부분 $말미매치 \b단어경계매치
\1, \2, ... N번째 저장한 문자열에 매치
(...)
#awk '{print}'
$1 첫째필드 $2 두번째필드 "문자" $0 전체라인
"\t","\n"
#awk -f file 명령을 화일로 -Fc분리자로서 c문자
NF 필드수 NR 라인
awk '{totalsize += $5; print-totalsize}'| tail -1
#sed -e 's/://'공백으로 's/://g' 전체
sed 'd' 삭제 '1d' 1라인삭제 '1,3d' 1-3삭제
sed '/eiyo/,/rpm/d' 패턴삭제
sed '/^$/d' < test 공백삭제 1./^$/d 공백제거
"쿼트 '싱글쿼트 *스타 .도트 ^커렛,써컴플렉스 $달러 -대쉬
#more
^L 재출력 :f 화일라인번호 N1 다음출력라인 h도움말
d 반페이지아래 N(s,f) b(^B)건너뜀
= 현재라인
/pattern 검색
n 다음패턴
v 현재라인에서 vi실행
-s 공백제거
-d 프롬프트
+12 or +/pattern
-c 화면가득
#grep -r string *
#grep -n -r string *
2-4 시스템 로그관리
/etc/syslog.conf #sendmail부터 디버기 출력, 커널의 경고 메세지출력
*.info;*.notice /var/log/messages
mail.debug /var/log/maillog
*.warn /var/log/syslog
kern.emerg /dev/console
facility.level[;facility.level...]
facility : mail kern user auth(login, su 인증)
level : debug info notice warning err crit alert emerg
/var/log/wtmp #로그인시간과 사용자가 시스템연결한 기간 (last명령)
/var/run/utmp #현재로그인 정보(who, w, finger)
/var/log/lastlog
2-5 패치
커널버전 2.4.5에서 2.4.7로 업그레이드
/usr/src/linux로 이동하여 패치화일을 압축 해제한후 순차적으로 패치
#gzip -d patch-2.4.9-pre1.gz
#patch -p1 < patch-2.4.6
#patch -p1 < patch-2.4.7
#patch -p1 < patch-2.4.7-ac8
알란콕스 패치 같은경우 상위버전의 패치가 하위버전의 패치를 포함하고 있음
필요할경우 역패치한후 패치하여야 함
#patch -p1 -R < patch-2.4.7-ac8 #2.4.7로 역패치한후 처리
#patch -p1 < patch-2.4.7-ac9
2-6 vi 에디터
환경설정시
%setenv TERM vt100
$TERM=vt100 export TERM
#vi -R test 읽기전용
+$화일의 끝 +10 10번째라인부터 +/pattern 패턴부터
#vi -t spliteword 함수로 바로이동
:tag 변수
% 명령 ({}) 일치관계
]] 다음함수부분 [[ 이전함수부분
특정함수 호출위에 있을때 ^]정의부분으로 이동
태그목록작성
ctags *.c,*.h하면 tags생성
:0 라인의 맨앞으로
:$ 라인의 마지막으로
i 텍스트 삽입 a 텍스트 첨가
k 한라인위로
h 왼쪽으로 j 한라인아래로 l 오른쪽으로
r 한글자쓰기
W,w 한단어앞에 공백
B,b 한블럭뒤로 공백
O 현재 위쪽라인 삽입
o 현재 아래라인 삽입
backspace 한글자 왼족 return 라인처음
^d 반페이지아래 ^u 반페이지위로
^f 한화면 앞으로 이동
ESC 삽입모드에서 명령모드로
:w 쓰기
:w filename 지정된 화일로 저장
:q 종료
:q! 쓰지않고 종료
/pattern 패턴검색
?pattern 앞으로 패턴검색
G 화일 마지막라인으로
30G 30번째 라인
D 라인삭제
U 현재라인 변경취소
u 마지막변경취소
dw 단어 dd 단어삭제 x 한글자 삭제
:e file 다른화일편집
:n 화일목록의 다른 화일이동
:r file 현재 편집버퍼에 지정된 화일을 읽어서 합침
.exec 키맵팽
:abbreviate tyu teache yourshell UNIX in Few Minutes
:map ^A i"^[ea"[
:map ^V + ESC + i + " + ESC + ea + enter
:s/old/new 치환
:1,$ s/old/new 전체치환
!! command 현재라인을 unix명령결과로
^g 화일의 현재라인 정보
!> 현재분단을 유닉스 명령어와 바꿈
R ESC 누를때까지 수정
r 한글자 수정
( 한문장 뒤로 ) 한문장 앞으로
{ 한문단 뒤로 } 한문단 앞으로
^v vi로 다음 글자해석
Cw 단어변경 C}분단변경
e 단어끝으로
:! 유닉스명령
:set number or set nonumber
3-1 커널컴파일
1. rpm으로 커널을 올리는 방법
updates.redhat.com에서 최신 버전의 커널을 받아옵니다.
# rpm -Ihv 새로받아온커널.rpm으로 설치를 마칩니다.
# lilo.conf나 grub.conf 에 새로운 커널을 로드할 수 있는지 확인하고 재부팅합니다.
2. 커널 소스를 받아서 컴파일하기
# 커널다운로드(ftp.kernel.org) 및 /usr/src/로 이동
# bzip2 -d new_kernel.tar.bz2
# tar xvf new_kernel.tar
# ln -s new_kernel linux (새로운 커널을 linux로 링크)
# cd /usr/include
# mv asm asm.old
# mv linux linux.old
# ln -s /usr/src/linux/include/asm-i386 asm
# ln -s /usr/src/linux/include/asm-generic asm-generic
# ln -s /usr/src/linux/include/linux linux
커널 컴파일
# cd /usr/src/linux
커널 컴파일은 상당히 많은 옵션에 대한 이해가 필요합니다.
옵션에 대한 이해보다는 기존에 사용하던 옵션을 그대로 사용하면서
새롭게 옵션을 지정할 수 있는 방법에 대해서 말씀드리겠습니다.
기존에 사용하던 커널옵션은 /boot/config-2.4.20-20.9 처럼 옵션이 저장되어 있습니다.
이 파일을 새로 받아서 압축을 해제한 커널 디렉토리로 복사를 합니다.
# cp /boot/config-2.4.20-20.9 /usr/src/linux/linux
# make mrproper
# make menuconfig
menuconfig 화면이 나타나면 하단의
Load an Alternate Configuration File을 선택해서 좀전에 /boot 에서 복사한
커널옵션값이 저장된 파일을 불러옵니다. 위에서 linux라고 복사했습니다.
# make dep
# make bzImage
# make modules
# make modules_install
# make install (새로운 커널이 grub 또는 lilo에 자동으로 등록됨.)
마지막으로 grub이나 lilo에 정상적으로 등록이 되었는지 확인 후 재부팅을 합니다.
#tar -xzvf xxx.tar.gz
#./configure --prefix=/usr/local/bin (#./configure --with-qt=/usr/local/qt/lib --with-kde=/usr/local ....)
#make
#make install
3-2 파일시스템구조
/bin 실행화일
/dev 디바이스 드라이브
console:모니터
ttyS0:com1
cua:모뎀
hda:첫째하드
hda1:첫째파티션
sda:스카시하드
lp1:LPT1
null:블랙홀
tty1:첫번째 가상콘솔
pty:네트워크연결
/etc 시스템 설정화일, 프로그램, 유틸리티
rc 마운트작업 파일시스템 검사
rc.local 시스템 관련사항, 네트윅
passwd 사용자정보,
fdprm 플로피 파라미트
fstab /etc/rc파일안의 mount -a 명령실행 목록
gettydefs,gettab 터미널속도, 패리티검사
inittab init시작때 gettys목록출력
issue 프롬프트 이전의 getty화면 출력
magic 명령화일설정
profile 로그인 실행화일
securetty 수퍼유저권한막힘
shells 쉘바꿈
termcap 터미널의 기능DB
mtab 마운팅된 화일시스템
mtools 도스디스켓사용
shadow 패스워드
login.defs login 설정
printcap /etc/termcap과 유사
ttypype 디폴트 터미널형태
update 30초마다 데이터저장
utmp 로그인사용자정보, 정보기록
wtmp 로그인아웃정보
ftpusers, ftpaccess, rpc, rpcint, exports
printcap wi필드는 프린터위치 wk필드는 프린터종류
/home 사용자 홈디렉토리
/lib 공유라이브러리 이미지
/proc 가상 화일 시스템, 프로세스, 메모리 내요
/tmp 임시화일
/usr 응용패키지
/X386:X윈도우
/adm:시스템문제기록
/bin:소프트웨어저장
/etc:유틸리티
/include:C컴파일러
/g++include:include
/lib:사양화일저장
/local:유용한것(TeX,Emacs)
/man:설정
/spool:메일뉴스
/src:소스
/tmp:임시
3-3 데몬설명
amd 자동으로 장치와 nfs 호스트를 마운트 해주는 자동 마운트 데몬이다. 잘모르면 일단 꺼두기 바란다.
atd 특정 시간에 실행할 예약 명령을 처리해 주거나 시스템의 부하가 적을 때 밀린 작업을 해분다.
bootparamd 요즘에는 잘 쓰이지 않는 데몬으로 구식 썬 워크스테이션에 사용된다. 필요 없다면 꺼둔다.
crond 시간에 따라 등록된 명령을 정기적으로 실행 해 주는 매우 중요한 표준 유닉스 데몬
dhcp BOOTP의 확장 프로토콜로서 클라이언트들이 부팅 할 때 자동으로 동적인 IP 주소와 네트워 정보를 가질 수 있게 해주는 고급 서비스 데몬
gpm 텍스트상에서 마우스를 이용하여 선택-복사가 가능하게 해부는 데몬
httpd 가장 널리 알려진 웹 서버 아파지.
inet 인터넷 슈퍼 서버라 불리며 telnet, ftp, rsh, rlogin등의 서비스를 요청할 때 처리해 준다.
innd 유즈넷 뉴스 서버
kerneld 필요한 커널 기능을 자동으로 적재해주는 매우 중요한 서비스
keytable 부팅시 키보드 맵핑 정보를 설정한다.
lpd 프린트 작업을 처리해 주는 데몬
named 도메인 네임 서버. 캐시 전용을 제외하고 대부분은 운영하지 않는다.
network 부팅할 때 모든 네트웍 인터페이?kswapd 스왑
linuxconf linuxconf의 작동
lpd 프린트 작업을 처리해 주는 데몬
named 도메인 네임 서버. 캐시 전용을 제외하고 대부분은 운영하지 않는다.
network 부팅할 때 모든 네트웍 인터페이스를 작동시키는 중요 스크립트
nfs NFS 서버
nfsfs NFS 마운트/언마운트 스크립트
nmbd NetBios name 서비스
pcmcia PCMCIA 서포트
portmap nfs, nis, amd등 RPC(Remote Procedure Call)를 사용하는 프로그램을 위해 기본적으로 실행되어야 하는 중요 데몬
random 시스템에 필요한 난수 발생/저장 스크립트
routed 자동 IP 라우터
sendmail 메일 전송 서버
smbd SMB protocol 서비스 마이크로 소프트 네트웍 파일/프린터 공유 서버
sound 부팅/셧다운시 사운드 믹서 설정 복구/저장 스크립트
syslogd 시스템 로그 작성(syslog)
random 난수발생
routed 네트윅의 경로 정보제어
rpc.mountd NFS의 mount, umount
rpc.nfsd NFS의 request 처리
ruserd 특정 사용자가 어느 네트웍에 있는지 찾아주는 서비스
rwalld 원격 사용자가 현재 시스템에 접속한 사용자에게 메시지를 보낼 수 있게 해주는 서비스 r로 시작되는 서비스는 보안에 위험하다.
rwhod 원격 사용자가 접속한 사용자의 목록을 볼 수 있게 해주는 서비스
snmp SNMP(Simple Network Management Protocol) 서버
xfs x폰트 서버
ypbind NIS/YP 클라이언트측에서 실행시키는 데몬 그외 시스템에서는 실행시키지 않는다.
yppasswd NIS 클라이언트 사용자가 패스워드 변경을 할 수 있도록 해주는 NIS 서버측 데몬
ypserv 표준 NIS/YP 네트워킹 프로토콜 서버
4-1 리눅스 프롬프트
.bash_profile 수정
#변경사항 적용
#source ~./bash_profile
PS1="^[[2;37;40m\n[^[[1;36;40m\t^[[0m \d^[[2;37;40m] [^[[1;31;40m\w^[[0m \u@\h^[[2;37;40m]\n
^[[2;37;40m[Command:\#]==>^[[2;37;40m"
#rehash 새로운 명령을 검색경로에 첨가한것을 알릴때 처리
5-1 시스템 모니터링
Conection Flooding 공격감지
#netstat -na | grep EST
-s 프로토콜
-r 라우팅상화
-i 인터페이스 상태
tcpdump를 사용하여 모니터링
특정포트를 사용하는 프로세서 확인
#lsof >result.txt #열려있는 파일
#fuser -n tcp 포트번호
#tcpdump port 80 # 80번 포트로 오가는 패킷 모니터링
#tcpdump src 192.168.1.1 # 192.168.1.1을 소스로 하는 패킷을 모니터링
#tcpdump dst 203.231.1.1 # 203.231.1.1을 목적지롤 하는 패킷을 모니터링
#tcpdump host 203.231.1.1 # 소스나 목적지가 203.231.1.1인 패킷을 모니터링
#tcpdump net 203.231.1.0/24 # 소스나 목적지가 203.231.1.0 대역(1~254)
5-2 백도어 점검
http://www.chkrootkit.org
#./chkrootkit
#./chkrootkit -v #히든 프로세스보여줌
5-3 iptables
들어오는 패킷 INPUT
나가는 패킷 OUTPUT
소스포트 -sport
목적포트 -dport
#iptables -A INPUT -p tcp ! -sport 0:1023 -dport 25 -j ACCEPT
INPUT 패킷중 소스포트가 0-1023이 아닌경우 즉 1024-65535까지 포트와 목적지 25번 포트는 허용
포트에 해당 서비스정보 http://www.iss.net/security_center/advice/Exploits/Ports/default.htm
5-4 ipchains
#echo 1 > /proc/sys/net/ipv4/ip_forward
이전규칙모두 삭제 모든 사용허용
#ipchains -F
#ipchains -A input -i lo -j ACCEPT
#inchains -A input -p ICMP -j ACCEPT
인터넷으로 모든패킷을 막는다
#inchains -A input -p TCP -s 0.0.0.0/0 -d 203.231.1.0/24 23 -l -j DENY
내부에서 외부를 나가는 HTTP 를 허용한다.
#ipchains -A input -p TCP -s 203.231.1.0/24 -d 0.0.0.0/0 80 -l -j ACCEPT
정책허용
#ipchains -P input ACCEPT
5-5 xhost 사용
#xhost +killer.test.net ; killer는 원격호스트 명령은 localhost에서 내림
#export DISPLAY=killer.test.net:0.0
5-6 logrotate
주기적인 백업을 위한 logrotate의 configration 파일 rotate.sh
#!/bin/bash
DATE=`/bin/date + %y%m%d`
/bin/cp /usr/local/apache/logs/access /usr/local/apache/access.$DATE
cat /dev/null > /usr/local/apache/logs/access
/bin/gzip /usr/local/apache/logs/access.$DATE
단순히 메시지를 다섯조각으로만 나누기
"/var/log/messages"{
monthly
rotate 5
postrotate
create 600 root wheel
}
logrotate는 하루에 한번 cron에 기동
/etc/crontab 수정
1 0 * * * /usr/sbin/rotate.sh
5-7 tar
-c : create a new archive (생성)
-v : verbosely list files processed (장황하게.. ㅡ.ㅡ;;)
-z : filter the archive through gzip (gzip을 이용해서 압축)
-p : extract all protection information(퍼미션 유지)
-f : use archive file or device F (default /dev/rmt0) (file이름 지정)
--directory : change to directory DIR (디렉토리 변경)
--exclude : exclude file FILE (파일을 제외)
#tar cvzpf /backup/full-backup-`date '+%d-%b-%y'`.tar.gz \
--directory / --exclude=proc --exclude=mnt --exclude=/home/somewhere \
--exclude=*/lost+found .
분할압축
#tar cfz - 압축할디렉터리 | split -b 700mb - 압축파일.tar.gz
압축풀기
#cat 압축파일.tar.gz* | tar xfz -
5-8 nmap
#nmap -A -T4 -F localhost
http://www.insecure.org/nmap/versionscan.html
6-1 RAID 정의
RAID 0 : 전형적인 패리티가 없는 striped 디스크, IO집중적인 어플리케이션을 위한 사용, 가장 빠르고 데이타 저장효율 높음
RAID 1 : 디스크 미러링으로 쌍으로 구성하여 중복 저장, 멀티유저 환경에 유용
RAID 3 : RAID 0와 유사하고 패리티가 추가로 구성됨, 싱글유저, 싱글 태스킹환경에 적합
RAID 5 : 전용 패리티 디스크가 없이 모든 디스크에 저장, 추가적인 디스크 추가 가능, 소프트로 처리 불가능.