60
리눅스의 기본개념 리눅스의 기본개념 리눅스의 전반적인 기본개념을 알아보도록 한다. 그놈과 KDE의 차이점및 RPM 설치와 configure 설치 방법을 알아보도록 한다. RPM설치& configure 설치 RPM설치& configure 설치 2 문법 2. 문법 rpm options [filename] 3 옵션 3. 옵션 -i :기본적으로 설치할 쓴다. 이 옵션을 사용 하면 이전 버젼의 같은 패키지에 대한 정보가 하면 이전 버젼의 같은 패키지에 대한 정보가 재할 경우 설치하지 않는다. U 이전버젼이 설치되어 있으면 업그레이드를 -U : 이전버젼이 설치되어 있으면 업그레이드를 하며, 설치되어 있지 않으면 새롭게 설치한다. 이전버젼이 설치되어 있을 경우에 환경설정파일 이전버젼이 설치되어 있을 경우에 환경설정파일 제외하고 모두 새롭게 설치한다. 설치시에 이옵션을 사용하도록 한다 이옵션을 사용하도록 한다.

리눅스의기본개념cfs5.tistory.com/upload_control/download.blog?fhandle=...리눅스의기본개념 리눅스의전반적인기본개념을 알아보도록한다. 그놈과KDE의차이점및RPM설치와configure

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

리눅스의 기본개념리눅스의 기본개념

리눅스의 전반적인 기본개념을알아보도록 한다.

그놈과 KDE의 차이점및 RPM 설치와 configure설치 방법을 알아보도록 한다.

RPM설치& configure 설치RPM설치& configure 설치

2 문법2. 문법rpm options [filename]3 옵션3. 옵션-i :기본적으로 설치할 때 쓴다. 이 옵션을 사용하면 이전 버젼의 같은 패키지에 대한 정보가 존하면 이전 버젼의 같은 패키지에 대한 정보가 존재할 경우 설치하지 않는다.U 이전버젼이 설치되어 있으면 업그레이드를-U : 이전버젼이 설치되어 있으면 업그레이드를

하며, 설치되어 있지 않으면 새롭게 설치한다.이전버젼이 설치되어 있을 경우에 환경설정파일이전버젼이 설치되어 있을 경우에 환경설정파일

을 제외하고 모두 새롭게 설치한다. 설치시에이옵션을 사용하도록 한다이옵션을 사용하도록 한다.

RPM설명 계속RPM설명 계속….

F 현재 설치하는 패키지의 이전 버젼이 설치-F : 현재 설치하는 패키지의 이전 버젼이 설치되어 있는 경우에만 설치하고, 그렇지 않은

경우에는 설치하지 않는다.-v : 설치중 메시지를 보여준다.설치중 메시지를 여준다-h : 진행과정을 '#'으로 표시하라는 뜻이다.(--hash)hash)-e : 패키지를 제거할 때 쓰인다.q : 패키지가 설치되어 있는 질의한다 이 옵션-q : 패키지가 설치되어 있는 질의한다. 이 옵션

단독으로 사용하면 패키지 이름과 버젼만표시된다다.

RPM설명 계속RPM설명 계속….

-qa : 현재 설치된 모든 패키지 목록을 찾는데 사용한다. 보통 grep명령과 같이 사용된다.데 사용한다 통 g p명령과 같이 사용된다-qi : 현재 설치된 패키지의 간략한 정보를 출력력-ql : 현재 설치된 패키지의 내용을 보여준다. q어떤 파일이 어디에 설치되어 있는지 확인할때 쓴다.때 쓴다.-Vf : 현재 설치된 파일의 검증할때 쓴다. 문제가 없으면 ' '으로 표시된다제가 없으면 '.'으로 표시된다.

RPM설명 계속RPM설명 계속….

V 한 패키지만 검증한다-Va : 한 패키지만 검증한다.--force : 보통 패키지뒤에 붙는 옵션으로 패키지와의 충돌등을 무시하고 무조건 설치하는 옵션와의 충돌등을 무시하고 무조건 설치하는 옵션이다.(앞에 옵션을 써도 무방함.)

nodeps : 의존성 문제를 일으켜 설치가 안될경--nodeps : 의존성 문제를 일으켜 설치가 안될경우에 쓰는 옵션이다.4 사용방법 및 정보4. 사용방법 및 정보RPM 설치법 : Mach64용 X윈도우 드라이버를설치한다설치한다. [root@sense ~]# rpm -Uvh XFree86-Mach64-3 3 6-20kr i386 rpm3.3.6 20kr.i386.rpm

RPM설명 계속RPM설명 계속….

han2라는 프로그램을 설치한다. [root@sense ~]# rpm -Uvh han2-0 3 7-[root@sense ]# rpm Uvh han2 0.3.79.i386.rpm제거 명령어 의존성이 있더라도 무조건 제제거 명령어 : 의존성이 있더라도 무조건 제거하는 명령어 사용[root@sense ~]# rpm -e httpd –nodeps질의 명령어 설치된 패키지를 보여준다질의 명령어 : 설치된 패키지를 보여준다. [root@sense ~]# rpm -q sendmail[ ] p q

RPM설명 계속RPM설명 계속….

질의 명령어 : 설치된 모든 패키지를 보여준다. 다[root@sense ~]# rpm -qa설치된 경로를 보여준다설치된 경로를 보여준다. [root@sense ~]# rpm -ql sendmail[root@sense ] rpm ql sendmail

<Configure><Configure>

C fi 는 현재 사용하고있는 리눅스 운영체Configure 는 현재 사용하고있는 리눅스 운영체제의 환경설정을 알아보기위한 방법이다.보통 소스 코드는 tar.gz 으로 묶여 있습니다.예로 wine.tar.gz 파일을 구해서 설치하는 순서에예 g 파일을 구해서 설치하는 순서에대해 설명합니다.1. 압축 풀기1. 압축 풀기tar -zxvf wine.tar.gz2 환경 설정(압축을 풀면 디렉토리가 생성될 겁2. 환경 설정(압축을 풀면 디렉토리가 생성될 겁니다. 그 안으로 들어가서)/ fi./configure

<Configure><Configure>

3. 컴파일Makea e4. 컴파일 결과물을 특정 디렉토리에 이동(설치)

k i t llmake install- BONUS! 몇가지 도움말tar 옵션 설명 :z 는 gz 압축 파일을 다룬다는 것을 의미z 는 gz 압축 파일을 다룬다는 것을 의미x 는 extract 의 약어. 압축,묶음을 풀겠다는 의미

<Configure><Configure>

는 b 의 약어 압축 풀 때 각 화일명을 나열하v 는 verbose 의 약어. 압축 풀 때 각 화일명을 나열하라는 의미f 는 file의 약어 특정 파일을 다룬다는 것을 의미 위f 는 file의 약어. 특정 파일을 다룬다는 것을 의미. 위에서는 f 옵션 뒤로 파일명이 붙음.configure 앞에 ./ 가 붙는 이유g 앞에 가 붙 이유configure 는 해당 디렉토리에 들어 있는 실행 화일입니다.

점 i 는 현재 디렉 리를 의미합니다. (점, point)는 현재 디렉토리를 의미합니다. ( .. 은 상위 디렉토리를 의미합니다.)현재 디렉토리에 화일을 실행시킨다는 의미현재 디렉토리에 화일을 실행시킨다는 의미로 ./configure 라고 명령을 줍니다./ 없이 configure만 하면 실행이 되지 않습니다 (경./ 없이 configure만 하면 실행이 되지 않습니다. (경로 설정이 되어 있지 않기 때문)

<Configure><Configure>

make 와 make install make 는 소스 코드를 실행이 가능한 실행화make 는 소스 코드를 실행이 가능한 실행화일로 만들어 줍니다.

make install은 만들어진 실행 화일을 특정make install은 만들어진 실행 화일을 특정디렉토리로 옮겨주는 역할을 합니다.

그놈설명그놈설명…..

그놈(GNOME : GNU Network Object Model Environment))

• 리눅스 등 유닉스 계열 운영 체제를 위한 데스크톱 환경의 하나 GTK+ 라이브러리를 기스크톱 환경의 하나. GTK+ 라이브러리를 기반으로 그래픽 사용자 인터페이스(GUI)를 타깃 개발됐기 때문에 같은 데 톱 환경깃으로 개발됐기 때문에 같은 데스크톱 환경가운데 하나인 KDE(K desktop environment)p와 비교하여 GUI 컴포넌트의 디자인을 간단하게 바꿀 수 있는 유연성이장점이다하게 바꿀 수 있는 유연성이장점이다.

KDE설명KDE설명…..

KDE(K D k E i )KDE(K Desktop Environment)• QT기반으로, X 윈도우 툴킷과 데스크탑 통합Q 기반 , 윈 우 툴킷과 데 탑 통합

환경 프로젝트로서 리눅스와 자유소프트웨어진영을놀라게한 프로젝트입니다. KDE는 더이진영을놀라게한 젝 입니다 는 더이상 리눅스가 명령행 인터페이스가 아닌 모든구성요소를데스크탑이라는 명제아래 유기적구성요소를데스크탑이라는 명제아래 유기적으로 통합될 수 있다는 사실을 보여주고 있습니다.여기서 K는 window system의 X처럼 단니다.여기서 K는 window system의 X처럼 단순히 the K Desktop Environment를 나타냅니다니다.

KDE설명KDE설명…..

• KDE는 우리에게 친숙한 MS사의 window와유사하여 사용하기에 큰 어려움은 없을 것입유사하여 사용하기에 큰 어려움은 없을 것입니다.KDE는 파일매니저, 윈도우 매니저, 핼프시스템 configuration 시스템과 각종 어플리시스템 ,configuration 시스템과 각종 어플리케이션들의집합체입니다. KDE가 실행되는system은 리눅스 뿐 아니라 solaris IRIX HPsystem은 리눅스 뿐 아니라 solaris, IRIX, HP-UX, FreeBSD등이있습니다.

<리눅스 파티션 분할 방법><리눅스 파티션 분할 방법>

-파티션은 파일 시스템을 위해 예약된 하드디스크의 영역을 말한다디스크의 영역을 말한다.

-즉 물리적인 파티션(하드 디스크)를 논리적으로 분할해 유지 관리와 백업등의 작업을으로 분할해 유지 관리와 백업등의 작업을

효율적을 높이기 위해 사용되어 진다.

설명 계속설명 계속…..

루 영역과 사용자 파일 시 템이 같은 파• 루트영역과 사용자 파일 시스템이 같은 파티션에 존재하면 공격자가 SUID를 사용할수 있수 있는

• 기회가 늘어나게 되어 보안상 취약하게 된기회가 늘어나게 되어 안상 취약하게 된다.

• 그리고 백업이 용이하지 못하고 몇몇 파일• 그리고 백업이 용이하지 못하고 몇몇 파일손상등으로 인해 전체 시스템을 재설치하는 일이는 일이

• 발생할수 있기 때문이다.

설명 계속설명 계속…..

• 우선 /etc/fstab 파일을 한번 살펴보자.

• 이 파일은 리눅스 부팅시 이파일이 기록된이 파일은 리눅스 부팅시 이파일이 기록된모든 파일 시스템을 마운트(mount)한다.

/ /f 을 통해서 사용자와 시스템이• /etc/fstab을 통해서 사용자와 시스템이파티션에 접근하는 방법을 제어 할수 있다.

마운트(Mount)란 무엇인가?마운트(Mount)란 무엇인가?

• 리눅스에서의 모든 장치들은 하나의 파일로 인식되어 진다. 이런 각각의 장치들을식되어 장치시스템이 인식하게 해 주는 것이 마운트이다다.

설명 계속설명 계속……

• 리눅스에서의 모든 장치들은 하나의 파일로 인식되어 진다. 이런 각각의 장치들을식되어 장치시스템이 인식하게 해 주는 것이 마운트이다다.

설명 계속설명 계속……

• [root@dream root]# cat /etc/fstab

• LABEL=/ / ext3 defaults 1 1LABEL / / ext3 defaults 1 1

• LABEL=/boot /boot ext3 defaults 1 2

/d / d id 5 d 620 0 0• none /dev/pts devpts gid=5,mode=620 0 0

• LABEL=/home /home ext3 efaults 1 2

• ......

설명 계속설명 계속……

• LABEL=/home : 장치 Label명을 나타낸다.(또는 마운될 블록 장치명이 오기도 한다. (/dev/hda9처럼)

• /home : 파일 시스템의 파일 위치로 마운트• /home : 파일 시스템의 파일 위치로 마운트될 지점을 나타낸다.

3 파일 시스템의 종류를 나타낸다• ext3 : 파일 시스템의 종류를 나타낸다. ext,msdos,iso9660/CDROM,NFS등이 올수있다.

설명 계속설명 계속……

• defaults : 이것은 마운트 옵션으로 사용자와시스템이 마운트된 파일 시스템을 접근할때의수준을 나타낸다.(아래는 들어올수 있는 값들이다.)이다.)

• defaults 는 모든것이 가능하다.(읽기,쓰기 suid)기,suid)

