2012. 6. 14. 16:16

리눅스 보안관련 문서 #0 - 리눅스 서버 보안의 최근 동향과 기본 원칙  
리눅스 서버 보안의 최근 동향===================================================================
  
“해킹 및 크래킹, 더욱 증가”  
  
최근에 발생하고 있는 Linux 서버시스템에 대한 해킹(Hacking)사례는 더욱 증가하고 있습니다.
  
그 이유는 Linux 서버시스템이 많이 보급되었고, 그러한 Linux 서버시스템들이 인터넷데이타센터(IDC)에 많이  
입주해 있고, Linux 서버시스템을 이용하는 기업들이 일정수준의 시스템보안인력을 확보하지 않고 있고, 마지막으로
서버시스템 해킹방법을 익히는 동호회가 결성되고 있으며 해킹 방법과 관련자료가 많이 배포되고 있기 때문입니다.
  
요즘 해킹 사례의 가장 큰 문제점은 단순히 서버시스템에 침입을 한 기쁨과 오랫동안 그 침입상태가 노출되지 않도록  
하는 기쁨을 맛보는 수준을 넘어, 서버시스템에 있는 자료들을 삭제해 버리는 것입니다.  
  
이러한 파괴적인 해킹을 크래킹(Cracking)이라고 부르는데, 최근 크래킹 사례가 국내 여러 곳에서 발생하고 있습니다.
따라서, 해킹 및 크래킹에 서버시스템을 운영하고 있는 기업들은 나름대로 대비를 하는 것이 바람직합니다.
  
만약 서버시스템 운영자가 보안기술이 취약하다고 판단될 경우에는 보안전문업체에 서비스를 의뢰하는 것이  
바람직하며, 자체적인 대비나 보안전문업체에 서비스를 의뢰하지 않은 경우 서버시스템내에 있는 소중한 자료가  
불시에 손실을 당할 수 있으며, 손실된 자료를 100% 복구하기 어려우며, 그리고 자료 복구에 많은 비용을 필요로  
하게 됩니다.
  
해킹을 당한 사례를 보면 그 원인이 다양한데, OS에 내재되어 있는 기본 오류를 해킹한 것, 시스템에 등록된 이용자  
ID를 이용한 것, 불특정 다수가 접근 가능한 서비스의 취약성을 해킹한 사례가 대부분입니다.
  
서버시스템 해킹 후 그 서버시스템을 제3의 서버시스템을 공격하거나 해킹하는 중간 도구로 이용하는 사례가 많습니다.  
크래커들은 해킹된 시스템에 대량의 packet을 발생하는 program을 설치하여 제3의 서버시스템에게 대량의 packet을
전송합니다.
  
이 경우 제3의 서버시스템은 정상적인 이용자들의 packet을 처리할 수 없는 상황에 이르게 됩니다.
이것을 분산서비스공격(Distributed Denial of Service 공격, DDoS 공격)이라고 합니다.
[이러한 서비스공격을 받는 서버시스템들은 대응방안이 실질적으로 없는 상황입니다. 이로 인해 2000년 초에 미국의  
주요 Website들이 서비스를 제공하지 못하는 상황이 발생했었습니다.]
  
또는 제3의 서버시스템에 어떤 접근 가능한 서비스 포트(port)들이 있는지 탐색을 합니다.
이것을 포트스캐닝(Port Scanning)이라고 합니다.
  
아니면 현재 해킹한 서버시스템에 등록되어 있는 이용자들이 제3의 서버시스템에 접근할 때, 그때의 이용자 ID와  
password를 낚아채어 알아낸 뒤, 제3의 서버시스템으로 쉽게 Login 하기도 합니다.  
이것을 스니핑(Sniffing)에 의한 해킹이라고 합니다.
============================================================================================
  
리눅스 서버 보안의 기본 원칙 ==================================================================
  
“필요한 것만 운영하고, 접근을 최대한 제한”  
  
이 문서 앞부분의 “최근동향”에서 해킹을 당한 사례의 원인이 OS에 내재되어 있는 오류, 시스템에 등록된 이용자
ID 유출, 불특정 다수가 접근 가능한 서비스의 취약성 때문이라고 언급하였습니다.
  
OS에 내재되어 있는 오류는 OS Kernel을 Upgrade하는 것 방법 밖에는 없습니다.
따라서 시스템관리자는 OS Kernel에 대한 갱신정보를 주기적으로 파악해야 합니다.  
그렇지 않으면 OS 오류가 발표되자마자 초보적인 해커들이 그 정보를 가지고 인터넷에 있는 시스템들을 탐색하여
해킹을 하므로, 어떤 서버 시스템이나 해킹을 당할 수 있습니다.
  
시스템에 등록된 이용자 ID 및 비밀번호가 유출되어 해커가 시스템 안으로 들어올 경우 심각한 상황이 발생하게 됩니다.  
이 문서(보안안내, Linux, 00-10-01)에서는 시스템의 이용자 ID와 관계된 보안 대비에 대해서는 다루지 않습니다.
다만, 이용자의 비밀번호에 대소문자, 숫자, 기호를 포함하여 복잡하게 하고, 일정주기로 변경하도록 하며,  
비밀번호가 스니핑 등에 의해 노출되지 않도록 일반 telnet 보다는 secure shell (ssh)등을 이용할 것을 권장합니다.
  
불특정 다수가 접근 가능한 서비스들 web(http), dns(dns), mail(smtp, pop3), telnet, ftp 등은 해당 서비스를
제공하지 않는 경우를 제외하고는 해킹시도에 노출되어 있다고 할 수 있습니다.
따라서 이들 서비스를 제공한다고 가정할 경우 이들 program에 대해서는 지속적인 보완조치(patch)를 하여야 하며,
제공하지 않는 서비스 program은 수행하지 않는 것이 원천적으로 해킹시도에 노출되는 것을 피할 수 있는 방법입니다.  
  
필요한 서비스만을 수행시키는 방법에 대해서는 “/etc/inetd.conf 수정”과 “/etc/rc.d/init/의 파일들”에서 설명하도록
하겠습니다.
  
시스템 보안의 원칙에 대한 결론은 필요한 것만 운영하고, 특정한 곳으로부터의 접근만을 허용하라는 것입니다.
불특정 다수에게 노출되는 서비스 Daemon에 대해서는 지속적으로 Patch를 해주어야 합니다.  
============================================================================================
  

  
리눅스 보안관련 문서 #1 - chmod700 변경
  
리눅스의 명령어중에는 가장 많이 쓰이는 ls라든지 cd 명령어들이 있습니다.
여기에 나열되는 명령어들은 일반적으로 서버 관리자들만이 쓰는 명령어이며, 일반 클라이언트(유저)들은 거의
사용을 하지 않는 명령어 들입니다.
  
하지만, 작은 명령어 하나로도, 리눅스 서버가 해킹이 될 수 있음을 절대로 잊으시면 안됩니다.
따라서 일반 클라이언트들이 쓰지 않는 명령어들(사용할 필요가 없는 명령어들)에 대해서는 퍼미션을 운영자만이
사용할 수 있도록 변경 해 줄 필요가 있습니다.
  
chmod 700으로 변경해줘야할 명령어들
▶ /usr/bin/finger(chmod 700 적용) -- 현재 접속자 현황을 보는 명령어(계정명, 서버의 이용자등 내부정보 유출 방지)
▶ /usr/bin/nslookup(chmod 700 적용) -- 현재 네임서버의 상태를 보는 명령어(서버의 IP등 내부정보 유출 방지)
▶ /usr/bin/suidperl(chmod 700 적용) -- perl 명령어(CGI를 이용한 불법적인 루트권한 획득 방지)
▶ /usr/bin/whereis(chmod 700 적용) -- 파일 찾는 명령어(gcc, cc 등의 중요 파일 위치 보호)  
▶ /usr/bin/cc(chmod 700 적용) -- 컴파일 명령어(이용자가 해킹 프로그램 컴파일 방지)  
▶ /usr/bin/sperl5.00503(chmod 700 적용) -- perl 명령어(CGI를 이용한 해킹 방지)
▶ /usr/bin/pstree(chmod 700 적용) -- 데몬상태 파악(서비스중인 포트정보 유출 방지)
▶ /usr/bin/rlog(chmod 700 적용) -- 원격지 로긴(불법적인 원격지 해킹 방지)
▶ /usr/bin/rlogin(chmod 700 적용) -- 원격지 로긴(불법적인 원격지 해킹 방지)
▶ /usr/bin/which(chmod 700 적용) -- 파일 찾는 명령어(gcc,cc등의 중요 파일 위치 보호)
▶ /usr/bin/who(chmod 700 적용) -- 현재 접속자 현황(계정명, 서버의 이용자등 내부정보 유출 방지)  
▶ /usr/bin/w(chmod 700 적용) -- 현재 접속자 현황(계정명, 서버의 이용자등 내부정보 유출 방지)
▶ /usr/bin/top (chmod 700 적용) -- 시스템 정보 보기(시스템 사용 정보유출 방지)
▶ /usr/bin/find (chmod 700 적용) -- 파일 찾는 명령어(gcc, cc등의 중요 파일 위치 보호)
▶ /bin/mail (chmod 700 적용)  
▶ /bin/ps (chmod 700 적용)  
▶ /etc/hosts (chmod 700 적용)  
▶ /etc/hosts.deny (chmod 700 적용)  
▶ /etc/hosts.allow (chmod 700 적용)
▶ /usr/bin/lynx (chmod 700 적용)
▶ /usr/bin/wget(chmod 700 적용)
  
