1/13/2007

[Linux] Apache Security (Linux Server Security)

1. Practical httpd.conf Configuration


1.1 Directory Listing

- 웹 브라우저에서 사용자가 URL을 입력했을 경우, Apache 웹 서버는 3가지 방법 응답한다. 정상적으로 웹 내용을 보여주든지, 디렉토리 리스트를 보여주든지, 에러 메시지를 보여준다.

- 원격의 공격자가 시스템에 대한 많은 정보를 획득할수록 보안 허점을 발견하기가 용이해 진다. 디렉토리 리스트를 보여주는 것 또한 불필요한 정보를 공격자에게 제공하여 공격에 이용될 수 있다. 백업 데이터, CGI 소스코드들, 필요에 의해 만들어 놓은 심볼릭 링크 등 서버 관리자가 실수로 지우지 않은 파일들이 공격자의 손에 들어갈 수 있다.

- DocumentRoot 디렉토리 내의 모든 파일들이 리스팅되는 것을 방지하기 위해서 “Options” 지시자에서 Indexes 옵션을 제거하여야 한다.


1.2 FollowSymLinks

- 몇몇 서버는 심볼릭 링크를 이용해서 기존의 웹 문서 이외의 파일시스템에 접근 가능하도록 하고 있다. 이러한 방법은 편리할 수는 있지만 심각한 보안 문제를 야기시킬 수 있다. 가령 시스템 자체의 root 디렉토리(/ )를 링크 걸게 되면 웹 서버 구동 사용자 권한(nobody)으로 모든 파일시스템의 파일에 접근할 수 있게 된다. 즉, /etc/passwd와 같은 대단히 민감한 파일까지 누구나 열람 가능하게 된다.

- “Options” 지시자에서 심볼릭 링크를 가능하게 하는 옵션인 FollowSymLinks 를 제거함으로써 이를 막을 수 있다.


1.3 DirectoryIndex

- DirectoryIndex는 사용자가 디렉토리 이름 끝에 슬래쉬(/)를 붙여서 디렉토리의 인덱스를 요구한 경우, 리턴할 자원의 목록을 지정하는 지시자 이다. 예를 들어 DirectoryIndex 지시자가 다음과 같이 설정되어 있고 클라이언트가 디렉토리 인덱스 http://www.domain.com/info/ 를 요구한 경우, 아파치는 제일 먼저 info 디렉토리에서 index.cgi 파일을 찾아서 리턴해준다. 그 파일이 없으면index.shtml 파일, index.html 순으로 찾게 된다.

DirectoryIndex index.cgi index.shtml index.html

- 그런데 여기서 리스트의 순서에 주의해야 한다. Index.html 파일이 존재한다 하더라도 공격자가 index.cgi 파일을 업로드 한다면, index.html 대신 index.cgi 파일이 처리될 것이다.
따라서 DirectoryIndex의 목록이 적절하게 배열되어 있는지 점검해야 한다.


1.4 ServerTokens

- 클라이언트가 Apache 웹 서버에 접속했을 때 웹 서버에서는 응답 메시지의 헤더에 웹 서버 버전, 설치된 응용프로그램 등과 같은 정보를 전달한다.

[root@mitnik conf]# telnet 192.168.152.129 80
Trying 192.168.152.129...
Connected to 192.168.152.129.
Escape character is '^]'.
GET / HTTP/1.1
HTTP/1.1 400 Bad Request
Date: Mon, 03 Jan 2005 03:04:03 GMT
Server: Apache/2.0.50 (Unix)
Content-Length: 301
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr />
<address>Apache/2.0.50 (Unix) Server at 192.168.152.129 Port 80</address>
</body></html>
Connection closed by foreign host.

- 이 정보는 공격자에 의해 Apache 웹 서버 버전별 또는 구동되고 있는 응용프로그램에 잘 알려진 취약점을 공격하는데 유용하게 이용될 수 있으며, 인터넷 웜과 같은 자동화된 공격에서도 이러한 banner 정보가 사용되어지기도 한다. 따라서 공격자에게 웹 서버의 버전과 같은 banner 정보를 숨기는 것이 안전하다.

- Apache 웹 서버에서는 ServerTokens 지시자를 수정함으로써 헤더에 의해 전송되는 정보를 바꿀 수 있다.

Syntax : ServerTokens Minimal ProductOnly OS Full

- ServerTokens 지시자에서 설정할 수 있는 각 키워드에 의해 나타나는 정보는 다음과 같다.
(키워드) (제공하는 정보) (예)
Prod[uctOnly] -- 웹 서버 종류 -- Apache
Min[imal] -- 웹 서버 종류 + 버전 -- Apache/2.0.50
OS -- 웹 서버 종류 + 버전 + 운영체제 -- Apache/2.0.50(Unix)
Full -- 웹 서버 종류 + 버전 + 운영체제 + 설치된 모듈(응용 프로그램) 정보 -- Apache/2.0.50(Unix)PHP/4.3.0

- ServerTokens는 Apache 1.3 이상에서 가능하고 ProductOnly 키워드는 1.3.12 이상의 버전에서 사용 가능하다. 일반적으로 ServerToken은 httpd.conf에서 명시되어 있지 않는 경우가 많은데 이럴 경우에는 기본값인 ServerTokens Full 이 적용되어 운영체제 정보, 웹 서버 정보, 버전정보, 설치된 모듈 정보 등이 모두 서버의 응답 헤더에 포함되어 클라이언트에게 전송된다.

- 최소한의 정보를 주기 위해서 ServerTokens Prod 를 설정하는 것이 바람직하다. 혹자는 공격자를 속이기 위해서 서버의 헤더 정보를 앞에서 명기한 내용과는 전혀 다른 내용으로 조작하여 클라이언트에 보내기를 원할 수도 있는데 이 경우에는Apache 소스코드를 수정해서 재 컴파일 하여야 하므로 권고하지 않는다.


1.5 ServerSignature

- ServerSignature는 서버가 만든 문서의 꼬리말(trailing footer)을 설정하다. 이러한 꼬리말이 필요한 이유는 프락시 체인 형성시, 사용자가 실제로 어느 서버가 에러 메시지를 리턴 했는지 알 수 있도록 하기 위해서다. 이 값이 on으로 설정되어 있으면 아파치 버전과 가상호스트의 ServerName, ServerAdmin이 노출된다.

- ServerSignature를 off로 설정하면 아무런 정보를 보여주지 않는다.


1.6 PUT 과 POST 제한

- 원격 사용자는 DocumentRoot 디렉토리 구조에 파일을 업로드 하거나 수정하는 행위가 제한되어야 한다. 물론 DocumentRoot의 파일/ 디렉토리 퍼미션을 사용해서도 웹을 통한 파일 업로드 및 수정을 막을 수는 있다. 하지만, 적절한 제한이 이루어지지 않을 경우 홈페이지가 변조되거나 웹 사이트가 침해 당할 수 있으므로 태그를 이용하여 각 디렉토리별로 HTTP Method의 사용여부를 통제할 수 있다. 파일 업로드 및 파일의 수정을 위해서 사용되는 HTTP Method는 PUT과 POST이다.

- 다음의 예는 개인 사용자 홈디렉토리에서 POST, PUT, DELETE Method를 패스워드 파일에 등록된 사용자만이 이용 가능 하도록 제한한 것이다.

