ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리눅스 기초 정보 잡다구리
    프로그램/리눅스 2024. 1. 23. 12:38
    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 : 전용 패리티 디스크가 없이 모든 디스크에 저장, 추가적인 디스크 추가 가능, 소프트로 처리 불가능.

Designed by Tistory.