▶ /usr/bin/gcc(chmod 700 적용) -- 컴파일 명령어(이용자가 해킹 프로그램 컴파일 방지)  
▶ /usr/bin/c++(chmod 700 적용) -- 컴파일 명령어(이용자가 해킹 프로그램 컴파일 방지)  
▶ /usr/bin/make(chmod 700 적용) -- 인스톨 명령어(이용자가 해킹 프로그램 컴파일 방지)  
gcc, c++, make 명령어를 막게 되면 일반사용자들이 C언어로 작성된 프로그램을 컴파일하지 못하여 불평을  
호소하는 경우가 있는데, 이런 경우는 이 명령어를 사용할수 있는 그룹을 설정해 주면 됩니다.  
(일반적으로 wheel이라는 그룹을 많이 사용하며, 다른 그룹을 등록해서 사용해도 무관합니다.)
  

  
리눅스 보안관련 문서 #2 - anonymous ftp 막기
Anonymous ftp  
'anonymous'는 '익명의','무명의'라는 의미를 가진 형용사입니다.
즉, 익명의 사용자가 사용할 수 있는 FTP라는 의미를 갖는데, 쉽게 말하면 공개되어 있는 FTP사이트로 해당  
FTP서버에 그 서버의 계정이 없는 사용자도 접속하여 파일을 업/다운할수 있는 FTP서버를 말합니다.
  
취지는 좋지만, anonymous ftp는 해킹의 온상이 된다고 일컬어질 정도로 굉장히 위험한 서비스 입니다.
익명성을 가진 사용자가 서버에 접속하는것을 인증하는것이므로, 해커나 크래커들에게는 쉽게 서버에 접근 할 수  
있는 길을 내 주는것입니다.
  
anonymous ftp 막기
#vi proftpd.conf (/etc 에 위치)
중략
<Anonymous ~ftp> 에서
UserAlias anonymous ftp //이부분을 주석처리 해줍니다.
wq (저장후 종료)
  

  
리눅스 보안관련 문서 #3 - Telnet 사용 막기
Telnet은 원격지에서 자신의 서버에 접속해서 작업을 할 수 있는 상당히 유용한 서비스중의 하나입니다.
특히 Text기반이기때문에 속도도 상당히 빠르며, vi를 이용한 컴파일이나, 혹은 프로그램의 추가, 삭제등이 가능
하므로 인증된 사용자가 아닌 불법 침입자가 접속했을 경우 서버가 위험해질 확률이 높습니다.
  
Telnet에 접속하기 위해서는 계정 즉 ID와 패스워드가 필요합니다.
하지만, ID와 패스워드는 누출이 되었을 경우 특히 superuser 계정이 누출되었다고 가정했을 경우
superuser 계정을 획득한 사람이 서버를 스펨메일의 경유지로 사용한다던지, ICQ의 서버로 사용한다든지 하는
위험을 떠나서 자신의 데이터가 전부 불법 침입자의 손 안으로 들어가게 됩니다.
  
때문에, 계정으로만으로는 서버에 위치한 데이터를 완벽하게 지킬수 있다고 할 수는 없습니다.
하지만 인터넷에 연결 되기 위해서는 IP주소를 가지고 있어야 합니다.
이것을 이용해서 특정 IP에만 Telnet 서비스를 이용할 수 있도록 막아주는 설정입니다.
  
Telnet 사용 막기
ip 거부
#vi hosts.deny (/etc에 위치)
in.telentd:ALL
wq(저장후 종료)
  
ip 허가
#hosts.allow (/etc에 위치)
ALL : (IP 추가)
wq (저장후 종료)
  
저장후 다음과 같이 inet을 재시동 해 줘야 합니다.
#/etc/rc.d/init.d/inet restart
  
먼저 모든 IP를 막아준 다음, 허용된 IP만을 승인 해 주도록 하면 됩니다.
  

  
리눅스 보안관련 문서 #4 - Ping사용 막기
ping은 회선의 속도를 체크 해주는 좋은 명령어지만, 악용을 했을경우 서버에 많은 피해를 줄 수 있습니다.
실질적으로 서버의 이용자 ID를 해킹하는 형식의 해킹이 있기도 하지만 해킹의 종류에는 서비스를 하지 못하도록
하거나 혹은 서비스 이용에 지장을 주도록 하는 해킹도 있습니다.
  
'ping공격'이라고 일컬어지는 이 해킹방법은 서버에 부하를 계속적으로 줌으로써, 서비스의 이용에 지장을
주도록 할 확률이 높습니다.
  
'ping 공격'을 막기 위해서는 다음과 같이 프롬프트상에서 작성해주시면 됩니다.
#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all //ping 막기
#echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all //ping 열기
  

  
리눅스 보안관련 문서 #5 - chkconfig 사용법(부팅시 수행되는 서비스)
자신의 서버를 부팅할 경우 어떤 데몬이 살아있고, 어떤 데몬이 죽어있고, 어떤 데몬을 사용할 수 있는가를
아는것이 해킹을 막을 수 있는 가장 유용한 방법입니다.
  
chkconfig를 이용하여, 데몬중에 반드시 있어야할 데몬을 남겨두고는 전부 죽이는게 해킹을 방지할 수 있는 지름길
입니다.
  
#chkconfig --list (/sbin 밑에 위치)  
#chkconfig --help (참고)
#chkconfig --level 3 sendmail off (사용방법예)
  
#chkconfig --list (하면 나오는것들)
xfs 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔  
anacron 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔
apmd 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔  
arpwatch 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔
atd 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔
keytable 0:끔 1:끔 2:켬 3:켬 4:켬 5:켬 6:끔
gpm 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔  
inet 0:끔 1:끔 2:끔 3:켬 4:켬 5:켬 6:끔
netfs 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔
network 0:끔 1:끔 2:켬 3:켬 4:켬 5:켬 6:끔  
random 0:끔 1:켬 2:켬 3:켬 4:켬 5:켬 6:끔
ipchains 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔  
pcmcia 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔
kdcrotate 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔
kudzu 0:끔 1:끔 2:끔 3:켬 4:켬 5:켬 6:끔
linuxconf 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔
lpd 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔
nfs 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔
nfslock 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔
identd 0:끔 1:끔 2:끔 3:켬 4:켬 5:켬 6:끔
portmap 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔
rstatd 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔
rusersd 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔
rwalld 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔  
rwhod 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔
sendmail 0:끔 1:끔 2:켬 3:켬 4:켬 5:켬 6:끔
syslog 0:끔 1:끔 2:켬 3:켬 4:켬 5:켬 6:끔
snmpd 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔
crond 0:끔 1:끔 2:켬 3:켬 4:켬 5:켬 6:끔
ypbind 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔
yppasswdd 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔
ypserv 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔
proftpd 0:끔 1:끔 2:끔 3:켬 4:켬 5:켬 6:끔  
named 0:끔 1:끔 2:끔 3:끔 4:끔 5:끔 6:끔  
  
이중 켜야할것은 보통 9개정도밖에 안됩니다.  
3번레벨을 기준으로, keytable,inet, network,random,kudzu,sendmail,syslog, crond,proftpd 나머지는 off  
시켜주는것이 바람직합니다. (자기의 환경에 맞춰서 설정해주시기 바랍니다.)
  
참조문서는 http://www.osfs.net/redhat/security-guide-01.doc
  

  
리눅스 보안관련 문서 #6 - find 관련 명령어
find 명령어는 쉽게는 파일을 찾을때 사용하지만, 특히 자신의 서버에 불법 침입자가 들어와서 어떠한 일을
했는지 알아낼때도 사용할 수 있습니다.
  
특히 find 명령어를 이용한 백도어 탐색이라던지 해커가 심어놓은 파일들을 검색해서 두번다시 같은 방식으로  
자신의 서버에 불법 침입자가 들어오는것을 방지 해야 합니다.
  
#find /dev -TYPE f // /dev/MAKEDEV만떠야함 (백도어 찾기)
일반적으로 크래커들은 백도어는 하나두개정도가 아니라 만들수 있는만큼 만들고 나간다고 생각하시면 됩니다.  
게다가 백도어는 찾기도 힘들지만, 복구하기도 상당히 힘듭니다. 따라서 해킹 혹은 크래킹을 당했다고 생각이 드시면
중요한 문서들을 백업을 하시고 리눅스를 다시 설치하는걸 권장해 드립니다.  
  
위의 명령어로 물론 백도어를 찾을수는 있지만, 찾을 수 있는 백도어는 한두개에 불과할 것입니다.
  
#find / -ctime -1 //하루동안 만들어진 화일 (해킹당한듯 싶으면 확인 )  
절대로 위의 명령어를 신뢰하지 마시기 바랍니다.
해커나 크래커는 자신이 왔다간 흔적을 결코 남기는일이 없습니다.(초보 해커, 크래커일경우는 모르지만..)
심지어 그날 만들어진 혹은 수정된 화일의 날짜를 변경해놓고, 또한 로그파일까지 지우고 나가는게 해커/크래커 입니다.
단지 위의 명령어로 참고만 하시기 바랍니다.
  
#find / -nouser (화일에 소유자가 없는 경우의 화일)
리눅스의 모든 파일과 디렉토리에는 소유자가 다 붙습니다.
따라서 일반사용자의 사용 디렉토리에서 화일에 소유자가 없다는것은 한번쯤 의심을 해볼필요가 있습니다.
  
