2011년 5월 25일 수요일

Chapter 3 Unix System 보안

Chapter 3 Unix System 보안

시스템 보안의 주요 목적은 시스템의 불법 침입을 막는 것이다. 시스템보안에서 가장 핵심 이슈가 되는 것이 계정명과 패스워드이다. 계정명은 보통 노출되어있다고 볼수 있다. 그래서 사용자나 관리자가 가장 신경써서 보호해야 하는 것이 패스워드이다. 즉 시스템에 접근할수 있는 1차 관문에 대한 강력한 방어인 셈이다.

시스템 관리자는 수시로 암호가 없는 계정이 있지 않은지 확인해야 한다. 또한 로그인 실패에 대한 접속시록을 수시로 살펴보아야 한다. 일반 사용자가 "su" 명령을 사용하여 "root"의 권한으로 시스템을 사용하였는지도 확인해야 한다. 시스템에 불필요한 서비스 포트가 열려있지는 않은지도 확인해 봐야 할 것이다.

이장은 "firewall" 제품의 소프트웨어를 설치하기 이전에 기본적으로 운영체제 레벨에서 시스템 관리자가 확인해야할 작업들에 대한 설명이다.
1.        "root"로그인
 /etc/default/login 파일은 로그인에 대한 디폴트 값을 정의하는데 사용되는 파일이다. 이 파일에서 root 로그인은 콘솔 터미널에서만 가능하도록 설정할수 있다.