• noquota 는 일반적으로 쿼터가 없다.

• nosuid 는 suid접근이 불가능하다.

• quota 는 쿼더가 설치되어 있을경우 사용• quota 는 쿼더가 설치되어 있을경우 사용

설명 계속설명 계속……

• ro 는 읽기만 가능

• rw 는 읽기 쓰기가 가능rw 는 읽기,쓰기가 가능

• suid 는 suid 접근이 가능

파일 시 템이 덤 될 필 가 있 지 설정• 1 : 파일 시스템이 덤프될 필요가 있는지 설정하는 값이다.

• 2 : fsck에 의해 수행되는 무결성 검사를 위한우선 순위를 나타낸다우선 순위를 나타낸다.

• 이처럼 fstab파일은 6개의 필드로 구성되어있다있다.

스왑(swap)이란?스왑(swap)이란?

• 메모리가 부족할 경우 하드 디스크를 메모리처럼 사용하기 위한 가상 메모리 영역이다.

• 일반적으로 많이 사용이 되지 않으며, 스왑영역이 자주 사용이 된다면 메모리가 많이역이 자주 사용이 된다면 메모리가 많이

• 부족한 것이니 메모리 확충을 고려해 보아야한다한다.

리눅스명령어리눅스명령어

리눅스 명령어(command)는 하나하나가 독립적리눅스 명령어(command)는 하나하나가 독립적인 프로그램으로 /bin 디렉토리 같은 곳에 들어

있습니다 유닉스가 아름다운 것은 핵심적인 기능있습니다. 유닉스가 아름다운 것은 핵심적인 기능을 완벽하게 수행해주는 작지만 견고한 프로그램( 명령어)들이 |(파이프 문자)를 통해서 다양한 형(=명령어)들이 |(파이프 문자)를 통해서 다양한 형태로 조합되어 매우 복잡한 기능을 해내는 방식으로 설계되어 있기 때문입니다. 견고한 레고 블

럭을 조립하는 것입니다럭을 조립하는 것입니다

설명계속설명계속…..

파일, 디렉토리 관련cdcd

• change directory의 약자입니다. 다른 디렉토리로 이동할 때 사용합니다 만약리로 이동할 때 사용합니다. 만약/usr/local/apache 디렉토리로 이동하고 싶다p면,

• cd /usr/local/apache• cd /usr/local/apache

설명계속설명계속…..

lls• 디렉토리의 내용물을 보여주는 커맨드입니다. 디렉 리의 내용물을 여주는 커맨 입니다

자주 쓰는 옵션으로는 ls -a 와 ls -l이 있습니다. ls -a는 "all", 숨겨진 파일까지 모두 보여줍다 는 , 숨겨진 파일까지 두 여줍니다.

• ls -l은 "long" 즉 긴 형태로 리스팅하는 명령• ls l은 long , 즉, 긴 형태로 리스팅하는 명령어입니다.# l l d 2 li 3242 N 2• # ls -l drwxr-xr-x 2 linuxer users 3242 Nov 2 10:14 perltips -rw-r--r-- 1 linuxer users 12 D

13 11 10 t lec 13 11:10 counter.pl

설명계속설명계속…..

kdimkdir• 이름처럼 "make directory"입니다. 디렉토리를 만듭니

다다.• mkdir newDirectory

rm• rm은 "remove"의 약자로 생각하세요. 파일이나 디렉

토리를 지울 때 사용합니다토리를 지울 때 사용합니다.• rm useless rm는 파일은 삭제할 수 있지만 디렉토리

는 삭제하지 못 합니다 디렉토리와 그 내용물을 모두는 삭제하지 못 합니다. 디렉토리와 그 내용물을 모두삭제하려면 rm -r이라고 하면 됩니다. 또는, 삭제 확인질문이 뜨지 않게 하려면 rm -rf라고 해도 됩니다질문이 뜨지 않게 하려면 rm rf라고 해도 됩니다.

• rm -r oldDirectory

설명계속설명계속…..

cp• cp는 "copy"의 약자입니다.• cp somefile somewhere 형태로 사용합니다. 그

냥 cp만 사용하는 경우 디렉토리 내의 모든 파일냥 p만 사용하는 경우 디렉 리 내의 든 파일들과 서브 디렉토리 내의 파일들을 한 번에 카피할 수가 없습니다. 이럴 때 사용하는 것이 cp -rp입니다. 이 명령어는 해당 디렉토리의 모든 파일과 서브 디렉토리를 원하는 곳으로 카피합니다. 새로 카피할 디렉토리가 없는 경우 만들어서 카피하기 때문에 아주 편리합니다. 예를 들어,

• cp -r . /home/linuxer

설명계속설명계속…..

mv• 이름처럼 "move", 파일을 이동하는 명령어입이름처럼 , 파일을 이동하는 명령어입

니다.mv file1 ~

• 이렇게 하면 현재 머물고 있는 디렉토리 내의file1을 내 홈 디렉토리로 옮깁니다 물결 표시file1을 내 홈 디렉토리로 옮깁니다. 물결 표시는 로그인한 유져의 홈 디렉토리라고 했죠? 옮길 목적지 디렉토리가 없다면 디렉토리를옮길 목적지 디렉토리가 없다면 디렉토리를만들어서 옮깁니다.

fil d ti ti• mv filename destination

설명계속설명계속…..

ln -s• 심볼릭 링크(Symbolic link)를 만드는 명령어심볼릭 링크(Symbolic link)를 만드는 명령어

입니다. 심볼릭 링크는 윈도우즈의 "바로가기" 맥의 "가상본"과 유사한 것으로 이해하세요, 맥의 가상본 과 유사한 것으로 이해하세요.

• ln -s filename linkname

설명계속설명계속…..

퍼미션 (Permission)chmodchmod

• 입니다. chmod는 "change mode"의 약자입니다 ("츄모드" 또는 "츄마드"로 읽습니다 )니다.("츄모드" 또는 "츄마드"로 읽습니다.) chmod는 두 가지 사용법이 있습니다. 첫 번째 사용법은 + 기호나 - 기호를 사용합니다. 예를 들어, myprogram이라는 파일에 쓰기 퍼예를 들어, myprogram이라는 파일에 쓰기 퍼미션을 부여하고 싶다면,h d• chmod +w myprogram

설명계속설명계속…..

chown, chgrp• 퍼미션 관련 명령어의 마지막으로 user와퍼미션 관련 명령어의 마지막으로, user와