#find /home/khsheen -user root  
(일반사용자인데 root로 되어 있는 화일도 의심해볼 필요가 있습니다)

  
리눅스 보안관련 문서 #7 - ./etc/inetd.conf 파일의 수정
./etc/inetd.conf 파일은 네트워크의 서비스를 정의하고 있는 파일로서, 정의되어진 서비스가 많이 있습니다.
따라서, 보안 사고를 막기 위해서는 반드시 필요한 서비스 외에는 차단하는것이 좋습니다.
  
기본적으로 telnet, ftp, pop3 이외의 서비스들은 주석처리 할것을 권장드립니다.
물론 다른 서비스는 닫아놓았는데, 이외의 것이 열려있다면 해킹의 가능성이 있습니다.
이때는 다시 그 서비스를 주석처리 하고 다음과 같은 명령어로 확인하시기 바랍니다.
  
#ps -ef | grep inetd // 프로세스 확인
#kill -HUP PID //리셋
  
#vi inetd.conf (/etc에 위치)
telnet
ftp
pop3
// 나머지는 주석처리
wq (저장후 종료)
  
* 팁> 프로세스를 죽일경우 다음과 같은 명령어로 죽일 수 있습니다.
#kill -9 PID
  

  
리눅스 보안관련 문서 #8 - 스펨메일/메일폭탄 대처요령
스펨메일이나 메일밤은 ping공격과 마찬가지로, 서버에 부하를 주는 일명 '버퍼오버플로우 공격'의 일종입니다.
'서버에 부하를 줘봤자 얼마나 주겠어?'라고 생각하실진 모르지만, '서버'라는 컴퓨터는 보통 PC와는 달라서,  
대부분의 서버의 경우 Dual CPU를 가지고, 최소 2Mbps급 이상의 인터넷 회선에 묶여서 작동이 되므로,
초당 몇십개의 메일을 보낼 수 있습니다.
  
초당 몇십개는 1분에 최소 200~300개의 메일을 날릴 수 있다는 말인데, 이 공격을 한개 서버에서 계속 받게 되면  
1시간이면 12,000~ 20,000개의 메일을 처리해야 합니다.
  
때문에 서버는 자연스럽게 느려질 수 밖에 없으며, 정상적인 웹 서비스를 하기보다는 받은 메일 처리에 훨씬 많은
리소스를 할애할 수 밖에 없습니다.
  
이 공격을 당했을때 다음과 같이 현재 메일폭탄 혹은 스펨메일이 날아오는 IP에 대해서 block을 해놓으시면 됩니다.
access 수정 (/etc/mail 에 위치)
access 화일은 메일을 보낼수 있도록 RELAY를 하는 기능을 합니다.
이 화일을 열어 공격 호스트의 아이피를 막아주면 됩니다.
  
#vi access (/etc/mail)  
localhost.localdomain                                         RELAY
localhost                                                           RELAY  
127.0.0.1                                                            RELAY
211.***.***.*** (자기 아이피)                                RELAY
ip                                                                      REJECT(스팸메일이 날아오는 IP 막기)
wq (저장후 종료)
  
access file을 데이터 베이스화 하기
#makemap hash /etc/mail/access < /etc/mail/access
  
  
  

  
리눅스 보안관련 문서 #9 - 해킹이 확실한 경우 대처요령
해킹을 당했을 경우에는 많은 방식의 대처요령이 있습니다.
공격 호스트에 대한 파이어월/라우터/시스템등에서 차단하는 방법, 공격 호스트에 대한 역공격 방법등 많은 대처 요령
이 있지만, 대부분의 공격 호스트들은 공격을 했던 해커/크래커의 중간 경유지 역할밖에 안돼는 경우가 허다합니다.
  
그렇다고 해서 공격에 대해서 묵인만을 한다면, 공격을 했던 해커/크래커들은 지속적으로 다른 방식의 공격을
계속 하게 되며, 몇차례 공격을 막을수는 있겠지만 결국 해킹을 당하게 될 것입니다.
  
적극적인 공격 대응이 다음에 일어날 해킹/크래킹을 미연에 방지 할 수 있는 진정한 대응법입니다.
먼저 공격을 당했다면, 공격 사이트의 주소, 연락처등을 알아 내는게 중요합니다.
  
하지만 웹 서버를 살리는것이 급선무입니다.
웹 서버가 계속적으로 서비스 되지 않을 경우 업체의 신인도와 밀접한 관계를 맺게 되므로, 다음과 같이 하셔서 먼저
웹 서버를 다시 구동시키신 후, 중요 파일을 백업받고 리눅스를 다시 설치하시는게 가장 빠른 복구 방법입니다.
  
해킹을 당했을 경우, 급한 나머지 서버를 종료 시키시거나 리부팅 시키시면 재부팅이 안되거나 혹은 데몬이  
살아나지 않을 확률이 굉장히 높습니다. 특히나 서버가 KIDC에 있기 때문에 사무실이나 자택에서는 Telnet접속으로  
최소한의 응급 조치는 하고 난 다음 서버를 재 세팅하러 이동하셔야 합니다.
  
다음과 같이 하시면 최소한 리부팅은 됩니다.
#/etc/rc.d/rc.SYSinit 권한을 755로 줍니다.
  
사실상 해킹을 당했을 경우 가장 좋은 방법은 port(랜선)을 제거하는(인터넷과 접속을 끊는)것입니다.
그다음 설치된 해킹툴을 제거해야하는데, 앞에서도 말씀 드렸지만, 백도어나 해킹툴을 100% 찾고, 제거하는것보다
다시 설치하시는걸 권장 드립니다.
  
하지만 그게 어려울 경우 혹은 응급조치로는 다음과 같이 프로세스를 확인해서 해킹툴을 제거할 수 있습니다.
shell-prompt> kill -9 이상한 프로세스 id
  
마지막으로 중요 data를 백업하신 후 재 설치를 권장 드립니다.
  
자신의 서버에 조치를 취하셨다면 이제는 해커/크래커를 추적을 해야 합니다.
앞에서도 말씀 드렸지만 적극적인 대응법만이 자신의 서버를 안전하게 지킬 수 있는 방법입니다.
  
관련 공격 사이트의 정보는 도메인 주소나 IP 주소로 나타납니다.  
각종 로그파일들(리눅스 기본 로그파일은 공격자가 지우고 접속을 종료했을 확률이 높습니다.)을 바탕으로  
위의 도메인 주소 혹은 IP주소를 먼저 추적을 합니다.
  
DNS nolookup, traceroute, whois 기능을 제공해주는 윈도우 공개 도구들은 여기 있습니다.
Netlab : http://www.listsoft.com/eng/programs/pr134.htm
tucow : http://tucows.mirror.ac.uk/dns95.html
  
IP주소나 도메인 주소를 알았다면 다음 사이트에서 보다 많은 정보를 얻으실 수 있습니다.
국내에 공격 호스트가 있을 경우 : whois.nic.or.kr
공격 호스트가 최상위 도메인일 경우 : http://www.arin.net/whois/arinwhois.html
공격 호스트가 Asia - Pacific 지역일 경우: http://www.apnic.net/apnic-bin/whois.pl
공격 호스트가 유럽 지역일 경우 : http://www.ripe.net/db/whois.html
  
위의 자료를 바탕으로 침해 사고 대응팀에 연락을 하시면 됩니다.
※ 참고 : 한국 침해사고대응팀
전화 : (02) 3488-4119
팩스 : (02) 3488-4129  
E-mail : cert@certcc.or.kr  
핫라인 : 018-312-4119
  

  
리눅스 보안관련 문서 #10 - 기타 보안 관련 내용
기타 보안 관련 내용에서는 앞에서 다루지 않았던 기타 보안내용들을 다루고 있습니다.
여기에서는 .inc 파일의 위험성, 사용자들의 패스워드 관리, shell 없에기, 보안 패치하기, 해킹 관련 소식 접하기  
등의 내용을 다루고 있습니다.
  
1) .inc 파일의 위험성
  
만약 자신의 서버에 php와 mysql db가 설치 되어있다면 가장 최근에 이슈가 되었던 inc파일에 대해 읽어보시기
바랍니다.  
먼저 .inc 파일이란? inclued 시키는 파일의 확장자를 많은 프로그래머들이 .inc로 저장을 하고 있습니다.
일종의 버릇을 이용한 해킹으로 프로그래머들이 .inc로 include시키는 버릇을 이용한 해킹 방법입니다.
  
대부분의 프로그밍, 특히 웹 프로그래밍의 경우 db를 열었다 닫았다 하면서 유출 될 수 있는 db의 ID와 패스워드를
숨기기 위해서 include를 사용하는데, 웹상에서 공개된 소스에는 파일명이 대부분 connect.inc를 사용합니다.
하지만 웹 서버는 .inc에 대한 확장자의 정보를 가지고 있지 않고있기 때문에, .inc 파일을 브라우져상에서 직접
읽어들이면, 해당 .inc 파일이 다운로드 되는 맹점이 있습니다.
  
위의 버릇과 웹 서버의 맹점을 이용해서 db의 ID와 패스워드가 누출됨으로써, 해킹을 당했던 사례가 있습니다.
다음과 같이 설정하셔서 .inc 파일을 php와 같이 인식시키도록 하시면 위와 같은 해킹을 방지할 수 있습니다.
  
웹 서버의 설정파일 (httpd.conf)를 엽니다.
#vi httpd.conf (/usr/local/apache/conf/ 에 위치)
AddType application/x-httpd-php .php .html .php3 .php4 .phtml .inc
AddType application/x-httpd-php-source .phps
  