CONSOLE=/dev/colsole
이 라인이 코멘트(#)처리되어있으면 #을 제거해준다. 시스템설치시에 설정되어 있으므로 확인만 해보면 된다.
"su"라는 명령을 사용하여 일반 사용자가 "root"로 유저변경을 할수 있다. 이런 경우 "su"명령사용에 대한 내용을 로그파일에 기록해두는 것은 중요한 일이다. /etc/default/su 파일은 "su"명령사용에 대한 기본 설정 파일이다.
SULOG=/var/adm/sulog
이 라인은 모든 su 명령어 사용에 대한 기록을 sulog 파일에 기록한다.
CONSOL=/dev/console
이 라인은 "su"사용에 대한 로그를 콘솔에 출력하도록 설정한다.
2.        암호없는 계정 확인
 시스템에 접속하게 된다면 불법 침입자를 대문열고 맞이하는 격이 된는 것이다. 시스템 관리자는 암호가 설정되어 있지 않은 사용자 계정을 수시로 확인해 봐야 한다. "-p" 옵션을 사용해서"logins"명령을 실행해본다. 이 명령은 "root"사용자만 실행할수 있는 명령이다. 아무것도 출력되지 않는다면 현재 이스템에서 패스워드를 가지고 있지 않은 계정은 없다. 솔라리스 시스템에서는 암호가 없는 계정은 시스템에 접속하지 못한다. 하지만 암호가 없는 계정인 경우 처음 접속시도시에 암호를 입력 하도록 요구한다. 즉 암호가 없는 계정을 먼저 발견한 사용자가 암호를 입력하고 사용한다면 막을 방법이 없다.
3.        비정상적인 로그인 접속 기록 확인
비정상적인 로그인 접속 시도 기록은 파일(/var/adm/loginlog)로 보관된다. 하지만 이 파일은 시스템 설치시 자동적으로 생성되지 않는다. 이 파일이 없으면 시스템은 로그인 접속 시도 로그를 생성하지 않는다.
# cd /var/adm
# touch loginlog
# chmod 600 loginlog
# chown root:sys loginlog
"loginlog" 파일에는 다섯 번 로그인에 실패하는 경우 자동적으로 기록이 남게된다. "5"번이라는 횟수는 관리자가 /etc/default/login 파일에서 "RETRIES=5" 라는 변수값으로 설정하고 있다.만약 3번 까지 retry를 허용하고자 한다면 이 파일에서 수정해 주면 된다. 여러분은 종종 시스템에 telnet과 같은 접속을 할 때 3번 패스워드명이 틀리면 telenet 접속이 끊어지는 경우를 보았을 것이다. 이 경우가 login에 설정된 변수값이 참조된 경우이다.
# tail /var/adm/loginlog
user01:/dev/pts/0:Mon Aug 11 12:00:01 2001
로그파일을 출력해보면 로그인에 실패한 사용자의 id, 접속을 시도한 터미널번호, 접속을 시도한 날자와 시간에 대한 정보를 볼수 있다.
4.        불필요한 서비스,포트 제거
 시스템이 부팅될 때 자동적으로 서비스를 제공하는 데몬 프로세스들이 구동된다. 이런 서비스 프로세스들은 /etc/rc.d/* , /etc/rc2.d/* , /etc/rc3.d/* 디렉토리안에 스크립트 파일들이 시스템 부팅시에 실행되므로 해서 가동된다. 이 디렉토리안에 있는 작업중 실제로 사용하지 않는 서비스들은 제거해주면 된다. 다른 디렉토리로 파일을 이동시켜둔다. 네트웍상의 서비스들은 보통/etc/inetd.conf 파일에서 설정하고 있다. 이 파일안에서 불필요한 서비스 포트들은 "#"문자를 사용하여 주석처리 하면된다. 자신의 시스템에 불필요한 포트가 열려 있지 않은지 점검하는 작업이  필요하다.

5.        방화벽 (Firewall) 시스템
네트웍 보안 시스템에 있어 가장 많이 채택되는 방법이 방화벽(Firewall System)의 설치이다.방화벽은 내부 네트웍과 외부 네트웍의 모든 오고가는 모든 통신에대해 감시하고, 허용되지 않는 접근을 막는다. 이로써 내부 네트웍은 불법적인 네트웍 침입이나 해킹으로부터 보호된다. 방화벽의 보안수준은 조직의 보안정책에 따라 제한의 강도를 틀리게할수 있다. 보안 수준을 높일수록 보안 강도는 높아지지만 통신에 제한이 많이 생기므로 사용하기가 불편해진다. 반면 보안 수준을 낮춘다면 인터넷 사용은 편해지지만 그만큼 보안 강도는 약해진다. 단순히 방화벽을 이용한 접근제어만으로는 진정한 보안이라 하기 어렵다. 정상적인 화일 교환을 이용한 바이러스의 침투, E-Mail 가로채기나 변조 등은 방화벽에서는 제어할수 없는 부분이다. 즉 방화벽 구축은 네트웍 보안의 일부분일 뿐이지 전부가 될수는 없는 것이다.

6.        ASET
ASET(Automated Security Enhancement Tool)은 솔라리스 8에서 제공하고 있는 시스템 보안 도구이다. 시스템 관리자는 ASET이 제공하는 관리도구로 보안등급을 낮음 (tune.low), 중간(tune.med), 높음 (tune.high) 중 하나로 지정해서 시스템을 감시할수 있다. ASET 소프트웨어를 사용하기 위해서는 SUNWast 패키지가 설치되어있어야 한다.
  • ASET 보안 레벨
    하위보안레벨
    중요한 시스템 파일의 소유자,접근권한이 시스템설치시와 같은지를 점검한다.
    중간보안레벨
    보안 위협이 발견되면 시스템 접근을 제한하기 위해 시스템 파일들을 약간 변경할수 있다.
    상위보안레벨
    최소한의 접근을 허용하기위해 시스템 변수값을 설정하여 시스템을 보호한다.
  • ASET에서 하는 일
    하는 일
    보고서명
    라우터가 방화벽으로 사용되는지 점검(IP forwarding 금지, in.routed데몬의 라우팅정보 방송금지 기능에 대한 확인)
    firewall.rpt
    umask, PATH값을 위해 .profile .login .cshrc 파일을 점검한다.
    env.rpt
    /etc/default/login 과 같은 시스템 설정파일의 내용을 점검한다.
    sysconf.rpt
    /etc/passwd /etc/shadow /etc/group파일의 무결성 점검
    usrgrp.rpt
    시스템파일 접근 권한 점검
    tune.rpt
    소유자, 접근권한, 중요한 파일의 크기 점검
    cklist.rpt
    EEPROM 보안 변수 점검(인텔버젼은 관계없다)
    cklist.rpt


    각각의 보고서는 /usr/aset/report/latest 디렉토리에 저장된다.
  • aset 명령
aset 명령 실행시 옵션을 사용하여 보안 레벨을 설정할수 있다.
# /usr/aset/aset -l high
aset: Using /usr/aset as working directory
Executing task list ...
firewall
env
sysconf
usrgrp
tune
cklist
eeprom
All tasks executed. Some background tasks may still be running.
Run /usr/aset/util/taskstat to check their status:
/usr/aset/utill/taskstat   [aset_dir]
Where aset_dir is ASET's operating directory, currently=/usr/aset.
....
aset의 7가지 임무가 모두 실행되었는지 확인할수 있는 명령이 taskstat라는 명령이다.
모든 작업 종료에 대한 상태정보는 /usr/aset/report/latest/taskstatus 파일을 확인해도 된다.
# /usr/aset/util/taskstat
Checking ASET rasks status ...
Task firewall is done..
Task 둪 is done.
Task sysconf is done.
....





댓글 없음:

댓글 쓰기

ETL 솔루션 환경

ETL 솔루션 환경 하둡은 대용량 데이터를 값싸고 빠르게 분석할 수 있는 길을 만들어줬다. 통계분석 엔진인 “R”역시 하둡 못지 않게 관심을 받고 있다. 빅데이터 역시 데이터라는 점을 볼때 분산처리와 분석 그 이전에 데이터 품질 등 데이...