LIDS(Linux Intrusion Detection System)로 보안시스템을 구축하자
작성자 정보
- 웹관리자 작성
- 작성일
컨텐츠 정보
- 7,403 조회
- 0 추천
- 목록
본문


(Build a Secure System with LIDS)
번역 : 이국현 (errai@hitel.net) | ||||
LIDS(Linux Intrusion Detection System)는 리눅스 커널을 강화한 커널 패치 이다. 본 문서에서는 LIDS를 가지고 무엇을 할 수 있으며, 어떻게 보안 리눅스시스템을 구축할 수 있는지에 대해 이야기하고자 한다.
1. 왜 LIDS 인가. 인터넷에서 리눅스의 인기가 확산됨에 따라, 현재의 GNU/Linux시스템에서 발견되는 보안 구멍들의 수가 늘고 있다. 독자들은 아마도 해커들에 의해 시스템을 쉽게 파괴시킬 수 있는 버그들이 리눅스 상에서 발견되었다는 이야기를 인터넷을 통해 접했을 것이다. 오픈 소스 프로젝트의 창조물로 리눅스가 만들어진 이후에, 보안 버그는 쉽게 발견할 수 있고, 또 빠르게 패치 될 수 있다. 그러나 보안구멍이 발표되었을 때 관리자의 게으름으로 버그 패치를 소홀히 할 경우, 시스템이 고장 나거나, 더 심한 경우에는 해커에 의해 루트를 빼앗길 수가 있다. 현재의 GNU/Linux 시스템에서 루트의 권한을 가진 해커는 그가 원하는 모든 것을 할 수 가 있다. 자 이제 과연 무엇이 문제이며 , 우리는 무엇을 할 수 있는지 알아보자. 현재의 GNU/Linux 시스템의 잘못된 점들 * 슈퍼유저(root)는 권한들을 남용하고 있다. 루트가 되면 원하는 모든 것을 할 수 있다. * 모듈은 커널을 가로채어 쉽게 사용할 수 있다. 모듈은 리눅스 커널을 만들 때 더 다양하고 * 프로세스는 보호되지 않고 있다. 웹 서버 데몬과 같은 유명한 프로세스는 해커들의 공격을 리눅스 보안에 관한 위의 설명을 보고, 우리가 어떻게 보안 시스템을 구축해야 할지 알겠는가? 우리는 보안커널을 가져야만 하고, 그 보안커널을 기반으로 하여 보안 시스템을 구축해야 한다. 이것이 LIDS가 하는 일이다.
2. LIDS의 특징 Linux Intrusion Detection System은 커널의 보안을 강화한 패치이다. LIDS를 설치하면 파일접근 선택, 모든 시스템/네트워크 관리 운영, 사용할 수 있는 권한, rawdevice, mem, 그리고 I/O access 등을 루트라 할지라도 접근할 수 없게 만들 수 있다. 또한 모든 시스템,네트워크, 파일시스템의 보안사항에 대한 제어 및 제어의 범위 설정이 커널안에 포함되어 보안을 강화할 수 있다. 여러분은 온라인상에서 보안 방어 및 중요한 프로세스 숨기기, 네트워크를 통한 보안 경호 받기 등을 할 수 있다. 결론적으로 LIDS는 리눅스 커널을 통해 침입자에 대해 보호, 탐지, 응답의 세가지 기능을 제공한다. * 보호(Protection). LIDS는 여러분의 하드 디스크에 있는 중요한 파일을 보호할 수 있다. * 탐지(Detection). 누군가 여러분의 호스트를 스캔했을 때 LIDS가 그것을 탐지하여 관리자 * 응답(Response). LIDS에 의해 보호되고 있는 시스템 상에서 누군가 시스템상의 규정을
3. LIDS로 보안 리눅스 시스템 구축하기 LIDS의 특징들을 이해했으리라 생각된다. 이제 어떻게 보안 시스템을 구축하는지 하나씩, 하나씩 알아보도록 하자.
3.1 LIDS 패치와 정식 리눅스커널 다운 받기 여러분은 LIDS 홈페이지 (http://www.lids.org)나 LIDS FTP Site(ftp://ftp.lids.org) 혹은 LIDS 미러싸이트 (http://www.lids.org/mirrors)를 통해 LIDS 패치를 다운받을 수 있다. 패치 이름은 lids-x.xx-y.y.y.tar.gz 의 형식으로 x.xx는 lids 버젼을 나타내고 y.y.y는 리눅스 커널 버젼을 나타낸다. 여러분은 정식 커널 버젼을 다운받아야 한다. 예를 들어 lids-0.9pre4-2.2.14.tar.gz를 다운받았다면 리눅스 커널 2.2.14 소스 코드를 다운로드 받아야 한다. 1. 리눅스 커널 소스 트리 압축 풀기 2. lids 소스 코드 압축 풀기
3.2 정식커널에 LIDS 패치하기 커널 소스와 LIDS를 다운로드 받은 후 압축을 푼다. 예를 들어 lids-0.9pre4-2.2.14.tar.gz 와 lids- 2.2.14.tar.bz2 를 다운받았다면 3. 리눅스 커널 소스에 lids를 패치 하기. # cd linux_install_path 4. LIDS를 사용하여 리눅스 커널을 컨피그 한다. 아래의 옵션을 켠다: LIDS를 위한 옵션들이 덧붙여 질 것이다.
5. 리눅스 커널을 컴파일한다.
6. bzImage를 /boot로 복사하고 /etc/lilo.conf 파일 편집한다. 7. 새로운 커널 인스톨을 위해 /sbin/lilo를 실행한다. # /sbin/lilo
3.3 lidsadm 프로그램 컴파일 하기 lidsadm은 LIDS를 관리하기 위한 유틸리티를 포함하고 있다. 이것은 여러분의 새로운 커널로 시스템을 재부팅 하기 전에 반드시 설치해야 한다.
컴파일이나 lidsadm 동작에 대한 자세한 내용은 LIDS 패키지에 들어있는 README를 참조하기 바란다.
3.4 LIDS 시스템 초기화 이제 리부팅하기 전에 반드시 여러분이 필요로 하는 보안설정에 맞게 LIDS 시스템을 configure 해야 한다. 보호해야 할 파일이나 프로세스에 대한 설정을 할 수 있다. 다음 장에서 이 주제에 대해 자세한 내용을 알아볼 것이다.
3.5 시스템 재부팅 여러분의 시스템을 configure한 후에 시스템을 재부팅 한다. lilo가 보일 것이고 LIDS가 탑제된 커널을 로드하도록 선택한다. 그 다음에 여러분은 LIDS의 놀라운 세계로 들어가게 된다.
3.6 커널 시스템을 부팅 한 후에 lidsadm으로 커널을 확인하는 것을 잊지 말아야 한다. /etc/rc.local 의 마지막 라인에 명령어를 입력시켜도 된다. # /sbin/lidsadm -I -- -CAP_SYS_RAWIO -CAP_NET_ADMIN lidsadm에 대한 모든 옵션의 세부 내용을 알고 싶다면 LIDS-HOWTO를 참조하도록 한다. (http://www.lids.org/lids-howto)
3.7 온라인 관리 커널을 확인한 후, 여러분의 시스템은 LIDS에 의해 보호받게 된다. 그것 위에서 각종 테스트를 할 수도 있다. 만약 옵션과 같은 설정된 내용을 바꾸고 싶다면 패스워드를 입력하고 LIDS Security level online으로 변경하면 된다. # /sbin/lidsadm -S -- -LIDS
4. LIDS 설정 이번 장에서는 LIDS 설정에 대해 이야기할 것이다.
4.1 파일 보호하기 첫째로, 여러분은 보호하려고 하는 파일을 정해야 한다. 대부분의 경우에서 /usr, /sbin, /etc, /var/log/와 같은 System binary files이나 system 설정 파일을 보호하려고 할 것이다. 둘째로, 그 파일을 보호하는 방법을 결정해야 한다. LIDS는 3가지 타입의 보호방법을 제공한다. * Read Only Files. 읽기 전용의 파일로 아무도 그 파일을 변경할 수 없게 된다. 사용법: 예제: 2. /etc/passwd 파일을 읽기 전용으로 보호 * Append Only Files. /var/log/message 나 /var/log/secure와 같은 시스템 로그 파일에 사용법: 예제: 2. apache httpd 로그파일들을 보호 # /sbin/lidsadm -A -a /etc/httpd/logs/ 아래는 LIDS-HOWTO에 나오는 Philippe Biond 의 예이다.
주의: 만약 /etc/lids.conf 파일을 읽기 전용으로 보호한다면 LIDS가 적용되지 않은 커널로 ‘lids.conf’ 파일의 위치를 고치기 위해서는 #DEFINE LIDS_CONF “/etc/lids.conf” 그리고 컴파일을 다시 하면 된다.
4.2 프로세스 보호 LIDS는 부모프로세스 init(pid=1)의 모든 프로세스들을 보호할 수 있다. 다음과 같은 특정한 옵션으로 실행시키면 된다. # lidsadm -I -- +INIT_CHILDREN_LOCK
4.3 능력 보호(Protect with capability) 능력(capability)은 프로세스에게 주어지는 특권과 같은 것이다. 루트 프로세스는 모든 능력을 가지고 있다. 그러나 능력에 대한 묶음이 존재한다. 일반적인 커널에서는 그 묶음에서부터 능력을 제거하면 다음 부팅때까지는 아무도 사용할 수가 없게 된다. LIDS는 여러분이 원할 때 언제든지 on off 스위치를 통해서 이런 행동을 조절할 수 있다. 그런 능력들 중 우린 두 가지에 대해 이야기 해보자. CAP_SYS_RAWIO 이 능력을 켜면 우리는 ioperm/iopl 과 /dev/port,/etc/mem,/dev/kmem에 대한 접근 및 raw block devices(/dev/[sh]d??)에 대한 접근이 허용된다. 우리가 이 능력을 금지시키면 , 우리는 raw device에서 시스템 권한의 모든 프로세스들을( lilo의 동작과 같은) 사용할 수 없게 된다. 그러나 XF86_SVGA와 같은 것을 동작하기 위해서는 이 능력이 필요할 것이다. CAP_NET_ADMIN 이 능력은 아래와 같은 기능을 가진다. 인터페이스 설정 보안상의 이유로 네트워킹 설정 변경을 금지할 때 위의 기능을 끄면 된다. 그것이 허락되지 않았을 때 firewall 규칙 변경은 허락되지 않는다. Choosing the capability and sealing the kernel 여러분은 커널적용시에 어떤 기능을 끌 것인지 정해야만 한다. 여기에 예제가 있다. rc 스크립트( rc.local, /etc/init.d/lids, /etc/rc.d/rc.d/init.d/lids, etc.) 에 다음 내용을 추가하면 된다. lidsadm -I -- -CAP_SYS_MODULE\ -CAP_SYS_RAWIO -CAP_SYS_ADMIN\ -CAP_SYS_PTRACE -CAP_NET_ADMIN\ +LOCK_INIT_CHILDREN
4.4 네트워킹 보안 LIDS로 네트워크 보안을 향상시킬 수 있다. network security with capability 각종 능력을 가지고 네트워킹 보안을 향상 시킬 수 있다. anti-snifferring과 같은 것은 1024보다 아래의 포트를 bind할 수 없다. routing 규칙이나 방화벽도 변경할 수 없게 된다. Scanner detector in kernel LIDS는 여러분의 시스템을 scan하려는 사람들을 탐지해낼 수 있도록 scanner detector를 제공한다. scanner는 nmap이나 satan과 같은 툴을 이용하여 half-open scans 혹은 nornam scans 등을 결정할 수 있다. 이때는 raw sockets을 사용불가로 하면 유용하다. 이런 경우에는 어떤 소켓도 사용할 수가 없게 된다. user space detector보다 한 차원 높은 보안 기능이 될 것이다.
4.5 침입자 반응 시스템 LIDS 는 정의된 규칙에 따라 위반사항을 결정할 때, 다음과 같은 방법에 의해서 행동에 반응할 수 있다. Logging the message 누군가 규칙을 위반했을 때 lids_security_log는 klogd에 메세지를 기록한다. 또한 anti_logging_flood의 능력도 가지고 있다. Logging the message via mail server LIDS는 여러분의 메일로 메세지를 보내는 새로운 특징을 가지고 있다. 메일서버의 ip와 주소등을 커널 컴파일할 때 정해줄 수 있다. Shutdown the console 사용자가 규칙을 위반했을 때 유저콘솔을 shutdonw시킨다.
5. 고마운 사람들 무엇보다도 먼저 나의 친구, Kate lee에게 고맙다고 전하고 싶다. 이 문서와 같은 여러 문서들을 적을 때 나에게 항상 용기를 불어넣어 주었다. 그녀에게 이 문서를 바친다. 그리고 이 프로젝트에 많은 공헌을 한 Philippe Biond 와 Christophe Long 에게 감사를 전한다. 그들이 없었다면 이 프로젝트는 지금과 같이 잘 발전할 수 없었을 것이다. 모든 LIDS 사용자들에게 또한 감사한다. 그들의 기고와 토론들이 없었다면 LIDS는 많은 위대한 아이디어들을 가질 수 없었을 것이다. |
관련자료
-
이전
-
다음