위와같이 설정 해 주시면, .inc 파일이 .php와 동일하게 인식이 되므로, 노출을 막으실 수 있습니다.
또한 telnet, ftp 사용시 group을 같게 해주고 각 계정의 root Directory를 퍼미션을 705로 처리해 주면 다른 유저가  
다른 사용자의 계정에 들어 갈수가 없습니다.
  
만약 755로 한다면 다른 유저에게도 읽을 권한이 생겨서 connect 스크립트를 읽을 수 있어 db접속 아이디/passwd를  
얻을수 있습니다.
  
2) 사용자들의 패스워드 관리
등록된 사용자(클라이언트)들의 패스워드를 자주 갱신하게 만듦으로써, 해킹의 위험성을 줄일 수 있습니다.
shell-prompt>vi /etc/login.defs
이중 아래의 스크립트를 일정기간 설정해서 사용자들의 패스워드를 바꾸게 만듭니다.
  
PASS_MAX_DAYS 99999 //이부분을 일정기간으로 잡아주면 됩니다.
  
3) shell 없에기
쉘(Shell)이란? 셀은 사전적인 의미처럼 리눅스 운영체제를 감싸고 있는 껍데기입니다.  
즉, 사용자로 부터 입력을 받아 이르 해석하여 해당하는 명령을 찾아 그에 따른 작업을 리눅스 커널에 요청하고,  
작업 수행 결과를전달 받아 이름 다시 사용자에게 나타내주는 명령 해석기 역할을 담당합니다.
MS-DOS 의 'command.com'과 같은 역할을 수행합니다.  
  
shell의 종류는 다음과 같이 있습니다.
이름 위치 설명
Bourne Shell /bin/sh 모든 유닉스에서 기본적으로 제공되는 쉘이지만, 기능이 미약하여 이후기능을 보강한 많은 다양한 쉘들이 등장했습니다.
간단히 스크립팅을 지원하기 때문에 대부분의 쉘 스크립트들이 boune shell을 기준으로 제작되었습니다.



C Shell /bin/csh BSD계열 유닉스의 광범위한 배포에 따라 상당히 많은 사용자를 확보하고 있는 쉘로써, 스크립트 구문이 C언어와 유사하여 C Shell 이라 불립니다.

TC Shell /bin/tcsh 공개 소프트웨어로, C Shell의 기능을 모두 지원하며, Emacs편집기와 유사한 라인 편집 방식을 지원합니다.

Korn Shell /bin/ksh 대부분의 유닉스 시스템에서 표준으로 사용하고 있는 쉘로서, C Shell과 TC Shell의 기능을 모두 지원합니다.

BASH(Bourne Shell Again shell) /bin/bash 리눅스에서 기본적으로 사용되는 쉘로서 FSF의 GNU 프로젝트의 일환으로기존의 유닉스 쉘들을 대체시킬 목적으로 제작되고 있습니다.
기존 쉘들의 장점들을 모두 수용하고 있으며 스크립트는 Bosurne Shell과 호환이 됩니다.




[표 10-1 shell의 종류와 역할]
  
메일 계정만 사용하는 경우, 즉 shell이 필요없는 사용자가 맣은데 특히 웹 호스팅 사용자의 경우 이런 경우가 많습니다.
이경우 shell을 최대한 주지 않음으로써, 해킹의 확률을 조금이나마 줄일 수 있습니다.
  
shell-prompt>vipw
khsheen:x:500:502::/home/gdm:/bin/false
위의 설정으로 khsheen이라는 유저에게 shell을 부여하지 않게 됩니다.
  
특히 서버에 등록된 사용자가 많은경우 사용자가 관리에 신경을 많이 써야하는데, 'last'명령을 사용하여,  
자주 telnet으로 접속하는 사용자는 history를 자주 살펴보는것이 좋습니다.
shell-prompt>last | grep pts
  
4) 보안 패치하기
서버 보안에서 가장 중요한것은 역시 패치입니다.
서버에 버그가 발견되면, 해커나 크래커 역시 그것을 바로 발견한다고 생각하면 됩니다.
(실지로 해커나 크래커가 버그를 이용해서 불법 침입을 함으로써, 버그가 발견되는 경우가 많습니다.)
서버에 최신 패키지를 설치하는것은 위의 경우를 최소한으로 줄이는 역할을 하며, 때문에 보안 뉴스를 많이, 또한
빨리 접하는것이 굉장히 중요한데, 특히 커널 업데이트는 상당히 중요합니다.
  
커널 최신정보를 확인하기 위해서는 다음과 같이 하시면 됩니다.
shell-prompt>finger @www.kernel.org
[zeus.kernel.org]
The latest stable version of the Linux kernel is: 2.2.17
The latest beta version of the Linux kernel is: 2.4.0-test11  
The latest prepatch (alpha) version *appears* to be: 2.4.0-test12-pre4
  
여기에서 보면 Linux kernel is : 2. 2. 17이라는 부분이 있는데 이 부분으로 버전을 알 수 있습니다.
맨 앞의 2는 획기적인 변화가 있을경우를 나타내는 숫자이며, 다음 2의 경우 안정화 버전과 개발화 버전을 나타내는
숫자입니다.(홀수일 경우 개발화 버전이며 짝수일 경우 안정화 버전입니다.)
맨 뒤의 17은 몇번의 패치가 있었는지를 나타내는 숫자입니다.
  
그리고 기타 패키지에 대한 버그는 빨리 접하고 패치를 해야 합니다.
가장 많이 쓰는 레드햇인 경우 다음에서 확인하실 수 있습니다.
http://www.redhat.com/support/errata/index.html
  
5) 해킹 관련 소식 접하기
해킹 관련 홈페이지나 웹 사이트를 참조하시는것도 좋지만 다음의 홈페이지는 알아놓으시는게 좋습니다.
한국 정보 보호 센터 : http://certcc.or.kr/
해커스 뉴스 : http://www.hackersnews.org/
시큐어 뉴스 : http://www.securenews.co.kr/
  

  
리눅스 보안관련 문서 #11 - 포트 스켄 및 열린 포트 관리하는 법  
포트 스켄(Port Scan)은 어떻게 보면 양날의 검과 같습니다.
서버 관리자에게의 포트 스켄은 보안의 역할을 하기 좋지만, 해커나 크래커들에게는 불법 침입에 반드시 필요한
도구 입니다.
  
기본적으로 포트스켄 툴을 사용하면, 현재 자신의 서버의 포트에 대한 정보를 알 수 있습니다.
포트스켄이 없는 경우 다음과 같이 입력하시면 자신의 서버의 포트를 체크할 수 있습니다.
  
netstat -an
  
위의 명령어를 입력하면 포트 번호, 접속상태, 접속자 ID를 얻을 수 있습니다.
여기에서 접속 상태는 다음과 같습니다.
Listening : 현재 열린 포트로써, 누군가의 접속을 기다리는 포트
Established : 정상적으로 연결이 된 포트
Time_wait : 접속 후 다른 명령이나 신호를 기다리는 상태
  
그중 열린 포트 번호를 적으시고 아래 표를 참조하여 필요하지 않은 서비스 데몬이 실행중이면 닫아주시면 됩니다.
이런 데몬 실행 상태는 /etc/inetd.conf 파일을 열어보시면 됩니다.
해당하는 서비스를 실행하지않고 싶을 경우 # 주석문으로 처리하면 됩니다.
  