group을 바꿔주는 커맨드를 살펴봅시다. 이름 그대로입니다 chown는 해당 파일(디렉토름 그대로입니다. chown는 해당 파일(디렉토리)의 user(owner)를 바꾸는 것이고 chgrp는

을 바꾸는 것입니다 이렇게 사용합니group을 바꾸는 것입니다. 이렇게 사용합니다.

• chown myprogram linuxer chgrpmyprogram mygroupmyprogram mygroup

설명계속설명계속…..

관련rpm 관련rpm -Uvh

• 레드햇(RedHat) 리눅스를 사용하는 경우 소프트웨어• 레드햇(RedHat) 리눅스를 사용하는 경우 소프트웨어들이 rpm 패키지 형태로 배포되는 것을 볼 수 있습니다. rpm 패키지를 다루는 명령어 중 자주 쓰이는 것은다 p 패키지를 다루 명령어 중 자주 이 것은사실 몇 개 없습니다.

• 먼저, rpm -Uvh입니다. 이것은 rpm을 이용해서 소프트웨어를 인스톨할 때 사용합니다 원래 "U"의 의미는트웨어를 인스톨할 때 사용합니다. 원래 U 의 의미는새로 인스톨할 패키지와 기존에 인스톨되어 있는 것의 버전을 비교해서 더 최신 버전이면 "U"pdate한다의 버전을 비 해서 더 최신 버전이면 p 한다는 것이지만 거의 모든 경우에 위와 같은 명령어로 다인스톨 할 수 있습니다. pm U h package 1 0 0 pm• rpm -Uvh package-1.0.0.rpm

설명계속설명계속…..

rpm -qa• 현재 머쉰에 어떤 rpm 패키쥐가 인스톨되어현재 머쉰에 어떤 rpm 패키쥐가 인스톨되어

있는지를 질의(query)하는 커맨드입니다. 설치된 모든 rpm 패키쥐가 버전과 함께 뜹니다치된 모든 rpm 패키쥐가 버전과 함께 뜹니다.rpm -ep

• 지우는 명령입니다. 먼저 질의를 한 다음 거기 나온 이름을 rpm -e 뒤에 붙여 주면 되겠기 나온 이름을 rpm -e 뒤에 붙여 주면 되겠죠?

설명계속설명계속…..

압축 해제 관련압축, 해제 관련tar xvzf

• 타르(tar)로 묶은 다음 gzip으로 압축된 파일들을 한 번에 압축 해제부터 보따리 풀기까지들을 한 번에 압축 해제부터 보따리 풀기까지시행해 주는 명령어입니다. 가운데의 "z"를 빠뜨리면 안됩니다 tar는 "tape archive"의 약자뜨리면 안됩니다. tar는 tape archive 의 약자로, 전통적으로 유닉스에서 파일을 백업할 때테잎 장치를 사용한 데서 비롯된 명령어입니테잎 장치를 사용한 데서 비롯된 명령어입니다. 이런 형태로 씁니다.t f d l d d t• tar xvzf downloaded.tar.gz

설명계속설명계속…..

t ftar cvzf• 위와 반대로 여러 개의 파일을 tar로 묶은 다음 압축하

는 명령입니다 c니까 "compress" x니까 "expand"입는 명령입니다. c니까 compress , x니까 expand 입니다.

• tar cvzf tarfile.tar.gz .gtar cvf

• "z"가 빠진 것이므로 압축은 하지 않고 묶어 주기만 합니다니다.

• tar cvf tarfile.tar igzip

• gzip 압축 방식으로 압축하는 명령어입니다.g ip doc mnet t t• gzip documnet.txt

설명계속설명계속…..

igunzip• .gz 파일을 푸는 명령어입니다. "unzip"이니까g 파일을 푸는 명령어입니다 p 이니까

당연하죠? 이렇게 씁니다.• gunzip document txt gzgunzip document.txt.gz

bunzip2리눅 커널의 경우 b 2라는 확장자가 붙은• 리눅스 커널의 경우, .bz2라는 확장자가 붙은압축 파일 형태로 배포되는 경우가 있습니다. 바로 그 .bz2를 풀어 주는 명령어입니다. 이렇게 사용합니다.

• bunzip2 linux-version.bz2

YUM( g p )(Yellow dog Updater, Modified)

Yum명령어에 대해서

전반적을오 알아보자전반적을오 알아보자.

계속계속…..

• Yum은 Yellow dog Updater, Modified의 약자로 RPM 기반의 시스템을 위한 자동 업데이로 RPM 기반의 시스템을 위한 자동 업데이터 겸 패키지 설치/제거 도구이다. 듀크 대학교의 Linux@DUKE 프로젝트의 일부분으로 개교의 Linux@DUKE 프로젝트의 일부분으로 개발되었다. yumex 같은 GUI 기반 확장 도구도있다.

계속계속…..

• Yum 이전에 있었던 Yellowdog Updater (YUP) 도구를 대체하며, 듀크 대학교 물리학부에서구를 대체하며, 듀 대학 물리학부에서사용되었던 레드햇 리눅스 시스템 관리를 위해서 등장하였다 그 이후로 페도라 코어해서 등장하였다. 그 이후로 페도라 코어, CentOS 등 많은 RPM 기반 리눅스 배포판에서 사용되었다 레드햇의 패키지 관리자서 사용되었다. 레드햇의 패키지 관리자up2date에서도 Yum 저장소에 접근할 수 있다.

계속계속…..

1 1 설치• 1-1. 설치http://linux.duke.edu/projects/yum/download ld.ptml에서 자신의 release에 맞는 yum을 설치한다.

1-2. 기본 사용법최신 패키지로 업데이트# yum updatey p

패키지 설치패키지 설치# yum install 패키지명

계속계속…..

1 1 설치• 1-1. 설치http://linux.duke.edu/projects/yum/download ld.ptml에서 자신의 release에 맞는 yum을 설치한다.

1-2. 기본 사용법최신 패키지로 업데이트# yum updatey p

패키지 설치패키지 설치# yum install 패키지명

계속계속…..

패키지 업데이트• 패키지 업데이트# yum update 패키지명

패키지 삭제# yum remove 패키지명y 패키지명

1-3. yum을 이용한 레드햇 release update

ftp://ftp.quicknet.nl/pub/Linux/ftp.redhat.com/에서 업그레이드 하고 싶은 버전의 redhat-에서 업그레이드 하고 싶은 버전의 redhatrelease***.rpm을 받아서 설치

# yum upgrade

프로세스 관리프로세스 관리

리눅스에서 프로세스 관리에리눅 에서 세 관리에

대해서전반적을오 알아보자.대해서전반적을 알아 자

프로세스 개요프로세스 개요

관련 명령 t t i kill kill ll관련 명령 t t i kill kill ll관련 명령 : ps, top, pstree, nice, kill, killall

프로세스란 그 자신의 리소스를 가지고 있는 독립

관련 명령 : ps, top, pstree, nice, kill, killall

프로세스란 그 자신의 리소스를 가지고 있는 독립프로세스란 그 자신의 리소스를 가지고 있는 독립된 실행 중인 프로그램이다. 프로세스는 포그라운드 프로세스와 백그라운드 프로세스로 나눠진다.

프로세스란 그 자신의 리소스를 가지고 있는 독립된 실행 중인 프로그램이다. 프로세스는 포그라운드 프로세스와 백그라운드 프로세스로 나눠진다. 프로세 와 백 라운 프로세 로 나눠진다포그라운드 프로세스는 터미널과 연결되어 실행되기 때문에 터미널 당 1개의 프로세스만이 실행되지만 백 라운 세 의 경우 터미널을 갖지

프로세 와 백 라운 프로세 로 나눠진다포그라운드 프로세스는 터미널과 연결되어 실행되기 때문에 터미널 당 1개의 프로세스만이 실행되지만 백 라운 세 의 경우 터미널을 갖지지만 백그라운드 프로세스의 경우 터미널을 갖지않고 여러 개의 프로세스가 동시에 실행된다.리눅스는 프로세스를 관리하기 위해 각각의 프로

지만 백그라운드 프로세스의 경우 터미널을 갖지않고 여러 개의 프로세스가 동시에 실행된다.리눅스는 프로세스를 관리하기 위해 각각의 프로리눅스는 프로세스를 관리하기 위해 각각의 프로세스에 task_struct라는 자료구조를 이용하여 관리한다. (프로세스는 태스크라는 용어로도 사용된다.)

리눅스는 프로세스를 관리하기 위해 각각의 프로세스에 task_struct라는 자료구조를 이용하여 관리한다. (프로세스는 태스크라는 용어로도 사용된다.)한다. (프로세스는 태스크라는 용어로도 사용된다.) 프로세스는 다음과 같은 요소를 갖고 있다.한다. (프로세스는 태스크라는 용어로도 사용된다.) 프로세스는 다음과 같은 요소를 갖고 있다.

계속계속…..

태스크 벡터 (t k t ) 시스템에서 동작• 태스크 벡터 (task vector) : 시스템에서 동작중인 프로세스의 task_struct 구조를 가리키는포인터 배열포인터 배열.

• 스케줄링 정보 : 프로세스의 실행을 관리한스케줄링 정보 : 프로세스의 실행을 관리한다.

• 식별자 (Identification) : 시스템에서 동작 중인 프로세스들을 구별하기 위해 숫자가 부여된다 로세스 식별자외에 시스템 내의 파된다. 프로세스 식별자외에 시스템 내의 파일과 장치에 관한 접근 제어를 위해 사용자식별자와 그룹 식별자가 함께 부여된다식별자와 그룹 식별자가 함께 부여된다.

계속계속…..

프로세스간 통신 유닉스의 IPC 통신 방식인 시그• 프로세스간 통신 : 유닉스의 IPC 통신 방식인 시그널, 파이프, 세마포어를 지원하며 시스템V의 IPC 통신 방식인 공유 메모리, 세마포어, 메세시 큐 등통신 방식인 공유 메 리, 세마 어, 메세시 큐 등을 지원한다.

• 프로세스 생성 : 새로운 프로세스는 이전 프로세스로부터 복사 (copy)나 복제 (clone)되며, 해당 프로세스의 정보를 갖고 있는 task struct는 부모 프로세스의 정보를 갖고 있는 task_struct는 부모 프로세스와 형제 프로세스, 자식 프로세스를 가리키는 포인터를 갖고 있다. pstree 명령은 이를 이용하여 프로세스간 부모 자식 관계를 트리구조로 표하여 프로세스간 부모-자식 관계를 트리구조로 표시한다.

계속계속…..타이머 프로세스가 생성되면 커널은 프로세스의 생• 타이머 : 프로세스가 생성되면 커널은 프로세스의 생성 시간과 실행 중에 점유되는 CPU 시간을 추적한다. 내부 타이머를 이용하여 지정한 시간이나 일정 시간마다 자신에게 시 널을 전송할 수 있다다 자신에게 시그널을 전송할 수 있다.

• 파일시스템 : task struct 구조에는 오픈된 파일의 디파일시스템 : task_struct 구조에는 오픈된 파일의 디스크립터 (descriptor)에 대한 포인터와 2개의 VFS inode 포인터가 있다. VFS inode는 각각 root 디렉토리와 pwd (Print Working Directory)를 가리키고 있으리와 pwd (Print Working Directory)를 가리키고 있으며 각각의 VFS inode에는 count 속성이 있기 때문에몇 개의 프로세스가 VFS inode를 참조하는지 추척할수 있다 예들 들어 어떤 프로세스들이 ( h ll) 현재 작수 있다. 예들 들어 어떤 프로세스들이 (shell) 현재 작업 디렉토리 (pwd)를 참조하고 있다면 해당 디렉토리는 삭제 명령이 거부된다.

계속계속…..

가상메모리 커널과 데몬 (웹서버와 같은 서• 가상메모리 : 커널과 데몬 (웹서버와 같은 서비스 프로그램)을 제외한 대부분의 프로세스는 가상메모리 공간을 확보하고 있다는 가상메모리 공간을 확보하고 있다.

프로세스는 스케줄러에 의해 CPU를 할당 받세 는 케줄러에 의해 를 할당 받아 실행되거나 네트워크 자원과 같은 특정 리소스를 위해 대기하기도 한다. 이러한 프로세스는 다음과 같은 상태를 가진다스는 다음과 같은 상태를 가진다.

• 실행중 (Running) : 현재 실행되고 있거나• 실행중 (Running) : 현재 실행되고 있거나실행을 준비중인 프로세스이다.

계속계속…..대기중 (Waiting) 이벤트나 자원 할당을 기다리고 있• 대기중 (Waiting) : 이벤트나 자원 할당을 기다리고 있는 프로세스로써 시그널을 받아 실행되는 인터럽트 허용 (interruptible)과 하드웨어 리소스를 위해 대기중인인터럽 비허용 ( i ibl ) 상태가 있다인터럽트 비허용 (uninterruptible) 상태가 있다.

• 중단 (Stopped) : 시그널에 의해 중단된 프로세스이중단 (Stopped) : 시그널에 의해 중단된 프로세스이며 주로 디버그 중인 프로세스들인 경우가 많다. Ctrl+Z 키조합으로 프로세스를 중단 상태로 만들 수있다있다.

• 좀비 (Zombie) : 정지된 프로세스이지만 task_struct자 가 벡터에 남아 있 세 명자료구조가 task 벡터에 남아 있는 프로세스로 kill 명령에 의한 시그널을 이용하여 제거가 불가능하다. 시스템을 재부팅 시켜야 한다.템을 재부팅 시켜야 한다

계속계속…..

명령을 사용하면 현재 시스템내의 프로세• ps 명령을 사용하면 현재 시스템내의 프로세스들의 상태를 알 수 있다.

• pstree 명령을 사용하여 각 프로세스간의 부모-자식관계를 트리구조로 표시할 수 있다모 자식관계를 트리구조로 표시할 수 있다.

• nice 명령을 사용하면 현재 실행 중인 프로세nice 명령을 사용하면 현재 실행 중인 프로세스의 우선순위를 조절할 수 있다. 우선순위를변경할 수 있지만 커널내의 스케줄러가 우선하기 때문에 의도한 효과를 기대하기 어려운하기 때문에 의도한 효과를 기대하기 어려운경우도 있다.

계속계속…..

kill 명령을 사용하여 세스에 인위적으• kill 명령을 사용하여 프로세스에 인위적으로 시그널을 전달하여 프로세스의 종료, 재시작과 같은 효과를 줄 있다 해당재시작과 같은 효과를 줄 수 있다. 해당 프로세스의 프로세스 식별자 (PID)를 지정하여 특정 프로세스를 지정할 수 있다.

• killall 명령을 사용하여 전체 프로세스를종료하거나 kill과 달리 프로세스 이름을종료하거나 kill과 달리 프로세스 이름을지정하여 종료 시그널을 전달할 수 있다.

리눅스리눅스 네트워크네트워크리눅스리눅스 네트워크네트워크리눅스리눅스 네트워크네트워크리눅스리눅스 네트워크네트워크

1. 리눅스 관리자 과정

- 네트워크 설정 및 관리

1. 리눅스 관리자 과정

- 네트워크 설정 및 관리네트워크 설정 및 관리네트워크 설정 및 관리

1

1. 1. 네트워크네트워크 설정설정 및및 관리관리

네트워크관련 설정리눅스에서 네트워크 설정은 ‘netcfg’를 이용하는 것이 간편하다

네트워크관련 설정리눅스에서 네트워크 설정은 ‘netcfg’를 이용하는 것이 간편하다리눅스에서 네트워크 설정은 netcfg 를 이용하는 것이 간편하다.

Netcfg 실행

– # netcfg &

리눅스에서 네트워크 설정은 netcfg 를 이용하는 것이 간편하다.

Netcfg 실행

– # netcfg &

NETCFG 구성Names 항목 : DNS 관련정보

관련 정

NETCFG 구성Names 항목 : DNS 관련정보

관련 정Hosts : 호스트 관련 정보

Interface : 인터넷 IP 관련 정보

Routing : 인터넷 routing 관련 정보

Hosts : 호스트 관련 정보

Interface : 인터넷 IP 관련 정보

Routing : 인터넷 routing 관련 정보Routing : 인터넷 routing 관련 정보Routing : 인터넷 routing 관련 정보

2

1. 1. 네트워크네트워크 설정설정 및및 관리관리(2)(2)

Names 항목Names 항목

3

1. 1. 네트워크네트워크 설정설정 및및 관리관리(3)(3)

Names 항목(2)Names 항목에는 DNS 관련 정보를 적는다

Names 항목(2)Names 항목에는 DNS 관련 정보를 적는다Names 항목에는 DNS 관련 정보를 적는다.

세부항목

– Hostname :

Names 항목에는 DNS 관련 정보를 적는다.

세부항목

– Hostname :

DNS에 등록되어 있는 호스트 네임을 적는다.

– Domain :

호스트가 속해 있는 도메인을 적는다.

DNS에 등록되어 있는 호스트 네임을 적는다.

– Domain :

호스트가 속해 있는 도메인을 적는다.

– Search for hostnames in additional domains :

위 Domain외의 추가로 찾을 Domain을 적는다.

– Nameservers :

– Search for hostnames in additional domains :

위 Domain외의 추가로 찾을 Domain을 적는다.

– Nameservers :Nameservers :

자신의 Name server를 적는다.

Nameservers :

자신의 Name server를 적는다.

4

1. 1. 네트워크네트워크 설정설정 및및 관리관리(4)(4)

Hosts 항목Hosts 항목

5

1. 1. 네트워크네트워크 설정설정 및및 관리관리(5)(5)

Hosts 항목(2)호스트 관련 정보를 입력하는 항목으로 /etc/hosts 파일에서 쉽

Hosts 항목(2)호스트 관련 정보를 입력하는 항목으로 /etc/hosts 파일에서 쉽호스트 관련 정보를 입력하는 항목으로 /etc/hosts 파일에서 쉽게 편집할 수 있다.

추가할 항목은 Add 버튼을 눌러서 추가한다.

호스트 관련 정보를 입력하는 항목으로 /etc/hosts 파일에서 쉽게 편집할 수 있다.

추가할 항목은 Add 버튼을 눌러서 추가한다.

IP : 해당 컴퓨터의 IP주소

Name : 네임서버의 도움없이 주소를 매핑할 호스트 이름을 적는다.

NickNames : 자신의 마음대로 원하는 이름을 적는다

6

NickNames : 자신의 마음대로 원하는 이름을 적는다.

1. 1. 네트워크네트워크 설정설정 및및 관리관리(6)(6)

Routing 항목Routing 항목

7

1. 1. 네트워크네트워크 설정설정 및및 관리관리(7)(7)

Routing 항목(2)네트워크에서 라우팅할 수 있도록 게이트웨이 IP포워딩을 설정

Routing 항목(2)네트워크에서 라우팅할 수 있도록 게이트웨이 IP포워딩을 설정네트워크에서 라우팅할 수 있도록 게이트웨이, IP포워딩을 설정하는 항목이다.

여기서 설정한 내용은 /etc/sysconfig/network 에 기록된다.

네트워크에서 라우팅할 수 있도록 게이트웨이, IP포워딩을 설정하는 항목이다.

여기서 설정한 내용은 /etc/sysconfig/network 에 기록된다.

세부항목

– Network Packet Forwarding(IPv4)

호스트를 라우터로 사용하거나 네트워크를 연결하는 호스트로 사용할

세부항목

– Network Packet Forwarding(IPv4)

호스트를 라우터로 사용하거나 네트워크를 연결하는 호스트로 사용할를 라우터 사용하거나 네 워 를 연결하는 사용할경우 지정한다.

– Default Gateway

현재 자신의 게이트웨이를 지정한다.

를 라우터 사용하거나 네 워 를 연결하는 사용할경우 지정한다.

– Default Gateway

현재 자신의 게이트웨이를 지정한다.현재 자신의 게이 웨이를 지정한다.

– Default Gateway Device

게이트웨이를 사용하는 장치이름을 적는다.

현재 자신의 게이 웨이를 지정한다.

– Default Gateway Device

게이트웨이를 사용하는 장치이름을 적는다.

8

리눅스리눅스 서버의서버의 네트워크네트워크 설정설정 관련관련 파일들파일들

리눅스서버의 네트워크 설정 파일들

- 기본게이트웨이 설정파일(네트워크 기본 설정파일)

리눅스서버의 네트워크 설정 파일들

- 기본게이트웨이 설정파일(네트워크 기본 설정파일)- 기본게이트웨이 설정파일(네트워크 기본 설정파일)

/etc/sysconfig/network

이더넷설정파일

- 기본게이트웨이 설정파일(네트워크 기본 설정파일)

/etc/sysconfig/network

이더넷설정파일- 이더넷설정파일

/etc/sysconfig/network-scripts/ifcfg-eth0

/etc/sysconfig/network scripts/ifcfg eth1

- 이더넷설정파일

/etc/sysconfig/network-scripts/ifcfg-eth0

/etc/sysconfig/network scripts/ifcfg eth1/etc/sysconfig/network-scripts/ifcfg-eth1

……

사용할 네임서버정보 : / t / l f

/etc/sysconfig/network-scripts/ifcfg-eth1

……

사용할 네임서버정보 : / t / l f- 사용할 네임서버정보 : /etc/resolv.conf

- 로컬호스트파일 : /etc/hosts

- 사용할 네임서버정보 : /etc/resolv.conf

- 로컬호스트파일 : /etc/hosts

9

리눅스리눅스 서버의서버의 네트워크네트워크 설정설정 관련관련 파일들파일들

네트워크 설정 명령어 및 스크립트파일들

- 네트워크 스크립트파일 : /etc/rc d/init d/network restart

네트워크 설정 명령어 및 스크립트파일들

- 네트워크 스크립트파일 : /etc/rc d/init d/network restart- 네트워크 스크립트파일 : /etc/rc.d/init.d/network restart

- 이더넷 설정 : ifconfig

게이트웨이 설정과 네트워크 경로설정 : route

- 네트워크 스크립트파일 : /etc/rc.d/init.d/network restart

- 이더넷 설정 : ifconfig

게이트웨이 설정과 네트워크 경로설정 : route- 게이트웨이 설정과 네트워크 경로설정 : route

- 통신 테스트 : ping

통신경로확인 : traceroute

- 게이트웨이 설정과 네트워크 경로설정 : route

- 통신 테스트 : ping

통신경로확인 : traceroute- 통신경로확인 : traceroute

- 네트워크 연결상태 종합 점검 : netstat

이더넷카드 속도설정과 전송모드 설정 : tht l

- 통신경로확인 : traceroute

- 네트워크 연결상태 종합 점검 : netstat

이더넷카드 속도설정과 전송모드 설정 : tht l- 이더넷카드 속도설정과 전송모드 설정 : ethtool

- TCP패킷캡처 및 패킷 모니터링 : tcpdump

네트워크 인터페이스 설정확인 및 변경 ii t l

- 이더넷카드 속도설정과 전송모드 설정 : ethtool

- TCP패킷캡처 및 패킷 모니터링 : tcpdump

네트워크 인터페이스 설정확인 및 변경 ii t l

10

- 네트워크 인터페이스 설정확인 및 변경 : mii-tool- 네트워크 인터페이스 설정확인 및 변경 : mii-tool

리눅스리눅스 서버에서버에 IPIP주소할당주소할당 및및 IPIP주소주소 변경변경

네트워크 설정파일을 이용한 IP주소 할당 및 변경

- /etc/sysconfig/network

네트워크 설정파일을 이용한 IP주소 할당 및 변경

- /etc/sysconfig/network- /etc/sysconfig/network

- /etc/sysconfig/network-scripts/ifcfg-eth0

/etc/sysconfig/network scripts/ifcfg eth1

- /etc/sysconfig/network

- /etc/sysconfig/network-scripts/ifcfg-eth0

/etc/sysconfig/network scripts/ifcfg eth1/etc/sysconfig/network-scripts/ifcfg-eth1

- 설정완료후 : /etc/rc.d/init.d/network restart

명령어를 이용한 IP주소 할당 및 변경

/etc/sysconfig/network-scripts/ifcfg-eth1

- 설정완료후 : /etc/rc.d/init.d/network restart

명령어를 이용한 IP주소 할당 및 변경명령어를 이용한 IP주소 할당 및 변경

- ifconfig eth0 192.168.0.253 netmask 255.255.255.0 broadcast 192 168 0 255 up

명령어를 이용한 IP주소 할당 및 변경

- ifconfig eth0 192.168.0.253 netmask 255.255.255.0 broadcast 192 168 0 255 upbroadcast 192.168.0.255 up

- route add default gw 192.168.0.254 dev eth0

broadcast 192.168.0.255 up

- route add default gw 192.168.0.254 dev eth0

11

리눅스리눅스 서버에서버에 IPIP주소할당주소할당 및및 IPIP주소주소 변경변경

유틸리티를 이용한 IP주소 할당 및 변경

- netconfig

유틸리티를 이용한 IP주소 할당 및 변경

- netconfig- netconfig

- system-config-network

redhat config network

- netconfig

- system-config-network

redhat config network- redhat-config-network

I P 앨리어싱

- redhat-config-network

I P 앨리어싱I P 앨리어싱

물리적으로 한 개의 이더넷에 여러 개의 가상 이더넷장치파일을 만들어서 여러 개의 IP주소를 할당하여 사용하는 것

I P 앨리어싱

물리적으로 한 개의 이더넷에 여러 개의 가상 이더넷장치파일을 만들어서 여러 개의 IP주소를 할당하여 사용하는 것일을 만들어서 여러 개의 IP주소를 할당하여 사용하는 것.일을 만들어서 여러 개의 IP주소를 할당하여 사용하는 것.

12

한한 개의개의 이더넷에이더넷에 여러여러 개의개의 IPIP주소주소 할당할당

1단계 : 현재 네트워크 설정상태 확인

- ifconfig

1단계 : 현재 네트워크 설정상태 확인

- ifconfig- ifconfig

- /etc/sysconfig/network

/etc/sysconfig/network scripts/ifcfg eth0

- ifconfig

- /etc/sysconfig/network

/etc/sysconfig/network scripts/ifcfg eth0- /etc/sysconfig/network-scripts/ifcfg-eth0

2단계 : 여러 개의 가상이더넷설정파일 생성 및 생성한 파일 설정

- /etc/sysconfig/network-scripts/ifcfg-eth0

2단계 : 여러 개의 가상이더넷설정파일 생성 및 생성한 파일 설정일 설정

- /etc/sysconfig/network-scripts/ifcfg-eth0:0

- /etc/sysconfig/network-scripts/ifcfg-eth0:1

일 설정

- /etc/sysconfig/network-scripts/ifcfg-eth0:0

- /etc/sysconfig/network-scripts/ifcfg-eth0:1- /etc/sysconfig/network-scripts/ifcfg-eth0:1

- /etc/sysconfig/network-scripts/ifcfg-eth0:2

……………

- /etc/sysconfig/network-scripts/ifcfg-eth0:1

- /etc/sysconfig/network-scripts/ifcfg-eth0:2

……………

13

…………………………

한한 개의개의 이더넷에이더넷에 여러여러 개의개의 IPIP주소주소 할당할당

네트워크 스크립트파일 재시작

- /etc/rc d/init d/network restart

네트워크 스크립트파일 재시작

- /etc/rc d/init d/network restart- /etc/rc.d/init.d/network restart- /etc/rc.d/init.d/network restart

14

LinuxLinux 세팅세팅LinuxLinux 세팅세팅및및 APMAPM설치설치및및 APMAPM설치설치

SU 명령어 사용제한 설정명령어 사용제한 설정Adduser 명령어 사용제한 설정그 외 시스템 주요명령어 퍼미션 변경(top그 외 시스템 주요명령어 퍼미션 변경(top,

gcc 등)불필 한 서비 중지불필요한 서비스 중지SSH 원격접속 ROOT 금지원격접속 금지시스템 정보 유출파일 삭제 및 수정APM(Apache+PHP+MySQL) 설치APM(Apache+PHP+MySQL) 설치

SUSU 명령어명령어 사용제한사용제한 설정설정SU SU 명령어명령어 사용제한사용제한 설정설정

사용제한을 하기 전에 어느 유저로 관리를 할 것인사용제한을 하기 전에 어느 유저로 관리를 할 것인지 먼저 결정하고, 그룹과 사용자를 만들어 둔다.SU 명령어 슈퍼유저명령어 접속한 사용자가 다른SU 명령어: 슈퍼유저명령어, 접속한 사용자가 다른사용자로 마음껏 이동할 수 있는 명령어

• #chown root supervisor /bin/su• #chown root.supervisor /bin/su• #chmod 4750 /bin/su

(4 S tUID 7 소유자 5 소유그룹 0 일반사용자)• (4: SetUID, 7:소유자, 5:소유그룹, 0:일반사용자)• #charrt +i /bin/su

h i 파일의 설정이나 내용을 정할• - charrt +i는 파일의 설정이나 내용을 수정할 수없도록 하는 속성변경 옵션

AdduserAdduser 명령어명령어 사용제한사용제한 설정설정AdduserAdduser 명령어명령어 사용제한사용제한 설정설정

Adduser 명령어: 서버에 접속하는 사용자계정 추가 명령어계정 추가 명령어

• #chmod 750 /usr/sbin/useradd# h i• #chown root.supervisor /usr/sbin/useradd

• #charrt +i /usr/sbin/useradd

AdduserAdduser 명령어명령어 사용제한사용제한 설정설정AdduserAdduser 명령어명령어 사용제한사용제한 설정설정

Add 명령어 서버에 접속하는 사용자 계Adduser 명령어: 서버에 접속하는 사용자 계정 추가 명령어

• #chmod 750 /usr/sbin/useradd• #chown root.supervisor /usr/sbin/useraddp / / /• #charrt +i /usr/sbin/useradd

그 외 시스템 주요명령어 퍼미션 변경(top g그 외 시스템 주요명령어 퍼미션 변경(top, gcc 등)

• #chmod 100 /usr/bin/top• #chmod 100 /usr/bin/top• #charrt +i /usr/bin/top

불필요한불필요한 서비스서비스 중지중지불필요한불필요한 서비스서비스 중지중지

시스템 설치 시 기본으로 설치되는 여러 서비시스템 설치 시 기본으로 설치되는 여러 서비스들은 대부분 필요하지 않으며 보안측면에서도 잠재적인 위험을 갖고 있으므로 불필요서도 잠재적인 위험을 갖고 있으므로 불필요한 서비스는 제거하도록 한다.

안상 취약한 서비• 보안상 취약한 서비스원격에서 루트 권한을 취득할 수 있는 popd, i d d i d d ttdb dimapd, sadmind, rpc.cmsd, rpc.ttdbserverd와 같은 서비스나 rsh, rlogin, rexec 등과 같은‘ ’명령어들이 필요하지 않으면 제거한다은‘r’명령어들이 필요하지 않으면 제거한다.

불필요한불필요한 서비스서비스 중지중지불필요한불필요한 서비스서비스 중지중지

/etc/inetd.conf, /etc/xinetd.d 파일에서 불필요한 서비스 제거필 한 서비 제거- /etc/inetd.conf를 사용할 때/etc/inetd conf파일에는 디폴트로 여러 다/etc/inetd.conf파일에는 디폴트로 여러 다양한 서비스들이 설정되어 있으나 대부분ftp와 telnet만이 필요하다 pop imapdftp와 telnet만이 필요하다. pop, imapd, rsh과 같은 불필요한 서비스들은 코멘트(#)로 처리하여 제거하도록 한다.

불필요한불필요한 서비스서비스 중지중지불필요한불필요한 서비스서비스 중지중지/ t / d/i it d에서 불필요한 서비스 데몬 삭제/etc/rc.d/init.d에서 불필요한 서비스 데몬 삭제

• ntsysv는 runlevel을 조정할 수 있는 간단한 인터페이스를 제공하는 도구이다. 쉘 프롬프트 에서“ntsysv”를를 제공하는 도구이다 쉘 프롬프트 에서 y 를입력한다. [*]처럼 된 것은 리눅스 시스템이 부팅시에이 데몬을 자동으로 시작시킨다는 것이고 []처럼 공백으로 되어 있으면 이 데몬은 자동으로 시작되지 않는으로 되어 있으면 이 데몬은 자동으로 시작되지 않는다. 서비스하지 않는 항목들은 모두 체크를 없애고 서버를 재시작한다를 재시작한다.X윈도우 화면의 GNOME에서“/usr/bin/serviceconf”유틸리티를 이용하면 리눅스 시스템을 시작할 때 자동으로 시작할 것인지에 대해 지정을 할 수 있다 서동으로 시작할 것인지에 대해 지정을 할 수 있다. 서비스하지 않는 항목들은 모두 체크를 없애고 서버를재시작한다.

SSHSSH 원격접속원격접속 ROOTROOT 금지금지SSH SSH 원격접속원격접속 ROOT ROOT 금지금지

/ t / h/ hd fi 파일 수정• /etc/ssh/sshd_config 파일 수정• PermitRootLogin no

시 템 정 유출파일 삭제 및 수정시스템 정보 유출파일 삭제 및 수정• /etc/issue : 로컬에서 터미널 로그인 시도시

에 보여줄 메시지에 보여줄 메시지• /etc/issue.net : 원격에서 터미널 로그인 시도

시에 보여줄 메시지시에 보여줄 메시지• /etc/redhat-release : 원격에서 터미널 로그인

시도시에 보여줄 리눅스 배포판 정보시도시에 보여줄 리눅스 배포판 정보• /etc/motd : 로그인 이후에 보여줄 메시지

APM(APM(Apache+PHP+MySQLApache+PHP+MySQL)) 설치설치APM(APM(Apache+PHP+MySQLApache+PHP+MySQL) ) 설치설치

A h 2Apache 2#wget http://ftp.kaist.ac.kr/pub/Apache/httpd/httpd 2 2 4 targzpd-2.2.4.tar.gz#tar xzvf httpd-2.2.4.tar.gz#./configure --prefix=/usr/local/apache2 --enable/ g p / / / p-modules=so --enable-so --enable-rewrite #make

k i ll#make install 인스톨 문서 컨피그 설정 ( 참고만하세요 )/ fi fi / / k / h bl./configure --prefix=/sw/pkg/apache --enable-rewrite=shared --enable-speling=shared

APM(APM(Apache+PHP+MySQLApache+PHP+MySQL)) 설치설치APM(APM(Apache+PHP+MySQLApache+PHP+MySQL) ) 설치설치

MySQL 5MySQL 5다음 주소에서 원하는 페키지를 찾아서 다운로드 하세요.ftp://ftp.sayclub.com/pub/mysql/Downloads/# t ft //ft l b / b/ l/D l d /M SQL• #wget ftp://ftp.sayclub.com/pub/mysql/Downloads/MySQL-5.0/mysql-5.0.37-linux-i686.tar.gz#tar xzvf mysql-standard-5.0.27-linux-i686.tar.gz#mv mysql standard 5 0 27 linux i686/ /usr/local/mysql#mv mysql-standard-5.0.27-linux-i686/ /usr/local/mysql

• MySQL을 실행할 그룹과 사용자를 추가합니다.#groupadd mysql#useradd g mysql mysql#useradd -g mysql mysql#cd /usr/local/mysql

• If you have not installed MySQL before, you must create the MySQL grant tables:e MySQL grant tables:( MySQL이 설치되지 않았따면, MySQL권한 테이블을 생성합니다. )#scripts/m sql install db ser m sql• #scripts/mysql_install_db --user=mysql

APM(APM(Apache+PHP+MySQLApache+PHP+MySQL)) 설치설치APM(APM(Apache+PHP+MySQLApache+PHP+MySQL) ) 설치설치

디럭토리 권한설정• 디럭토리 권한설정#chown -R root .#chown -R mysql data# h R l#chgrp -R mysql .

• MySQL 실행# /bin/mysqld safe --user=mysql --language=korean#./bin/mysqld_safe user=mysql language=korean--sql-mode="HIGH_NOT_PRECEDENCE" &

• Starting mysqld daemon with databases from /usr/lol/ l/d t ( 정상실행시 )cal/mysql/data ( 정상실행시 )

• ROOT 페스워드 설정#./bin/mysqladmin -u root password '새로운암호'./bin/mysqladmin u root password 새로운암호MySQL재시작#./bin/mysqladmin -u root -p reload

APM(APM(Apache+PHP+MySQLApache+PHP+MySQL)) 설치설치APM(APM(Apache+PHP+MySQLApache+PHP+MySQL) ) 설치설치

각종 라이브러리 설치각종 라이브러리 설치1) FREETYPE#wget ftp://ftp.sayclub.com/pub/X/freetype/freetype/freetype2/freetype-2 1 9 targzpe2/freetype-2.1.9.tar.gz# tar xzvf freetype-2.1.9.tar.gz# cd freetype-2.1.9# /configure#./configure

• Otherwise, simply type `make' again to build the library,or `make refdoc' to build the API reference (the latter needs python)python).(모 이렇다고 한다 어쨌든 make를 입력하라고 함 -_-)make: `unix'를 위해 할 일이 없습니다 ( 요게 나오면 끝 )

• #make#make #make install

APM(APM(Apache+PHP+MySQLApache+PHP+MySQL)) 설치설치APM(APM(Apache+PHP+MySQLApache+PHP+MySQL) ) 설치설치

ZLIBhttp://www.zlib.net 에서 구할수 있다. p // 에서 구할수 있다zlib source code 에 보면 링크가 있다.#wget http://wwwzlib net/zlib-#wget http://www.zlib.net/zlib1.2.3.tar.gz#tar xzvf zlib 1 2 3 targz#tar xzvf zlib-1.2.3.tar.gz#./configure #make #make install

APM(APM(Apache+PHP+MySQLApache+PHP+MySQL)) 설치설치APM(APM(Apache+PHP+MySQLApache+PHP+MySQL) ) 설치설치

JPEGJPEGftp://ftp.uu.net/graphics/jpeg 에서 jpegsrc.v6b.tar.gz 를 다운로드 받는다.g 를 다운 받는다wget ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz# tar xzvf jpegsrc v6b targz# tar xzvf jpegsrc.v6b.tar.gz# cd jpeg-6b# ./configure --enable-shared --enable-static

kg

# make디럭토리를 만들어줘야 에러가 나지 않음.# mkdir /usr/local/man# mkdir /usr/local/man# mkdir /usr/local/man/man1# make install

APM(APM(Apache+PHP+MySQLApache+PHP+MySQL)) 설치설치APM(APM(Apache+PHP+MySQLApache+PHP+MySQL) ) 설치설치

GIFGIFftp://sunsite.unc.edu/pub/Linux/libs/graphics/에서 libungif-4 1 0 targz를 다운로드 받cs/에서 libungif 4.1.0.tar.gz를 다운로드 받는다.# wget ftp://sunsite.unc.edu/pub/Linux/libsg p // /p / //graphics/libungif-4.1.0.tar.gz# tar xzvf libungif-4.1.0.tar.gz# d lib if 4 1 0# cd libungif-4.1.0# ./configure # make# make # make install

APM(APM(Apache+PHP+MySQLApache+PHP+MySQL)) 설치설치APM(APM(Apache+PHP+MySQLApache+PHP+MySQL) ) 설치설치

LIBPNGLIBPNGhttp://www.libpng.org/pub/png/libpng.h

l에서 lib 다운tml에서 libpng-1.2.16.tar.gz 다운로드#wget http://prdownloads.sourceforge.net/libpng/libpng-1.2.16.tar.gz?download# tar xzvf libpng-1.2.16.tar.gzp g g# cd libpng-1.2.16# ./configure g# make # make install

APM(APM(Apache+PHP+MySQLApache+PHP+MySQL)) 설치설치APM(APM(Apache+PHP+MySQLApache+PHP+MySQL) ) 설치설치

GDGDhttp://www.libgd.org/Downloads 에서 최신버전 다운로드#wget http://www.libgd.org/releases/gd-2.0.34.tar.gz#tar xzvf gd-2 0 34 zip#tar xzvf gd-2.0.34.zip# cd gd-2.0.34# ./configure

• Support for PNG library: yes• Support for PNG library: yesSupport for JPEG library: yesSupport for Freetype 2.x library: yesSupport for Fontconfig library: noSupport for Fontconfig library: noSupport for Xpm library: noSupport for pthreads: yes

•# make # make install

APM(APM(Apache+PHP+MySQLApache+PHP+MySQL)) 설치설치APM(APM(Apache+PHP+MySQLApache+PHP+MySQL) ) 설치설치

PHPPHP1)PHP가 Mysql 라이브러리를 인식할수있도록 해줌# vi /etc/ld.so.conf/lib/lib /usr/lib /usr/local/lib /usr/local/mysql/lib/usr/local/mysql/lib

• #ldconfig• 2) 수호신 페치 및 PHP설치

수호신은 PHP보안페치입니다수호신은 PHP보안페치입니다.PHP는 다음주소에서 다운로드 할 수 있습니다.http://kr.php.net/downloads.php수호신은 다음주소에서 다운로드 할 수 있습니다수호신은 다음주소에서 다운로드 할 수 있습니다.http://www.hardened-php.net/suhosin/download.html

APM(APM(Apache+PHP+MySQLApache+PHP+MySQL)) 설치설치APM(APM(Apache+PHP+MySQLApache+PHP+MySQL) ) 설치설치

# t htt //k h t/ t/ h 5 2 2 t /f /k• # wget http://kr.php.net/get/php-5.2.2.tar.gz/from/kr2.php.net/mirror

• 다운로드가 안되면 따로 업로드 하시기바랍니다.다운로 가 안되면 따로 업로 하시기바랍니다# wget http://www.hardened-php.net/suhosin/_media/suhosin-patch-5.2.2-0.9.6.2.patch.gz?

• id=download&cache=cache• id=download&cache=cache• # tar xzvf php-5.2.2.tar.gz

# gunzip suhosin-patch-5.2.2-0.9.6.2.patch.gzg p p p g# cd php-5.2.2# patch -p 1 -i ../suhosin-patch-5.2.2-0.9.6.2.patch

• /configure --prefix=/usr/local/php --with-mysql=/us• ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-

APM(APM(Apache+PHP+MySQLApache+PHP+MySQL)) 설치설치APM(APM(Apache+PHP+MySQLApache+PHP+MySQL) ) 설치설치

• apxs2 /usr/local/apache2/bin/apxs2 with mod charset with ch• apxs2=/usr/local/apache2/bin/apxs2 --with-mod_charset --with-charset=euc_kr --with-

• language=korean --enable-sysvshm=yes --enable-sysvsem=yes --enable-debug=no --enable-track-enable debug=no enable track

• vars=yes --enable-url-fopen-wrapper=yes --enable-ftp --enable-memory-limit --enable-mbstring --

• enable-sockets --enable-wddx --enable-bcmath --enable-mbstr-eenable sockets enable wddx enable bcmath enable mbstr enc-trans --enable-mbregex --

• enable-calendar --with-iconv --with-xml --with-xmlrpc --with-swf--with-png --with-gif --with-gd --p g g g

• with-freetype --with-png --with-zlib-dir --with-jpg --with-gdbm --enable-suhosin

• #make #make test#make install #cp php.ini-dist /usr/local/php/lib/php.ini

APM(APM(Apache+PHP+MySQLApache+PHP+MySQL)) 설치설치APM(APM(Apache+PHP+MySQLApache+PHP+MySQL) ) 설치설치

php ini 설정php.ini 설정# vi /usr/local/lib/php.ini이전에만들어진 웹프로그램(제로보드4 ...등..)을 실행하기위해해.register_globals = Off 를 찾아서reg

아파치설정아파치설정아파치2는 하위에 extra 폴더에 설정이 존제할수도 있습니다. 그러나 httpd.conf 에 추가하셔도 상관

• 없습니다• 없습니다.• # vi /usr/local/apache2/conf/httpd.conf• AddType application/x-httpd-

h h h l h h l iphp .php .html .htm .phtml .incAddType application/x-httpd-php-source .phpsister_globals = On 으로 수정합니다.g

리눅스에서 제로보드설치리눅스에서 제로보드설치

현재 가장 많은 게시판 소스로 사용되고있는 제로보드에 대해서

무엇인지 알아보고 설치방법을무엇인지 알아보고 설치방법을알아보도록한다.

제로보드제로보드• 제로보드는 자신의 계정에 직접 올려 설치하여 사용하는 php로 만들어진• 제로보드는 자신의 계정에 직접 올려 설치하여 사용하는 php로 만들어진

게시판입니다.

슈퍼보드나 라이코스등의 신청해서 링크만 다는 게시판과는 틀리답니다.

자신의 계정에 직접 설치하여야 합니다.

그리고 신비로, 드림위즈, 천리안등의 일반적인 계정에서는 설치가 불가능!! 합니다합니다.

제로보드는 php라는 프로그램과 MySQL 이라는 데이타베이스를 이용해서만들어진 게시판입니다.

그래서 php와 MySQL을 지원하는 계정에서만 사용할수 있습니다.

널리 알려진 무료계정들인 네띠앙, 드림위즈, 천리안, 신비로등의 계정에서리 려 무 계정들 네띠앙 위 리 비 등의 계정에서는 설치가 불가능합니다.

제로보드를 설치하려고 하기 전에 꼭 자신의 계정 홈페이지를 가서 php와MySQL을 지원하는지에 대해서 확인을 해보아야 합니다.y Q 을 지원하는지에 대해서 확인을 해 아야 합니다

제로보드 장점제로보드 장점….깨어지기 쉽고 관리하기 어려운 Fil S t 으로 데이• 깨어지기 쉽고, 관리하기 어려운 File System으로 데이타를 관리하지 않고 안정적이며 우수한 MySQL이라는- Database 시스템을 이용함으로서 자료의 안정성이

장되며 자 의 추출 가공 이식 관이 매우 용이보장되며, 자료의 추출, 가공, 이식, 보관이 매우 용이합니다. 차후 다양한 DB 시스템을 지원할 예정

• 제로보드는 융통성이 있고 확장이 편한 스킨시스템을제로보드는 융통성이 있고, 확장이 편한 스킨시스템을제공함으로서 매우 다양하고 편리한 스킨을 만들수 있습니다.제로보드의 스킨은 현재까지 국내의 대부분의 게시판제로보드의 스킨은 현재까지 국내의 대부분의 게시판스킨의 디자인과 기능성에 많은 영향을 미쳤습니다.스킨이라는 것은 제로보드의 출력형태를 가공할수 있는 것을 말하며 현재 제로보드 스킨 자료실에는 수천는 것을 말하며, 현재 제로보드 스킨 자료실에는 수천개의 스킨자료가등록이 될정도로 활성화 되어 있습니다

제로보드 장점제로보드 장점….종전의 무료 배포 게시판에서는 찾아볼수 없었던 회원• 종전의 무료 배포 게시판에서는 찾아볼수 없었던 회원관리, 쪽지기능, 게시판마다의 권한 설정등 관리자가운영하기에

매우 편한 기능등을 제공하 있습니다- 매우 편한 기능등을 제공하고 있습니다.- (지금은 몇 몇 배포형 게시판에서 지원하고 있지만, 배포형 게시판에서 회원관리의 시발점이 된 것은 제로배 형 게시판에서 회원관리의 시발점이 된 것은 제보드입니다)

• 제로보드는 사이트 제작 관련 작업을 계속하면서, 그리고 사용자들의 피드백을 계속해서 받으면서 사이트리고 사용자들의 피드백을 계속해서 받으면서 사이트제작시에- 매우 적합하게 사용될수 있도록 발전되어 왔습니다.

이제 제로보드는 단순히 게시물만 쓰고 지우는 기능- 이제 제로보드는 단순히 게시물만 쓰고 지우는 기능이 아닌 사이트와 잘 융화될수 있고 다양한 기능을 제공하는

솔류션의 성격을 가지 있습니다- 솔류션의 성격을 가지고 있습니다

제로보드 장점제로보드 장점….

제로보드는 보안에 제일 신경을 쓰고 있습니• 제로보드는 보안에 제일 신경을 쓰고 있습니다- 초기에 제로보드에는 php나 아파치 서버에초기에 제로보드에는 php나 아파치 서버에의한 여러 보안 버그들이 존재하였습니다.- 하지만 개발자의 노력과 사용자분들 및 여하지만 개발자의 력과 사용자분들 및 여러 해커님들의 도움으로 계속해서 보안 버그들을 막아왔습니다.

제로보드는 보안에 가장 안전하다는 거짓말- 제로보드는 보안에 가장 안전하다는 거짓말을 하지는 못하지만, 발견되어지는 보안 버그들은 최대한 빨리 패치하기 위해서노력합니들은 최대한 빨리 패치하기 위해서노력합니다.

제로보드 설치제로보드 설치….

제로보드 설치파일을 다운로드 하여• 제로보드 설치파일을 다운로드 하여/usr/local/apache2/htdocs/ 에압축을 풀어서 복사하여야 한다.하여야 한다

• 제로보드 디렉터리로 이동합니다.

# d bb# cd bbs

그 뒤 퍼미션을 707로 조정합니다.뒤 퍼미션을 707로 조정합니다.

# chmod 707 -R *

그런 다음, 제로보드가 사용할 데이터베이스 계정을 생성해줍니다.

제로보드 설치제로보드 설치….

# l l• # mysql -u root mysqlmysql> update user set password=password('패스워드1') h ' t'd('패스워드1') where user='root';mysql> flush privileges;mysql> create database zboard;dhdmysql> create database zboard;dhdmysql> insert into user (host,user,password) values ('localhost' 'zero' 'password('패스워드values ( localhost , zero , password( 패스워드2'));mysql> insert into db values ('%' 'zboard' 'zmysql> insert into db values ( % , zboard , zero','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');mysql> exitmysql> exit

제로보드 설치제로보드 설치….

# / /i i d/ l• # /etc/init.d/mysql start

그런 뒤 모질라를 실행시키고 주소 창에 아그런 뒤, 모질라를 실행시키고 주소 창에 아래와 같이 입력합니다.

http://localhost/bbs/install.php

호스트네임에는 localhost를 입력하고 SQL UserID는 zero를 입력합니다UserID는 zero를 입력합니다.Password에는 위의 설명에서 패스워드2를 입력하면 됩니다력하면 됩니다.

아파치 웹서버의 기본적인 보안설정Mysql보안설정PHP 보안설정PHP 보안설정

아파치 웹 서버 보안설정아파치 웹 서버 보안설정

아파치 설치 디렉토리• ServerRoot : 아파치가 설치된 파일의 경로ServerRoot : 아파치가 설치된 파일의 경로

이다.아래와 같은 권한 설정이 필요하다.웹 페이지 디렉토리웹 페이지 디렉토리

• Document RootDocument Root웹 페이지가 저장된 디렉토리를 설정한다.

추측웹 공격자가 추측하기 어려운 경로를 새로설정하여 사용하는 것이 좋다.설정하여 사용하는 것이 좋다

아파치 웹 서버 보안설정아파치 웹 서버 보안설정샘플 파일 삭제샘플 파일 삭제

• 해킹 공격에 이용될 수 있는 가능성이 있기 때문에 모두 삭제해주는 것이좋다.두 삭제해주는 것이좋다

• – /var/www/manual• – /var/www/cgi-bin• rm –rf /var/www/cgi-bin• 서버 이름, IP 및 포트 정의

Li tListen• – 기본 설정은 서버의 80번 포트를 이용해서 접속하도

록 설정되어 있다. 서버의록 설정되어 있다. 서버의• 네트워크 인터페이스가 두 개 이상일 때 특정 인터페

이스만을 통해서 서비스를 제공하 자 할 때 Li 을 이용해서 설정할 수 있• 를 제공하고자 할 때, Listen을 이용해서 설정할 수 있다.

아파치 웹 서버 보안설정아파치 웹 서버 보안설정

서버 실행 계정서버 실행 계정• 웹 서버는 guest 계정과 비슷한 권한을 가진

nobody 계정을 생성하여 아파치 웹nobody 계정을 생성하여 아파치 웹• 프로세스의 권한으로 할당한다 nobody 계정

은 guest 계정과 비슷한 권한을 갖지은 guest 계정과 비슷한 권한을 갖지• 만, 로그인도 허용되지 않는 계정이다.

아파치 버전 숨기기아파치 버전 숨기기• 외부에서 아파치 서버에 접속해서 운영되는

아파치 버전 및 운영체제의 종류를 알아파치 버전 및 운영체제의 종류를 알• 아내지 못하도록 ServerTokens와

ServerSingnature를 이용해 설정할 수 있다ServerSingnature를 이용해 설정할 수 있다.

아파치 웹 서버 보안설정아파치 웹 서버 보안설정

• ServerTokens 는 ProductOnly, Minimal, OS, Full 이렇게 네 가지 값으로 설정할 수, 이렇게 네 가지 값 설정할 수있으며, ProductOnly가 웹 서버의 종류만을 보여주는 것으로 가장적은 정보를 보여을 보여주는 것으로 가장적은 정보를 보여준다. 아무런 설정이 없을 경우에는 Full과같은 정보를 보여준다 따라서 roductOnly같은 정보를 보여준다. 따라서 roductOnly로 설정하기 바란다.

• ServerSignature 값은 On, Off, Email로 설정할 수 있으나, 기본 설정은 On이다정할 수 있으나, 기본 설정은 On이다.

아파치 웹 서버 보안설정아파치 웹 서버 보안설정

O 으로 설정할 경우 에러 페이지의 아래 부• On으로 설정할 경우 에러 페이지의 아래 부분에 접속한 웹 서버의 버전과 IP,그리고 포트번호가 출력된다 그러나 Off로 설정하면 에번호가 출력된다. 그러나 Off로 설정하면 에러 페이지만 출력될뿐 접속한 웹 서버에 대한아무런 정보도 출력하지 않는다.아무런 정 출력하지 않는다디렉토리 리스팅 금지

• 디렉토리에 대한 요청 시 해당 디렉토리에 앞디렉토리에 대한 요청 시 해당 디렉토리에 앞서 설명한 DirectoryIndex가 없을경우, 디렉토리 내에 존재하는 모든 파일의 목록을 보여준다 디렉토리 리스팅이불가능하도록 해당 디다. 디렉토리 리스팅이불가능하도록, 해당 디렉토리의 Options에 Indexes가 설정되어 있다면 제거해야 한다다면 제거해야 한다.

아파치 웹 서버 보안설정아파치 웹 서버 보안설정

Follow Sym Links• FollowSymLinks를 설정하면 해당 디렉토FollowSymLinks를 설정하면, 해당 디렉토

리 내에 존재하는 심볼릭 링크를 따라갈수 있다 FollowSymLinks는 ServerRoot와수 있다. FollowSymLinks는 ServerRoot와DocumentRoot의 설정과는 무관하게, 중

시 템 디렉 리의 접 이 가능해지기요 시스템 디렉토리의 접근이 가능해지기때문에 주의를 요하는 것이다.

Mysql 보안설정Mysql 보안설정

l 원격접속 차단mysql 원격접속 차단3306/tcp 포트를 리스닝하지 않게 할 경우 외 에서 접 이 불가능하 l우, 외부에서 접근이 불가능하므로 mysqldb 접근시 로컬에서만 가능하도록 설정하라. (mysql 데몬이 시작시 자동으로 인식하여y q시작하도록 설정하여야 한다.)Mysql 원격 접속 차단y q

• /etc/my.cnf 에 skip-networking 옵션 추가가

Mysql 보안설정Mysql 보안설정

t 암호 설정• root 암호 설정초기 설치시에는 root 암호가 설정되지 않아누구든 접근이 가능하므로 보안을위해누구든 접근이 가능하므로 보안을위해

• root 암호를 설정하고 갱신하도록 한다.

• mysql root 암호는 akdlsql로 설정하도록 한다.다.

update user set P d d(' kdl l') hPassword=password('akdlsql') where user="root";flush privileges;flush privileges;

Mysql 보안설정Mysql 보안설정

• test DB 삭제기본적으로 설치되어 있는 test db에는 암기본적 설치되어 있는 에는 암호없이 접근이 가능하므로 보안을 위해삭제하도록 한다삭제하도록 한다.

디비 삭제• test 디비 삭제delete from db where Db='test';

Mysql 보안설정Mysql 보안설정

• 사용하지 않는 유저 삭제db 뿐만이 아니라 사용하지 않는 mysql 뿐만이 아니라 사용하지 않는 y q계정은 바로 삭제하여 발생할 수 있는문제를 사전에 대처하여야 한다 사용자문제를 사전에 대처하여야 한다. 사용자중 evil 이라는 계정을 삭제하도록 한다.

• 사용하지 않는 유저 삭제delete from user where user="evil";

PHP 보안설정PHP 보안설정

설치• 만약 apache mysql php 기본 설치 라면만약 apache,mysql, php 기본 설치 라면

아래로 하면 됩니다. FTP함수와 XML 지원되도록 설정 하는 것이구요 최적화 되도되도록 설정 하는 것이구요. 최적화 되도록 설정 하는 것입니다. trans-id 옵션은 세션값이 따라 다니게 만 는 것 안션값이 따라 다니게 만드는 것으로 보안최적화 입니다. 아래 2개 부분이 PHP 를좀더 빠르게 해줍니다. ^^ --enable-inline-optimization \ --disable-debuginline optimization \ disable debug

PHP 보안설정PHP 보안설정

• ./configure \ --with-apache=/usr/local/apache \ --with-p / / / pmysql=/usr/local/mysql \ --with-xml \ --with-config-file-with config filepath=/usr/local/apache/conf \ --enable-versioning \ enable url includes \versioning \ --enable-url-includes \ --enable-trans-id \ --enable-ftp \ --enable-sockets \ --enable-ctype \ --enable-calendar \ --enable-bcmath \ --enable-sysvshm=yes \ --enable-sysvsem=yes \ --enable-inline-

PHP 보안설정PHP 보안설정

i t l b l ffregister-globals off • PHP 설정 옵션 "register_globals" 를 off 로 설정하

고 PHP 4 1 0 이상 버전을 사용해라 PHP 4 1 0 에고 PHP 4.1.0 이상 버전을 사용해라. PHP 4.1.0 에는 몇몇 특별한 배열이 추가되어 있는데, 특히$_REQUEST 는 "register_globals" 가 off 로 설정되어 있을 때 PHP 로 소프트웨어를 개발하는 것을어 있을 때 PHP 로 소프트웨어를 개발하는 것을더욱 간단하게 한다. register_globals 를 설정함으로써 대부분의 일반적인 PHP 공격을 완전히 제거로써 대부분의 일반적인 PHP 공격을 완전히 제거할 수 있는데 이러한 설정이 신규 설치시의 디폴트가 될 때까지 이에 대비해라. register_globals 가off 로 설정되어 있다고 가정하더라도 이를 우선적off 로 설정되어 있다고 가정하더라도 이를 우선적으로 검사해야 하며 그렇지 않은 경우는 중지해야한다 - 이렇게 함으로써 프로그램을 설치한 사람

제가 있음을 재빨리 알아차릴 것이다들은 문제가 있음을 재빨리 알아차릴 것이다.

PHP 보안설정PHP 보안설정

이러한 설정시 작동하는 제삼자 (thi d t )• 이러한 설정시 작동하는 제삼자 (third-party) 의 PHP 애 플리케이션은 거의 없음을 주목해라 따라서 현재 전체 웹 사이트에 대해 이를라. 따라서 현재 전체 웹 사이트에 대해 이를off 로 유지 하기는 힘들다. 또한"register_globals" 를 금지하는 것이 제삼자에g _g 를 금지하는 것이 제삼자에의해 호스트되고 있 을 때는 더욱더 어렵다.

• 단지 몇몇 프로그램에 대해서만register_globals 를 off 로 설정하는 것이 가능한데 예를 들어 아파치의 경우 PHP 디렉토리내의 htaccess 파일에 다음을 삽입 할 수리내의 .htaccess 파일에 다음을 삽입 할 수있다 (또는 이를 더욱 제어하기 위해Directory 지시를 사용해라) php flagDirectory 지시를 사용해라). php_flagregister_globals Off php_flag track_vars On

PHP 보안설정PHP 보안설정

PHP 에서 form 문이나 session 의 변수를$name 등으로 사용하지 말라. $ 등 사용하지 말라

• 브라우져 주소 표시줄 에서http://localhost/tood=net&userid=3 등으http://localhost/tood=net&userid=3 등으로나 여러 방법으로 쉽게 뚫릴 수 있다. 반

시 OS S 나드시 HTTP_POST_VARS 나HTTP_SESSION_VARS로 체크.

PHP 보안설정PHP 보안설정

PHP 에서 f 문이나 i 의 변수를PHP 에서 form 문이나 session 의 변수를$name 등으로 사용하지 말라.

• 브라우져 주소 표시줄 에서• 브라우져 주소 표시줄 에서http://localhost/tood=net&userid=3 등으로나 여러 방법으로 쉽게 뚫릴 수 있다 반드시나 여러 방법으로 쉽게 뚫릴 수 있다. 반드시HTTP_POST_VARS 나 HTTP_SESSION_VARS로 체크.Error-message

• php.ini의 Error Handling 부분에서p p 의 _ g 부분에서display_errors = Off 로 설정. --> 오류가 보여지면, apache 디렉토리 위치 나 htdocs 디렉토리 위치가 보이게 된다렉토리 위치가 보이게 된다.

PHP 보안설정PHP 보안설정

파일관련파일관련• 특히 원격 파일 접근을 예방하기 위해 파일

이름 생성에 사용되는 모든 사용자 정보를 필터 링해라. PHP 는 다른 언어에서 로컬 파일만을 단지 할 있 f 과 같은 파만을 단지 오픈할 수 있는 fopen() 과 같은 파일- 오프닝 명령이 다른 사이트로부터의 웹또는 ft 요청을 수행하는데 사용될 수 있음또는 ftp 요청을 수행하는데 사용될 수 있음을 의미 하는 "remote filew" 기능성이 디폴트로 설정되어 있다 예전 스타일의 파일 업로로 설정되어 있다. 예전 스타일의 파일 업로드를 사용하지 마라; HTTP_POST_FILES 배열과 관련된 함수를 사과 관련된 함수를 사

PHP 보안설정PHP 보안설정파일관련파일관련

• 특히 원격 파일 접근을 예방하기 위해 파일 이름 생성에 사용되는 모든 사용자 정보를 필터 링해라. PHP 는에 사용되는 모든 사용자 정보를 필터 링해라 는다른 언어에서 로컬 파일만을 단지 오픈할 수 있는fopen() 과 같은 파일- 오프닝 명령이 다른 사이트로부터의 웹 또는 ftp 요청을 수행하는데 사용될 수 있음을터의 웹 또는 ftp 요청을 수행하는데 사용될 수 있음을의미 하는 "remote filew" 기능성이 디폴트로 설정되어있다. 예전 스타일의 파일 업로드를 사용하지 마라; HTTP POST FILES 배열과 관련된 함수를 사 용해라HTTP_POST_FILES 배열과 관련된 함수를 사 용해라. PHP 는 특별한 이름을 갖는 어떤 임시디렉토리에 파일을 업로드함으로써 파일 업 로드를 지원한다. PHP 는 그 파일 이름이 존재했던 곳을 가리키기 위해 원래는 그 파일 이름이 존재했던 곳을 가리키기 위해 원래많은 변수들 을 설정한다. 그러나 공격자가 변수 이름및 그 값을 제어할 수 있기 때문에 이들을 사용해 커다란 악영향을 야기할 수 있다란 악영향을 야기할 수 있다.

PHP 보안설정PHP 보안설정

대신 업로드된 파일에 접근하기 위해서는 언제나• 대신 업로드된 파일에 접근하기 위해서는 언제나HTTP_POST_FILES 및 관련된 함수를 사용해라. 이경우라도 PHP 는 공격자가 임의의 내 용을 갖는경우라 는 공격자가 임의의 내 용을 갖는파일을 업로드할 수 있게 하며 이는 그 자체로 위험함을 주목해라.가 h i ht l ht ht l h 3 등의 확장자는• 가. php,inc,html,htm,phtml,php3 등의 확장자는절대로 올릴 수 없게 한다.

• 나 업로드 디렉토리는 무조건 htdocs 아래 말고• 나. 업로드 디렉토리는 무조건 htdocs 아래 말고다른 디렉토리 에 올린다. /updir 이나 c:\updir 등htdocs 와 관련이 없는 디렉토리에 올리게 한다.

• 다. COPY명령을 사용시에 exec(copy $file , 처럼exec() 를 절대로 사용하지 말아야 한다. copy()만을 사용하라을 사용하라.

PHP 보안설정PHP 보안설정

라 REQUEST METHOD! "POST" 로 체크 해서 올• 라. REQUEST_METHOD!="POST" 로 체크 해서 올리기 POST 가 아닐 경우 올리지 못하게하고 form 에서 method=get 으로 절대 절대 하지 말것에서 method=get 으로 절대 절대 하지 말것.

• 마. 파일명이 pass 나 shadow 나 리눅스 시스템파일일 경우는 올리지 못하게 하라 그러니까파일일 경우는 올리지 못하게 하라. 그러니까upload.php 파일을 이용하여 주소표시줄에서upload.php?file_name=/etc/passwd&file_type=tep p p _ / /p _ ypxt&file_size=30 등으로 해서 해킹할 시스템의passwd 파일을 자료실에 올리고 다운 받을 수 있다다.

• 바. 또는 file_exists($file_name) 를 사용하여 체크합니다 로컬시스템에 파일이 있 으면 절대 못올리합니다. 로컬시스템에 파일이 있 으면 절대 못올리게 한다. /etc/passwd 파일의 업로딩을 방지.