<directory /home/*/public_html>
<limit POST PUT DELETE>
Require valid-user
</limit>
</directory>


1.7 CGI Script Execute Limitatioin

- 사용자들이 CGI 스크립트들을 어느 디렉토리에서나 실행할 수 있도록 할 경우 악의적인 사용자가 CGI 프로그램을 업로드 한 후 이를 실행하여 임의의 명령을 실행시킬 수 있다. 따라서, CGI 프로그램의 실행은 관리자가 지정한 특정 디렉토리에서만 가능하도록 제한할 필요가 있다.

- CGI 실행은ScriptsAlias 지시자에 의해서 실행 가능한 디렉토리를 제한할 수 있다. ScriptsAlias 지시자 문법은 다음과 같다.

Syntax : ScriptAlias URL-path file-path directory-path

- 예를들어 cgi-bin이라는 디렉토리에서만 실행 가능 하도록 할 경우 다음과 같이 지정할 수 있다.

ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/ "

- 앞서 언급한 디렉토리 리스팅, 심블릭 링크, SSI 등에 대한 제어는 “Options” 지시자에 의해 제어가 가능하다.

Syntax : Options [+-]option [[+-]option]...

- Options지시자에 ExecCGI를 설정하는 방법은 다음과 같다. CGI스크립트의 실행을 허용할 디렉토리의 디렉토리 섹션에서 Options 지시자 옆에 ExecCGI를 명시하고, AddHandler로 CGI스크립트로 처리할 파일의 확장자를 지정해주면 된다.

<directory “/home/httpd/html/cgi-bin”>
Options ExecCGI …
...
</directory>
...
AddHandler cgi-script .cgi

- 운영중인 웹 서버의 경우 설정 파일을 분석하여 CGI스크립트가 실행될 필요가 없는 디렉토리에 대해 위와 같은 방법으로 CGI스크립트가 실행 가능하도록 설정되어 있는지 점검해볼 필요가 있다.


2. Authentication & Access Control


- 접근을 허락하기에 앞서 사용자나 호스트 인증과 접근통제를 위한 몇몇 기능이 Apache에 있다. 이는 특정한 IP 주소나 서브넷에 따라서 접속을 허락하거나 거부할 수 있고, 사용자 이름과 패스워드에 의해서 사용자를 인증할 수도 있다.

- 아파치에서 일반적인 인증 절차는 다음과 같다. 클라이언트가 특정 자원을 요청하고 그 자원이 인증 기능을 통해서 보호되었다면, 아파치는 클라이언트의 요청에 대한 응답으로 401 Authentication Required 헤더를 보내서 클라이언트에게 사용자 증명서(credential)를 요구한다. 클라이언트는 401 response 헤더를 받으면, 위 그림과 같이 사용자에게 아이디와 패스워드를 요구한다. 사용자가 아이디와 패스워드를 입력하면, 클라이언트는 그 값을 서버에게 전송한다. 그러면 서버는 아이디와 패스워드가 정확한지 점검한 후에, 요청된 자원을 클라이언트에게 전달한다.

■ Basic Authentication
HTTP는 stateless 프로토콜이므로 기본적인 사용자인증에 의해 보호되는 자원에 접근하기 위해서는 매번 사용자 이름과 패스워드와 같은 인증서를 서버에 보내야만 한다. 하지만 초기 인증을 거친 후 다른 페이지에 접근하기 위해서 매번 사용자 이름과 패스워드를 서버에 전송하는 것은 일반적으로 클라이언트 소프트웨어나 웹 브라우저에 의해서 자동으로 이루어진다. 만약 사용자 이름이 웹 서버의 리스트에 있고, 패스워드가 일치하면 보호된 자원에 접근을 허락 받게 된다.
기본적인 인증에서는 패스워드가 암호화되어서 저장되지만 클라이언트에서 서버로 전송되는 도중에는 암호화되지 않아 제 3자에 의해서 도청될 수 있다. 보호된 자원에 접속하는 매 순간마다 ID와 패스워드가 전송되므로 telnet, ftp 등 인증을 하는 다른 서비스보다 쉽게 도청이 가능하다. 뿐만 아니라 서버에서 클라이언트로 전송되는 어떠한 데이터에 대해서도 암호화가 제공되지 않으므로 내용도 가로채기가 용이하다. 따라서 기밀성이 중요시되는 웹 서버에서는 이러한 인증은 권장할 수 없다.

■ Digest Authentication
두 번째 인증 방법으로는 다이제스트 인증이 있는데 기본적인 인증과의 차이점은 네트워크 등 전송로 상에서 패스워드가 평문으로 전송되지 않는다는 점이다. 패스워드는 MD5 암호화 해쉬를 시킨 후 전송한다. 다이제스트 인증은 패스워드를 암호화해서 전송하고는 있지만 데이터는 평문으로 전송되므로 문제점을 가지고 있고, 또한 모든 웹 브라우저가 다이제스트 인증을 지원하지는 않는다는 문제점이 있다.

■ Database Authentication
DB 인증 모듈은 사용자 이름과 패스워드를 보다 신속하게 확인할 수 있도록 한다. 서버에 다수의 사용자 이름과 패스워드가 저장되어 있을 경우 사용자가 데이터에 접근하기 위한 인증과정에 많은 시간이 소모될 수 있다. 일반 파일 시스템이 아닌 DB를 이용할 경우 사용자 이름과 패스워드 확인 시간을 대단히 단축할 수 있다.


3. Basic Authentication


- 기본 사용자 인증과 다이제스트 사용자 인증의 설정 방법은 대단히 유사한데 다음과 같은 절차를 거쳐서 설정할 수 있다.

* 패스워드 파일 생성
* 패스워드 파일을 사용할 수 있도록 Apache 환경 설정

** 패스워드 파일 생성
- 패스워드 파일은 외부에서 외부에서 접근이 불가능한 곳에 위치해야 한다. 파일 내부에는 암호화가 되어 있기는 하지만 패스워드 파일 획득시 복호화가 가능하기 때문이다.

- 다음 과정은 htpasswd 프로그램을 이용하여 패스워드 파일을 생성하는 과정이다.

# htpasswd -c /usr/local/.passwd demantos
New password:
Re-type new password:
Adding password for user demantos

- 새로운 사용자를 추가하고자 할 때는 -c 옵션을 빼고 해야 한다. -c 옵션은 패스워드 파일을 새로 생성하기 때문에 사용자 추가시 이 옵션을 사용하면 기존 사용자에 대한 패스워드가 사라지게 된다.

# htpasswd /usr/local/.passwd mitnik
New password:
Re-type new password:
Adding password for user mitnik

- 패스워드 파일은 최소한의 퍼미션만 있어야 한다.

# chown root.nobody /usr/local/.passwd
# chmod 640 /usr/local/.passwd

- 이 때 패스워드 파일에 대한 퍼미션을 수정하지 않으면 정상적으로 패스워드를 입력하여도 접근이 불가능하다. 웹을 통해 접근하는 사용자는 nobody의 권한을 가지고 있으므로 nobody라는 사용자나 그룹이 적어도 읽기는 가능해야 한다. 퍼미션을 644로 할 수도 있지만 root 사용자나 nobody 그룹 이외에는 접근을 하지 못하게 하기 위해서 위와 같이 설정을 해주는 것이다.

** httpd.conf 수정
- 패스워드 파일을 사용하기 위해 httpd.conf 파일을 수정한다. 인증을 원하는 경로를 지정하고 다음과 같이 쓸 수 있다.
<directory "/usr/local/httpd/htdocs/admin">
AuthType Basic
AuthName "SecuBits"
AuthUserFile /usr/local/.passwd
Require user demantos
</directory>
􀁹 AuthType : 인증 타입. 여기서는 Basic
􀁹 AuthName : 인증영역 식별자(realm)
􀁹 AuthUserFile : 패스워드 파일의 위치
􀁹 AuthGroupFile : 그룹 파일의 위치 (선택사항)
􀁹 Require : 허가를 주기 위해 만족시켜야 하는 요구사항들

- 위의 예제는 /admin 이라는 경로는 demantos 만이 접근이 가능하게 설정되어 있다. 패스워드 파일에 지정되어 있는 모든 사용자에 대해서 접근을 허가하고자 한다면 다음과 같이 쓸 수 있다.

<directory "/usr/local/httpd/htdocs/admin">
AuthType Basic
AuthName "SecuBits"
AuthUserFile /usr/local/.passwd
Require valid-user
</directory>

4. Digest Authentication


- Digest Authentication은 mod_auth_digest 모듈에 의해 구현되었다. 이 인증방식의 특징은 패스워드가 MD5 digest 형태로 전송된다는 것이다. 이 방식을 사용하기 위해서는 mod_auth_digest가 설치되어야 한다.

- 이 모듈은 아파치 설치시 --enable-auth-digest 옵션을 주어 아파치를 설치해야 한다.

- 기본 인증 방식과 패스워드 파일 생성 방법은 비슷하다. 다른 점은 인증영역 식별자가 인자 값으로 들어간다는 것이다.

# htdigest -c /usr/local/.digest_passwd secubit demantos
Adding password for demantos in realm secubit.
New password:
Re-type new password:

- secubit은 인증영역 식별자로, httpd.conf 파일에서 AuthName 지시자를 사용해서 지정되는 이름과 동일해야 한다. 기존 패스워드 파일에 추가하는 경우에는 -c 플래그를 생략하도록 한다.

- 생성된 패스워드 파일은 반드시 문서 디렉토리 밖에 저장하여 외부에서 접근이 불가능하도록 해야 한다. 비록 내용이 암호화되어 있더라도 우선 접근이 가능하면 패스워드를 알아낼 수 있는 기회가 주어질 수 있기 때문이다. 또한 사용자들로 하여금 웹사이트의 패스워드와 다른 중요한 것들의 패스워드를 다르게 사용하도록 권장한다.

<directory "/usr/local/httpd/htdocs/digest">
AuthType Digest
AuthName "secubit"
AuthDigestFile /usr/local/.digest_passwd
Require valid-user
</directory>

5. Database Authentication


- Basic authentication과 digest authentication은 둘 다 인증 정보를 저장하는데 텍스트 파일을 사용하는 단점이 있다. 텍스트 파일은 인덱싱이 안되기 때문에 검색 속도가 느리다. 또한 HTTP가 stateless이기 때문에 컨텐츠가 요청될 때마다 인증이 수행되어야 하고 텍스트 파일에서 검색을 수행해야 한다. 최악의 경우 사용자 이름 이 텍스트 파일에 없으면 파일의 모든 라인을 점검해야 한다.

- 사용자가 적은 경우에는 이것이 큰 문제가 되지 않지만, 사용자가 많은 경우 웹 서버의 응답이 매우 느려진다. 실제로 많은 경우 정상적인 사용자 이름과 패스워드를 입력해도 인증 모듈이 그 파일에서 사용자를 찾는데 시간이 엄청나게 걸리기 때문에 아파치가 인증 실패를 리턴 할 수 있다. 이런 경우에 다른 대안으로 데이터베이스를 사용하는 것이 좋다. 아파치는 다양한 데이터베이스를 사용해서 인증을 수행할 수 있도록 많은 모듈을 제공한다.

- mod_auth_dbm 모듈은 사용자이름과 패스워드를 DBM 파일에 저장할 수 있게 한다.

- 만약 사용하고 있는 플랫폼에서 DB 지원을 하지 않는다면 설치를 해야 한다. Berkeley 데이터 베이스 파일로 알려진 DB 파일은 가장 간단한 형태의 데이터베이스로서 HTTP 인증에 적합하다. DB 파일은 키와 값의 페어를 저장한다. 즉, 변수의 이름과 변수의 값을 저장한다. 다른 데이터베이스는 한 레코드에 많은 필드가 저장될 수 있지만, DB 파일은 키와 값의 페어만을 저장한다. 이것은 사용자 이름과 패스워드를 요구하는 인증에 아주 적합하다.

- 이 방식도 digest 방식과 같이 사용하기 위해서는 mod_auth_dbm가 설치되어야 한다. 이 모듈은 아파치 설치시 다음 옵션으로 설치 할 수 있다.

--enable-auth-dbm

사용자 파일 생성

- 여기서 사용되는 파일은 일반 텍스트 파일이 아니라 DB 파일이다. dbmmanage 라는 유틸로 파일을 생성할 수 있다.

# dbmmanage /usr/local/.passwd.dat adduser demantos
New password:
Re-type new password:
User demantos added with password encrypted to I3kmoSjOBRtGQ using crypt

- 아파치 설정은 다음과 같다.

<directory "/usr/local/httpd/htdocs/dbm">
AuthType Basic
AuthName "SecuBits - DBM Authentication"
AuthDBMUserFile /usr/local/.passwd.dat
AuthDBMType GDBM
Require user demantos
</directory>

6. Access Control


- 아파치에서의 접근 제어는 탄력이 있다. 이 말은 관리자가 어떻게 설정하느냐에 따라서 그 결과는 천차만별이라는 것을 뜻한다. 자세한 설정을 보기 전에 먼저 영역이나 범위를 설정하는 지시어에는 다음과 같은 것이 있다.

<directory></directory>
<directorymatch></directorymatch>
<files></files>
<filematch></filematch>
<location></location>
<locationmatch></locationmatch>
<limit></limit>
<limitexcept></limitexcept>

- 위의 지시어들은 접근을 제어할 영역이나 범위 혹은 패턴을 정의한다. 이런 지시어들을 사용하여 특정 디렉토리나 특정 파일들에 대해서만 접근을 제어할 수 있다. 아주 간단한 예제 하나를 보면

<filematch ^(.*\.pl | .*localconfig.* | check.sh)$>
deny from all
</filematch>

- 이것은 확장자가 .pl이거나 localconfig라는 문자열을 포함하거나 check.sh와 파일이름이 매치가 되면 모든 접근을 거부한다는 것이다. ^는 시작을 의미하고 $는 끝을 의미한다.

- 위의 예제에서 보이는 영역 내부에 들어 있는 접근 제어 지시어에 대해서 알아보면

** mod_access에 의한 접근 제어
- 클라이언트가 사용하는 호스트의 IP 주소나 도메인에 의해서 웹 서버의 데이터에 대한 접근을 통제할 수 있다. 기본적인 서버 설정은 DocumentRoot의 내용에 대해 누구나 접속을 허락하도록 설정되어 있다. Apache의 Allow 와 Deny 지시자는 사용자 시스템의 호스트 이름과 호스트 주소를 근간으로 접속을 허락 또는 차단할 수 있도록 지정할 수 있다. 또한, Allow와 Deny 지시자를 동시에 사용할 경우 그 순서를 정하는 Order 지시자를 사용하여 보다 정교한 정책설정을 할 수 있다.

- 또한 이 지시자들은 위의 인증방식들과 함께 사용하여 더욱 강력한 인증 정책을 수립할 수 있다.

􀁹 Order Deny, Allow : deny 지시자가 allow 지시자보다 먼저 검사된다. 접근은 기본적으로 허용된다. 즉, deny 지시자나 allow 지시자에 일치하지 않는 클라이언트의 접속은 허용한다.
􀁹 Order Allow, Deny : allow 지시자가 deny 지시자보다 먼저 검사된다. 접근은 기본적으로 차단된다. 즉, deny 지시자나 allow 지시자에 일치하지 않는 클라이언트의 접속은 차단한다.
􀁹 Order Mutual-failure : allow 리스트에 있고 deny 리스트에 없는 호스트만 접근을 허용한다. 순서는 allow, deny 일 때와 같다.

- ex)
Order Allow,Deny
Allow from all
Deny from 203.238.110.121
- 이 설정은 203.238.110.121 이라는 아이피만 차단한다.

Order Deny,Allow
Deny from all
Allow from .company.com
- 이 설정은 .company.com 도메인 즉, 회사내부에서만 접속이 가능하도록 하는 설정이다.

deny from 192.110.50
deny from domain.com attacker.com
deny from tld
- 이 설정은 192.110.50 C 클래스의 아이피나 domain.com attacker.com 그리고 탑 레벨 도메인으로부터 접근을 막는 설정이다. tld는 Top Level Domain의 약자로 .com 이나 .gov, .net 과 같은 탑 레벨 도메인을 의미한다.

- 여기에 추가적으로 Satisfy 라는 지시자가 있는데 인증방식과 접근 제어 방식을 같이 사용할 때 사용된다.

- 권한 부여는 특정한 자원에 접근할 사용자 퍼미션이 유효한지를 확인하는 과정이다. 어떤 퍼미션에 의해 허락되고 거부될지는 자원과 그 자원과 관련된 규칙들에 따라 서 대단히 다양하다. 각 파일과 디렉토리 구조는 다른 접근통제나 사용자 인증 방법을 가질 수 있다. 접근통제와 사용자 인증 방법을 사용하여 각 자원에 대한 다양한 권한을 부여할 수 있다. 가령 인터넷에서 접속 시에는 사용자 이름과 패스워드를 확인하고 인트라넷에서 접속시에는 요구하지 않도록 설정할 수도 있다. 이는Satisfy 지시자를 통해서 구현할 수 있다. 즉, Satisfy 지시자는 사용자 인증(Require에 의한)과 클라이언트 호스트 주소에 따른 접근통제(Allow에 의한)를 동시에 사용하여 정책설정을 할 때 쓰인다.

Syntax : Satisfy any all

- 다음 예는 인트라넷 밖에서의 모든 접속시 패스워드를 요구하고 인트라넷 내부의 사용자들은 패스워드 없이 접속을 허용하도록 설정한 예이다.

order deny ,allow
deny from all
allow from 172.16.5
AuthType Basic
AuthName "Welcome SecuBits"
AuthUserFile /usr/local/.passwd
Require valid-user
Satisfy Any

- AuthType 에 의해 인증을 거치거나 혹은 내부사용자일 경우 두 가지 조건 중 하나만 맞으면 정상적으로 접근이 가능하다. 하지만 이 방법은 추천되는 방법은 아니다. 정말 중요한 네트워크라면 두 가지 조건을 모둔 만족하게 하는 Satisfy All로 설정을 해주어야 한다. 물론 인증 방식 또한 기본 인증 방식이 아닌 다이제스트 인증 방식이나 데이터베이스 인증 방식을 채택하는 것이 안전하다.

- 이외에도 Extended Access Control 모듈이나 Realtime Blackhole List 모듈에 의해서 접근을 제어할 수 있다.

** 확장자별 접근 제어
- 디렉토리 인섹싱이 되지 않는다면 공격자들은 절대경로를 사용하여 원하는 파일을 얻어낼려고 할 것이다. 이 때 사용되는 파일의 확장자 중 특정 확장자는 웹을 통해서 접근을 못하게 할 수 있다.

<directory /usr/local/httpd/htdocs>
Order deny, allow
Deny from all
<filematch “\.(html?|jpe?g|bmp|gif)$”>
Order deny, allow
Allow from all
</filematch>
ErrorDocument 403 /access_deny.html
</directory>

- 위의 설정은 html, jpg, bmp, gif 파일 이외의 파일은 접근이 허용되지 않으며, 이외의 파일에 접근시 접근 에러 메시지가 담긴 access_deny.html의 내용을 보여주게 된다.

- 위의 내용을 약간 변경시켜서 다음과 같이 사용할 수 있다.

<directory /usr/local/httpd/htdocs>
Order deny, allow
Allow from all
<filematch “\.(conf(ig)?|bak|tmp)$”>
Order deny, allow
Deny from all
</filematch>
ErrorDocument 403 /access_deny.html
</directory>

- config, conf, bak, tmp의 확장자를 갖는 파일들에 대해서는 접근을 제한하게 된다.

- rewrite 모듈을 사용하여 접근을 제한할 수도 있지만 만약 rewrite 모듈을 설치하지 않았을 경우 mod_access는 기본적으로 설치되는 모듈이기 때문에 이렇게 지정할 수도 있다.

** 환경 변수별 접근 제어
- 클라이언트의 환경에 따라 접근을 허용할지 안할지를 결정할 때 사용된다. 보통 브라우저에 많이 적용을 시키게 되는데 클라이언트가 MSIE로 접속할 때만 허용하고 다른 웹 브라우저인 경우에는 접근을 제한하게 한다. 이것은 보안보다는 서버의 성능과 환경이 MSIE에 맞추어져 있기 때문에 최대의 성능 위해서 사용하는 경우가 많다.

BrowserMatch ^MSIE InternetExplorer
<directory /msie_html>
Order deny, allow
Deny from all
Allow from env=InternetExplorer
</directory>

- ^MSIE 는 HTTP 헤더 중 User-Agent에 클라이언트의 브라우저에 대한 정보가 있는 부분을 이야기한다. 시작이 MSIE일 경우를 InternetExplorer라는 환경 변수에 지정을 하고 이 환경 변수와 일치할 때만 접근을 허용하는 정책이다.

[Linux] Daemon (Linux Server Security)

1. chkconfig


- chkconfig 명령을 사용해서도 서비스를 활성화하고 비활성화할 수 있다. chkconfig --list 명령을 사용하여 시스템 서비스 목록과 런레벨 0-6에서 서비스의 시작 또는 정지 여부를 볼 수 있다.

- chkconfig 명령은 xinetd가 관리하는 서비스에 즉시 적용된다. 예를 들어 xinetd가 실행 중이며 finger가 비활성화된 상태에서 chkconfig finger on 명령을 실행한다면 xinetd를 수동으로 재시작 할 필요가 없이 finger는 즉시 활성화된다.

- 하지만 다른 서비스에 대한 변경 사항은 chkconfig 사용 후 즉시 적용되지 않기 때문에 service daemon stop 명령을 사용하여 개별 서비스를 정지하거나 시작해야 한다. 여기에서 daemon은 정지할 서비스 이름이다. 서비스를 시작하거나 재시작하기 위해서는 stop을 start 또는 restart를 사용하면 된다.

- 서비스들의 상태를 확인하는 명령은 다음과 같다.

# chkconfig --list
syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
random 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rawdevices 0:off 1:off 2:off 3:on 4:on 5:on 6:off
pcmcia 0:off 1:off 2:on 3:on 4:on 5:on 6:off
saslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
keytable 0:off 1:on 2:on 3:on 4:on 5:on 6:off
gpm 0:off 1:off 2:on 3:on 4:on 5:on 6:off
autofs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
irda 0:off 1:off 2:off 3:off 4:off 5:off 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
portmap 0:off 1:off 2:off 3:on 4:on 5:on 6:off
nfs 0:off 1:off 2:off 3:off 4:off 5:off 6:off
nfslock 0:off 1:off 2:off 3:on 4:on 5:on 6:off
sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rhnsd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
xinetd 0:off 1:off 2:off 3:on 4:on 5:on 6:off

xinetd based services:
chargen-udp: off
rsync: off
chargen: off
daytime-udp: off
daytime: off
echo-udp: off
echo: off
services: off
servers: off
time-udp: off
time: off
sgi_fam: on

- 특정 서비스의 상태를 보려면 뒤에 서비스의 이름을 적어주면 된다.

# chkconfig --list network
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off

- 특정 서비스를 삭제하거나 추가 할 때는 다음과 같이 명령을 내려주면 된다.

# chkconfig --del portmap
# chkconfig --add portmap

- 여기서 한 가지 주의할 사항은 chkconfig 명령으로 서비스를 지운다 하더라도 실제 서비스를 하는 스크립트 파일은 삭제되지 않는다는 것이다. 삭제되는 파일은 /etc/rc.d/rc[0-6].d에 있는 링크된 파일이기 때문에 실제 스크립트가 있는 /etc/rc.d/init.d에 있는 서비스 스크립트는 삭제되지 않는다.

# ls -al /etc/rc.d/* grep portmap
-rwxr-xr-x 1 root root 1898 Feb 25 2003 portmap
lrwxrwxrwx 1 root root 17 Feb 4 13:36 K87portmap -> ../init.d/portmap
lrwxrwxrwx 1 root root 17 Feb 4 13:36 K87portmap -> ../init.d/portmap
lrwxrwxrwx 1 root root 17 Feb 4 13:36 K87portmap -> ../init.d/portmap
lrwxrwxrwx 1 root root 17 Feb 4 13:36 S13portmap -> ../init.d/portmap
lrwxrwxrwx 1 root root 17 Feb 4 13:36 S13portmap -> ../init.d/portmap
lrwxrwxrwx 1 root root 17 Feb 4 13:36 S13portmap -> ../init.d/portmap
lrwxrwxrwx 1 root root 17 Feb 4 13:36 K87portmap -> ../init.d/portmap

# chkconfig --del portmap
# ls -al /etc/rc.d/* grep portmap
-rwxr-xr-x 1 root root 1898 Feb 25 2003 portmap

- 다음 명령은 특정 런레벨에서 특정 서비스를 시작하거나 정지시키는 명령이다. 런레벨은 여러 개를 같이 적어줄 수 있다.

# chkconfig --level 3 network off
# chkconfig --level 345 network on


2 xinetd


- xinetd(eXtended InterNET services daemon)은 침입에 대해 우수한 보안을 제공하며 서비스 부인(Denial of Services)공격의 위험을 감소시킨다. 이는 잘 알려진 inetd 와 tcpd 를 함께 사용하는 것과 같이 주어진 머신에 대한 접근 권한 설정을 가능케 하지만 더욱 많은 기능을 제공할 수 있다.

- xinetd는 슈퍼데몬으로서 자신이 관리하는 서비스로 연결 요청이 들어오면 해당 서비스를 깨워 연결 요청을 한 사용자에게 서비스를 하도록 해준다. 예전 inetd도 같은 기능을 하였는데 보안상 문제점이 많아 tcp _wrapper를 같이 사용하곤 하였다. 위의 그림에서처럼 xinetd는 tcp_wrapper의 기능까지 가지고 있다.

- xinetd의 기본 설정 파일은 /etc/xinetd.conf이고 xinetd가 관리하는 서비스들은 /etc/xinetd.d에 위치한다.

2.1 /etc/xinetd.conf
- /etc/xinetd.conf

defaults
{
attribute operator value(s)
...
}

- 정의된 각 속성은 이후에 기술되는 모든 서비스에 대해 제공된 값을 유지하는데 따라서 only_from 속성에 서버에 접속할 수 있는 인가된 주소들을 열거할 수 있다

only_from = 192.168.1.0/24 192.168.5.0/24 192.168.10.17

- 이후에 선언된 모든 서비스는 목록에 포함된 주소의 머신으로부터의 접근만을 허용할 것이다. 그러나 이러한 디폴트 값은 각 서비스에 대해 수정될 수 있는 반면 매우 위험하다. 사실 간단하고 안전하게 서비스를 제공하기 위해서는 디폴트 값을 정의하지 않고 각 서비스 내에서 추후 이들을 변경하는 것이 더욱 좋다.

- 예를 들면 접근 권한의 경우 가장 간단한 정책은 모든 서비스에 대한 접근을 거절하고 다음에 서비스를 원하는 이들에게만 각 서비스에 대해 접근을 허용하는 것이다. tcp_wrapper를 이용할 때 이는 ALL:ALL@ALL을 포함하는 hosts.deny 파일과 단지 인가된 서비스 및 주소를 제공하는 hosts.allow 파일을 사용해서 이루어진다.

- 설정 파일의 서비스를 기술하는 각 절은 다음과 같다:

service service_name
{
attribute operator value(s)
...
}

- ‘=’, ‘+=”과 “-=” 세 연산자가 허용 가능한데 대부분의 속성들은 이에 고정된 값을 할당하는데 사용되는 “=” 연산자만 지원한다. “+=” 연산자는 값들의 목록에 조항을 추가하는 반면 “-=” 연산자는 이 조항을 제거한다.

- ex) xinetd.conf

# cat /etc/xinetd.conf
defaults
{
instances = 60
log_type = SYSLOG authpriv
log_on_success = HOST PID
log_on_failure = HOST
cps = 25 30
only_from = 192.168.1.0/24
}
includedir /etc/xinetd.d

Flags
- IDONLY : 시별 서버를 갖는 클라이언트로부터의 접속만을 허용
- NORETRY : 실패한 경우 새로운 프로세스의 분기를 피한다
- NAMEINARGS : server_args 속성의 첫 번째 인수를 server 에 대한 argv[0] 로 사용하는데, 이는 inetd 에서와 같이 server 속성을 tcpd 로 하고 다음에 서버 이름 및 그 인수로 server_args를 써놓음으로써 tspd사용을 허용한다.

log_type
- SYSLOG selector [level] : syslogd 가 daemon, auth, user 또는 local0-7 중에서 선택할 수 있도록 한다
- FILE[max_size[absolute_max_size]] : 지정된 파일이 로깅 정보를 받는데, 두 옵션은 파일 크기 한계를 설정한다. 파일 크기가 한계값에 도달하면 우선 메시지를 syslogd에 보내고 다음에 이 서비스에 대한 로깅을 중지한다(일반적인 파일 또는 디폴트로 고정되어 있다면 다양한 서비스들이 관련될 수 있다.)

log_on_success
서버가 구동할 때 여러 가지 정보가 기록될 수 있다.
- PID : 서버의 PID(내부 xinetd 서비스라면 PID 는 0의 값을 갖는다)
- HOST : 클라이언트 주소
- USERID : 식별 프로토콜을 정의하는 RFC1413 에 따른 원격 사용자의 아이덴티티
- EXIT : 프로세스 종료 상태
- DURATION : 세션 지속 기간

log_on_failure
xinetd 는 서버가 자원 부족 또는 접근 규칙 때문에 구동할 수 없을 때 다양한 정보를 기록할 수 있다.
- HOSTID, USERID : 위와 동일
- ATTEMPT : 접근 시도를 기록하며 다른 값이 적용되자마자 실행되는 자동 옵션
- RECORD : 클라이언트에 대한 얻을 수 있는 모든 정보를 기록한다.

Nice
nice 명령어와 같이 서버 우선권을 변경한다.

no_access
이 서비스에 접근할 수 없는 클라이언트 목록

only_from
인가된 클라이언트 목록. 이 속성에 값이 부여되지 않는다면 서비스에 대한 접근이 거절된다.

port
서비스와 관련된 포트. /etc/service 파일에 정의되어 있다면 이들 포트 넘버는 서로 일치되어야 한다.

protocol
지정된 프로토콜은 /etc/protocol 파일에 존재해야 하는데 프로토콜이 지정되지 않으면 디폴트 프로토콜이 사용된다.

server
서버 경로

server_Args
서버에 주어지는 인수

socket_type
stream(TCP), dgram(UDP), raw(IP direct access) 또는 seqpacket()

type
xinetd 는 세가지 유형의 서비스를 다룰 수 있다
1. RPC : /etc/rpc 파일에 정의되어 있는데 그다지 잘 작동되지 않는다
2. INTERNAL : echo, time, daytime, chargen 및 discard 와 같은 xinetd 가 직접적으로 다루는 서비스
3. UNLISTED : /etc/rpc 또는 /etc/service파일에 정의되어 있지 않은 서비스

wait
쓰레드에 대한 서비스 동작을 정의하는데 두 가지 값이 허용될 수 있다
- yes : 단일 쓰레드 서비스로 이 유형의 접속은 단 하나만이 서비스될 수 있다.
- no : 정의된 최대 한계에 따라 각각의 새로운 서비스 요청에 대해 xinetd는 새로운 서버를 구동한다. 디폴트로 이 한계는 무제한이다.

cps
들어오는 접속 수를 제한하는데, 첫 번째 인수는 숫자 자체이다. 한계숫자를 넘을 때 두 번째 인수로 제공되는 주어진 시간(초) 동안 서비스가 비활성화된다.

instances
동시에 작동할 수 있는 동일 유형 서버의 최대수를 정의한다.

max_load
서버에 대한 최대 부하(예를 들어 2 또는 2.5)를 나타내는데, 이 한계를 넘는 경우 이 서버에 대한 요청은 거절된다.

per_source
동일 호스트로부터의 서버 접속수를 제한하는 정수 또는 UNLIMITED


2.2 /etc/xinetd.d/* (service)
- /etc/xinetd.d/* (service)

# cat /etc/xinetd.d/telnet
service telnet
{
disable = yes
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}

- xinetd.conf에서 많은 속성들의 값을 설정할 수 있는데 only_from, no_access, log_on_success, log_on_failure 등 어떤 속성들은 디폴트 절 및 각 서비스 절에 제공된 값들을 동시에 보유한다.

- IP 주소에 기초하여 머신에 대한 접근을 제어하는 only_from 과 no_access 두 속성이 있는데 우선 후자를 이용하여 다음과 설정한다.

no_access = 0.0.0.0/0

- 이는 서비스 접근을 완전히 막는다. 그러나 모든 사람에게 예를 들어 echo(ping) 접근을 허용하려면 echo 서비스를 다음과 같이 설정한다.

only_from = 0.0.0.0/0

- 다음은 이 설정을 통해 얻는 로깅 메시지이다.

Sep 17 15:11:12 charly xinetd[26686] : Service=echo-stream: only_from list and no_access list match equally the address 192.168.1.1.

- 명확하게 접근 제어가 두 속성에 포함된 주소 목록을 비교함으로써 이루어진다. 클라이언트 주소가 두 목록 모두에 일치할 때는 덜 일반적인 속성 값에 의해 접근 제어가 이루어진다. 위와 같이 속성 값이 동일한 경우 xinetd 는 접속 선택 및 거절을 할 수 없으며, 이러한 모호함을 피하기 위해서는 다음과 속성을 설정해야 한다.

only_from = 192.0.0.0/8

- 더욱 손쉬운 해결방법은 다음과 같은 속성 설정을 통해 접근 제어를 하는 것이다.

only_from =

- 속성 값을 주지 않았다고 해서 모든 접속이 실패하는 것은 아니며, 따라서 모든 서비스는 이와 동일한 속성에 의해 접근을 허용한다.

- 다음은 ftp 서비스에 대한 예제이다.

service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.ftpd
server_args = -l
instances = 4
access_times = 7:00-12:30 13:30-21:00
nice = 10
only_from = 192.168.1.0/24
}

- 시간 제한은 물론 로컬 네트워크 상에서만 접근이 가능하도록 설정한 것이다.


3. inetd vs Standalone


- inetd 방식과 standalone 방식은 시스템의 성능 문제에 있어서 서로 상반되는 모습을 보인다.inetd는 메모리의 낭비가 적어 시스템에 무리를 주지 않지만 속도가 느리다는 단점이 있고, standalone 방식은 속도는 빠르지만 항상 프로세스가 대기를 해야 하기 때문에 서버에 부하를 많이 주게 된다. 그래서 비교적 연결 요청이 적은 TELNET이나 FTP는 xinetd를 통해서 서비스를 하고 연결 요청이 많은 HTTP는 standalone 방식으로 서비스 하는 것이 좋다.

- 만약 포털 사이트의 웹 서버가 xinetd방식이라면 사용자들은 원활한 서비스를 받을 수 없을 것이다. 그리고 FTP나 TELNET이 standalone 방식이라면 잘 사용하지 않는 프로세스가 계속 메모리만 차지하고 있어 비효율적이다. 하지만 모든 서비스가 꼭 정해져 있는 것이 아니라 관리자가 잘 판단해서 결정해야 할 것이다.

[Linux] File System Security(Linux Server Security)

1. mount



- mount는 파일시스템 구조 내에 있는 일련의 파일들을 사용자나 사용자 그룹들이 이용할 수 있도록 만드는 것이다. 디바이스와 디렉토리를 연결해주는 작업을 한다. 부팅시 커널은 /etc/fstab 파일을 읽어서 마운트 할 디바이스를 찾고 이 디바이스들을 fstab 파일에 명시된 디렉토리에 마운트시킨다.

- mount 명령의 사용법 : mount 명령은 2개의 인수를 취한다. 첫 번째 인수는 파일시스템을 포함하고 있는 디스크나 파티션에 해당되는 장치파일이다. 두 번째 인수는 마운트될 디렉토리이다.

# mount /dev/sda2 /usr
# mount /dev/sda8 /home


mount [-lhV]

mount -a [-fFnrsvw] [-t vfstype] [-O optlist]
mount [-fnrsvw] [-o options [,...]] device dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir

- mount 명령은 여러 가지 옵션이 존재하는데 그 중에서 꼭 알아두어야 할 옵션은 -t 와 -o 옵션이다.

-t 옵션 뒤에는 파일 시스템의 타입을 써주어야 한다.
-o 옵션은 뒤에 나올 fstab 파일의 옵션 부분에 들어갈 옵션들을 적어준다. 옵션은 다음과 같다.

async : 파일 시스템에 대한 I/O가 비동기적으로 이뤄지도록 한다.
auto : -a 옵션으로 마운트 가능하게 한다.
defaults : 다음과 같은 기본 옵션을 사용하게 한다. (rw, suid, dev, exec, auto, nouser, async)
Dev : 파일 시스템상의 문자, 블럭 특수장치를 해석한다.
exec : 바이너리의 실행은 허가한다.
noauto : 명시적으로만 마운트 가능하다.(즉,-a 옵션으로는 마운트되지 않는다.)
nodev : 파일 시스템상의 문자, 블럭 장치에 대한 해석을 하지 않는다.
noexec : 마운트된 파일 시스템 상의 어떤 바이너리도 실행을 허가하지 않는다. 자신이 지원하지 않는 바이너리를 포함하는 파일 시스템에 대해 유용하다.
nosuid : setuid, setgid를 무시한다.
nousers : 일반 사용자가 마운트할 수 있도록 허용하지 않는다. 기본 설정값이다.
remount : 이미 마운트된 파일 시스템을 다시 마운트한다. 보통 읽기 전용 파일 시스템을 읽기/쓰기 모드로 전환하는 등 파일 시스템에 대한 플래그를 바꿀 때 사용된다.
Ro : 파일 시스템을 읽기만 가능하게 한다.
Rw : 읽기/쓰기 모두 가능하게 마운트한다.
suid : setuid, setgid가 효력을 발휘할 수 있게 해준다.
sync : 파일 시스템에 대한 I/O가 동기적으로 이뤄지게 한다.
user : 일반 사용자도 마운트 할 수 있게 허용한다. 이 옵션은 다음 noexec, nosuid, nodev도 효력을 발휘하게 한다.(같은 줄에서user, exec, dev, suid 등의 옵션을 주지 않는다면)

- 만약 fstab 파일이 잘못 설정되어 있으면 부팅이 안될 수도 있고 보안상 치명적이 결과를 초래할 수도 있다.

- fstab 파일의 형태는 다음과 같다.

LABEL=/usr /usr ext3 defaults 1 2
(filesystem)(directory)(type)(options)(frequency)(pass)

- 첫 번째 필드는 파일 시스템을 나타낸다. 즉, 물리적인 디바이스를 나타내는데 레드햇 9에서는 LABEL로 대체해서 쓰고 있다. 보통 많이 볼 수 있는 형태는 /dev/sda2 이다.
- 두 번째 필드는 파일 시스템을 마운트 할 디렉토리를 지정한다. 즉, 마운트포인트가 된다.
- 세 번째 필드는 파일 시스템의 타입이다.
- 네 번째 필드 부분은 옵션이다.
- 다섯 번째, 여섯 번째 필드는 백업 주기와 fsck에 넘겨주는 값으로 부팅시 fsck로 체크할 것인지 안 할 것인지를 나타낸다. 0은 체크를 안 한다는 뜻이다.

- 여기서 보안상 문제가 발생할 수 있는 부분은 옵션부분이다.

- ex)공격자가 웹 서버의 취약점을 이용하여 시스템에 침입하였을 경우 대부분의 공격자는 /tmp 디렉토리에 로컬에서 권한 상승에 필요한 파일들을 다운로드 한다. 이런 파일들은 setuid 비트가 설정된 파일도 있고 실행이 되는 파일들이다. 만약 다음과 같이 설정되어 있다면 이런 공격들이 통하지 않을 것이다.

LABEL=/tmp /tmp ext3 defaults,nosuid,noexec 1 2

- 그리고 /home 디렉토리에 setuid 파일이나 device 파일은 존재하지 않아도 사용자들이 시스템을 사용하는데 아무런 문제가 없다. 오히려 이런 파일들이 있을 때 시스템에 문제가 생길 가능성이 높다. 그래서 다음과 같이 설정해줄 수가 있다.

LABEL=/home /home ext3 defaults,nosuid,nodev 1 2

- fstab을 위와 같이 바꾸었으면 파일 시스템을 다음과 같이 다시 마운트 한다.
# mount -o remount /tmp
# mount -o remount /home

- 옵션이 제대로 적용되었는지 확인하는 방법은 쉘 스크립트를 간단하게 하나 만든 후 실행 퍼미션을 추가하고 실행해보면 알 수 있다.

# cd /tmp
# vi test.sh
#!/bin/sh
echo “exec test!!”
# chmod a+x test.sh
# ./test.sh
exec test!!
# mount -o noexec,remount /tmp
# ./test.sh
-bash: ./test.sh: /bin/sh: bad interpreter: Permission denied


2. /etc/security



- 인증된 사용자가 어디서나 운영중인 서버로 로그인할 수 있는 환경이라면 서버에 접속이 가능한 사용자에 대해서 통제 및 관리를 강화하기 위해 security 파일을 사용하도록 한다.


2.1 access.conf

- 기본적으로 설치되어 있는 access.conf 파일을 이용하면 인증된 사용자 중 특정한 사용자에 대해 콘솔이나 서버 등에 대한 로그인을 제어할 수 있다. access.conf 파일을 통한 설정은 비교적 쉬운데 안전하면서도 제한적인 서비스를 하기 위한 설정 방법은 다음과 같다.

# vi /etc/security/access.conf
...
-:ALL EXCEPT root test:ALL

- 위의 설정은 root와 test라는 사용자를 제외한 모든 사용자에 대해서 콘솔 및 원격 접속을 차단한다. 여기에 위치 정보를 추가할 수 있다. 즉, 지정된 IP에서만 접근이 가능하도록 설정할 수 있다.

-:ALL EXCEPT root test:192.168.152.2
-:ALL:LOCAL

- 두 번째 줄의 의미는 모든 사용자의 콘솔 접근을 허용하지 않는다는 뜻이므로 root로 로그인하기 위해서는 먼저 IP가 192.168.152.2인 호스트에서 test 계정으로 로그인하고 su를 이용하여 root로 전환하여 로그인하면 된다.

- access.conf 기능을 사용하려면 다음 내용을 /etc/pam.d/login과 sshd에 추가해야 한다.

account required /lib/security/pam_access.so




2.2 limits.conf

- limits.conf 파일을 이용하여 시스템 사용자들이 사용할 수 있는 자원을 제한하거나 제어할 수 있다. 모든 사용자들에 대해서 사용할 수 있는 서버 자원에 대한 제한을 설정하면 서비스 거부 공격(프로세스의 수, 메모리의 양 등에 대한)을 사전에 어느 정도 예방할 수 있다. 이러한 제한의 설정은 사용자가 로그인할 때 적용된다. 파일 내에 있는 기본 설정은 다음과 같다. (주석처리 되어있다.)


- domain은 제한을 할 대상이다. 사용자 이름이나 그룹 이름, 그리고 와일카드 문자를 사용할 수 있다.
- type은 강하게 제한할 것인지 아니면 어느 정도 여유를 줄 것인지를 결정한다.
- item은 제한을 할 항목이다. 항목은 다음과 같다.

core - core 파일의 사이즈(KB)
data - 최대 데이터 크기(KB)
fsize - 최대 파일 사이즈(KB)
memlock - 최대 locked-in-memory 주소 공간(KB)
nofile - 한번에 열 수 있는 최대 파일수
rss - 최대 resident set size (KB)
stack - 최대 스택 사이즈(KB)
cpu - 최대 CPU 점유 시간(MIN)
nproc - 최대 프로세스 개수
as - 주소 공간 제한
maxlogins - 동시 로그인 최대 수
priority - 사용자 프로세스가 실행되는 우선순위

- 일반적으로 사용자별 제한은 그룹의 제한에 우선한다. 그래서 만일 admin 그룹에 아무 제한을 두지 않고 이 그룹의 멤버 중 한 명에 대한 제한을 등록했다면 그 사용자는 제한을 받을 것이다.
그리고 모든 제한 설정은 login 단위로 설정된다. 즉, 세션이 유지되는 동안에만 제한을 받는 것이다.

- 그리고 /etc/pam.d/login 파일의 마지막에 다음과 같이 추가하면 된다.

session required /lib/security/pam_limits.so


2.3 time.conf

- time.conf 파일에 설정되는 값을 통해 시스템의 사용자 이름, 하루 중 특정시간, 일주일 중 특정 요일, 특정한 서비스 또는 접속 요청이 들어오는 터미널 등의 접근을 제한할 수 있다.

- 기본적인 형태는 다음과 같다.

services;ttys;users;times

a. services - 이 규칙이 적용될 서비스의 이름
b. ttys - 규칙을 적용할 터미널의 이름
c. user - 적용할 사용자 이름의 목록
다음의 규칙을 따르는 토큰의 나열인데 이들은 적절한 PAM_ 항목과 연결되게 된다.
* 적어도 하나 이상의 wildcard character '*'를 가진다.
* 부정을 나타내는 '!'를 선택적으로 앞에 쓸 수 있다.
* 논리적 AND인 '&'와 논리적 OR인 ''를 쓸 수 있다.
d. times - 언제 이 규칙을 적용할 것인지를 지정한다. 각 부분은 날짜/시간 범위이다. 날짜는 두 개의 글자의 조합으로 나타낸다. 예를 들어 'MoTuSa'는 월, 화, 토요일을 나타낸다. 반복되는 날은 효력을 상쇄시킴을 주의하라. 'MoTuMo'라고 쓴 경우 실제로는 화요일만 유효하게 처리된다. 'MoWk'라고 쓴 경우 월요일을 제외한 평일이라는 뜻이다. 다음의 두 글자 조합이 유효하게 처리된다.

Mo Tu We Th Fr Sa Su Wk Wd Al

마지막에서 두 번째는 주말을 뜻하고 마지막 항목은 한 주의 모든 날에 해당한다.

시간 범위는 24시간 표시로 나타낸 HHMM형식에다가 하이픈'-'표시로 시작범위와 끝 범위를 지정한다. 만약 끝 시간이 시작시간보다 작다면 다음날의 해당시간으로 해석된다. 'Mo1800-0300'이라고 쓰면 허용되는 시간은 월요일 저녁 6시부터 다음날 새벽 3시까지라는 뜻이다. 주어진 시간제한조건은 앞의 세 개의 필드의 조건이 만족되는 경우에만 적용된다.

- ex)

login ; tty* & !ttyp* ; !root !test ; !A10000-2400

- 위의 설정은 root와 test라는 계정을 제외한 모든 사용자에 대해서 언제나 콘솔의 로그인을 제한한다.

- time.conf에 대해 설명한 것처럼 다양한 설정을 조합해서 접근제어를 할 수도 있는데 예를 들어 관리자인 admin 계정은 모든 접근을 허용하지만 주말과 화요일에는 오전 8시부터 오후 6시까지 콘솔 접근이 불가능하도록 설정할 경우 아래와 같이 설정하면 된다.

login ; * ; !admin ; !Wd0000-2400 !Tu0800-1800

- 다음 예제는 waster라는 사용자를 제외한 나머지 사용자들은 근무시간대에는 게임 서비스가 제한된다.

games ; * ; !waster ; Wd0000-2400 Wk1800-0800

- 위 설정을 사용하기 위해서 /etc/pam.d/login과 sshd 등 제공하려는 서비스에 추가한다.

account required /lib/security/pam_time.so

1/11/2007

[Linux] General System Security(Linux Server Security)

1. permission



- 퍼미션은 허가를 나타낸다. 이 허가권에는 세 가지 형태가 있다. 소유자에 대한 퍼미션과 그룹에 대한 퍼미션, 그리고 그 외 사용자들에 대한 퍼미션이다.

- 퍼미션은 ls -l 명령 실행으로 확인할 수 있다.

# ls -l /etc
-rw------- 1 root root 1204 Jan 31 18:13 passwd
drwxr-xr-x 3 root root 1024 Feb 1 01:27 pcmcia
-rw-r--r-- 1 root root 842 Mar 12 2002 profile
drwxr-xr-x 2 root root 1024 Feb 1 2005 profile.d
lrwxrwxrwx 1 root root 7 Feb 1 01:26 rc -> rc.d/rc

- 가장 첫 번째 비트는 파일 타입을 나타낸다. 파일 타입은 다음과 같이 몇 가지가 있다.

- : file
d : directory
l : link file
c : character device
b : block device

- 그 다음 세 개의 비트는 소유자에 대한 퍼미션을 나타내고 그 다음 세 개의 비트는 그룹에 대한 퍼미션, 마지막 세 개의 비트는 그 외 사용자들에 대한 퍼미션을 나타낸다.

- r은 읽기 권한, w는 쓰기 권한, x는 실행 권한을 뜻하는데 이 퍼미션에 따라서 파일을 읽거나 쓰거나 수정하거나 혹은 디렉토리로 접근하거나 파일을 실행하거나 하게 된다.

- 퍼미션 뒤로는 파일의 소유자와 그룹이 표시가 된다.

# chmod g+w [filename] <~ 그룹에게 쓰기 권한 부여
# chmod o+r [filename] <~ 소유자와 그룹을 제외한 다른 모든 사용자에게 읽기 권한 부여
# chmod go-x [filename] <~ 그룹과 그 외 모든 사용자에게서 실행 권한을 없애는 설정
# chmod a+rw [filename] <~ 모든 사용자에게 읽고 쓸 수 있는 권한을 부여

- 퍼미션은 문자뿐만 아니라 숫자로도 나타낼 수 있다.

r : 4(2의2승)
w : 2(2의1승)
x : 1(2의0승)

- 문자로 퍼미션을 조정하였을 경우에는 특정 권한을 더하거나 뺄 때 사용하였지만 숫자로 나타내는 경우에는 특정 권한을 바로 부여할 수가 있다.

# chmod 644 [filename] <~ 소유자는 읽고 쓰기가 가능하며 그룹과 그 외 사용자들은 읽기만 가능
# chmod 755 [filename] <~ 소유자는 읽고 쓰고 실행이 가능하며 그룹과 그 외 사용자들은 읽고 쓰기만 가능
# chmod 600 [filename] <~ 오로지 소유자만이 읽고 쓰기가 가능
# chmod 640 [filename] <~ 소유자는 읽고 쓰기가 가능하며 그룹은 읽기만 가능하고 그 외 사용자들은 어떠한 권한도 없음

- 보통 others에 속하는 일반 사용자가 접근해서는 안 되는 파일의 퍼미션을 조정하여 보안설정을 할 수가 있다.

1.1 Special Permission - setuid, setgid, sticky bits

- 일반적인 퍼미션을 세 개의 숫자로 나타내었다면 특별한 퍼미션은 네 개의 숫자로 나타내어 진다.

- setuid는 파일이 실행될 때만 실행한 사용자에게 소유자의 권한을 부여하는 퍼미션을 말한다. setgid도 비슷한 의미를 가지고 있다. 단지 소유자이냐 그룹이냐의 차이점만 있을 뿐이다.

# ls -al /usr/bin/passwd
-r-s--x--x 1 root root 16336 Feb 14 2003 /usr/bin/passwd

- 숫자로 나타내자면 4511이다. 4는 s 비트를 의미하고 5는 r-x 를, 1은 --x를 의미한다.
위의 passwd라는 명령은 누구든지 실행이 가능하고 실행되는 동안에는 누구든지 root의 권한을 갖게 되는 것이다. 공격자들이 가장 많은 공격을 가하는 프로그램이 바로 이 setuid 비트가 설정된 프로그램이다.

setuid bit : 4(2의2승)
setgid bit : 2(2의1승)
sticky bit : 1(2의0승)

- sticky bit의 가장 대표적인 예는 /tmp 디렉토리이다. 이 디렉토리에서는 누구든지 파일을 생성하고 삭제하고 수정할 수 있지만 삭제하고 수정하는 권한은 소유자만이 가능하다. 물론 root는 누가 생성하였든지 삭제하고 수정할 수가 있다.

# ls -ld /tmp
drwxrwxrwt 3 root root 1024 Jan 31 20:09 tmp


2. umask



- umask는 파일이 생성될 때 부여되는 권한이기 때문에 아주 중요한 역할을 하게 된다. 파일을 생성하는 매번 퍼미션을 조정할 수 없기 때문에 최소 생성시 가장 일반적인 권한을 주기 위해서 umask를 사용한다.

- umask를 지정하는 명령은 다음과 같다.

# umask [number]
or
# umask [u|g|o]=[r|w|x]


3. 표준 보안 퍼미션



- 표준 보안 퍼미션 설정은 시스템 설치 후 필수적으로 적용해야 하는 사항 중 하나이다. 대부분의 파일들은 우리에게 익숙한 파일들이지만 퍼미션은 신경 쓰지 않은 채 지나치기 쉬운 파일들이다.

- 이렇게 퍼미션을 조정해야 하는 파일들은 크게 네 부분으로 나뉘는데 일반적인 설정 파일들이 있고 컴파일 도구들, 시스템 도구들, 네트워크 관련 도구들이 있다. 여기에는 보안상 일반사용자들에게 내부 텍스트 내용이 공개되어서는 안 되는 파일들도 있고 일반 사용자들이 실행하지 말아야 하는 파일들도 속해있다.






- 만약 특정 사용자들, 즉 특정 그룹에 대해서만 권한을 허용해주고자 할 수도 있다. 물론 관리자가 잘 판단하여 정책을 세워야 할 것이다.

[info] 컴퓨터 예방 및 대응조치(정보보안백문백답)

1. 해킹방지를 위한 최소한의 에방조치에는 어떤 것이 있나?

- 컴퓨터를 사용하게 되면 누구나 해킹에 대한 위협에 노출되어 있다. 이러한 위협에 대비하기 위해서는 다음과 같은 최소한의 수칙을 지키는 것이 좋다.

* 윈도우즈 사용자는 마이크로소프트사에서 제공하는 최신 보안패치를 모두 적용한다.

* 전자우편 확인시 발신인이 불분명하거나 수상한 첨부 파일이 있는 것은 모두 삭제한다.

* 메신저 프로그램 사용시 메시지에 URL이나 파일이 첨부되어 있을 경우 반드시 메시지 발송자를 확인한 뒤 실행한다.

* P2P 프로그램에서 파일을 내려받을 때에는 반드시 백신으로 검사한 후 사용한다.

* 웹사이트 방문시 '보안 경고' 창이 나타날 경우 신뢰할 수 있는 기관의 서명이 있는 경우에만 프로그램 설치에 동의하는 [예]를 누른다.

* 필요한 경우를 제외하고는 폴더를 공유하지 말고, 부득이하게 공유하더라도 사용이 완료되면 반드시 해제한다.

* 로그인 계정의 패스워드를 자주 변경하고 영문/숫자/특수문자 조합으로 최소 8가지 이상의 패스워드를 설정한다.

* 바이러스 백신은 항상 최신 버전의 엔진으로 업데이트하고 수시로 검사한다.

* 개인 방화벽 제품을 사용한다.

* 키보드 입력 내용이 유출되는 것을 예방하기 위해 키보드 입력 정보를 보호해 주는 안티키로거(Anti Keylogger) 제품을 사용한다.


2. 컴퓨터가 해킹당하면 어디서 도움을 받을 수 있나?

- 사용중인 컴퓨터가 해킹을 당한 경우에는 국가사이버안전센터나 인터넷침해사고대응센터, 국방정보전대응센터로 연락을 하시면 도움을 받을 수 있다.

a. 국가사이버안전센터
* 주요임무 : 국가기관 및 공공기관의 사이버 침해사고 업무 담당
* 홈페이지 : http://www.ncsc.go.kr
* 신고전화 : 02-3432-0462
* 신고전자우편 : info@ncsc.go.kr

b. 인터넷침해사고대응지원센터
* 주요임무 : 민간부분의 사이버 침해사고 업무 담당
* 홈페이지 : http://www.krcert.or.kr
* 신고전화 : 118(지방은 02-118)
* 신고전자우편 : cert@certcc.or.kr, cert@krcert.or.kr

c. 국방정보전대응센터
* 주요임무 : 국방부분의 사이버 침해사고 업무 담당
* 홈페이지 : http://www.dsc.mil.kr
* 신고전화 : 02-731-3631(군전화 이용시 0118)
* 신고전자우편 : 0118@dsc.mil.kr


3. 파일을 실행하려 한다. 어떤 파일들이 위험한 것인가?

- 의심되는 파일은 실행하지 않고 바로 삭제하는 것이 좋다. 또, 필요한 경우라면 최신 업데이트된 백신 프로그램, 스파이웨어 제거 도구 등으로 사전에 검사를 한 뒤 실행하여야 한다.

- 최근에는 악성코드들이 전자우편을 통해 전파되는 경우가 많아 실행 가능한 파일이 첨부되어 있는 경우에는 한번쯤 의심해 보아야 한다. 최근에 유행하고 있는 웜,바이러스와 트로이 목마는 다음과 같다.

a. Peep View 트로이 목마
* 전자우편을 통해 전파
* 윈도우즈 시스템 폴더(C:\winnt\system32, C:\windows\system32)에 explorer.exe(81,920 Byte) 또는 service.exe(45,056 Byte) 파일 생성

b. Agobot 웜
* MS LSASS 취약점(MS04-011)을 이용하여 공격
* 윈도우즈 시스템 폴더에 msiwin84.exe 파일 생성
-> LSASS(Local Security Authority System Service) : 클라이언트 서버 환경이나 로컬 환경에서 사용자를 인증하는데 사용되는 서비스로 이에 대한 보안 취약점을 이용하여 공격자가 조작된 패킷을 공격 대상 시스템에 전송하여 악의의 코드를 실행

c. Sasser 웜
* MS04-011의 취약점을 이용하여 공격
* 윈도우 디렉토리에 avserve.exe 파일, 숫자_up.exe 파일 생성
-> MS04-011 : 윈도우즈에서 발표하는 보안관련 게시판의 하나로서 MS04-011에 나와 있는 보안 관련 취약점으로 인하여 웜,바이러스에 감염된다는 것을 말한다. MS04-011은 아래 주소로 가면 확인 할 수 있다. http://www.microsfot.com/korea/technet/security/bulletin/MS04-011.asp

d. Mydoom 웜
* 전자우편과 카자(KaZaA) P2P 프로그램을 통해 전파
* ctfmon.dll, explorer.exe 파일 생성


4. 작성된 문서를 안전하게 관리하는 방법은 어떤 것이 있나?

- 윈도우즈 2000/XP는 NTFS 파일 시스템으로 포맷된 볼륨에 있는 파일을 암호화할 수 있다. 암호화 방법은 다음과 같다.

a. [시작] -> [프로그램] -> [보조프로그램] -> [Windows 탐색기]
b. 원하는 파일을 마우스 오른쪽 버튼으로 클릭한 후 [속성]을 선택.
c. [일반]탭에서 [고급] 선택
d. '압축 또는 암호화 특성'에서 '데이터 보호를 위해 내용을 암호화 (E)'란을 선택한 다음 [확인] 클릭
e. 파일과 그 파일이 들어 있는 폴더도 암호화하려면 '파일 및 상위 폴더를 암호화(P)'를 선택한 다음 [확인] 클릭

- 문서나 파일을 암호화하더라도 파일 삭제는 가능하다. 따라서 시스템의 파괴나 삭제에 대비해 안전하게 문서나 파일을 관리하기 위해서는 물리적으로 다른 저장 매체(플로피 디스켓, USB 메모리, CD, 하드디스크 등)를 이용하여 백업해 두는 것이 좋다.


5. 패스워드는 어떻게 설정하는 것이 좋은가?

- 패스워드는 ID와 함께 사용하여 컴퓨터 사용자가 본인인지 검증하기 위해 신원을 확인하는 방법으로서, 오직 본인과 컴퓨터만이 알고 있는 비밀번호이다. 패스워드는 컴퓨터 시스템 설정에 따라 다르긴 하지만, 대체로 4-16글자 사이에서 결정하는 경우가 많다. 패스워드를 작성할 때에는 다음과 같은 것들은 피하는 것이 좋다.

* 다른 사람들이 쉽게 추측할 수 있는 패스워드(ex: 주민등록번호, 생년월일, 이름, 'password' 등)

* 사전에서 찾을 수 있는 단어(사전에 있는 모든 단어들을 대조하면서 패스워드를 찾아주는 해킹도구도 있다.)

* 6자 미만의 짧은 패스워드

* 연속적으로 반복되는 숫자나 문자가 들어간 패스워드(ex: abcdef, 123456)

* '키보드 진행' 패스워드(ex: qwerty, asdfgh, zxcvbn)

* 하나의 패스워드로 공통 구성원이 사용하는 경우

- 좋은 패스워드를 만들기 위해서는 패스워드를 구성하는 요소들 사이의 우연성을 크게 해야 한다. 그러나 우연성이 클수록 외우기 어렵게 된다. 패스워드에 영어와 숫자를 섞는 것은 우연성을 증가시키기 위함이다. 다음은 좋은 패스워드의 예이다.

* 8자 이상으로, 문자, 숫자, 특수문자(*, !, # 등)가 포함된 패스워드

* 주기적인 패스워드 변경(90일 내지 120일)

* ex: IL2PLGitS! ( I Love to play golf in the Summer!)


6. 부팅 패스워드도 필요한가?

- 부팅 패스워드란 컴퓨터의 전원이 켜지면서 부팅될 때, 허가받은 사용자가 컴퓨터를 사용하려고 하는지 확인하는 패스워드이다. 부팅 패스워드 설정후 잘못된 패스워드를 입력하거나 패스워드를 전혀 입력하지 않으면 컴퓨터가 부팅이 되지 않아 사용할 수 없다. 다른 사람이 나의 허락을 받지 않고 컴퓨터를 사용하는 경우를 막기 위해 좋은 보안 대책이다. 부팅 패스워드를 설정하는 방법은 다음과 같다.

a. PC를 부팅한 후, Del키나 F2키를 눌러 Setup Bios 환경 진입(제조회사마다 접속키가 다를 수 있다.)
b. CMOS 환경이 나오면 화살표 키를 눌러 'PASSWORD SETTING'을 선택한 뒤 원하는 패스워드를 설정
c. 저장후 CMOS에서 빠져나옴

d. 컴퓨터가 재부팅되면 패스워드를 입력(이후부터는 컴퓨터가 부팅될 때마다 패스워드를 입력하여야 한다.)


7. 화면보호기는 꼭 사용해야 하나?

- 브라운관 모니터의 경우 동일 화면을 장시간에 걸쳐 계속 표시하면 그 영상이 모니터 유리면에 인쇄된 것과 같이 되면서 브라운관 모니터가 탈 수 있다. 화면 보호기는 일정 시간 동안 키보드나 마우스에서 입력이 없으면 모니터 화면에 여러 가지 움직이는 화면을 공급해서 이를 방지하기 위하여 고안된 것이다.

- 하지만 화면에 표시되는 내용이 유출되지 않도록 보호하기 위하여 사용하기도 한다. 화면보호기에는 암호설정 기능이 있어, 잠시 자리를 비우더라도 허가받지 않은 사용자가 자신의 컴퓨터를 무단으로 사용하거나 작업중이던 내용을 확인하지 못하게 하기 위한 좋은 방법이다. 화면보호기의 암호설정은 다음과 같은 순서로 진행한다.

a. [시작] -> [제어판] -> [디스플레이] 클릭, 또는 바탕화면에서 마우스 오른쪽 버튼을 누른 후 [속성] 클릭
b. [화면보호기] 메뉴에서 원하는 아이템을 선택하고, '암호 사용' 항목을 선택(이때의 암호는 부팅 패스워드가 아니라 윈도우즈 로그인시에 사용했던 패스워드이다. 만일 화면보호기 암호를 새로 설정하려면, [시작] -> [제어판] -> [사용자 계정] -> [암호만들기] -> [암호입력] -> [암호만들기]로 할 수 있다.)
c. '대기시간' 항목의 시간 값을 너무 길지 않게 설정하고, [확인] 클릭


8. 인터넷 초기화면이 이상한 곳으로 연결된다. 어떻게 해야 되나?

- 이런 경우의 대부분은 애드웨어나 악성코드가 인터넷 초기 화면을 특정 사이트 또는 포털 사이트나 포르노 사이트로 고정시켰기 때문이다. 한 통계에 의하면 2004년 동안 이러한 피해를 입은 네티즌이 80% 이상이라고 한다.

- 특히 성인사이트에 관계된 애드웨어가 설치되면 바탕화면에 해당 성인 사이트에 대한 단축아이콘이 생기고 일정한 주기로 성인 팝업광고가 자동으로 나타나며 인터넷 시작화면이 성인사이트로 고정되는 경우가 자주 발생한다.

- 이와 같은 피해를 줄이려면 스팸메일을 즉시 삭제하여야 하며 실수로 전자우편을 열었을 때도 프로그램 설치여부를 묻는 창이 나타나면 [아니오]를 눌러서 설치를 차단해야 한다. 또한, 와레즈 등 신뢰도가 높지 않은 사이트에서 제공하는 무료 소프트웨어는 사용계약 내용을 꼼꼼히 살펴보고 설치 여부를 신중하게 결정하여야 한다. 그리고 인터넷 브라우저의 보안수준을 보통 이상으로 설정하는 것이 좋다.

- 이미 설치된 애드웨어나 악성코드는 다음과 같은 프로그램을 사용하여 제거할 수 있다.
* 다잡아 애드스파이더(AD-Spider) : http://www.ad-spider.com/
* 닥터바이러스 : http://drvi.com/
* 애드프리(AD-FREE) : http://ietoy.co.kr/
* 노애드(No-AD) : http://www.no-ad.co.kr/


9. 네트워크 트래픽이 갑자기 증가한다. 어떻게 해야 되나?

- 네트워크 트래픽은 일상적으로 컴퓨터를 사용하는 중에도 증가할 수 있지만, 웜,바이러스 등의 이유로 갑자기 증가하는 경우도 있다. 예를 들어 전자우편으로 급속히 전파되는 웜,바이러스가 회사내의 많은 컴퓨터를 감염시켜, 감염된 컴퓨터들이 일제히 전자우편 발송을 시도한다면 메일발송포트(25번)의 트래픽이 갑작스럽게 증가하게 된다. 그 외에, 평상시에는 잘 사용되지 않던 포트로 트래픽이 증가하는 경우도 있다. 예를 들어, 악성 IRC봇은 IRC 포트(보통 6667번 포트)를 이용해 다른 시스템을 공격하기 위해 대량의 네트워크 트래픽을 발생시킬 수 있다.

- 패킷이 외부로 나가기 위해서는 라우터 등을 거쳐야 하는데 회사내의 많은 컴퓨터가 감염되어 동시에 공격 트래픽을 발생시킬 경우에는 네트워크 장비가 과부하로 다운되거나 전반적인 속도가 느려지게 된다.

- 웜,바이러스에 의한 경우는 최신 업데이트된 백신 프로그램을 사용하여 치료 하여야 한다. 그러나 치료가 되지 않거나 이상 패킷인 경우 국가사이버안전센터, 인터넷침해사고대응센터, 또는 국방정보전대응센터로 신고하면 된다. 이 때 의심스러운 증상에 대해 다음과 같은 몇 가지 정보를 수집한 후 신고하면 더욱 신속히 대응할 수 있다.

* 시스템 사양 및 운영체제(OS)
* 바이러스 백신이 설치되어 있는 경우 이벤트 기록
* 윈도우 부팅 과정에서 참조하는 파이(win.ini, system.ini) 내용
* 현재 실행중인 프로세스(실행중인 프로그램) 목록


10. ESM이란 무엇인가?

- ESM(통합보안관리시스템, Enterprise Security Management)은 조직차원의 일관된 정책에 따라 보안 관제 및 운영,관리 업무를 통합 수행하여 보안성과 보안관리의 효율성을 향상시키기 위한 것으로써, 주로 원격 보안관리를 지칭한다. ESM 시스템은 방화벽, IDS, VPN 및 각종 보안제품 뿐만 아니라 서버, 라우터 등의 네트워크 장비들을 연결하여 실시간으로 전자적 침해에 대해 관리하는 것이다.

- ESM을 도입한다고 해서 저절로 보안관리가 수행되지는 않는다. 보안 관리 업무는 일반 관리 업무와 달리, 보안에 대한 지식과 기술을 갖추어야 한다는 특성을 가지고 있다. 이를 위해서는 다음과 같은 기본적인 지식과 기술이 필요하다.

* 관리 대상이 되는 각종 보안제품에 대한 지식을 보유하여야 한다.

* 각종 서버 및 운영체제에 대한 사용 지식도 보유하여야 한다.

* 네트워크 구성 및 운영에 대한 지식보유는 필수적이다.

* 보안체계에 대한 각종 지식을 보유하고 있어야 한다.




11. 보안관제시스템이란 무엇인가?

- 보안관제시스템은 관제를 의뢰한 기관을 대신하여 고급 보안 전문 인력들이 보호 대상이 되는 네트워크의 보안 상태를 원격으로 감시 및 제어할 수 있도록 도와주는 시스템이다. 따라서 보안관제 시스템을 사용하면 관제를 위탁받은 기관에서는 전문 보안관리 인력을 효율적으로 활용할 수 있고 의뢰기관 측에서는 적은 비용과 노력으로 보안관리 서비스를 받을 수 있는 장점이 있다.

- ESM은 주로 각 보안시스템들을 통합하여 관리하며 탐지된 침해사고에 대해 보안시스템이 자율적으로 대응하는데 중점을 두고 있다. 반면, 관제시스템은 네트워크에 대한 전반적인 상태 감시 이외에도 취약성 진단, 사이버보안 위혐에 대한 정보 수집 및 전파, 보안 대책의 사전 수립을 통한 예방, 진행중인 공격에 대한 경보 발령과 대응, 피해시스템의 피해정보 수집과 복구 등 총체적인 보안 관리를 위한 시스템이라 할 수 있다. 즉 보안관제는 ESM보다 더 포괄적인 개념이다. 보안관제를 위해서 ESM 기술을 활용할 수도 있다.




12. 보안 권고문이란 무엇인가?

- 보안권고문은 국내외 침해사고대응팀(Computer Emergency Response Team: CERT), 운영체제 개발업체, 보안관련 메일링 리스트 등 다양한 출처로부터 수집된 보안관련 정보를 신속하게 전파하기 위하여 작성한 개략적인 형태의 문서이다. 보안권고문에는 운영체제나 소프트웨어의 취약점 등이 포함되어 있으며 정기적인 형태보다는 취약점이 발견된 후 만들어서 배포되는 것이 일반적이다.

- 보안권고문과 내용상으로는 다르지만 보안에 관련되어 작성되는 문서로는 사고노트와 기술문서도 있다. 먼저, 사고노트는 CERT에 접수되는 해킹사고를 처리하는 과정에서 그 피해가 심각하거나 광범위하게 발생되는 경우, 다른 기관이 유사한 피해를 당하지 않도록 알리기 위한 목적으로 사고 자체에 관하여 정리한 문서이다. 기술문서는 최신 공격기술과 이에 대한 보안대책을 CERT의 시험망에서 직접 시험분석한 후 기술적인 내용을 세부적으로 문서화한 것이다. 기술 문서는 해킹 공격에 대하여 보다 상세한 정보를 제공하는 것을 목적으로 하고 있다.

- 보안권고문은 국가사이버안전센터, 인터넷침해사고대응센터, 국방정보전대응센터, 운영체제 회사의 웹사이트 등을 통해 받을 수 있다. 또한 CERT 등의 메일링 리스트에 가입하면 보안권고문을 전자우편으로 수신 받을 수 있다. 최신 보안권고문을 신속히 받으려면 메일링 리스트를 이용하는 방법이 가장 효과적이다.


13. 보안 취약점 정보는 어디에서 찾을 수 있나?

- 보안 취약점에 대한 정보는 국가사이버안전센터 등에 인터넷으로 접속하여 참고할 수 있다. 또한 메일링 리스트 가입을 하면 각종 보안 정보를 신속히 받아볼 수 있다. 그 외에도 취약점 데이터베이스, 바이러스 데이터베이스를 통해서도 많은 정보를 얻을 수 있다. 참고로 취약점 데이터베이스는 지금까지 알려진 보안 취약점을 데이터베이스에 저장하여 언제든지 검색하여 찾아 볼 수 있게 만든 데이터베이스이다.

* 국가사이버안전센터(http://www.ncsc.go.kr/) : 보안 권고문, 취약점 정보, 웜/바이러스 정보, 침해사고사례, 보안 뉴스 제공

* 인터넷침해사고대응센터(http://www.krcert.or.kr/) : 웜/바이러스 정보, 보안 권고문, 기술문서, 사고노트 제공

* 국방정보전대응센터(http://www.dsc.mil.kr/) : 보안 권고문, 취약점 정보, 웜/바이러스 정보, 기술문서 제공

* 보호나라(http://www.boho.or.kr/) : 한국정보보호진흥원에서 제공. 정보보호뉴스, 교육자료, 국내외 정보보호 전시회 및 세미나 자료, 논문, 바이러스 DB, 웜/바이러스 정보, 보안 권고문, 기술문서 제공


14. 침해사고대응팀은 무엇이며, 어떠한 일을 하는가?

- 침해사고대응팀(CERT)은 사이버 안전사고를 예방,복구하기 위한 팀으로, 조직내 전산망에 대한 사이버 안전사고 대응활동을 주관하고 지원한다. 최초의 침해사고대응팀은 1988년 11월에 발생한 '모리스 웜' 사건을 처리하기 위해 미국 국방부 고등연구계획국(DARPA)에 구성되었다. 그 후, 카네기 멜론 대학교에 설치되어 사이버 침해사고 대응 및 관련 정보 교환을 위한 단일 접촉점 역할을 하게 되었다.

- 우리나라는 국가,공공분야의 경우 1998년부터 국가정보원이 국가,공공기관의 사이버공격 예방,대응 임무를 수행해 왔으며 사이버 침해 사고에 대한 국가차원의 종합적,체계적 대응을 위해 2004년 2월 '국가 사이버안전 센터'를 설치하여 사이버 침해사고 대응활동을 총괄하고 있다.

- 국방분야는 국군기무사령부가 국방 사이버침해사고 예방 및 복구 등의 기술지원 업무를 수행하고 있으며, 2003년 11월 국군기무사령부내에 '국방정보전대응센터'를 설립하여 군 정보전과 사이버전에 대비하여 군의 주요 정보체계에 대한 보호지원 임무를 수행하고 있다.

- 민간분야는 정보통신부가 인터넷침해사고 예방,대응 업무를 수행하기 위하여 2003년 12월 정통부 산하 한국정보보호진흥원(KISA)내에 '인터넷침해사고대응지원센터'를 설치,운용하고 있다.

- 이외에도 1996년 결성된 민간 CERT 연합체 CONCERT(CONsortium of CERTs)는 민간 CERT간의 침해사고 정보,기술 교환, 국제적인 침해사고의 공동 대응 및 관련 기술 교육을 수행하고 있다.

- 또한 1990년에 창립된 민간차원의 국제 침해사고대응팀 협의체인 FIRST(Forum of Incident Response and Security Teams)는 정보보안 기술,정책 연구, 사이버 침해사고 정보교환 및 대응책 마련, 침해사고 대응,예방 활동을 하고 있다. 우리나라는 한국정보보호진흥원과 (주)인포섹이 회원 기관으로 가입하였다.


15. 침해사고 처리절차는 어떻게 되어 있나?

- 침해사고 처리절차는 침해사고처리대응팀에 따라 약간씩 다를 수 있다. 아래는 국가사이버안전센터(http://www.ncsc.go.kr/)의 침해사고 처리절차에 대해 설명한 것이다.

a. 홈페이지, 전화, 전자우편 등으로 신고 접수
b. 긴급대응 단계(사고분석 수행, 임시대책 제시, 피해확산 방지)
c. 재발방지 단계(사고경로 자료 수집 및 분석, 사고원인 제거)
d. 시스템 복구 단계(피해 시스템 복구, 피해 전파된 시스템 검색, 백도어 제거)
e. 분석,보고 단계 및 재침입 감시 단계(피해 전파된 시스템 복구, 사고경위 및 처리 담당자에게 보고, 재발 방지를 위한 교육, 사고처리 보고서 작성)


[출처 : 국가보안기술연구소 http://www.nsri.re.kr/ ]

1/10/2007

[info] 전자우편 보안(정보보안백문백답)

1. 전자우편의 수신차단은 어떻게 하나?

- 전자우편의 수신을 차단하는 방법은 전자우편 주소를 이용하는 방법과 특정 단어를 이용하여 차단하는 방법이 있다. 먼저, 특정 전자우편 주소를 차단하기 위해서는 다음과 같이 한다.(아웃룩 익스프레스 기준)

a. 수신을 차단할 전자우편 선택
b. [메시지] 메뉴 -> [보낸 사람을 기준으로 차단....] 선택

- 다음으로, 특정 단어를 이용하여 차단하기 위해서는 다음과 같이 한다.(아웃룩 익스프레스 기준)

a. 수신 차단할 전자우편 선택
b. [메시지] 메뉴 -> [메시지에서 규칙 만들기] 선택
c. 새 메일 규칙 창에서 규칙을 적용(예)
c1. 규칙의 조건 선택 : 메시지 본문에 특정 단어 포함 선택
c2. 규칙의 동작 선택 : 삭제 선택
c3. 규칙 설명 : 파란색 부분을 선택하여 특정 단어 완성('성인광고')
c4. 규칙 이름 : 생성된 규칙을 위한 이름 부여(성인광고 차단 #1)


2. 스팸메일을 받지 않으려면 어떻게 해야 하나?

* 인터넷 사용시 게시판 등에 전자우편 주소를 남겨야 할 때는 반드시 필요한지 확인하여 전자우편 추출 프로그램에 의해 추출되지 않도록 하여야 한다.

* 회원가입시에는 광고성 전자우편의 수신 여부를 선택할 수 있으므로, 수신을 원하지 않을 때에는 '원하지 않음'을 선택한다.

* 자신이 사용하는 전자우편 프로그램의 수신차단 기능을 활용한다.

* 받고 싶지 않은 전자우편에 대해서는 발송자에게 수신거부의사를 전달해야 한다.
a. '회신'이나 '답장'기능을 활용하여 발송자 주소로 수신거부 전자우편을 전송한다.
b. 전자우편에 수신거부 메뉴가 있다면 그것을 선택하여 수신거부 한다.
c. 수신거부의사를 전달한 전자우편 주소가 기재되어 있는 경우 그 주소로 수신거부 전자우편을 전송한다.

* 스팸메일 발송자에게 수신거부 전자우편을 보낼 경우 발송자가 수신거부 전자우편을 받았는지 확인한다.
a. 아웃룩 익스프레스의 경우에는 [도구] -> [옵션] -> [확인메일]을 선택하고, 웹 메일의 경우에는 보통 [환경설정]이나 [옵션]에서 [수신확인]을 선택한다.

* 수신거부의사를 전달한 이후에도 동일한 곳에서 스팸메일을 보낸다면 관계기관에 신고할 수 있다.
a. 스팸메일신고센터 : http://www.spamcop.or.kr

* 상습적으로 스팸메일을 발송하는 전자우편 주소를 자신이 사용 중인 웹 메일 서비스 업체나 서버 관리자에게 신고한다.


3. 전자우편 프로그램에서 보안 설정은 어떻게 해야 하나?

- 전자우편 프로그램의 보안 수준을 적절히 설정한다면 이용상의 불편을 줄이면서 동시에 안전하게 전자우편 서비스를 이용할 수 있다. 보안 설정은 다음과 같은 방법으로 한다.(아웃룩 익스프레스 기준)
a. [도구] -> [옵션] -> [보안]
b. '바이러스 가능성이 있는 첨부 파일을 저장하거나 열 수 없음'을 선택

- 위와 같이 설정을 하면 이후부터는 첨부파일이 있는 전자우편을 받게 되면 첨부파일을 열 수 없게 된다. 안전한 것으로 확신할 수 있는 첨부 파일을 열기 위해서는 위 선택을 해지한다.


4. 전자우편을 열어보기만 해도 바이러스에 감염될 수 있나?

- 전자우편을 열어보기만 해도 감염되는 컴퓨터 바이러스가 있다. 예를 들어, '윈에바' 웜 바이러스 같은 경우에는 아웃룩이나 아웃룩 익스프레스에서 '미리 보기 창'에서 보는 것만으로 실행된다. '미리 보기 창'은 기본으로 설정되기 때문에 별도로 해제하지 않으면 전자우편의 첨부파일을 클릭하지 않아도 바이러스에 감염될 수 있다.

- '미리 보기 창'을 해제하기 위한 방법은 다음과 같다.(아웃룩 익스프레스 기준)
a. [보기] 메뉴 -> [레이아웃..]선택
b. [미리 보기 창 표시] 해제


5. 마이크로소프트사에서 보내는 전자우편이 스팸인지 알 수 있나?

- 마이크로소프트사는 보안 관련 게시물을 게재할 때, 전자우편 구독 서비스를 신청한 사람에게도 전자우편을 보낸다. 그러나 악의적인 공격자들도 마이크로소프트사에서 보낸 것처럼 위장한 가짜 보안공지를 보내는 것으로 알려져 있다. 이러한 메시지는 주로 수신자를 악의적인 웹사이트로 유도하여 악성코드를 내려받게 하거나, 바이러스가 포함된 첨부 파일을 포함하고 있다.

- 다행히도 위장 전자우편을 알아내는 방법이 있다. 보안 관련 메시지가 다음과 같은 경우 마이크로소프트사에서 보낸 것으로 믿을 수 있다.

* 메시지에 첨부 파일이 없다. 마이크로소프트사의 보안공지 전자우편은 소프트웨어 업데이트를 첨부 파일로 제공하지 않는다. 그 대신, 웹 사이트 상의 공지사항을 참조할 수 있도록 링크를 제공한다. 대부분의 MS사 소프트웨어 업데이트는 Microsoft Windows Update, Microsoft Office Update 또는 Microsoft 다운로드 센터를 통해 제공된다.

* 메시지에 디지털 서명이 있다. Microsoft Security Response Center는 보안공지 전자우편을 보낼 때 항상 서명을 첨부한다. Microsoft TechNet에 게시된 키를 사용하여 서명을 확인할 수 있다.

* 해당 보안공지가 Microsoft.com에 올라가 있다. MS사는 관련 정보를 웹 사이트에 올리기 전에 보안 업데이트 공지를 보내지 않는다. Microsoft 보안공지 전자우편을 신뢰할 수 없는 경우, 보안관련 사이트에 해당 공지사항을 확인하라.

** http://www.microsoft.com/korea/security/incident/authenticate_mail.asp


6. 바이러스 전자우편을 가려내는 방법이 있나?

- 바이러스 전자우편은 수신자가 열어 보도록 고도의 심리전을 펼친다. 친근한 말투와 문장으로써 수신자가 요청했던 자료인 것처럼 속인다던가, 사행성을 조장하는 문구로 첨부파일을 클릭하도록 유도하는 것이 대부분이다.

- 하지만 아직까지는 웜,바이러스의 제작자가 외국인인 경우가 대부분이며 이러한 전자우편들은 제목과 내용이 영어로 되어 있다. 우리나라 사람들의 경우 영어나 외국어로 되어있는 전자우편에 잘 현혹되지 않다보니 외국에 비해 감염률이 적은 편이다.

- 바이러스 전자우편의 제목은 주로 'hi', 'hello', 'Your details', 'Thank you!', 'remember me?'와 같이 쉽고 친근한 제목이다. 또한 발신인도 support@microsoft.com과 같은 신뢰할 만한 발신인 혹은 친근한 사람의 주소일 수 있다. 외국에 특별히 아는 사람이 없는 한국인이라면, 외국어로 되어 있는 전자우편에 pif, scr, exe 같은 형식의 실행 가능한 파일이 첨부되어 있는 경우, 과감하게 삭제하는 것이 좋다.


7. 전자우편에서 사용하는 PGP란 무엇인가?

- PGP(Pretty Good Privacy)는 필 짐머만에 의해 개발된 도구로써 처음에는 전자우편의 Body 부분에 기록되어 있는 내용을 암호화하기 위한 도구로 개발되었다가 현재는 매우 광범위한 용도로 사용할 수 있는 암호도구이다.

- 대칭키 암호시스템, 공개키 암호시스템, 해쉬함수가 조합되어 전자우편에 기밀성, 송신자 인증, 무결성, 송신 부인봉쇄 등의 기능을 제공한다. 현재는 Outlook Express와 같은 전자우편 클라이언트 프로그램에 plug-in하여 사용할 수 있다.

- 공개키 암호시스템이 인증서 관리의 어려움 때문에 활성화가 어려운 시점에 PGP는 'Web of Trust'라는 개념을 이용하여 공개키 인증을 훨씬 쉬우면서도 안전하게 구현하였다. 숨기고자 하는 내용 자체는 IDEA(International Data Encryption Algorithm)와 같은 대칭키 암호시스템을 이용하여 암호화 하고, 이에 사용된 대칭키도 암호화하여 전자우편의 암호문에 첨부하여 함께 전송하는 방식이다. 그리고 암호문이 만들어진 원문은 하드디스크에서 삭제하게 되는데, 안전성을 확보하기 위하여 원문이 있던 공간에 랜덤값을 덮어 쓰고난 후에 삭제하기 때문에 누군가가 원본이 있던 위치를 알아냈다 하더라도 본래에 있었던 내용을 알아 내는 것은 불가능하다.


** IDEA : 스위스 ETH사가 개발한 128비트 키를 가진 블록 암호 알고리즘으로 미국의 데이터 암호화 표준(DES)과 유사한 암호 방식으로 유럽에서 많이 사용되고 있다.

[출처 : 국가보안기술연구소 http://www.nsri.re.kr/ ]

[info] 컴퓨터 바이러스와 백신 (정보보안백문백답)

1. 컴퓨터 바이러스에 감염되면 어떤 증상이 나타나는가?

- 컴퓨터 바이러스에 감염되면 우선 시스템(또는 프로그램)의 실행 속도가 현저하게 느려진다. 이유 없이 시스템의 속도가 느려진다는 것은, 사용자가 지시하지 않은 다른 동작들이 컴퓨터에서 수행되고 있다는 것을 의미한다. 컴퓨터 바이러스는 정상적인 파일이 실행될 때 함께 실행되는 경우가 많기 때문에 속도가 느려지게 되는 것이다.

- 두번째로는 특정 응용 프로그램 실행시 에러가 발생한다. 컴퓨터 바이러스에 감염되면 감염된 프로그램이 정상적으로 실행되지 못하는 경우가 있다. 또한 감염되지 않은 응용 프로그램이라도 감염된 다른 응용 프로그램에 의해서 에러가 발생하는 경우도 있다.

- 세번째로는 디스크(또는 메모리)의 용량이 이유 없이 계속 줄어든다. 컴퓨터 바이러스가 감염될 때, 또는 바이러스 코드의 자체 오류(버그)로 인해 스왑 파일이나 임시 파일들의 용량이 비정상적으로 커지는 현상이 발생한다.

- 네번째로는 시스템이 이유 없이 자주 다운된다. 시스템 이상이나 운영체제의 이상일 경우도 있으나 바이러스의 감염에 따른 오류일 가능성도 있다. 시스템이 자주 다운된다면 일단 바이러스 감염을 의심해보아야 한다.

- 이외에 다음과 같은 증상이 나타나면 바이러스의 감염을 의심해 보아야 한다.

* 이유 없이 컴퓨터가 재부팅 된다.

* 이상한 에러 메시지나 그림이 나타나거나 소리가 난다.

* 파일이 사라지거나 생긴다.

* 파일의 작성 일자가 임의로 변경된다.


** 스왑파일 : 컴퓨터의 실제 메모리인 램의 용량을 가상으로 확장하기 위하여 사용하는 하드 디스크의 공간이다. 이를 통해 컴퓨터는 실제보다 더 많은 크기의 램을 가지고 있는 것처럼 동작할 수 있다.


2. 바이러스 감염을 예방하려면 어떻게 해야 좋을까?

- 우선, 정품 소프트웨어 사용을 생활화해야 한다. 불법적으로 복사한 소프트웨어는 많은 사람의 손을 거치기 때문에 자연히 바이러스에 쉽게 노출되며, 감염되어 피해를 당했을 경우에도 책임 소재를 가릴 수 없기 때문이다.

- 둘째, 출처가 불분명한 전자우편은 열어보지 말아야 한다.

- 셋째, 인터넷에서 프로그램을 내려받을 때는 신뢰할 수 있는 유명 사이트에서 받아야 한다. 이런 곳은 관리자가 불법 복사물인지, 바이러스에 감염된 파일인지 등을 확인한 뒤 등록하기 때문에 위험 확률이 적다. 가장 안전한 방법은 프로그램 제작사 사이트에서 직접 내려받는 것이다. 그러나 믿을 수 있는 인터넷 사이트에서도 프로그램이 바이러스에 감염된 채 등록되는 일이 간혹 발생할 수 있으므로 프로그램을 내려받은 뒤에는 백신으로 확인해 보는 것이 안전하다.

- 넷째, 아웃룩 등의 보안 허점을 이용해 전자우편에 첨부된 파일이 자동으로 실행되는 경우가 있으므로, 응용 프로그램에 대한 최신 보안패치를 항상 적용한다. 윈도우즈나 웹 브라우저, MS 오피스 프로그램 등 많은 사람들이 사용하는 프로그램들의 보안 허점을 악용하는 악성 프로그램이 늘어나고 있다. 따라서, 정기적으로 관련제품 제작사의 홈페이지를 방문하여 최신 보안패치를 적용하는 것이 안전하다.

- 다섯째, 가급적 드라이브 전체를 공유해서 사용하지 않도록 해야 한다. 부득이하게 공유를 해야 할 경우에는 필요한 폴더만 '읽기' 권한으로 공유하며, 쓰기 권한으로 공유해야 할 경우에는 반드시 암호를 설정해야 한다. 그리고 공유한 목적이 달성된 후에는 반드시 공유를 해제한다.

- 마지막으로, 비상시 데이터 손실을 최소화하기 위해 데이터를 정기적으로 백업해놓고 복구 디스켓을 준비해 놓는 것이 좋다.


3. 바이러스에 감염되면 어떻게 조치를 해야 되나?

- 우선, 내 컴퓨터가 바이러스에 감염되면 다른 컴퓨터로 전파되지 않도록 하기 위하여 네트워크를 차단해야 한다. 컴퓨터에 연결된 인터넷 선을 분리하면 된다.

- 둘째, 인터넷에 연결된 다른 컴퓨터를 이용하여, 백신 업데이트를 다운로드 받는다. 단, 백신이 설치되어 있지 않다면, 백신회사들이 홈페이지를 통해 판매하는 백신 프로그램을 구매할 수도 있다. 또한 긴급한 치료를 위해서는 임시로 데모버전을 내려받아 설치한다. 하지만 데모버전은 사용 기간이 제한적이므로 차후에 정품을 구매하여 사용하는 것이 좋다.

- 셋째, 백신의 업데이트 파일을 이용해 감염된 컴퓨터의 백신을 업데이트 한 후, 파일시스템 전체를 검색하여 발견된 바이러스를 치료한다.

- 마지막으로, 이렇게 하여도 시스템이 정상적으로 되돌아오지 않는 경우에는, 국가사이버안전센터(02-557-0716), 인터넷침해사고대응지원센터(02-118), 국방정보전대응센터(02-731-3631)또는 해당 백신업체의 고객지원센터에 전화하여 상담하면 된다.


4. 인터넷에 연결되지 않아도 바이러스에 감염될 수 있나?

- 컴퓨터 바이러스의 감염 경로는 다양하고 복잡하다. 먼저, 플로피 디스켓 복사로 인한 감염이 있다. 플로피 디스크는 용량의 한계 때문에 많은 자료를 담을 수는 없지만 바이러스의 크기가 크지 않다는 것을 생각하면 바이러스를 옮기기에도 좋다는 것을 알 수 있다. 또한 디스켓은 읽는 속도가 느리기 때문에 귀찮아서 바이러스 검색을 잘 안하게 되는 경우가 많다.

- 다음으로는 컴퓨터를 여러 사람이 공유할 때이다. 한 대의 컴퓨터를 여러 사람이 사용하는 학교, 학원, 회사 등에서 다른 사람이 사용한 컴퓨터를 사용할 때에도 바이러스에 대한 노출 위험은 크다. 앞서 컴퓨터를 사용한 사람이 고의 또는 실수로 감염된 프로그램을 사용한 경우는 기억 장소에 컴퓨터 바이러스가 존재하는 것이다. 다음 사람이 이러한 컴퓨터를 그대로 사용한다면 즉시 컴퓨터 바이러스에 감염되는 것은 당연한 결과이다.

- 또한, 월간지, 단행본의 부록 CD-ROM 등을 통한 감염도 있다. 드문 경우이지만 정식으로 구입한 상업용 소프트웨어를 통해서도 바이러스에 가끔 감염되곤 한다. 상업용 소프트웨어가 아니더라도 컴퓨터 잡지 등에서 부록으로 끼워주는 CD-ROM 등에서도 컴퓨터 바이러스가 발견된 경우가 있었다. 따라서 잡지에서 주는 부록 소프트웨어나 상업용 소프트웨어라 할지라도 자신의 컴퓨터에서 처음으로 실행하는 소프트웨어일 경우에는 최신버전의 백신 프로그램으로 검사해보는 것이 바람직하다.


5. 매크로 언어를 지원하는 문서가 바이러스에 감염될 수 있나?

- 매크로 바이러스는 마이크로소프트사에서 제작한 워드나 엑셀에서 사용하는 매크로 기능을 이용한 바이러스이다. 따라서 매크로 기능이 있는 오피스 제품에는 매크로 바이러스가 치명적이다. 매크로 바이러스를 사전에 차단하는 방법은 다음과 같다. (MS 워드 2003기준)

a. [도구]->[매크로]->[보안] 선택
b. 보안 대화 상자에서 '높음'을 선택한 후 '확인' 버튼 클릭

** 매크로언어 : 작업의 자동화를 위해 사용할 수 있는 동작 또는 동작들의 모음이다. 서식파일이나 추가기능을 매크로를 사용하여 정의하면 편리한 문서작업이 가능하다. 그러나 비주얼 베이직 스크립트와 같은 프로그래밍이 가능하여, 이를 활용하여 악의적인 동작을 수행시킬 수 있다.


6. 메신저를 통해서도 바이러스나 웜의 전파가 가능한가?

- 특정 메신저를 통해서 바이러스 또는 웜에 감염되는 경우가 있다. 일반적인 메신저 프로그램은 쪽지 보내기 기능뿐만 아니라 파일 전송 기능도 대부분 가지고 있다.

- 이러한 메신저를 통해서 감염되는 바이러스나 웜의 경우, 감염된 컴퓨터의 메신저에 등록된 리스트의 사용자들에게 사용자 몰래 자동으로 자신의 바이러스나 웜을 보낸다. 잘 이야기하지도 않고 메시지를 보내도 무시하던 매정한 친구가 파일을 보낸다면, 일단 바이러스나 웜 파일로 의심해 볼 수 있다.

- 바이러스나 웜이 메신저를 통해 유포될 때에는 보내는 쪽의 메신저 창을 숨긴채 전달되므로, 보내는 사람은 자신이 감염되었는지 또는 파일을 보내는지 알 수 없다. 메신저 프로그램을 통해 파일을 교환할 때 상대방이 아무런 언급도 없이 파일을 보내는 경우에는 일단 의심해 볼 필요가 있으며 반드시 보내는 사람에게 진위를 확인해야 한다. 상대가 응답이 없거나 파일을 준적이 없다고 하면 파일을 받지 말아야 한다.

- 또한 이러한 일이 발생하였다면 상대방에게 바이러스 검사를 해보라고 권하여야 한다. 파일을 보낸 사람이 바로 감염자이기 때문이다.

- 메신저 프로그램을 통해 감염되는 대표적인 웜,바이러스에는 다음과 같은 것이 있다.

* Win32/Sinmsn.worm
* Win32/Smibag.worm
* Win32/BR2002.worm
* Win32/newpic.worm


7. 백신 프로그램을 설치하면 모든 바이러스가 예방되나?

- 백신 프로그램을 설치한 후에는 항상 최신 버전으로 업데이트해야 한다. 백신은 바이러스가 나온 후 분석 과정을 거쳐 업데이트가 되기 때문에 최신 버전이 아니면 신종 바이러스에는 무용지물이다. 매주 혹은 긴급 업데이트 되는 백신 업체의 정보를 눈여겨보고 항상 대비하는 것이 필요하다.

- 요즘에는 거의 모든 백신들이 자동 업데이트 기능을 가지고 있어서 이 기능을 이용하면 번거롭지 않게 업데이트를 할 수 있다. 대표적인 백신중에서 V3Pro 2004의 자동 업데이트를 설정하는 방법을 예로 들면 다음과 같다.

a. [파일]->[스마트 업데이트] 선택
b. [환경설정] 선택
c. 자동 업데이트 사용에 체크하고 수행 주기는 각자 적절히 설정한다.


8. 무료 백신 프로그램은 어디에서 구할 수 있나?

- 대부분의 백신 프로그램은 유료이지만 무료 백신 프로그램도 있다. 대표적인 것으로는 터보백신, 바이러스 체이서 한정판, 유니큐어 평가판 등이 있다. 이외에도 최근에는 상용 백신 프로그램에 대해 사용가능 날짜로 제한한 평가판이 제공되고 있다.

* 터보 백신 Ai (http://www.everyzone.com)

* 바이러스 체이서 30일 한정판 (http://www.viruschaser.com)

* 유니큐어 평가판 (http://www.geot.co.kr)


9. 최근 바이러스 정보는 어떻게 알 수 있나?

- 바이러스에 대한 최신 정보는 많이 알고 있으면 있을수록 자신에게 도움이 된다. 최신 긴급 바이러스 및 신종 바이러스 등의 정보는 백신 전문업체들의 홈페이지나 바이러스 연구소 등을 방문하면 알 수 있다.

- 이들은 주로 홈페이지의 메인화면에서 긴급 바이러스와 신종 바이러스 정보를 제공해 주고 있다. 현재 국내에 컴퓨터 바이러스 백신을 제공하고 있는 전문 업체들의 목록은 다음과 같다.

* 안철수연구소(V3) : http://www.ahnlab.co.kr

* 하우리(ViRobot) : http://www.hauri.co.kr/

* 시만텍코리아(Norton Anti-Virus) : http://www.symantec.co.kr/

* 맥아피(VirusScan) : http://www.mcafee.com/korea

* 트렌드마이크로(PC-Cillin) : http://www.trendmicro.com/kr/home/enterprise.htm

* 크라이스아이앤씨, Kaspersky Lab(Kaspersky) : http://www.kreissoft.co.kr/ http://www.kaspersky.com

* (주)에브리존 (Turbo Vaccine) : http://www.everyzone.com

* (주)지오트 : http://www.geot.com/

* (주)뉴테크웨이브(Virus Chaser) : http://www.viruschaser.com/Kor/index.jsp

[출처 : 국가보안기술연구소 http://www.nsri.re.kr/ ]

1/09/2007

[info] 사이버위협 (정보보안백문백답)

1. 해커란 어떤 사람을 가리키나?

- 본래 해커(Hacker)는 어떤 분야든지 그 분야에 심취하여 즐기면서도 사회나 세계에 도움이 되는 사람을 뜻하는 용어로, 60년대 미국 MIT의 작은 클럽에 속한 대학생들이 사용하기 시작하였다. 이들은 컴퓨터를 광적으로 좋아하여 밤낮으로 컴퓨터에 매달려 새로운 프로그램을 제작하고 토론하며 창조와 정의를 주장하였다. 또한, 전화를 공짜로 사용하는 방법을 전파시켰으며 스스로 그러한 장비를 제작하여 판매하기도 하였다.

- 시간이 지나고 세상이 변하면서 진정한 해커들의 숫자는 점차 줄어들었고, 초기의 '정보의 공유' 정신은 '정보 엿보기'로 변질되었다. 이들은 일반적으로 시스템 관리자의 권한을 불법적으로 획득하고 이를 악용해 다른 사용자에게 피해를 주고 있어 요즘은 '정보 파괴자'로까지 불리고 있다. 하지만 컴퓨터에 대한 심도 있는 지식과 경험을 바탕으로 악의적인 해커의 불법적 행위를 방지하는데 주력하는 해커를 화이트해커(White Hacker)라고 부르기도 한다.

- 흔히 TV나 신문에서 말하는 해커는 사실 크래커(Cracker)를 의미하는 것으로, 자신만의 이익이나 기분에 따라 사회나 세상에 해악을 주는 자를 말한다. 이들 중 대부분이 스크립트 키드(Script Kid)로 컴퓨터의 동작 원리와 내부 등에 대해서는 상세하게 이해하지 못한 채 인터넷 등에서 얻은 프로그램을 사용하여 몇 개의 버튼이나 명령어로 불법적인 행동을 하는 자들을 뜻한다.


2. 최근 유행하고 있는 해킹 기법 중 피싱이란 무엇인가?

- 피싱(Phishing)은 개인정보(Private data)와 낚시(Fishing)의 합성어로 유명 은행이나 전자거래업체 등의 홈페이지와 동일하게 보이는 위장 홈페이지를 만든 후, 인터넷 이용자들에게 전자우편을 보내 위장 홈페이지에 접속하여 계좌번호, 주민등록번호 등의 개인정보를 입력하도록 유인하는 신종 사기 수법을 말한다. 현재까지는 주로 외국에서 유행하는 신종 스팸으로 알려져 있다.

- 피싱의 유형은 크게 두 가지이다. 먼저, 유명 은행이나 카드사 등을 사칭(업체 마크, 로고 등이 정교하게 표현되어 있어도 위장 사이트일 수 있음)하여 계좌번호, 카드번호, 비밀번호 등의 확인 또는 갱신을 유도하는 유형이 있다. 두 번째로는 포털사이트나 쇼핑몰 등을 사칭하여 이벤트 당첨, 사은품 제공 등을 미끼로 수신자의 주민등록번호, 핸드폰번호 등의 개인정보를 입력하도록 유도하는 유형도 있다.

- 위장 홈페이지에 입력된 정보는 사기꾼의 손에 넘어가 각종 금융사기에 이용될 수 있다. 최근 미국 등 해외에서는 신용카드사나 은행이 전자 우편을 보낸 것처럼 위장해 개인의 금융정보(계좌번호, 카드번호, 비밀번호, 주민등록번호 등)를 요구, 금전적인 피해를 보는 사례가 잇따르고 있어 심각한 사회문제가 되고 있다.

- 이렇게 피싱이 영어권 국가들을 중심으로 급속하게 확산되고 있는 반면, 아직까지 한국에서의 큰 피해는 보고되지 않은 상태이다. 그 이유의 대부분은 피싱 전자우편이 영문으로 되어 있어 국내 사용자들이 무시하고 지나치기 때문인 것으로 풀이된다. 하지만 한국의 서버들이 피싱 범죄에 악용되는 사례가 적지 않은 것으로 알려져 있고, 조만간 한국어로 작성된 피싱 전자우편이 나타날 우려가 있어 사용자의 주의와 대책 마련이 필요한 것으로 지적되고 있다.


3. 악성코드는 무엇이며, 어떤 것들이 있나?

- 악성코드(Malicious Code, Malware)는 사용자의 의사와는 관계없이 시스템을 파괴하거나 정보를 유출하는 등 악의적 활동을 수행하도록 의도된 소프트웨어를 말한다. 현재는 웜(Worm), 바이러스(Virus), 트로이 목마(Trojan Horse), 백도어(Backdoor), 스파이웨어(Sypware), 애드웨어(Adware) 등을 통칭하는 개념으로 사용되고 있다. 이 중에서 대표적인 악성코드인 웜, 바이러스와 트로이목마에 대해서 설명하겠다.

- 먼저, 컴퓨터 바이러스는 자기복제 능력과 함께 사용자 몰래 다른 프로그램에 자신 또는 자신의 변형을 감염시켜 기생하는 능력을 가지고 있다. 바이러스에 감염되면, 해당 프로그램이 실행될 때마다 하드 디스크의 포맷, 파일 삭제 등의 악영향이 계속 수행된다.

- 웜은 컴퓨터 바이러스와는 달리 네트워크를 통하여 자기 자신을 복제하여 전파하면서 속도저하 등의 악영향을 미치는 프로그램이다. 웜은 일반적으로 강력한 전파 능력을 가지고 있지만 컴퓨터 바이러스처럼 다른 프로그램을 감염시키거나 기생하지 않는 특성을 가지고 있다. 초기의 웜은 독자적으로 동작하는 것이 주류를 이루고 있었지만 최근에는 전자우편을 통해 확산되고 있다.

- 트로이 목마라는 이름은 그리스 신화에서 유래된 것으로, 외관상 정상적인 기능을 하는 프로그램처럼 보이지만 실제로는 사용자 몰래 불법적인 일을 수행하는 프로그램이다. 이 악성코드는 다른 프로그램에 기생하지도 않고 자기복제 능력과 전파 능력을 가지고 있지도 않다. 하지만, 일단 설치되면 원격지의 컴퓨터에서 사용자의 컴퓨터를 마음대로 제어할 수 있다.

- 최근에는 이들 악성코드들의 특성이 서로 결합되거나 해킹기술과 접목된 신종 악성코드들이 나타나고 있어 즉각적인 대응이 더욱 어렵다.


4. 스파이웨어와 애드웨어는 어떤 것인가?

- 스파이웨어는 주로 무료 또는 유료로 배포되는 공개 프로그램을 통해 유포되어 개인이나 조직에 대한 정보를 수집하여 유출하는 프로그램이다. 스파이웨어가 설치되면, 컴퓨터 사용자의 개인 정보, 키보드 입력 등을 사전에 지정된 특정 서버로 보내도록 되어 있어 이용자의 신상정보뿐 아니라 비밀번호 등도 함께 유출될 위험성이 있다.

- 반면, 애드웨어는 사용자가 인터넷을 검색하는 동안 팝업 창 등을 이용하여 광고를 보여주는 프로그램이다. 애드웨어는 미국의 어느 인터넷 광고전문회사에서 개인 이용자의 취향을 파악하기 위해 사용을 시작한 것으로, 광고(advertisement) 효과를 높이기 위한 소프트웨어라는 의미로 애드웨어라 불린다. 애드웨어는 다음과 같은 피해를 발생시킬 수 있다.

* 사용자가 정상적으로 컴퓨터를 사용하기 어려울 정도로 무분별한 팝업광고 유발

* 인터넷 브라우저의 시작 페이지를 특정 홈페이지에 고정시켜 인터넷 이용을 불편하게 함

* 사용자가 원하지 않는 검색 툴바 또는 페이지 북마크의 설치

* 사용자의 인터넷 이용습관을 추적해 그 정보를 모회사에 전송


5. 익스플로잇이란 무엇인가?

- 익스플로잇(Exploit)은 일반적으로 소프트웨어가 가지고 있는 취약점을 이용하여 불법적인 행위를 가능하게 해주는 프로그램을 말하며, 주로 취약점의 존재여부를 증명하기 위한 목적으로 해커들에 의해 공개된다.

- 익스플로잇은 동전의 양면과 같아서, 선의의 사용자들이 자신의 시스템에 취약점이 존재하는지 확인하는데 사용될 수도 있지만, 타인의 시스템에 침투하기 위한 수단으로 사용하기도 한다. 이로 인해 최근에는 해커들 사이에도 익스플로잇을 공개하는 것에 대한 도덕적인 문제가 제기되고 있다. 이에 따라, 익스플로잇을 공개할 때 취약점의 존재여부만 확인 할 수 있도록 기능을 제한하기도 한다.

- 익스플로잇은 Security Focus(http://www.securityfocus.com/)나 Packet Storm(http://www.packetstormsecurity.org/)과 같은 사이트에서 참조할 수 있다.


6. IRC란 무엇이고, IRC BOT이란 무엇인가?

- IRC(Internet Relay Chat)는 하나의 독립된 서버에 많은 클라이언트들이 연결되어 서로 대화할 수 있게 도와주는 인터넷 서비스의 일종이다. 특정 주제를 정하여 대화방(Channel)을 만들거나, 이미 다른 사람이 개설한 대화방에 참가하는 형태로 전세계 사람들과 실시간으로 이야기를 나눌 수 있다.

- 최근에는 이러한 선의의 의도를 악용하여 불법 소프트웨어(WAREZ)를 공유하거나, 봇(BOT)이 설치된 컴퓨터를 제어하여 다른 컴퓨터를 공격하는 등 악용하는 사례가 급증하고 있다.

- 요즘 많은 이슈가 되고 있는 봇은 '로봇'의 준말로, 사용자나 다른 프로그램의 행동을 흉내내어 대리인으로 동작하는 프로그램을 의미한다. 인터넷상에서 가장 일반적으로 사용되는 봇은 스파이더(Spider) 또는 크로울러(Crawler)라고도 불리는 프로그램들로서, 웹 사이트를 주기적으로 방문하여 검색엔진의 색인을 위한 콘텐츠를 수집하는 일을 한다.

- IRC BOT의 경우는 아래 그림과 같이 사용자의 컴퓨터에 은밀히 설치되어 정보 유출, 시스템 제어, 다른 컴퓨터에 대한 공격 등의 피해를 줄 수 있다.




7. 스니핑이란 무엇인가?

- 스니핑(Sniffing)이란 사전적으로는 '코를 킁킁거리다', '냄새를 맡다' 등의 의미가 있다. 해킹 기법으로서의 스니핑이란 네트워크 상에서 자신이 아닌 다른 상대방들의 패킷을 엿듣거나 엿보는 것을 의미한다. 즉, 네트워크 트래픽을 도청하는 것을 스니핑이라 한다.

- 현재 인터넷에서 통신을 위해 사용되는 TCP/IP 프로토콜은 인터넷이 보편화되기 이전부터 학술적인 용도로 설계된 프로토콜이다. 즉, 패킷에 대한 암호화나 인증과 같은 보안적인 측면을 크게 고려하지 않았기 때문에 데이터 통신 보안의 기본 요소인 기밀성, 무결성 등을 보장할 수 없었다. 특히 스니핑은 기밀성을 해치는 공격 기법이다.

- 스니핑을 하는 대표적인 방법에는 다음과 같은 것이 있다.

* 공격 대상 시스템의 관리자 권한을 얻은 후, 스니핑 도구를 설치하여 스니핑

* 공격 대상 시스템 주변에 있는 다른 호스트에 대한 접근 권한을 얻은 뒤, 그 호스트를 이용하여 스니핑

* ISP 장비에 대한 시스템 권한을 얻어 스니핑 도구를 설치하여 스니핑


8. 스푸핑이란 무엇인가?

- 스푸핑(Spoofing)은 해킹시 자신의 IP 주소, DNS 이름, MAC 주소 등과 같은 고유 식별자를 위장하여 감춤으로써 역추적을 어렵게 만드는 기법이다. 스푸핑의 종류는 다음과 같다.

* IP 스푸핑 : 자신의 IP 주소를 다른 사람의 것으로 위장하는 것이다. (아래 그림 참조)

* ARP(Address Resolution Protocol) 스푸핑 : ARP 캐쉬 테이블의 정보를 위조함으로써 공격 대상 컴퓨터와 서버 사이의 트래픽을 해커 자신의 컴퓨터로 우회시킬 수 있다.

* 전자우편 스푸핑 : 전자우편 송신자의 주소를 위조하는 것이다.

* DNS(Domain Name System) 스푸핑 : DNS 서버에 IP 주소를 찾아 달라는 요청이 도착하였을 때, 원래의 IP가 아닌 임의의 IP를 전달하는 것이다.

- 스푸핑에 대응하기 위한 방법으로는 패킷 필터링을 통한 접근 제어와 IP 인증을 통한 접근 제어가 있으며, 취약점이 있는 서비스를 사용하지 않거나 암호화 프로토콜 사용 등이 있다.

** ARP : IP 네트워크 상에서 IP 주소를 이더넷 또는 토큰링의 48비트 네트워크 하드웨어 주소와 같은 물리적인 주소를 대응시키기 위해 사용되는 프로토콜이다.

** DNS : 웹과 같은 인터넷 서비스들의 활용을 지원하기 위하여 사람이 인식하기 쉬운 Domain 이름을 통신기기가 인식하는 IP 주소로 연결해 주는 기반 서비스이다.




9. 버퍼 오버플로우란 무엇인가?

- 버퍼 오버플로우(Buffer Overflow)는 유명한 해커 잡지인 PHRACK의 49권 14호에 발표된 Alephone의 기고문에 의해 알려졌다. 버퍼 오버플로우란 말 그대로 '버퍼(buffer)가 넘친다(overflow)'는 뜻으로, 데이터가 할당된 영역을 벗어나 다른 영역을 침범하면서 문제를 발생시키게 되고, 이때 해커는 시스템 권한을 획득할 기회를 얻게 되는 것이다.

- 예를 들어, x86 리눅스 시스템의 경우 메모리 구조는 아래 그림과 같다.

프로그램이 실행될 때, 가상 메모리는 크게 사용자 영역과 커널 영역으로 구분되며, 사용자 영역은 다시 텍스트(text), 데이터(data), 그리고 스택(stack) 영역으로 구분된다. 여기서 힙(heap) 영역은 아래에서 위 방향으로 증가하는 반면, 스택 영역은 그 반대 방향으로 증가하게 된다.

- 프로그램이 실행될 때 간혹 사용자 버퍼가 스택의 영역을 침범하여 sfp(saved frame pointer)나 복귀 주소(Return Address) 부분을 덮어쓰게 되면, 프로그램의 흐름에 영향을 미치게 된다. 이때, 공격자는 자신이 원하는 코드를 실행시킬 기회를 갖게 되는 것이다.

- 버퍼 오버플로우를 일으키는 데에는, C 언어 함수 중에서도 strcpy나 gets와 같이 메모리 버퍼의 경계를 검사하지 않는 함수들을 사용한 프로그램들이 대상이 된다.




10. SQL Injection 공격이란 무엇인가?

- SQL Injection 공격은 웹에서 데이터베이스 검색을 위해 사용자로부터 질의를 받아 처리하는 과정에서 질의문의 문법적 오류를 이용한 기법을 말한다. 정상적인 경우, 데이터베이스 검색을 위해 사용자가 웹 브라우저에 입력한 값은 웹 서버를 통해 웹 애플리케이션 서버(Web Application Server : WAS)로 전달된다. WAS는 전달받은 입력값을 토대로 SQL 질의문을 작성하여 데이터베이스에 전달하게 된다. 이때, 사용자가 비정상적인 값을 입력하였지만 입력값이 적절한지 검증하지 않는다면, 문법에 맞지 않는 SQL 질의문을 전달받은 데이터베이스는 오류를 발생시켜 결국에는 해킹에 악용될 수 있다.

- 예를 들어, 웹 페이지에서 ID와 패스워드를 입력받는 SQL 문장이 다음과 같이 있다.

-> select count (*) from users where userName=' " +username+ " ' and userPass=' " +password+ " '

=> 사용자가 ID란에 ' or 1=* ** 와 같이 입력하고 패스워드에 아무것도 입력하지 않았을 경우 위의 SQL 문은 다음과 같이 처리된다.

-> select count (*) from users where userName=' ' or 1=* ** ' and userPass=' '

** 위 사례의 경우 해킹에 이용될 수 있기 때문에 일부분을 '*' 처리하였다.

- 이런 공격을 피하기 위해서는 웹 애플리케이션 개발시 사용자의 입력값을 철저히 검사하여야 하며, SQL 서버 계정도 기본 계정(sa)을 사용하지 않아야 한다.


11. 서비스 거부 공격이란 무엇인가?

- 서비스 거부 공격(Denial Of Service : DoS)이란 합법적인 사용자라고 할지라도 정상적으로 서비스를 이용하지 못하도록 방해하는 공격을 말한다. 서비스 거부 공격을 수행하기 위해, 공격자는 네트워크 전체를 패킷들로 넘치게 함으로써 정상적인 패킷들이 전송되지 못하도록 하거나 특정 시스템의 CPU 메모리와 같은 자원을 고갈시킨다.

- 예를 들어, 클라이언트 1000대를 동시에 서비스할 수 있는 서버의 경우, 1001번째 클라이언트의 서비스 요청에는 응할 수가 없을 것이다. 이런 서버를 대상으로 서비스 거부 공격을 수행하고자 한다면 1000대 이상의 클라이언트를 이용하여 서버에 지속적으로 서비스를 요청함으로써 다른 사용자가 정상적으로 사용하지 못하도록 방해할 수 있다. 이와 같이 공격자가 다수의 클라이언트를 이용하여 서비스 거부 공격을 수행하는 것을 가리켜 분산 서비스 거부 공격(Distributed Denial Of Service : DDoS)이라 한다.


12. 역방향 연결이란 무엇인가?

- 보편적인 클라이언트-서버 환경에서는 클라이언트가 먼저 서버에 접속을 시도하였다. 기존의 트로이 목마 등에서도 먼저 외부에서 내부로의 접근을 시도하는 방법을 채택하고 있었다. 하지만, 방화벽 등의 사용이 보편화되면서 이것이 어렵게 되자 등장한 개념이 역방향 연결(Reverse Connection)이다. 역방향 연결이란 클라이언트가 포트를 열어놓은 상태로 대기하면 서버가 클라이언트에 연결하는 방식을 의미한다.



- 위 그림에서 보는 것처럼 클라이언트는 서버의 웹 포트(80번)로만 접속할 수 있다. 이 경우, 일단 공격자가 웹을 통해 시스템에 대한 불법적인 권한을 얻게 되더라도 웹 브라우저에서는 단순한 명령만 가능하기 때문에 텔넷 세션 등을 이용하여 연결을 할 수 없다. 하지만 내부에서 외부로의 연결은 자유롭기 때문에 역방향 연결을 통해 정상적인 쉡을 사용할 수 있게 해준다면 공격자는 시스템을 마음대로 제어할 수 있다.


13. 포맷 스트링 공격이란 무엇인가?

- 포맷 스트링(Format String)이란 일반적으로 사용자로부터 입력을 받아 들이거나 결과를 출력하기 위하여 사용하는 형식이다. 예를 들어, printf() 함수에서 숫자, 문자 등을 출력할 때 %d, %f, %c, %s, %x, %p, %n과 같은 포맷 스트링이 사용된다. 즉, printf("%d", i)와 같이 사용하면 변수 i의 값을 출력할 수 있다.

- 하지만, printf("%x")처럼 변수없이 쓰게 되면 메모리의 값들을 순서대로 출력하게 되어 메모리 구조를 파악하는데 악용될 수 있다. 더구나, %n이나 %hn를 이용하면 특정 메모리 위치의 값을 다른 것으로 변경할 수도 있다. 이렇게 포맷 스트링 사용시의 오류를 이용하여 시스템의 권한을 획득하는 기법을 포맷 스트링 공격이라 한다.

- 포맷 스트링 공격은 printf() 등의 C 함수뿐 아니라 함수간에 값을 전달하는 선언이 있는 경우 (예 : function(format, args..))에 대해서도 발생할 수 있다.


14. 루트킷이란 무엇인가?

- 루트킷(Rootkit)은 공격자들이 자신의 침입 사실을 숨기거나 차후의 재침입을 위한 목적으로 시스템에 숨겨놓은 프로그램(Back Door)의 모음을 의미한다. 루트킷은 탐지를 회피하기 위해 다음과 같은 기능을 지원한다.

* 재침입을 용이하게 하기 위한 백도어 기능
* 로그파일 수정, 삭제 기능
* 기존 시스템 유틸리티들의 대체 기능
* 스니핑 및 키입력 저장 기능
* 프로세스 및 네트워크 정보 등의 숨김 기능
* 특정 디렉토리나 파일 숨김 기능

- 고전적인 루트킷은 단순히 시스템 유틸리티를 변조하여 공격자의 정보를 숨기는 형태였으나, 현재는 커널 기반의 시스템 레벨에서 작동하는 형태로 발전되어 가고 있다.

- 루트킷을 탐지하기 위한 대표적인 도구에는 chkrootkit, kstat 등이 있다.


15. 쉘 코드는 어떤 용도로 사용하는 것인가?

- 쉘 코드(Shell Code)는 용어에서 나타나는 것처럼 쉘을 실행시키는 코드를 의미한다. 쉘 코드는 공격자가 시스템의 취약점을 이용하여 자신이 원하는 임의의 코드를 실행시키고자 할 때 사용한다. 시스템내의 모든 명령어를 실행시킬 수 있는 쉘을 사용할 수 있다면 공격자가 목적하는 바를 이루게 되는 것이다. 쉘 코드를 만드는 기본적인 과정은 다음과 같다.

a. 쉘을 실행시키는 코드를 작성
b. 디버거를 통해 작성된 코드의 동작 흐름을 파악
c. 어셈블리어 수준의 코드로 변환
d. 기계어 코드를 추출

- 따라서, 쉘 코드는 다음과 같은 형태로 존재하게 된다.



- 이렇게 작성된 쉘 코드는 공격자 자신이 원하는 위치에 삽입하여 실행 하게 된다. 예를 들어, 버퍼나 환경 변수 영역에 스트링의 일부로 자리잡게 되면 버퍼 오버플로우 발생시 이 코드를 실행시킬 수 있다.


16. 인터넷주소 세탁이란 무엇인가?

- 프락시(proxy)는 '대리인'을 의미한다. 즉, 프락시는 '사용자 대신 프락시 서버가 지정된 시스템에 접속해서 사용자가 원하는 명령을 수행'하는 것이다. 예를 들어, A라는 사용자가 C라는 시스템에 접속해서 D라는 데이터를 가져오고 싶을 경우 A는 프락시 서버 B에게 'C에 접속해서 D라는 데이터를 가져와라'와 같은 메시지를 보내면 이 메시지를 받은 B는 자신이 C에 접속하여 D를 받아서 A에게 건네준다.

- 인터넷주소 세탁은 이와 같이 네트워크 트래픽 감소, 웹 콘텐츠 필터링, 또는 보안 등의 목적으로 이용되는 프락시(Proxy) 서버의 설정상 오류를 이용하여 IP 추적을 불가능하게 하는 기법이다. 프락시 서버를 이용한 인터넷주소 세탁은 공격의 근원지를 찾기가 힘들뿐 아니라, 해당 프락시 서벗에 침입하지 않더라도 설정상 취약점을 이용할 수 있기 때문에 최근 이 방법을 이용한 해킹 시도가 증가하고 있다.

- 대부분의 프락시 서버는 외부로부터의 접근에 제한을 두지 않고 있고 임의의 TCP 접속을 연결할 수 있는 포트를 차단하지 않는 등 여러 가지 취약점들을 가지고 있다. 따라서 프락시 서버를 이용해 다른 시스템에 침입하거나 스팸메일을 발송하면 공격을 당한 사람이나 우편 수신자는 프락시 서버의 주소를 최초 주소의 출처로 오인하게 된다. 게다가 공격자가 2개 이상의 프락시 서버를 사용했다면 최초 공격지를 찾는 것은 결코 쉬운 일이 될 수 없다.


17. 검색엔진이 해킹에 이용되고 있다는데 무엇인가?

- 해커들은 공개된 검색엔진을 이용하여 해킹의 대상이 되는 네트워크의 구성, 서버 정보(웹서버, FTP 서버 등) 등을 쉽게 얻을 수 있다. 인터넷 검색엔진 중 가장 크고 빠른 '구글' 검색엔진은 40억 페이지 이상을 보유하고 있으며 1일 2억번 이상 검색 결과를 제공한다. 2003년 이후 검색엔진이 지능화되면서 시스템의 주요 정보, 민감한 데이터의 접근 경로까지 제공하고 있다.

- 1만여개의 구글 컴퓨터는 2주일에 한 차례씩 전세계 30억개의 웹사이트 및 서버를 돌며 새로운 정보를 복사하고 있고 인터넷에 한번이라도 올라간적이 있는 정보는 그 컴퓨터에서는 삭제되더라도 구글 컴퓨터에는 계속 남아 있어 삭제된 정보의 검색도 가능하다.

- 구글은 보다 정확한 검색을 위해 다양한 세부 옵션을 제공하고 있어 검색창에서 몇 개의 검색어를 조합하면 신용카드번호, 주민등록번호, 은행계좌 번호, 병원 진료기록, 학교성적표 등 개인 신상정보 뿐만 아니라 회사 및 개인의 재무정보, 나아가 미 해군 잠수함의 현 위치까지 파악할 수 있는 것으로 알려져 있다. 이런 사살이 네티즌들 사이에 알려지면서 인터넷에는 '구글 해킹 동호회'가 수백여 개가 생겼으며 새로 발견된 구글 검색어들을 모아놓은 사이트까지 등장하였다. 특히 구글 해킹 전문가라는 의미를 지닌 구글독(Googledorks)이라는 신종어휘까지 등장하였다.

- 가장 큰 문제점은 이런 동호회나 사이트를 통해 일반인도 쉽게 구글 해킹을 할 수 있으며 합법적인 검색엔진인 구글을 이용한 정보수집이 불법이 아니라는 것이다.


18. 온라인 게임도 해킹이 가능한가?

- 최근 온라인 게임 시장이 활발해짐에 따라, 게임 데이터를 조작하는 사례가 많이 증가하고 있다. 특히 오프라인상에서 사이버머니나 마일리지에 대한 현금 거래가 빈번히 일어나고 있기 때문에, 이러한 해킹 사례는 앞으로 더욱더 늘어날 전망이다. 따라서 온라인 게임의 보안에 대한 필요성을 자각한 게임업체에서는 서둘러 보안 솔루션을 도입하여 게임 사용자와 회사를 해커들로부터 보호하려는 움직임이 있다.

- 웹을 통해 제공되는 온라인 게임의 경우, 아래의 기사와 같이 특정 홈페이지의 취약점을 이용하는 방법이 있다. 이 기사에서 소개한 예는 직접적으로 게임 사용자에게는 피해가 없었다. 하지만 자신의 사이버 머니나 아이템을 다른 사람에게 양도할 수 있는 게임이 있다면 게임 사용자 역시 해킹의 위험에 노출될 수 있다. 그 외에도 사용자 이름이나 암호 해킹을 통한 게임 데이터 조작, 게임 프로그램의 취약점을 이용한 불법적 게임 데이터 조작, 게임 이용자의 PC 해킹을 통한 개인 정보 유출, 혹은 과도한 트래픽 발생으로 인한 네트워크 마비 등의 피해가 유발될 가능성이 있다.

- 게임 해킹으로부터 자신을 보호하기 위해서는, 기본적으로 유추하기 어려운 암호를 사용하여야 하고, 게임을 즐긴 이후에는 반드시 로그아웃을 하여 해당 사이트와의 연결을 종료하여야 한다. 또한, 결제가 필요한 경우에는 믿을만한 사이트인지 신중히 고려하여야 하며 결제 정보는 가능한한 저장하지 않는 것이 좋다.

-> 검찰에 따르면 이모씨 등은 올 9월 A사의 '음양오행연인공략법' 서비스 이용대금 결제화면에서 HTML소스파일의 내용을 변경하면 마일리지 충전이 되는 취약점을 발견, 관리가 느슨한 추석연휴인 9월24일부터 27일까지 총 227회에 걸쳐 1647억 마일리지 포인트를 불법으로 충전한후 김모씨 등 사이버머니 도매상에게 처분한 혐의다." - 디지털 타임즈 2004/11/23일자


19. 라우터 보안을 위협하는 기법에는 어떠한 것이 있나?

- 라우터에 대한 보안 위협은 비인가된 접속, 세션 가로채기, 서비스 거부, 도청, 정보유출 등으로 다양하다. 또한 활용되는 공격 기술도 패스워드 유추, 라우팅 프로토콜 공격, SNMP(Simple Network Management Protocol)공격, RIP(Routing Information Protocol) 공격 등이 있다.

* 도청(Eavesdropping) : 네트워크를 통하여 전송되는 패킷이 암호화되지 않았을 경우 이를 중간에서 가로채 정보를 수집할 수 있게 된다. 라우터 자체에서 제공되는 서비스를 통해서도 중요한 정보가 유출될 수 있다.

* 세션 재전송(Session Replay) : 조작후 재전송이 가능한 패킷이나 어플리케이션 명령어를 사용하여 불법으로 접근 권한을 얻는 공격이다.

* 재라우팅(Rerouting) : 인가되지 않은 목적지로 트래픽이 흘러갈 수 있도록 라우팅 경로를조작하는 공격이다.

* 위장(Masquerade) : IP 패킷을 조작하여 근원지 주소를 거짓으로 조작하는 공격이다. 불법으로 접속 권한을 획득하거나 가짜 데이터를 네트워크에 투입할 때 사용될 수 있다.

* 세션 가로채기(Session Hijacking) : IP 스푸핑, 일련번호 예측 및 변경 등의 기법을 이용하여 이미 체결된 네트워크 세션을 가로채는 공격이다.

* 비인가된 접속(Unauthorization Access) : 인가를 받지 않은 상태에서 라우터에 침투하기 위한 공격이다. 강력한 사용자 인증과 적절한 접근통제가 필요하다.

* 서비스 거부 공격 : 라우터에서 브로드캐스트를 허용하는 경우, 라우터가 서비스거부 공격에 이용될 수 있다.


** SNMP : TCP/IP의 네트워크 관리 프로토콜로서, 라우터나 허브 등 네트워크 기기의 네트워크 관리 정보를 네트워크 관리 시스템에 보내는데 사용되는 프로토콜이다.

** RIP : IT 통신망의 경로지정 프로토콜로 경유하는 라우터의 기기 대수에 따라 최신 경로를 동적으로 결정한다.


20. 제로데이 공격이란 무엇인가?

- 일반적으로 사용자는 자신의 컴퓨터를 보다 안전하게 관리, 사용하기 위하여 항상 최신의 보안패치를 적용하려고 노력하고 있다. 하지만, 공격 기술이 나날이 발전함에 따라 최근에는 제로데이(Zero-Day) 공격 즉, 보안패치가 발표되기 전에 혹은 보안패치가 발표된 당일이나 며칠이내에 발생하는 공격에 대한 우려가 점차 커지고 있다.

- 이와 같은 현상은 익스플로잇 코드(Exploit code)가 공개되면 이를 이용하여 악의적인 목적으로 사용하는 사례들이 발견되기 시작하면서 더욱 두드러지고 있다. 또한, 해커들은 보안패치를 통해 취약한 부분을 정확히 찾을 수 있어, 보안패치가 발표되었더라도 많은 사람들이 보안패치를 적용하기 이전에 익스플로잇을 개발하여 악용하기도 한다.

- 제로데이 공격을 막기 위해서는 최대한 빨리 보안패치를 적용하여야 하며, 동시에 개인 방화벽과 같은 정보보호시스템을 필히 사용하여야 한다.

** Exploit code : 발표된 취약점을 해당 조건에서 수행하여 실제로 그러한 취약점이 존재하는지를 확인할 수 있는 프로그램을 말한다. 익스플로잇 코드는 긍정적으로는 시스템 관리자가 자신이 관리하는 시스템에 해당 취약점의 존재여부를 직접 확인할 수 있다는 장점이 있으나, 공격자가 이를 보유하게 되면 공격도구로 악용될 수 있다.


21. 사이버 위협이란 무엇이고 어떤 것이 있나?

- 사이버위협이란 정보시스템의 취약한 부분을 공격하여 시스템 내부에 침입하거나 시스템을 마비, 파괴하는 등의 사고를 유발하게 하는 것으로서, 해킹, 사기 및 절도, 악성코드 유포, 산업스파이 활동 등의 다양한 행태로 나타날 수 있다. 이러한 위협요인을 좀 더 세분화하면 다음과 같이 구분될 수 있다.

** 사람에 의한 위협
* 물리적 공격(소프트웨어 파괴, 절도, 시스템의 파괴 등)
* 기술적 공격(시스템 자원의 불법사용, 불법접근, 사용방해, 위조, 위장, 유해프로그램 삽입, 망 분석, 도청 등)

** 자연재해로 인한 위협 : 화재, 수해, 지진, 홍수, 전력차단 등

** 사람에 의한 비의도적 위협 : 조작미숙, 실수, 태만, 비의도적인 데이터 유출 등

** 정보시스템의 결함 : 운영체제 결함, 프로그램의 결함, 과부하, 소프트웨어 고장 등


22. 사이버테러란 무엇인가?

- 사이버테러는 사이버 공간상에서 해킹, 웜,바이러스 등 첨단 컴퓨터 응용기술과 네트워크를 활용하여 특정 집단 또는 국가의 컴퓨터 시스템에 고의적으로 접근, 사이버공간에서의 대규모 피해를 일으키는 행위를 말한다. 그리고 사이버공간을 통해 교통, 금융, 발전 등 물리적 공간에까지 영향을 미칠 수 있어 그 위험성이 크다고 할 수 있다.

- 몇 해 전 러시아 마피아단이 미국의 한 은행 서버에 침투해 수백만 달러를 불법 인출한 사건이나 특정 인터넷 기업을 대상으로 대량의 스팸메일을 발송해 시스템 장애를 유발시키고 거액의 돈을 요구한 사건 등은 모두 개인의 자유와 사이버공간에서의 질서를 파괴한 사이버테러의 사례로 볼 수 있다.

- 그리고 사이버테러가 물리적 공간에 영향을 준 사례로는 1998년 미국 아리조나주 루즈벨트 댐을 제어하는 컴퓨터 시스템에 대한 침투사건과 2000년 호주 퀸즈랜드에서 폐기물 처리 관련제어 시스템에 대한 침투사건 등을 들 수 있다.

- 우리나라에서는 이에 대응하기 위하여 사이버안전이라는 개념을 정립하고 국가사이버안전센터를 중심으로 대응 활동을 펼치고 있다.


[출처 : 국가보안기술연구소 http://www.nsri.re.kr/ ]

[info] 보안 솔루션 (정보보안백문백답)

1. 방화벽은 어떠한 일을 하나?

- 방화벽이란 외부 네트워크에서 내부 네트워크로의 불법 침입을 차단하기 위한 하드웨어와 소프트웨어를 총칭하며 차단 정책을 포함하기도 한다. 방화벽의 종류는 보호 범위에 따라서 크게 개인 방화벽과 네트워크 방화벽으로 분류된다.

- 먼저, 개인 방화벽은 개인용 컴퓨터를 보호하기 위하여 사용된다. 네트워크 패킷 필터링 기능을 기본적으로 제공하며 부가적으로 안티바이러스 기능, 웹 필터링 기능, 전자우편 첨부파일 제한 기능 등을 제공한다.

- 네트워크 방화벽은 IP 주소 및 포트를 기준으로 내부 또는 외부의 패킷을 통제한다. 그 이외의 부가기능 으로는 네트워크 주소변환(NAT(Network Address Translation)), 가상 사설망(VPN), 패킷 내용 검사, 감사 로그 기능 등이 있다. 네트워크 방화벽의 운영구조는 다음 그림과 같다.



** NAT : 보안상 혹은 주소의 부족으로 내부망에서는 사설 IP 주소를 사용하는 경우가 있는데, 이런한 경우 외부 인터넷을 사용하기 위해서는 공용 IP 주소로 바꾸는 작업이 필요하다. NAT는 사설 IP와 공용 IP를 대응시키는 것을 말한다.


2. 개인 방화벽은 어떻게 설정하나?

- 개인 방화벽에서는 프로그램제어, 특정 IP 및 포트 제어, 지정된 네트워크 범위 제어 및 공유네트워크 제어 등을 설정할 수 있다.

- 윈도우즈 XP 서비스 팩2(SP2)에는 상용 개인 방화벽과 유사한 기능을 가진 방화벽이 내장되어 있는 반면, 그 이외의 윈도우즈 운영체제에는 단순한 기능의 ICF(Internet Connection Firewall)가 내장되어 있다.

- 윈도우즈 XP SP2의 방화벽은 다음과 같은 방법으로 설정할 수 있다.

a. [시작]->[제어판(클래식보기로 전환)]->[Windows 방화벽]->[설정 확인]

- 그 외의 운영체제에서는 ICF를 다음과 같이 설정할 수 있다.

a. [시작]->[제어판]->[네트워크 연결]->[로컬영역연결]->[속성]->[고급]->[Windows 방화벽 설정]->[확인]


3. IDS, IPS, ITS는 각각 무엇인가?

- 침입탐지시스템 즉, IDS(Intrusion Detection System)는 네트워크 및 시스템에 대한 해킹이나 웜,바이러스의 유포를 탐지하여 신속히 대응 조치를 취할 수 있도록 도와주는 도구이다. 일반적으로 IDS는 방화벽이나 침입방지시스템과 연계하여 네트워크와 시스템을 해킹으로부터 보호하는 역할을 수행한다.

- IPS(Intrusion Prevention System)는 침입방지시스템이라고 하며, 공격유형을 발견하여 시스템에서 비정상적인 활동이 발생하고 있는지 감시하고 자동으로 조치해주는 보안시스템이다. 감시대상 시스템에서 생성되는 감사(Audit) 데이터의 수집 및 축약 기능, 공격으로 판단되는 행위가 발생했을 경우 이에 대한 대응 및 조치를 취하는 보안감사 대응 기능을 가지고 있다.

- ITS(Intrusion Tolerant System)는 침입감내시스템이라고 하며, 네트워크 및 시스템에 대한 공격 및 침입이 발생하더라도 중요 서비스를 계속 운영할 수 있도록 시스템의 무결성과 가용성을 제공하기 위한 보안시스템이다. 이를 위해서 기존의 IDS 및 IPS가 가지고 있는 보안기능이외에 침입이나 공격이 발생하더라도 시스템의 전체적인 운영을 계속 유지시키기 위한 통합적인 네트워크 및 시스템 보안체계를 가지고 있다.


4. 가설 사설망은 무엇인가?

- 가상 사설망(VPN : Virtual Private Network)이란 공중망인 인터넷을 통해 본사와 지사, 혹은 본사와 해외 간에 물리적인 전용회선을 설치하지 않고도 마치 전용선을 설치한 것과 유사한 효과를 얻을 수 있는 네트워크 개념이다. VPN은 전용선에 비해서 설치비와 운영비용이 저렴하고 인터넷의 IP 네트워크를 그대로 활용할 수 있다는 장점을 가지고 있다.

- VPN은 인터넷을 사용하기 때문에 보안이 필수조건이다. VPN의 핵심인 보안을 가능하게 하는 기술에는 인증, 암호화, 터널링 등이 있다. VPN을 통한 터널링은 수신자와 송신자 사이에 가상의 암호화된 전용 네트워크 회선을 구성하여 정보를 안전하게 교환하는 것을 의미한다. 실제로 다양한 방법으로 VPN을 통한 터널링을 구현할 수 있으나, 대부분의 상용 VPN 하드웨어 장비는 IPSec 보안 프로토콜을 이용하고 있다.

- 다음 그림은 VPN을 이용하여 본사, 협력업체, 지사가 안전한 VPN 터널을 구성하여 마치 전용선을 사용하는 것과 유사한 효과를 얻을 수 있다는 것을 보여준다.




5. 전자문서보안 솔루션이란 어떤 것인가?

- 전자문서보안 솔루션은 조직 내부에서 생성되는 전자문서를 암호화하고 사용 권한을 지정함으로써, 허가된 사용자가 인가된 범위에서만 중요 문서를 사용할 수 있도록 해 주는 통합시스템이다. 이와 같은 시스템은 현재 다수의 기업 및 기관에 구축되어 활용되고 있다. 전자문서보안솔루션의 전체적인 운영 구조는 아래 그림과 같다.



** DRM(Digital Rights Management) : 파일 교환 프로그램을 통해 전파되는 상업적 자료의 온라인 불법 복제로부터 디지털 콘텐츠를 보호하기 위한 것으로, 관련 법령이나 위반자 단속으로는 예방이 어렵기 때문에 사후 단속 보다 사전에 문제점을 파악해 첫 단계에서 내용 복제를 못하도록 한 기술이다.

** 워터마킹(Watermarking) : 콘텐츠가 자신의 것이라는 정보를 표시하기 위해 육안으로 보이지 않는 표시를 하는 기술


6. 안전한 운영체제란 무엇인가?

- 인터넷 환경에서 유닉스(리눅스 포함)가 가지는 '개방성'은 매우 중요한 특성이다. 하지만, 표준 유닉스에서는 컴퓨터안에 저장되어 있는 정보를 보호하기 위한 능력을 향상시키기 위한 도구가 매우 부족한 실정이다.

- 특히, 성공한 공격의 약 8% 정도가 유닉스 시스템 자체의 취약점에 기인하는 것으로 알려지면서 운영체제가 자체적으로 보안 기능을 가져야 한다는 요구가 등장하게 되었다. 이에 따라, 패치나 업그레이드를 이용하여 임시방편적으로 기존 운영체제의 취약점을 보완하는 것보다는 문제점의 원인을 근본적으로 해결하기 위한 방안으로 안전한 운영체제(Secure Operating System)가 개발되고 있다.

- 안전한 운영체제란 보안기능을 제공하는 보안커널(Security Kernel)을 운영체제에 추가로 이식한 것이다. 보안커널이 이식된 운영체제는 사용자에 대한 식별 및 인증, 강제적 접근통제, 임의적 접근 통제, 재사용 방지, 자체 보호, 침입 탐지 등의 보안 기능 요소를 갖추고 있다.




7. 패치관리시스템이란 무엇인가?

- 패치(Patch)란 컴퓨터에서 사용되는 많은 소프트웨어(운영체제, 백신, 응용프로그램 등)들이 배포된 후에 각종 결함 해결 및 기능 개선을 위해 발표되는 프로그램을 통칭한다. 하지만 사용자의 인식 부족과 번거로움 때문에 패치를 설치하지 않거나 미루게 되고, 이에 따라 시간, 비용, 보안상 손실을 초래하게 된다. 특히, 운영체제 패치를 설치하지 않게 되면 컴퓨터가 보안상 심각한 문제를 계속 가지고 있게 되므로, 해킹이나 웜,바이러스 전파로 인해 막대한 피해가 발생할 수 있다.

- 패치관리시스템(Patch Management System)은 이러한 문제를 예방하기 위하여 패치의 설치를 권고, 유도하거나, 필요시 강제적으로 설치할 수 있게 관리하는 소프트웨어이다. 패치관리시스템의 주요 기능은 다음과 같다.

a. 중앙 관리 부서에서 특정 소프트웨어의 설치 및 패치 유도

* 소프트웨어 설치 현황 파악(버전정보 포함)
* 패치 미적용 현황 파악
* 미패치 PC에 대한 패치 파일 전송
* 패치 배포후 사용자 동의에 의한 자율적 설치
* 배포된 패치를 자율적으로 설치하지 않는 경우 동의절차를 생략하고 강제 설치


b. 소프트웨어 및 패치 미설치시 알림 및 인터넷 사용 제한

* 패치의 중요도에 따라 적용
* 네트워크 차단 및 안내메시지 전송


8. 원격제어 탐지제거 프로그램이란 무엇인가?

- PC 원격제어프로그램은 제3자의 PC를 점검 및 관리할 수 있고 언제 어디서나 원격지의 PC들을 연결하여 마치 자신의 PC를 직접 사용하는 것과 같이 자유롭게 사용할 수 있는 기능을 제공하는 편리한 프로그램이다.

- 그러나 PC 원격제어프로그램이 사용자의 동의 없이 설치되는 경우 해킹 도구로 사용될 수 있는 역기능도 가지고 있다. 따라서 원격제어프로그램을 제3자가 악의적으로 사용하는 경우 중요자료 유출 등 피해가 우려된다. 그러므로 국가 공공기관 PC에는 특별한 목적 이외에는 원격제어 프로그램을 설치하지 않아야 한다.

- 이에 따라 사용자 모르게 PC에 설치되어 해킹에 악용되는 원격제어프로그램을 탐지, 제거하여야 할 필요가 있다. 특히 국가사이버안전센터는 원격제어 탐지제거 프로그램인 RCDetector를 개발하여 각급기관에 배포하고 있다.

a. 배포방법 : 국가사이버안전센터 정보공유시스템 공지사항에서 다운받을 수 있다.

b. RCDetector 프로그램 문의(가능한 한 메일 연락.)

* E-Mail : analysis@ncsc.go.kr
* 전화 : 02-557-0181
* 기타 자세한 내용은 국가사이버안전센터 정보공유시스템 공지사항을 참조하기 바람

[출처 : 국가보안기술연구소 http://www.nsri.re.kr/ ]

[info] 무선랜과 이동통신 보안 (정보보안백문백답)

1. 무선랜을 사용할 경우에는 어떤 문제점이 있나?

- 무선랜을 사용하는 경우에는 무선랜 AP(Access Point)의 특성과 무선랜의 기술적 특성으로 인해 문제가 발생할 수 있다. 우선, 무선랜 AP의 특성으로 인해서 발생할 수 있는 문제점은 다음과 같은 것이 있다.

* AP의 전파가 건물 외부까지 출력될 경우 건물 외부에서도 접속가능

* 인가받지 않은 사람이 아무도 모르게 내부 무선네트워크에 참여가능

- 다음으로, 무선랜의 기술적 특성으로 인하여 발생할 수 있는 일반적인 문제점으로는 다음과 같은 것이 있다.

* 하드웨어 주소(MAC Address) 기반 인증방식의 허점 : 무선랜의 MAC(Media Access Control) 기반 인증방식은 악의적인 사용자가 자신의 무선 단말기의 MAC 주소값을 인가된 MAC 주소값으로 변경하여 MAC 인증을 쉽게 우회할 수 있다.

* WEP 프로토콜의 취약성 : WEP(Wired Equivalent Privacy)은 IEEE 802.11b 무선랜 표준에서 사용자 인증과 데이터 암호화를 제공하기 위해서 사용되는 프로토콜이다. 그러나 WEP 프로토콜은 안정성이 부족한 RC4 암호 알고리즘, 단방향 인증메커니즘 등과 같은 문제점이 있어 Man-in-the-middle 공격이나 Session hijack 공격과 같은 일반적인 네트워크 공격에 취약하다.

** AP : 일반적인 유선 인터넷망에 연결되어 있으며, 무선랜 단말기들과 유선망을 연결해 주는 관문(Gateway)의 역할을 한다.

** MAC : 하드웨어(랜카드)마다 유일하게 부여되어 있는 주소 체계이다.

** RC4 : 넷스케이프에서 사용하던 스트림 암호로 WEP이나 SSL등에서 사용된다.


2. 무선 네트워크를 보호하기 위한 조치에는 어떤 것들이 있나?

- 무선 네트워크를 위해서는 다음과 같은 사항들을 고려하여야 한다.

* AP의 전파특성을 고려한 위치 선정

* AP와 단말기의 SSID 변경 : SSID(Service Set IDentification)는 AP가 제공하는 무선랜 서비스 영역 식별자이다. 사전에 인가된 사용자에게만 SSID 정보를 알려줌으로써 무선랜 전파 정보가 외부로 유출되는 것을 방지할 수 있다.

* MAC 주소 및 IP 주소 등록 : 인가된 무선랜 카드의 하드웨어 주소(MAC Address)와 IP 주소를 모두 등록하는 접근통제 기법을 활용하면 보다 안전하다.

* 주기적인 WEP 키 변경 : WEP을 사용하는 경우 주기적으로 공유키를 변경하여 해커에게 공유키 정보가 유출되는 것을 방지해야 한다.

* WEP보다 향상된 사용자 인증 방법 사용 : 가능하다면 WEP 방식보다 패킷 무결성 검사가 강화된 TKIP(Temporal Key Integrity Protocol) 방식을 사용하며, Man-in-the-middle) 공격과 Session hijack) 공격에 대응하기 위해서는 인증 서버를 통해 사용자의 접근을 제한하는 EAP(Extensible Authentication Protocol) 인증방식을 사용하는 것이 안전하다.

* VPN 장비를 통한 IPSec 활용 : VPN 장비를 사용하여 AP에서 전송되는 패킷이 IPSec을 통과하도록 하면 패킷 암호화를 할 수 있다.

** Man-in-the-middle : 공격자가 무선 단말기와 AP 중간에 위치하여 통신내용을 훔쳐보거나 변조하는 등의 공격을 말한다.

** Session hijack : 공격자가 무선 단말기가 AP에게 적법하게 인증을 받은 순간 단말기의 통신을 끊어버리고, 대신 통신을 하는 방식의 공격을 말한다.

** EAP : 사용자를 인증하는 프로토콜의 한 종류이다. AP가 직접 사용자를 인증하는 것이 아니라 인증서버를 따로 두고, 사용자가 인증을 위해 입력하는 정보를 AP는 인증서버에 전달하고, 인증 결과를 대신 받아오는 방식이다.


3. 무선랜 보안에 관련된 표준이 있나?

- 무선랜 보안에 관한 표준은 크게 Wi-Fi(Wireless Fidelity)의 WEP과 IEEE의 802.11i가 있다. 먼저, WEP은 유선랜에서 제공하는 것과 유사한 수준의 보안 및 기밀 보호를 무선랜에 제공하기 위하여 Wi-Fi 즉, IEEE 802.11b 표준에 정의되어 있는 보안 프로토콜이다. WEP은 무선랜을 통해 전송되는 데이터를 암호화함으로써 유선랜의 물리적인 보안 대책에서 제공되는 것과 비슷한 보안체계를 제공한다. 그러나 WEP은 RC4 암호화 알고리즘을 안전하지 않은 방식으로 사용하며, 단방향 인증 메커니즘을 채용하고 있기 때문에 보안에 취약한 점이 다소 존재한다고 알려져 있다.

- 한편, 802.11i는 IEEE에 의해서 개발된 무선랜 보안 규격이다. 802.11i는 기존 802.11a/b/g 무선랜 규격에서 더욱 발전된 암호화 알고리즘인 AES(Advanced Encryption Standard)를 추가한 것으로, 우수한 보안 기능을 제공한다고 알려져 있다. IEEE 측은 신형 무선랜 장비를 갖춘 기업체들이 802.11i 표준을 내려받을 수 있도록 하고 있다.

** AES : AES는 70년대 개발되어 최근까지 사용되었던 블록 암호 DES(Data Encryption Standard)를 대체하기 위하여 미국국립기술표준청(NIST)이 1997년부터 2000년까지 수행한 공모사업에 선정되어 최근 연방표준으로 채택된 암호 알고리즘이다.


4. Wi-Fi 인증은 무엇인가?

- Wi-Fi란 무선 네트워크 기기에 대한 국제 인증이다. 무선 네트워킹을 위해서 사용되는 기기는 다음과 같이 다양하게 분류된다.

* PCMCIA/PCI 무선 랜카드
* 무선 라우터
* 무선 엑세스 포인트(AP)
* 무선 랜
* 무선 허브

- Wi-Fi 인증이란 Wi-Fi 인증을 받은 무선 네트워크 장비 사이에는 호환성 문제가 없다는 것을 보장하는 표준 규격이다. 무선 네트워크 장비 업체가 자신들의 장비에 대해서 Wi-Fi 인증을 받기 위해서는 Wi-Fi가 사전에 지정한 절차가 있다.

- Wi-Fi 인증에는 프리미엄이 존재하여 Wi-Fi 인증을 통과한 무선 네트워크 장비는 Wi-Fi 인증을 통과하지 못한 장비에 비해서 가격이 다소 고가이다. 그러나 향후 발생할 수 있는 타 무선 네트워크 장비와의 호환성 문제를 고려한다면 Wi-Fi 인증을 받은 네트워크 장비를 구입하는 것이 바람직하다.


5. WAP은 무엇인가?

- WAP(Wireless Application Protocol)이란 휴대폰을 이용하여 인터넷상의 정보를 검색할 수 있게 해주는 통신 규약으로 전세계 300개 이상의 주요 업체에서 지원하고 있다.

- 휴대폰은 컴퓨터에 비해서 작은 화면, 느린 CPU, 적은 메모리, 제한된 입력장치, 느린 네트워크 속도 등의 문제점 때문에 기존 인터넷에 접속하는 것이 어렵다. 이르 해결하기 위해서 WAP에서는 휴대폰과 웹서버 사이에 중간변환기(WAP Gateway)를 두어 인터넷의 HTML 메시지를 휴대폰에서 볼 수 있는 WML로 변환하게 된다.

- 아래 그림은 휴대폰을 이용하여 인터넷에 접속하는 절차를 보여준다.




6. 휴대폰이나 PDA를 통해서도 웜이나 바이러스가 전파되나?

- 최근 들어 휴대폰이 컴퓨터 운영체제와 유사한 개념의 운영체제를 탑재하기 시작함에 따라, 컴퓨터와 마찬가지로 인터넷에서 프로그램을 내려받아 실행시킬 수 있게 도었다. PDA 역시 인터넷, 전자우편, 일정관리, 프로그램 내려받기 및 실행 등의 기능을 제공한다.

- 이처럼 휴대폰과 PDA의 사용이 점차 확대되고 그 운영환경이 표준화 되면서 바이러스 제작자들은 휴대폰과 PDA를 웜,바이러스의 대량전파 매개체로 고려하기 시작했다. 지금까지 발견된 휴대폰/PDA 웜은 다음과 같다.

* 2000년 팜(Palm) 운영체제에서 동작하는 PDA용 바이러스가 최초로 발견

* 2004년 6월 노키아 휴대폰에서 사용되는 심비안(Symbian) 운영체제에서 동작하는 카비르(Cabir) 웜 발견

* 2004년 7월 PDA용 바이러스 더츠(Duts) 발견

- 일반적으로 휴대폰이나 PDA용 웜,바이러스는 전자우편에 첨부되어 전파되거나 인터넷 사용자에 의해서 내려받아져 실행된다. 그러나 최근 발견된 카비르(Cabir)의 경우 휴대폰이 제공하는 블루투스 통신 기능을 이용하여 주위의 다른 블루투스 기기에 자동으로 전파되는 특징을 가지고 있어 매우 높은 전염성을 보여주었다.

- 지금까지는 발견된 바이러스나 웜이 악의적인 기능을 가지고 있지 않았지만, 악의적인 기능이 포함될 경우 무선전화망 사용 불가 등 그 파급효과는 엄청날 것으로 예상되고 있다.

** 블루투스 : 이동전화, 컴퓨터, PDA 등이 짧은 거리 무선 접속을 사용하여 데이터를 주고 받기 위한 규격을 말한다.

[출처 : 국가보안기술연구소 http://www.nsri.re.kr/ ]

[info] 윈도우즈 보안 (정보보안백문백답)

1. 윈도우즈 업데이트와 자동 업데이트의 차이점은 무엇인가?

- 윈도우즈 업데이트는 윈도우즈를 최신 상태로 유지할 수 있도록 도와주는 기능이다. 마이크로소프트사에서 제공하는 중요 업데이트는 보안 업데이트 이외에도 운영체제 개선에 필요한 사항 즉, 컴퓨터의 성능이나 기능 향상 등이 포함된다.

- 윈도우즈 업데이트는 먼저 사용자 자신의 하드웨어 환경에서 어떠한 소프트웨어가 설치되어 있는지 컴퓨터를 검사한 뒤, 해당되는 업데이트만을 설치한다. 윈도우즈 업데이트 기능을 사용하려면 다음과 같은 과정으로 진행한다.

a. [시작]->[모든 프로그램]->[윈도우즈 업데이트(Windows Update)]

- 이와 같은 업데이트는 사용자가 직접 수행하여야 하는 불편함이 있어 자동 업데이트 개념이 도입되었다. 자동 업데이트를 사용하면 컴퓨터가 부팅돈 이후, 윈도우즈가 스스로 최신 보안 패치 또는 업데이트가 발표 되었는지 인터넷을 통해 확인하고, 자동으로 내려받아 설치하게 도와준다. 이때, 업데이트를 우선 내려받고 설치하기 전에 사용자에게 알릴 것인지, 아니면 내려받기 전과 설치하기 전에 모두 사용자에게 알릴 것인지 선택 할 수 있다.


2. 윈도우즈 보안패치와 서비스 팩의 차이점은 무엇인가?

- 윈도우즈 보안패치는 윈도우즈 운영체제의 보안 취약점이 발견될 때마다 마이크로소프트사에서 제작,배포한다. 보안 취약점이 발표되면, 공격자들은 즉각적으로 이를 이용하여 악성코드나 익스플로잇을 제작한다. 즉, 보안패치의 설치가 늦으면 늦을수록 상대적으로 보안에 취약해지고 공격당할 확률이 급격히 증가한다. 따라서 모든 윈도우즈 사용자는 보안패치가 설치되어 있는지 주기적으로 확인하고 반드시 설치해야 한다. 특히, 국가사이버안전센터 등에서 사이버위협에 대한 경보발령과 함께 보안패치의 설치를 당부하면 즉각적으로 조치를 취해야 공격에 노출되지 않는다.

- 반면, 서비스 팩은 이미 발매된 소프트웨어에 존재하는 문제점(보안에 관계없을 수도 있음)을 개선하거나 기능을 강화하기 위해 만들어진 것이다. 즉, 서비스 팩은 별도로 주문하거나 온라인상에서 내려받을 수 있는 일종의 기능 수정판이라고 할 수 있다. 물론, 발표된 보안패치도 나중에는 서비스 팩에 포함되기 때문에, 새로 발표된 서비스 팩을 이용하여 윈도우즈를 업데이트하면 이전에 발표된 모든 보안패치들도 동시에 적용된다.

- 보안패치는 일반적으로 발견된 하나의 보안 취약점만을 해결하고 있기 때문에, 지속적으로 관심을 가지고 보안패치가 발표될 때마다 반드시 설치해야 된다. 서비스 팩 역시 그 동안의 모든 보안 취약점을 해결할 뿐만 아니라 윈도우즈의 기능을 보다 강화시켜주기 때문에, 서비스 팩도 배포되는 즉시 설치하는 것이 좋다.


3. 윈도우즈 보안패치는 어디에서 내려받나?

- 윈도우즈 보안패치는 윈도우즈 업데이트, 자동 업데이트 또는, 보안패치를 제공하는 웹사이트(http://www.microsoft.com/korea/security)에서 각 보안패치를 내려받아 개별적으로 설치할 수도 있다.

- 보안패치는 전부 설치하는 것이 좋으며, 이전까지 한번도 보안패치를 하지 않았거나 오랫동안 보안패치를 하지 않았을 경우에는 최신 서비스 팩을 먼저 설치한 다음, 서비스 팩에 누락된 보안패치만을 별도로 설치하는 것이 좋다.


4. 백신이 이미 설치되어 있는데 윈도우즈 보안 업데이트도 해야 되나?

- 백신 프로그램은 컴퓨터 바이러스 감염 여부를 진단하고 감염된 파일을 치료하는 프로그램으로써, 윈도우즈 시스템의 근본적인 문제점은 해결하지 못한다.

- 반면, 윈도우즈 보안 업데이트란 윈도우즈 운영체제상의 보안 취약점이 발견되었을 경우, 이를 제거하기 위한 패치를 배포,설치함으로써 기존 운영체제를 수정하는 것이다.

- 해커나 웜,바이러스 제작자는 항상 윈도우즈 운영체제의 취약점을 발견하고 이를 악용하여 시스템에 침투 또는 파괴하려 한다. 따라서 보안 업데이트는 반드시 해야 된다.

- 특히, 최근에는 윈도우즈 운영체제의 취약점을 악용한 웜,바이러스들이 급증하고 있어 많은 사고로 이어지고 있기 때문에, 백신 프로그램을 사용한다 하더라도 반드시 보안 업데이트를 해서 웜,바이러스가 침투할 수 있는 경로를 사전에 예방하는 것이 좋다.


5. 윈도우즈 XP에서 공유폴더는 어떻게 찾아 제거하나?

- 윈도우즈 XP는 네트워크 컴퓨터 환경 관리를 목적으로 드라이브를 공유하는데, 이 공유폴더는 숨겨져 있으며 다음과 같은 방법으로 찾을 수 있다.

a. [시작]->[실행]-> 'cmd' 입력 -> DOS 창 생성
b. C:\>net share

- 예를 들어, 앞에서 설명한 방법으로 공유폴더를 찾아봤더니 C$, admin$, ipc$의 3개 폴더가 공유된 것으로 나타났을 때, 다음과 같은 명령을 실행하면 공유를 제거할 수 있다. (C$는 C 드라이브 공유, admin$와 ipc$는 관리 공유로 바이러스에 취약할 수 있으므로 제거하는 것이 좋다)

a. C:\>net share c$ /delete
b. C:\>net share admin$ /delete
c. C:\>net share ipc$ /delete

- 만약, 엑세스 거부로 제거되지 않는 경우 다음과 같이 registry를 편집하여 관리공유에 대한 외부 접근을 제한한다.

a. [시작]->[실행]-> 'regedit' 입력
* HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa
* Value Name : RestrictAnonymous
* Data Type : Reg_DWORD
* Value : 1
** 기본값으로 설정된 0을 1로 변경 : 공유폴더에 대한 접근을 제한한다.


6. NTFS를 사용하면 좀 더 안전하게 파일을 보호할 수 있나?

- 윈도우즈 2000 또는 윈도우즈 XP를 초기설치시 하드 디스크의 파일 시스템으로 NTFS, FAT, FAT32 중 하나를 선택할 수 있다. 일반적으로 NTFS 파일 시스템은 FAT이나 FAT32에 비하여 매우 안정적이며, 파일을 보호하기에도 적합하다. 특히, NTFS의 사용을 권장하는 이유는 다음과 같다.

* 도메인 기반의 보안 기능을 제공하는 액티브 디렉토리(Active Directory)를 제공하고 있다. 따라서, 윈도우즈 서버 제품군의 보안을 향상시키기 위해서는 NTFS를 사용하여야 한다.

* 폴더(하위 폴더 포함)마다 접근가능한 사용자를 별도로 또는 그룹별로 지정할 수 있다.

* FAT32는 관리자 계정, 제한된 계정 또는 표준 계정 등 계정 유형에 관계없이 모든 사용자가 하드 디스크의 모든 파일에 접근할 수 있다. 반면, NTFS에서는 제한된 권한의 계정을 사용할 수 있도록 지원한다. 이는 사용자가 접근할 수 있는 폴더를 제한할 수 있으며 폴더의 내용에 대한 임의 조작도 제한할 수 있다는 의미이다.

* 예전에는 제공되지 않던 암호화 파일 시스템이 도입되어, 중요한 시스템 파일들을 자동으로 암호화하여 저장하기 때문에 임의로 해당 내용을 변경하지 못하도록 되어 있다.

- NTFS는 그 밖에도 트랜잭션 로깅과 복구 기술을 사용하여 디스크의 일관성과 안정성을 향상시킨다. 만약 파일 시스템에 이상이 발생하면 이상에 대한 검사정보와 그동안 기록된 로그를 사용하여 파일 시스템을 복구하기도 한다.


7. 윈도우즈 XP 서비스 팩 2를 꼭 설치해야 하나?

- 윈도우즈 XP 사용자라고 해서 서비스 팩 2를 반드시 설치해야 하는 것은 아니지만 보안 향상 측면에서는 권장한다. 기존의 서비스 팩은 반드시 설치해야 하는 기능 수정판이었던 반면, 서비스 팩2에는 많은 보안 강화 요소들을 첨가하였기 때문에 기존의 서비스 팩들과는 조금 다른 측면을 가지고 있다. 서비스 팩 2는 다음과 같은 장점들이 있다.

* 전자우편의 첨부 파일 중 안전하지 않은 것을 사용자에게 알려주는 전자우편 보호기능이 있다.

* 웹을 검색하는 동안 개인 정보가 유출되지 않도록 보호하는 기능이 있다.

* 인터넷 익스플로러에 다운로드 모니터링 기능이 있어 안전하지 않은 파일을 내려받을 경우 알림 표시줄을 통해 경고한다.

* 웹을 검색하는 동안 팝업 창이 임의로 생성되지 않도록 차단한다.

* 강력한 기능을 보유한 방화벽이 내장되어 있다.

* 윈도우즈 보안센터 기능이 있어 보안 상태의 파악이나 보안 설정 관리를 중앙집중적으로 총괄할 수 있다.

* 자동 업데이트 기능을 향상시켜 더욱 편리하게 윈도우즈 업데이트를 설치할 수 있다.

* 아웃룩 익스프레스에 스팸메일 차단 기능이 추가됐다.

- 이상과 같이 서비스 팩2에는 다양한 보안 향상 기능이 추가되어 있어 설치하여 사용하면 보안 수준을 한층 높일 수 있다.


8. 개인 컴퓨터에서 불필요한 서비스는 어떤 것들이 있나?

- 윈도우즈를 평범하게 사용함에 있어 필요하지 않은 서비스들도 존재한다. 이러한 서비스를 중지시키면 시스템 속도를 향상시킬 수 있으며 자원을 보다 효율적으로 사용할 수 있다. 그러나 서비스를 중지시키기 위해서는 사용 환경과 목적에 따라 신중한 고려가 필요하다.


- 중지시키는 것이 효과적인 서비스

* Alerter
* Automatic Updates
* Computer Browser
* Cryptographic Services
* Distributed Link Tracking Client
* DNS Client
* Error Reporting Service
* Help and Support
* Messenger
* NetMeeting Remote Desktop Sharing
* Portable Media Serial Number Service
* Remote Registry
* Task Scheduler
* Wireless Zero Configuration


- 중지를 고려할 수 있는 서비스

* Application Layer Gateway Service
* Background Intelligent Transfer Service
* COM+ System Application
* DHCP Client
* Distributed Link Tracking Client
* Fast User Switching Compatibility
* Fax Service
* FTP Publishing Service
* IMAPI CD-Burning COM Service
* Indexing Service
* Net Logon
* NLA(Network Location Awareness)
* Print Spooler
* Protected Storage


- 중지시킬 때 신중을 기해야 하는 서비스

* Event Log, Human Interface Device Access, IIS Admin
* Internet Connection Firewall and Internet Connection Sharing
* Logical Disk Manager, Plug and Play


9. 불필요한 서비스는 어떻게 중지시킬 수 있나?

- 서비스를 중지시키기로 결정하였다면 다음과 같은 절차에 따라 중지시킬 수 있다.

a. [시작]->[제어판(클래식보기로 전환)]->[관리도구]->[서비스]-> '서비스 관리 콘솔' 출현
b. 마우스 오른쪽 버튼으로 중지시킬 서비스를 클릭
c. '중지' 선택

- 서비스를 다시 시작해야 할 경우에는 위의 c번에서 목적에 따라 '시작', '일시 중지', '계속', '다시 시작' 중 하나를 선택한다.


10. 프로그램이나 서비스별로 계정 관리는 어떻게 하나?

- 웜,바이러스 방지를 위해서는 사용자가 관리자 계정이 아닌 사용자 계정으로 로그인하는 것이 좋다. 윈도우즈 시스템을 안전하게 관리하기 위해서는 관리자 계정을 남용하지 말아야 한다. 대부분의 웜,바이러스는 관리자 계정일 경우에만 컴퓨터에 설치되기 때문에, 반드시 필요한 경우에만 관리자 계정으로 프로그램이나 서비스를 실행시키는 것이 안전하다. 프로그램에 대한 실행 계정은 다음과 같은 방법으로 지정할 수 있다.

a. 실행시키고자 하는 프로그램을 마우스 오른쪽 버튼으로 클릭
b. [다음 계정으로 실행]->[다음 사용자]->사용자 선택->패스워드 입력

- 서비스에 대한 실행 계정은 다음과 같은 방법으로 지정할 수 있다.

a. [시작]->[설정]->[제어판(클래식보기로 전환)]->[관리도구]->[서비스]
b. 서비스를 마우스 오른쪽 버튼으로 클릭 -> [속성]
c. [로그인]->[계정지정]-> 패스워드 입력


11. 윈도우즈를 바로 이전 상태로 복원할 수 있나?

- 윈도우즈에서는 시스템의 설정을 이전상태로 복원할 수 있다. 이 기능을 이용하면 저장된 문서, 전자우편, 웹에서 열어본 페이지 목록, 즐겨찾기 목록 등 최근에 작업한 내용을 손상시키지 않고 이전 지점으로 되돌려 준다. 시스템을 복원하는 방법은 다음과 같다.

a. [시작]->[모든 프로그램]->[보조 프로그램]->[시스템 도구]->[시스템 복원]
b. 재부팅 -> '복원 완료' 창 생성

[출처 : 국가보안기술연구소 http://www.nsri.re.kr/ ]