리부팅했을 때 적용하고 싶은 경우에는 아래 KIDC 서버 보안책에 나온 방법을 참조하시기 바랍니다.
listen,Established,Time_wait 이라고 나와 있지 않으면 실행이 되고 있지 않으므로 걱정안하셔도 됩니다.  
데몬 기능, 실행확인, 중지방법 권장여부
Amd  Automount데몬, 해당서버의 파일접근시 자동으로 마운트
# rpcinfo -p localhost => 실행 확인
# /etc/rc.d/init.d/amd stop => 실행 중지
# chmod a-x /etc/init.d/amd => 다음 boot시에 실행중지  아니요
Boot paramd 구형 Sun 워크스테이션 boot시 필요한 데몬
# rpcinfo -p localhost
# /etc/rc.d/init.d/bootparamd stop
# chmod a-x /etc/rc.d/init.d/bootparamd  아니요
Gated OSPF 라우팅 데몬, 현재 한양대학교 시스템은 라우팅 필요없음
# netstat -a => UDP 포트 520 번이 열려있는지 확인
# /etc/rc.d/init.d/gated stop
# chmod a-x /etc/rc.d/init.d/gated  아니요
Httpd WWW 서비스 데몬
# netstat -a => TCP 포트 80 번이 열려있는지 확인
# /etc/rc.d/init.d/httpd stop
# chmod a-x /etc/rc.d/init.d/httpd  웹서비스필수
Ircd 인터넷 채팅 데몬(Internet Relay Chat)
# netstat -a => TCP 포트 4400,6667,6668,7000
UDP 포트 7007 이 열려있는지 확인
# /etc/rc.d/init.d/ircd stop
# chmod a-x /etc/rc.d/init.d/ircd  사용시에만
Lpd  프린터 데몬, lpr 명령어 사용시 사용되어짐
# netstat -a => TCP 포트 515번이 열려있는지 확인
# /etc/rc.d/init.d/lpd stop
# chmod a-x /etc/rc.d/init.d/lpd  프린터없으면
불필요
mcserv MC(Midnight Commander)의 서버, 외부에서 MC를 이용해 접속가능
# netstat -a => TCP포트 3,1024 번이 열려있는지 확인
# /etc/rc.d/init.d/mcserv stop
# chmod a-x /etc/rc.d/init.d/mcserv  아니요
named DNS 서비스 데몬(도메인 이름을 IP로 바꾸는 서비스)
# netstat -a => TCP,UDP 포트 53번이 열려있는지 확인
# /etc/rc.d/init.d/named stop
# chmod a-x /etc/rc.d/init.d/named  멀티도메인경우
nfs nfs(Network File System) 데몬을 띄우는 스크립트
rpc.nfsd, rpc.mountd 데몬이 수행, nfs 서버로 운영되는 경우만 사용
# rpcinfo -p localhost => mountd와 nfs가 등록되었는지 확인
# /etc/rc.d/init.d/nfs stop
# chmod a-x /etc/rc.d/init.d/nfs  아니요
portmap RPC 서비스 연결을 제어하는 역할을 수행
# netstat -a => TCP,UDP 111번이 열려 있는지 확인
# /etc/rc.d/init.d/portmap stop
# chmod a-x /etc/rc.d/init.d/portmap  꼭 닫을것  
routed RIP 라우팅 프로토콜 데몬
# netstat -a => UDP 포트 520번이 열려있음
# /etc/rc.d/init.d/routed stop
# chmod a-x /etc/rc.d/init.d/routed  아니요
sendmail  e-mail을 주고 받는 데몬
메일서버로 사용하지 않은 경우 필요 없음
# netstat -a => TCP 포트 25번이 열려져 있는지 확인
# /etc/rc.d/init.d/sendmail stop
# chmod a-x /etc/rc.d/init.d/sendmail  필요에따라
smb Samba 서비스(리눅스와 윈도우의 파일이나 프린터자원 공유) 제공,
smbd, nmbd 데몬을 수행
# netstat -a => TCP 포트 139, UDP 포트 137,138 확인
# /etc/rc.d/init.d/smb stop
# chmod a-x /etc/rc.d/init.d/smb  아니요
snmpd 네트워크 상황을 모니터링할 때 사용되는 데몬
# netstat -a => UDP 포트 161번 확인
# /etc/rc.d/init.d/snmpd stop
# chmod a-x /etc/rc.d/init.d/snmpd  아니요  
squid HTTP,Gopher,Ftp등의 캐싱을 담당하는 프락시 데몬
# netstat -a => TCP 포트 3128, UDP 포트 3130 확인
# /etc/rc.d/init.d/squid stop
# chmod a-x /etc/rc.d/init.d/squid  아니요
syslog  시스템에서 일어나는 여러가지 상황을 기록해주는 데몬
다음의 명령어는 syslog를 작동하지 못하게 하는 것임
정상 작동중이라면 아래의 중지 및 변경 명령어를 수행하지 말 것
# netstat -a => UDP 포트 514 번 확인
# /etc/rc.d/init.d/syslog stop
# chmod a-x /etc/rc.d/init.d/syslog  사용필수
xntpd 현재시간을 세계유명 time 관련 사이트에 주기적으로 비교하여
시간을 맞추어주는 NTP(Network Time Protocol) 데몬
# netstat -a => UDP 포트 123 번 확인
# /etc/rc.d/init.d/xntpd stop
# chmod a-x /etc/rc.d/init.d/xntpd  아니요
inet  인터넷 관련 데몬(telnetd, ftpd, fingerd, rlogind 둥)을 실행 시킬수 있게 하는 데몬,
일반적으로 수행하고 해당 서비스 데몬을 수행하지 못하도록 inetd.conf 파일을 수정함
# /etc/rd.d/init.d/inet stop
# chmod a-x /etc/rc.d/init/inet  사용안하는게좋음
ftp  inetd.conf를 수정하여 각종 서비스의 수행을 제한
# netstat -a => TCP 포트 21번 확인
# vi /etc/inetd.conf (ftp로 시작하는 라인을 #으로 막음)
# killall -HUP inetd => 대소문자 구별을 정확히 할 것  필요에 의하여
telnet ftp와 동일한 방법, TCP 포트 23번 확인 telnet으로 시작하는 라인을 #으로 막음  필요에의하여
gopher ftp와 동일한 방법, TCP 포트 70번 확인 gopher로 시작하는 라인을 #으로 막음  필요시만
shell 원격지에서 접근하는 rsh의 수행을 제한
/etc/hosts.equiv를 /dev/null로 링크 시킬 것 ftp와 동일한 방법
TCP 포트 514번 확인, shell로 시작하는 라인을 #으로 막음  절대 아니요
login  원격지에서 접근하는 rlogin의 수행을 제한
/etc/hosts.equiv를 /dev/null로 링크 시킬 것 ftp와 동일한 방법,
TCP 포트 513번 확인 login로 시작하는 라인을 #으로 막음  절대아니요
pop-2, pop3  외부에서 e-mail을 받아가서 확인할 때 사용되는 서비스 ftp와 동일한 방법,
TCP 포트 109, 110번 확인 pop-2,pop-3로 시작하는 라인을 #으로 막음  불필요시
talk& ntalk UDP 포트 517, 518번 확인, ftp막는법과 같음 사용안하는게좋음  
imap  TCP 포트 143 번 확인, ftp막는법과 같음 사용안하는게좋음  
finger  TCP 포트 79번 확인, ftp막는법과 같음 사용안하는게좋음  
time  TCP 포트 37번 확인, ftp막는법과 같음 사용안하는게좋음  
auth  TCP 포트 113번 확인, ftp막는법과 같음 사용안하는게좋음  

  
# /etc/rd.d/init.d/inet restart  
서버 관련 보안방법과 연계해서 보시면 도움이 됩니다.
  

  
리눅스 보안관련 문서 #12 - 리눅스 보안 툴 #1 - TCPwrapper
이 문서는 Linux 서버시스템의 취약성 및 취약성 보완방법과 관계된 것 중 작은 부분을 안내하는 것이며,  
Linux 서버시스템의 모든 취약점과 보안 조치 방법을 제공하는 것이 아니며, 문서의 내용 중 기술적으로 부적절한
설명 및 인쇄상의 오류가 있을 가능성이 있으니, 이 문서에 따라 Linux 서버 시스템에 적용하는 과정에서 발생하는
문제에 대해서는 책임지지 않음을 미리 알려 드립니다.
  
본글은 인터넷제국과 (주)베스트한컴에서 제공합니다.  
  
TCPwrapper
- Wietse Vanema에 의해 고안된 TCPwrapper 는 호스트레벨에서 특정 프로토콜과 포트에 따른 접속허가를 손쉬운  
rule 이용해 줄 수 있는 일종의 packet dropper 입니다.  
  
① 스캔대상  
inetd를 이용해 시스템상에 데몬을 띄울 경우, tcpd를 이용해 원하지 않는 곳으로부터의 접근을 호스트레벨에서
원천적으로 봉쇄하며, 정해진 rule 들을 /etc/hosts.allow 와 /etc/hosts.deny를 통해 효과적으로 줄 수 있습니다.  
② 장점
꼭 필요한 곳으로부터의 접근만 허용하거나, 믿지못할 곳으로부터의 접근을 거부하는 등의 rule을 자유자재로 줄 수  
있으며, 필요없는 데몬들에 대한 정보를 제공해 줌으로써, 관리자들이 쓸데없는 데몬을 띄우지 않도록 해준다.
③ 단점
rule 에 의해 정의된 곳에서만 접근할 수 있거나하기 때문에, 필요에 따라 rule을 자주 바꿔야하는 불편함이 따를 수
있으며, 일단 connection을 성공시킨 뒤 이를 drop 하는 형태를 띄므로, 많은 request 가 있을 경우 서버는 IP diagram  
으로부터 source address를 분석하여 이를 rule 에 따라 적용시켜야 하므로 서버에 많은 로드가 걸린다.
④ 확장가능성
호스트 레벨에서의 패킷 필터링 기능으로 TCP wrapper 만큼 좋은 것은 없지만, 필요에 따라 능동적으로 rule 등을
변화할 수 있는 여건이 마련된다면 더욱 효과적일 것입니다.
⑤ 구할 수 있는 곳  
ftp://ftp.cert-kr.or.kr  
  
TCP Wrapper 활용===========================================================================
“제한된 곳으로부터의 접근만 허용”  
Linux 서버 시스템에서 일반인 즉 불특정다수에게 제공하는 서비스, 예를 들면 WEB(HTTP), DNS, MAIL(SMTP) 등을
제외하고 Linux 서버 시스템에 접근하는 것을 최대한 제한하고 특정한곳으로부터의 접근만 허용하는 것이 보안의  
기본입니다.
  
특히 시스템운영자만이 서버에 접근해서 파일을 수정하거나 자료를 upload/download 하는 경우 telnet 및 ftp에 대한
접근이 모든 곳에 대해 허용해 놓으면 해킹시도에 노출이 됩니다.
  
Red Hat 6.2 version에서는 TCP Wrapper(tcpd)가 기본으로 제공이 됩니다.
따라서 이것을 이용해 운영자가 이용하는 시스템, 즉 사무실 PC의 IP address에 대해서만 접근을 허용할 것을  
권장합니다.
  
TCP wrapper를 설정하는데 관계되는 파일은 /etc/hosts.deny, /etc/hosts.allow 입니다.  
/etc/hosts.deny 정의된 것은 접근이 차단되는 것을 의미하는데 계속 강조해 온 바와 같이 모든 서비스에 대해  
모든 곳의 접근을 차단하는 설정을 권장합니다.
  
예는 다음과 같습니다.
$ more /etc/hosts.deny  
#
# hosts.deny This file describes the names of the hosts which are
# *not* allowed to use the local INET services, as decided  
# by the '/usr/sbin/tcpd' server.
#  
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow. In particular  
# you should know that NFS uses portmap! ALL:ALL  
  
앞의 ALL은 모든 서비스를 의미하며, 뒷 부분의 ALL은 모든곳(IP address)을 의미합니다.  
그리고 접근이 허용되어야 하는 서비스와 접근하는 곳을 /etc/hosts.allow에 등록을 합니다.
다음 예에서는 ssh2d와 ipop3d에 대해서는 모든 곳을 허용해 놓았고, telnet 접근에 대해서는 10.10.10.10 만 허용해  
놓은 것입니다.
$ more /etc/hosts.allow
#  
# hosts.allow This file describes the names of the hosts which are  
# allowed to use the local INET services, as decided  
# by the '/usr/sbin/tcpd' server.
# sshd2:ALL in.telnetd: 10.10.10.10 ipop3d:ALL  
  
위 /etc/hosts.allow와 같이 in.telnetd에 대해 특정 IP address로부터의 접근만을 허용시켜 놓고, /etc/inetd.conf
파일에서 telnet 부분의 # 을 제거하여 서비스를 활성화하고, inet 서비스 Daemon을 Reset 한 후 다른 IP address에서
접근이 되는지 되지 않는지 확인을 해 보시기 바랍니다.
  
접근을 허용하는 IP address는 여러 명이 사용하는 서버시스템보다는 개인 PC의 IP address를 권장합니다.
TCP wrapper 및 /etc/inetd.conf, 불필요한 시작 script등에 대한 관련 내용은
http://kldp.org/Translations/html/Beowulf_Install_Admin-KLDP/Beowulf_Install_Admin-KLDP-12.html  
에서도 얻을 수 있습니다.
  
TCP Wrapper에서 서비스 및 접근자 목록을 지정하는 예를 아래 더 보여드립니다. 참고하시어 활용하시기 바랍니다.
ALL: 210.124.122.0/255.255.255.0 모든 서비스에 대해 210.124.122.0 ~ 210.124.122.255 로부터의 접근을 제어
ALL: 210.124.122.0/255.255.255.0 211.53.209.0/255.255.255.0 모든 서비스에 대해 210.124.122.0 ~ 210.124.122.255,  
211.53.209.0 ~ 211.53.209.255 로부터의 접근을 제어
  
in.telnetd: 210.124.122.0/255.255.255.0 telnet 서비스에 대해 210.124.122.0 ~ 210.124.122.255 로부터의 접근을 제어
in.telnetd: 211.53.209.0/255.255.255.0 EXCEPT 211.53.209.1 telnet 서비스에 대해 211.53.209.0 ~ 211.53.209.255
로부터의 접근을 제어하는데, 그 중에서 211.53.209.1 은 제외함  
============================================================================================
  

  
리눅스 보안관련 문서 #13 - 리눅스 보안 툴 #2 - NFSwatch, Drawbride, Netlog
이 문서는 Linux 서버시스템의 취약성 및 취약성 보완방법과 관계된 것 중 작은 부분을 안내하는 것이며,  
Linux 서버시스템의 모든 취약점과 보안 조치 방법을 제공하는 것이 아니며, 문서의 내용 중 기술적으로 부적절한
설명 및 인쇄상의 오류가 있을 가능성이 있으니, 이 문서에 따라 Linux 서버 시스템에 적용하는 과정에서 발생하는
문제에 대해서는 책임지지 않음을 미리 알려 드립니다.
  
본글은 인터넷제국과 (주)베스트한컴에서 제공합니다.  
  
NFSwatch===================================================================================
- 특정 서버와 클라이언트 사이에 오고가는 NFS 관련 패킷들을 모니터링할 수 있는 도구입니다.  
  
① 스캔대상
로켈 네트웍 상에서의 NFS 관련 패킷이 어디에서 어느곳으로 어떻게 옮겨가는지 등을 체크할 수 있습니다.
② 장점
NFS 에 관계된 패킷들만을 모니터링 할 수 있으므로, NFS 관련 공격이 발생하는지에 관한 체크가 가능합니다.
③ 단점
NFSwatch 에 의해 남겨진 로그파일을 전문적인 지식이 없는 관리자들은 전혀 분석할 수 없으므로, 이런 경우
무용지물이 될 가능성이 많습니다.  
④ 확장가능성
이 경우에도 보다 효과적인 유저 인터페이스의 지원과 레포팅 기능이 요구됩니다.
⑤ 다운로드
ftp://coast.cs.purdue.edu/  
============================================================================================
  
Drawbridge==================================================================================
tiger를 제작한 TAMU에서 제작된 것으로, 두 개의 이더넷 카드를 장착한 PC를 통하여 패킷 필터링을 가능케하는  
도구입니다. 이를 위한 rule 들을 주기가 여간 까다로운 도구가 아닐 수 없습니다.  
  
① 스캔대상
주어진 rule 에 따라 패킷을 호스트레벨에서 필터링하는 일종의 wrapper 라고 할 수 있으며, 네트웍상의 브릿지에
설치될 경우 패킷 필터링을 통하여 인증되지 않은 곳에서의 접근을 봉쇄할 수 있습니다.
② 장점
drawbridge 는 아래의 세가지 도구로 구성되며 각각의 특징은 아래와 같습니다.
filter manager - 패킷 필터링 rule 을 정의하는 도구입니다.
filter compiler - 주어진 rule 에 따라 필터를 생성시키는 도구입니다.
filter - 서버의 형태로 사용되며, 패킷들의 source IP address를 통해 패킷필터링을 적용하는 도구입니다.
③ 단점
네트웍 구성에 따라 효과적일지 아닐지 구분되므로, 때에따라 무용지물이 될 가능성이 있다.
④ 확장가능성  
방화벽과 같은 bastion 호스트에서의 패킷 필터링 또는, 라우터레벨에서의 패킷 필터링을 통한 네트웍 레벨에서의
접근을 막을 수 있는 방법으로의 발전도 가능할 것입니다.  
⑤ 구할 수 있는 곳  
ftp://net.tamu.edu/pub/tools  
============================================================================================
  
Netlog =====================================================================================
IP spoofing 이 널리 알려짐에 따라, TCP 와 UDP 등의 패킷 전송상황을 모니터할 수 있는 netlog 가 등장하게  
되었습니다. tcplog ger 와 udplogger를 통하여, 자신의 호스트로의 접속 뿐만 아니라, 서브넷 상에서 이동하는 모든  
패킷들을 볼 수 있습니다.
하지만, 패킷만 보여줄뿐, 이를 분석하는 루틴들은 제공되지 않으므로, 관리자의 세심한 배려와 상당한 지식이 요구되는
모니터링 도구입니다.  
  
① 스캔대상
로컬 네트웍 상을 오가는 UDP, TCP 패킷들을 모조리 캡춰할 수 있는데, 위의 방법을 통해 특정 포트에 연속적인 패킷이  
계속해서 들어올 경우 IP spoofing 등의 공격 등을 의심할 수 있게 됩니다.  
② 장점
Netlog 는 간단히 tcplogger, udplogger, netwatch, extract 와 같이 네 개의 프로그램들로 구성됩니다.  
이들 각각의 역할과 특징 을 살펴보면 아래와 같습니다.
tcplogger - 서브넷 내의 모든 TCP connection 들을 로그파일로 남길 수 있다.
udplogger - 스브넷 내의 모든 UDP connection 들을 로그파일로 남길 수 있다.  
netwatch - 실시간으로 네트웍 TCP/UDP connection 들을 모니터링할 수 있다.
extract - tcplogger와 udplogger 에 의한 로그파일들을 분석하는데 쓰인다.
즉, 위의 서브툴들을 이용하여, 필요에 따라 프로토콜에 따른 로그파일들을 구성하여, 네트웍 내에서의 이상징후를
발견하는데 아주 유용하게 쓰인다. 이와같은 기능을 하는 보안도구로는 tcpdump 가 있다.  
③ 단점
IP spoofing 등의 우려가 전혀 없는 경우에도 netlog 를 이용할 경우, 로그파일의 크기가 상당한 크기를 잡아먹으므로,
이에 대한 낭비가 우려됩니다.  
또한, 관리자의 능력이 뛰어나지 않을 경우 도저히 결과를 분석할 수 없다.  
Solaris 에서는 tcplogger 의 경우 컴파일 자체가 불가능한데, 다양한 운영체제 상에서 활용이 불가능합니다.  
④ 확장가능성  
특정 rule 을 통하여 특정 상황이 발생할 때 console 등에 경고 메시지를 주는 방향으로 인터페이스의 개선이  
필수적입니다.
⑤ 구할 수 있는 곳
ftp://net.tamu.edu/pub/security/netlog-1.2.tar.gz
============================================================================================
  

  
리눅스 보안관련 문서 #14 - 리눅스 보안 툴 #3 - ISS, SATAN, Cpm
ISS(Internet Security Scanner)===============================================================
공개용으로 개발된 iss-1.3 버전은 포트 스캔을 통해 vulnerability를 체크하는 루틴과, NIS 맵을 통해 체크하는 것,  
그리고 NFS 관련 vulnerability 체크, 그리고 TCP 관련 데몬들의 vulnerability를 체크하는 기능을 갖고 있습니다.
이는 또한 상용으로도 널리 개발되고 있습니다.
  
① 스캔대상
guest, bbs, lp 등의 시스템 내의 불필요하거나, 보안적인 측면에서 공격대상이 될만한 계정의 유무를 remote 로
조사하며, 각종 프로그램의 vulnerability 를 remote 로 체크합니다.
NFS 상의 export 된 정보를 검색합니다. 또한, 현재 시스템의 사용자들의 목록을 remote 에서 보여줍니다.  
② 장점  
iss 는 아래의 보조 프로그램들로 분석될 수 있으며, 각각의 장점들을 들어보기로 하겠습니다.
nfsbug - World exportable 한 파일시스템을 검색하며, 이를 해커가 mount 할 수 있는지 없는지를 portmapper 를
사용하여 검색합니다.  
Ypx - NIS map 을 네트웍 상에서 검색할 수 있으며 이를 통해 NIS 서버의 패스워드 파일 등을 얻을 수 있습니다.
Strobe(Super optimised TCP port surveyor) - portmapper 를 이용하여 ypx 와 nfsbug 의 소형화를 구현한 것입니다.
즉, iss 의 서브루틴으로서가 아니라, 하나의 독립적인 프로그램으로 관리자가 사용할 수 있습니다.  
③ 단점
iss 는 위에서 볼 수 있듯이, 철저한 remote 시스템의 vulnerability 와 정보 등을 캐내는 것이 주요 임무입니다.
때문에, 해커 들이 remote attack 에 있어서 가장 애용할 수 있는 보안도구 중 하나라고 할 수 있습니다.
게다가 소스코드의 공개로 인해 이들 소코드가 변형되어 직접 공격에 가담되기도 합니다.  
④ 확장가능성
iss 제작자의 말을 빌자면, iss-1.3 버전은 완벽히 코드가 완성된 것이 아니라고 하며, 실제로 소스코드를 읽어보더라도  
위와 같은 것을 발견할 수 있습니다.
또한, 특정 포트를 찍어서, 메시지를 주고받음으로 인해서 remote 시스템 상의 포트에 어떠한 데몬들이 떠있는지
등을 간단히 확인할 수 있기 때문에, 다양한 변화가 가능할 것입니다.
실제로 위와같은 점 때문에, wizard 의 제작에도 iss 가 많이 참조되었습니다.  
⑤ 구할 수 있는 곳
ftp://ftp.cert-kr.or.kr/pub/Security/tools/iss13.tar.gz  
http://iss.net/iss  
===========================================================================================
  
SATAN(Security Administrator Tool for Analyzing Networks)===================================
COPS를 제작한 Sun Microsystems 의 Dan farmer 에 의해 네트웍 vulnerability 체크를 중점적으로 하기위해 개발된
satan 은 개발당시까지 알려진 거의 모든 네트웍 hole 들을 다루고 있습니다.
때문에, 해커들에 의해 remote attack 의 한 방법으로 애용되기도 하였는데, 이와 반대되는 성격의 courtney 와
gabriel 이란 satan 방어용 보안도구도 존재할 정도입니다.  
① 스캔대상
FTP 서비스의 vulnerability 를 체크한다. NIS 맵을 통하여 패스워드 파일에 접근하여 암호화된 패스워들 파일을 볼 수  
있습니다.
portmapper 를 이용하여 NFS 시스템의 export 검사를 수행하며, Sendmail Vulnerability 를 체크합니다.
TFTP vulnerability 를 체크하며, 특정 X 서버가 접근 가능한지 아닌지의 여부를 체크하고, REXD 와 rsh vulnerability
를 체크합니다.  
② 장점
외부 시스템에 대한 보안 레벨을 체크함으로써, 로컬 네트웍 상에서의 전반적인 보안 레벨을 관리자가 인식할 수  
있습니다. 이전까지 네트웍 레벨에서의 버그나 hole 들에 대한 체크를 수행해주는 보안도구가 없었음을 감안할 때  
굉장히 효과적인 도구 입니다.
③ 단점  
SATAN 을 이용하여 해커에 의해 공격할만한 목표대상이 remote attack 이 가능해질 수 있습니다.
SATAN 수행도중 SATAN 의 secret key 가 노출될 경우 역으로 해커에 의해 공격당할 가능성이 있으며, 서버에 로드를
가중시킵니다.
④ 확장가능성
계속된 업그레이드가 진행되지 않아, 체크 가능한 버그리스트가 최신 버전이 아니기때문에, SATAN 만으로의
네트웍 레벨 체크만으로 모든 유형의 remote attack 을 방어하는 것은 불가능합니다.
⑤ 구할 수 있는 곳
ftp://ftp.cert-kr.or.kr/security/tools/satan-1.1.1.tar.Z  
==========================================================================================
  
Cpm (Check Promiscuous Mode)============================================================
packet sniffing 과 같이 ethernet 상에 뿌려지는 패킷을 해커는 자신의 시스템의 인터페이스를 열어 이들을 감지할
수 있게 되는데, 이때 네트웍 인터페이스는 'promiscuous mode'로 전향되며, 때문에 관리자는 CERT에서 개발된  
cpm을 통해 promiscuous mode 인지 아닌지를 확인할 수 있게 됩니다.  
  
① 스캔대상
packet sniffing 이 일어나고 있을 경우, 시스템의 네트웍 인터페이스는 promiscuous mode 로 구성됩니다.
현재 로컬 이더넷 상에 이러한 promiscuous mode 로 동작되는 시스템이 있는지의 여부를 체크해 준다.
② 장점  
보통 인터넷 상에서 흔히 볼 수 있는 packet sniffer 의 경우 telnet, ftp, rlogin 등의 connection 이 성공되기 까지의
암호 화되지 않은 128byte 를 잡아서 이를 로그파일로 남기는 기능을 합니다.  
때문에, login prompt 상에서 128 바이트 이상의 쓰레기 문자를 쓰느라 시간을 허비해야했지만, 하지만, cpm 을
이용하여 이더넷 상에 스니퍼가 돌고 있는지의 여부를 판단하고, 손쉽게 connection 을 이룰수 있습니다.  
③ 단점
인터넷은 라우터를 통해 패킷이 목적지로 진행되어 가며, 라우터가 존재하는 로컬 네트웍 상에서는 이 라우터를 통해
가는 암호화되지 않은 패킷들은 스니핑하는 해커에게 손쉽게 잡히게 됩니다.
때문에, 로컬 네트웍 상에서의 promiscuous mode 를 체크하는 방법만으로는 스니핑을 완벽히 피할 수 없습니다.
④ 확장가능성
S/key 와 같은 보안도구와의 연동 또는, ATM(Asynchronous Transfer Mode)의 이용 등으로 위와같은  
packet sniffing 을 피할 수 있을 것입니다.
⑤ 구할 수 있는 곳
ftp://cert.org/pub/tools/  
===========================================================================================
  

  
리눅스 보안관련 문서 #16 - 리눅스 보안 툴 #5 - Tiger, ttywatcher, Npasswd  
Tiger=======================================================================================
COPS 와 매우 비슷한 성격을 띄고 있으며, 파일 시스템 내부의 vulnerability 체크와 suid 체크 등의 기본적인
체크리스트에 따라 호스트를 스캔하는 기능을 갖고 있습니다.  
  
① 스캔대상
root 소유의 파일들의 퍼미션이 적절히 설정되어있는지의 체크 각각의 사용자들의 .rhosts 파일과 .netrc 파일의 검사,  
/var/spool/mail 등의 mail 디렉토리의 적절한 내용들의 검사 NFS와 NIS 에 관계된 데몬들과 환경설정이 올바르게  
되었는지의 체크
② 장점
verbose 모드를 통하여, 관리자가 현재 어떠한 작업이 수행중인지 확인 할 수 있습니다.  
날짜별로 결과를 저장하여, 시스템에 어떠한 변화들이 있을 수 있는지 확인할 수 있습니다.
자체 설정체크 루틴을 이용하여 시스템에 알맞는 체크를 수행하기때문에, 불필요한 작업들은 건너뛸 수 있게 됩니다.  
③ 단점
Cops 와 마찬가지로, 지속적인 버전 업그레이드가 계속되지 않는 한, 최근에 발생한 버그나 hole 들에 대한 대응능력을  
상실 한합니다.
네트웍 기반에서의 체크기능은 NIS 와 관련한 몇몇 데몬들에 대한 체크밖에 수행할 수 없다는 단점이 있습니다.  
④ 확장가능성
대학기관에서 공개되는 보안도구이기 때문에, 지속적으로 관련된 문서와 버전업이 전망됩니다.
⑤ 구할 수 있는 곳  
ftp://sc.tamu.edu/pub/security/tiger/  
============================================================================================
ttywatcher==================================================================================
UNIX 시스템에서 사용자와 시스템과의 통신은 바로 tty를 통해 커널과 통신함으로써 이루어집니다.
ttywatcher 의 경우 커널 드라이버를 생성하여, 시스템 내에 로그온한 모든 tty 와 커널과의 통신을 도청할 수 있는
기능을 제공하여 주는데 물론, 해커들 이 악용할만한 소지가 있는 보안도구이긴 하지만, 평소 의심하던 사용자를
감시하기에는 굉장히 좋은 도구입니다.  
  
① 스캔대상
커널과 tty 와의 통신을 도청하는 형태를 띄며, 이를통해 stdin과 stdout으로의 모든 입출력을 관리자가 볼 수 있습니다.
커널과 통신하기 위해서는 /dev 디렉토리 상에 c 타입의 tty 파일을 생성하여 커널과 통신하게 됩니다.
즉, 위의 tty 파일은 ot her와 group 에게는 read 와 write 가 금지되어 있으므로, root 의 권한으로 다른 사람의 tty 를
도청하는 것입니다.
② 장점
ttywatcher 는 불법적인 계정의 사용자나 해커에 대한 trap의 용도로 아주 유용하게 사용될 수 있습니다.
즉, 해커나 해커로 의심 되는 계정의 사용자의 활동을 모니터링하거나 log 파일로 남김으로써 유일한 증거로
채택될 수 있는 점 등입니다.  
③ 단점
해커에 의해 이용될 경우 개인적인 프라이버시 뿐만 아니라, 네트웍 내의 다른 호스트로의 접속과정 등을 모니터링
함으로써 로컬 네트웍 전체에 큰 타격을 입힐 수가 있게 됩니다.  
때문에, 절대 SUID 모드로 설치되어서는 안되며, local attack 을 당하지 않을 정도로 시스템 보안을 철두철미하게
해두어야 합니다.
④ 확장가능성
일반적으로 로컬 네트웍 상의 사용자를 제어하기 위한 목적의 IP watcher 의 기능에 착안하여 개발된 ttywatcher 는  
IP watcher 와 비슷한 기능으로의 확장이 가능할 것입니다.
또한, 사용하기 편리한 인터페이스 등의 이유로 관리자나 해커들에게 꾸준 한 사랑을 받을 것입니다.
⑤ 구할 수 있는 곳
http://nad.infostructure.com/watcher.html  
============================================================================================
  
Npasswd===================================================================================
기본적으로 시스템에 설치되어있는 /bin/passwd 를 대체하는 툴로서, 추측이 가능한 암호나 empty 암호를  
사용불가하게 만들어, 사용자 암호를 보다 강력하게 만들 수 있는 도구입니다.  
  
① 스캔대상  
Npasswd 는 UNIX 시스템내에 기본적으로 들어있는 /bin/passwd 를 대체하는 역할을 띕니다.
즉, 패스워드 갱신이나 변화시에 예 전 암호와 어느 정도 이상의 변화를 주어야 함을 경고하며, 계정과 비슷한 암호는
사용하지 못하도록 하며, 특수문자를 반드시 하나이상 사용하도록 하는 등, 암호 생성시부터 신경을 쓰게끔하는  
도구인만큼 직접적인 버그나 hole 등의 체크와는 거리가 멉니다 .
② 장점
암호 생성시에 각별한 신경을 쓰게 함으로써, local attack 에 대한 빈도수를 낮출 수 있습니다.
즉, 모든 local attack 이 일단, 시스템 내의 접근가능한 기회가 있어야 가능한 것이므로, 취약한 암호계정을 삭제하거나,
바꿈으로써 이러한 기회를 줄일 수 있 게 됩니다.
③ 단점
사용자들이 익숙한 암호를 못쓰게 됨으로 발생하는 불편함이 따를 수 있습니다.
shadow 암호화 루틴과 연동할 경우 잘못 설치하여 shadow 암호와의 연동이 잘못될 경우 시스템에 로그인할 수
없는 문제점들 이 발생할 수 있다.  
④ 확장가능성  
앞서 말하였듯이, shadow 암호화 루틴과의 연동을 적절히 설정하였을 경우, C2 레벨의 운영체제의 보안등급에  
이를 수 있습니다.  
오렌지북에서 정의한 운영체제에 대한 보안등 급으로 A, B, C1, C2, D 의 등급으로 나누어지며, A 등급의 경우
불법적인 도용이 불가능한 완벽한 시스템을 일컬으며, D 시스템 의 경우 DOS 등과같이 아무에게나 접근이 허용된  
운영체제를 가리킵니다.
⑤ 구할 수 있는 곳
ftp://ftp.cert-kr.or.kr/Security/tool/Npasswd  
============================================================================================
  

  
리눅스 보안관련 문서 #17 - 리눅스 보안 툴 #6 - Crack, Cops
Crack======================================================================================
UNIX 시스템에서의 /bin/passwd 는 DES(Data Encryption Standard)을 따르므로, 역함수를 구하기는 굉장히
까다로울 뿐만 아 니라, 엄청난 시간이 걸리는 일이지만, 사용자별로 암호를 추측하여, 이를 /bin/passwd 에 의하여
암호화시킨 뒤 이를 /etc/passwd 파일 내의 암호화된 정보와 비교하여 암호를 추적하는 것이 바로 crack 입니다.  
  
① 스캔 대상  
/etc/passwd 파일의 각각의 사용자당 두 번째 항목의 암호화된 패스워드 내용을 통해 추측이 가능한 암호인지
아닌지를 판별 해서 알려주는 기능이 crack 의 가장 기본적인 기능입니다.
암호화 함수의 역함수를 통해 암호를 추출해내는 방식이 아니므로, 추측을 가능케하는 사전이 필요합니다.  
즉, 사용되는 사전의 크기와 특징에 따라 crack 의 성능이 좌우될 수 있다.  
② 장점  
SYSTEM V Rel.4 이전의 UNIX 시스템은 /bin/passwd 자체가 취약한 암호인지 아닌지의 여부를 판단하지 못합니다.
때문에, 관리 자들이 crack 을 이용하여 적절한 암호인지 아닌지의 여부를 판단하여, 이를 경고할 수 있습니다.
③ 단점
해커에 의해 crack 이 사용될 경우 시스템 내의 암호가 취약한 사용자의 권한이 도용당할만한 소지가 큽니다.  
이는 local attac k 뿐만 아니라 잘못된 ftp 환경설정 등을 통한 서버의 /etc/passwd 파일이나, tftp 등을 이용하여  
remote attack 으로 발전할 가 능성이 얼마든지 있기 때문에, 보다 효과적인 Npasswd 나 Passwd+ 등의 사용을  
권해 드립니다.
관리자에 의해 crack 이 수행된다 하더라도, 이는 추측한 암호를 DES에 의해 암호화하여 비교하는 단순한 작업을
무수히 많이 하므로 시스템 내에 굉장한 로드를 유발한다.
④ 확장가능성  
외국인의 경우 암호의 사용 기반이 영어이며, 한국인의 경우 2벌식이나, 3벌식 한글자판을 기본으로 암호가 대부분
구성된다 는 가정이 설 때, crack 의 기반이 되는 사전파일의 좋으냐 나쁘냐에 따라 crack 의 성능이 좋은지 나쁜지가
좌우되기 때문에, 좋은 사전을 구성하거나, 만드는 작업이 필요합니다.  
⑤ 구할 수 있는 곳
ftp://cert.org/pub/tools/crack/  
============================================================================================
  
COPS(Computerizes Oracle and Password System)===========================================
널리 알려진 문제되는 파일을 체크섬을 통하여 vulnerability 체크를 수행하며, 파일 시스템 내의 여러 permission 과  
setuid 등에 대한 체크도 수행합니다.
  
① 스캔 대상
시스템 내의 중요한 파일, 디렉토리, 디바이스 등에 대한 퍼미션 체크 crack 알고리즘을 이용하여 추측가능한 암호들을
검증, /etc/passwd, group 파일내의 UID 0 등의 기본적인 체크, /etc/rc 파일에 의한 내부의 vulnerable 체크와 crontab
에 의해 실행되는 프로그램들에 관한 체크, 중요한 파일들의 체크섬을 이용한 변조여부 체크, 사용자들 각각의  
초기화파일의 퍼미션 체크, anonymous ftp 환경설정이 제대로 이루어져있는지의 체크, /etc/hosts.equiv 를 통하여  
NFS 설정이 제대로 되어있는지 등의 여부를 체크합니다.
② 장점
인터넷 보안의 고전이라 불리우는 "System Administration Guide" 의 저자인 Dan farmer 에 의해 제작되어서,  
기본 적인 시스템 내의 많은 버그와 hole 들에 대한 충실한 설명을 덧붙여 준다. shell 상태에서 관리자가 보안을
위해 신경써야 할 점들을 대부분 Cops 는 훌륭히 소화해줍니다.
③ 단점
crack 등과 같은 다른 루틴들을 많이 포함하고있어, 실행시간이 굉장히 길고 이에따른 시스템내의 로드도 상당합니다.  
설치방법이 간단히 'make' 만으로 이루어지지만, 불필요한 루틴들도 모두 설치되는 등 자신의 시스템에 맞게끔
고쳐야할 필요성이 있습니다.
최신 버그나 hole 들에 대해서는 전혀 대응할 수 없으며, OS 별로 나타나는 특정 버그나 hole 들에 대한 대응책이  
없으며, 단지 vulnerable 한지의 여부만 판단 및 경고하여줄 뿐, 이에대한 처방은 하여주지 않으므로 cops 에 의해  
나타난 보고서를 통해 적절한 관리자의 행동을 수반해야합니다.
④ 확장가능성  
Cops 는 시스템 내부의 많은 버그와 hole 들에 대한 vulnerable 체크를 수행해주지만, 네트웍 기반에서의 체크는  
현재 전혀 해주지 않고 있기때문에, 네트웍 기반의 체크가 추가된다면, 상당히 효과적으로 사용될 수 있을 것입니다.
인스톨 과정이 보다 효과적으로 진행된다면, 관리자들에게 큰 도움을 줄 수 있을 것입니다.  
각각의 OS 별로 나타나는 버그나 hole 들에대한 데이터베이스화된 rule 들의 정의를 통해서 보다 나은 보안도구로  
쓰일 수 있을것 입니다.
⑤ 구할 수 있는 곳
Cops 는 보안 관련 도구들 중에서도 가장 널리 알려진 것들에 속하므로 대부분의 anonymous FTP 서버에서
구할 수 있지만, 원내에서 가장 쉽게 찾을 수 있는 곳은 아래와 같다.  
ftp://ftp.cert-kr.or.kr/pub/Security/tool/cops_104.tar.Z  
============================================================================================

Posted by 몰라욧