글쓴이: 문태준
[출처] KIDC 보안공지
[해킹에 가장 빈번히 이용되는 리눅스 서버 보안 취약점들]
현재 리눅스에서는 많은 보안 취약점들이 발견되고 있습니다.
그중에서 특히 외부에서 root 권한을 획득할 수 있는 script들이 인터넷에
공개되었으며 이를 이용한 해킹이 많이 늘어나고 있는 추세입니다.
다음은 리눅스 서버상에서 반드시 점검해야 될 사항들 입니다.
(참고 : 다음에서 사용되는 명령어들은 backdoor 로 대체되지 않은 프로그램을
사용해야 정확하게 점검할수 있습니다.
=> Clean 시스템에서 해당 명령어를 다운받아서 실행시키는 것이 좋습니다.)
1. amd vulnerability
외부에서 root 권한을 획득할수 있는 버그가 리포트 되어 있습니다. 사용하지
않는다면 구동시키지 않는것을 권고합니다.
1) 확인
# ps -ef | grep amd
444 ? S 0:00 /usr/sbin/amd -a /.automount -l syslog -c
위와 같이 구동되어 있다면 해당프로세스를 kill 하세요.
# kill -9 PROCESSID_OF_AMD
2) 부팅시 실행금지
# /usr/sbin/ntsysv
화면에서 amd 를 선택하지 않은후 rebooting !!
or
# chkconfig --level 0123456 amd off
2. named vulnerability
외부에서 root 권한을 획득할수 있는 버그가 리포트 되어 있습니다.
사용하지 않는다면 구동시키지 않는것을 권고합니다.
1) 확인
다음과 같은 방법으로 named 의 버전을 확인 합니다.
$ dig YOUR_NAME_SERVER_IP version.bind chaos txt
.
.
.
;; ANSWER SECTION:
VERSION.BIND. 0S CHAOS TXT "8.2.2-P5"
^^^^^^^^^^
만약 위의 버전이 8.2 , 8.2.1 이나 밑의 버전을 사용한다면 즉시 패치를 해야
합니다.
2) 부팅시 실행금지
#/usr/sbin/ntsysv
named 항목을 선택하지 않습니다.
3) 패치 사이트
만약 named 를 사용한다면 다음의 사이트에서 최신 bind를 설치 합니다.
(현재 최신버전은 8.2.2-P5 입니다.)
http://www.isc.org/products/BIND
3. imapd vulnerability
외부에서 root 권한을 획득할수 있는 버그가 리포트되어 있습니다.
사용하지 않는다면 구동시키지 않기를 권고합니다.
(아마 대부분 사용하지 않을것 입니다.)
1) 확인
% telnet IMAP_SERVER_IP 143
Trying xxx.xxx.xxx.xxx ...
Connected to xxx.xxx.xxx.xxx
Escape character is '^]'.
* OK xxx.xxx.xxx.xxx IMAP4rev1 v12.250 server ready
^^^^^^^
만약 위의 버전이 10.223 밑의 버전이라면 보안취약점이 노출된 버전의
imapd를 사용하고 있다는 뜻입니다.
2) 구동시키지 않기
보통의 경우 imapd 는 inetd에 구동되므로 /etc/inetd.conf 에서 comment를
시키면 됩니다.
# Pop and imap mail services et al
#
#pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d
#pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
#imap stream tcp nowait root /usr/sbin/tcpd imapd
그런 다음 inetd 를 다시 구동시킵니다.
# kill -HUP PID_OF_INETD
4. qpop(pop3) vulnerability
외부에서 root 권한(또는 mail gid )을 획득할수 있는 버그가 알려져 있습니다.
사용하지 않는다면 구동시키지 않기를 권고합니다.
(보통 리눅스패키지에는 qualcomm pop3 가 설치되어 있습니다.)
1) 확인
$ telnet xxx.xxx.xxx.xxx 110
Trying xxx.xxx.xxx.xxx...
Connected to xxx.xxx.xxx.xxx...
Escape character is '^]'.
+OK QPOP (version 3.0b18) at xxx.xxx.xxx.xxx starting.
^^^^^^^^^^^^^^
만약 위의 버전이 3.0b29 나 그버전 보다 작으면 보안취약점이 노출된 버전을
사용하고 있다는 뜻입니다.
2) 구동 안시키기
보통의 경우 pop3d 는 inetd에 구동되므로 /etc/inetd.conf 에서 comment를
시키면 됩니다.
# Pop and imap mail services et al
#
#pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d
#pop-3 stream tcp nowait root /usr/bin/popper popper -s
그런 다음 inetd 를 다시 구동시킵니다.
# kill -HUP PID_OF_INETD
3) 패치
다음의 사이트에서 반드시 새 버전을 설치 하세요.
(현재 최신정식버전은 3.0.2 입니다.)
http://www.eudora.com/qpopper
5. sshd vulnerability
sshd의 경우 rootkit 의 일환으로 대체되어 사용되는 경우가
빈번하게 발생되고 있습니다.
tcp wrapper를 통해 접근할수 없다할지라도 SSH 로 들어올수 있는 backdoor를
만들어 놓아 외부 공격자가 들어올수 있으므로 사용하지 않는다면 구동시키지
않도록 합니다.
(또는 http://www.openssh.com 에서 최신 버전을 다운받아 설치합니다.)
1) 구동 안시키기
# ps -ef | grep ssh
root 111 .. .. /usr/sbin/sshd
# kill -9 111
# /usr/sbin/ntsysv
ssh 항목이 선택하지 않고 reboot !!
6. Tcp wrapper 적용
가장 기본적인 보안툴 입니다.
허가된 ip 로만 접속을 허용하고 그 외 나머지 ip 로 들어오는 접속은 전부 거부
되도록 합니다.
대부분의 리눅스 패키지에는 기본적으로 설치되어 있습니다.
1) 간단한 사용법
우선 /etc/inetd.conf 를 열어 적용하려는 데몬에 다음과 같이 적용합니다.
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
pop3 stream tcp nowait root /usr/local/bin/popper popper -s
접속을 허용할 ip address 또는 block을 /etc/hosts.allow 에 적습니다.
ALL: 123.456.789.10 123.456.789.
/etc/hosts.deny 는 다음과 같이 적습니다.
ALL: ALL
위와 같이 하면 123.456.789.10 이나 123.456.789 로 시작되는 ip 에서만
접속을 허용하고 나머지는 전부 거부하게 됩니다.
7. 불필요한 daemon 죽이기
대부분의 리눅스 관리자들은 OS를 인스톨 후 별다는 관리작업을 하지 않아 보안상
문제가 되고 있습니다.
사용하지 않는 불필요한 데몬을 구동시키는것은 외부 공격자들이 침입을 허용할
기회를 넓히는 결과가 되므로 서버의 용도와 상관없는 불 필요한 데몬은 구동시키지
않도록 합니다.
# /usr/sbin/ntsysv
사용하지 않는 데몬은 선택하지 마십시요.
특히 amd, ssh,httpd,named, smb, NFS,NIS 에 관련된 데몬은 사용하지 않으면
구동시키지 않토록 합니다.
inetd에 구동되는 데몬이라면 /etc/inetd.conf 에서 comment시킨후 inetd를 다시
구동 시킵니다( kill -HUP pid_of_ientd)
8. Backdoor 또는 Trojan horse 찾기
만약 리눅스 시스템이 해킹당했다면 backdoor가 설치되어 있을 확률이 높습니다.
리눅스의 경우 Rootkit이라는 backdoor프로그램들이 널리 사용 됩니다.
1) backdoor 찾기
보통 다음과 같은 프로그램들이 backdoor들로 대체거나 설치 됩니다.
bindshell,chfn,chsh,crontab,du,find,fix,
ifconfig,inetd,killall,linsiffer,login,ls,
netstat,passwd,pidof,ps,rshd,syslogd,tcpd,top
위의 설치된 프로그램들은 마치 정상적인 프로그램인것처럼 동작하며 해커가
사용하고 있는 특정 프로세스나 파일들을 감출수 있는 기능이 있습니다.
그러므로 이런 rootkit이 설치된 서버는 관리자가 아무리 패스워드를 바꾸고
보안을 강화 하더라도 언제든지 해커가 다시 들어올수 있게 됩니다.
이런 경우, 우선 해킹당하지 않았다고 생각되는 리눅스 시스템에서 find , ls ,
netstat ,ifconfig 등과 같은 명령어들을 다운받아 반드시 이를 통해 시스템을
점검해야 합니다.
일반적으로 rootkit 설정파일들은 서버 관리자가 쉽게 발견하지 못하도록 /dev
에 device 파일인 것처럼 위장하는 수법을 씁니다. (물론 항상 그런것은
아닙니다만..)
# find /dev -type f
/dev/MAKEDEV
/dev/ptyr
/dev/ptyq
/dev/hda02
위의 명령어는 /dev 디렉토리에 일반파일이 있는지를 점검하는 명령어 입니다.
보통 리눅스의 경우 MAKEDEV 파일만 존재하고 그외 나머지 파일들은 존재해서는
안됩니다.
만약 위의 예제과 같이 /dev/ptyr,/dev/ptyq 등과 같은 파일들이 존재한다면
rootkit 이 설치되었다고 볼수 있습니다.
위의 파일들을 열어보면 외부 칩입자가 숨길려고 하는 프로세스이름, 프로세스
아이디,ip address, port 번호 등의 정보가 들어있습니다.
이 정보들을 이용하여 설치된 프로그램을 찾아 제거해야 합니다.
(보통 eggdrop 이라는 IRC bot 이나 sniffer와 같은 프로그램이 실행된 경우가
많습니다.)
또는 점이나 space 로 시작되는 디렉토리가 있으면 의심 해봐야 합니다.
# find / -type d -name " *" -ls ( space 로 시작되는 directory
찾기)
or find / -type d -name ".*" -ls ( . 으로 시작되는 directory
찾기)
또한 /etc/rc.d/init.d 에서 구동되는 script들을 확인하여 이상한 프로그램이
구동되는지도 확인 합니다.
일단 rootkit이 설치되어 있다고 가장 확실한 방법은 다시 인스톨하는 것입니다
만약 그럴 상황이 되지 않는다면 Clean 한 시스템의 바이너리들을 다운받아
모두 교체해야 합니다. (특히 daemon들의 경우 다시 설치할것을 권고 합니다.)
또한 만약 sniffer와 같은 프로그램이 구동되어 있다면 다른 시스템의 ID와
패스워드가 다 노출된 상태이기 때문에 반드시 패스워드를 교체해야 합니다.
9. 패스워드 강화하기
패스워드를 예측하기 쉽지 않토록 설정 합니다.
(전통적으로 현재까지도 예측하기 쉬운 패스워드를 이용한 공격은 너무나 쉽게
행해지고 있습니다.)
Tcp wrapper가 설치되어 있지 않다면 외부에서는 이 계정을 통해 로긴할수 있으며
또한 local에서 root를 획득하는 일은 외부에서 root를 얻는것보다 더욱 쉽게 이루어
질 수 있습니다.
10. 보안툴 적용하기
1) Tcp wrapper
위의 본문내용을 참고 하세요.
2) snort ( 침입 탐지 시스템)
인터넷에 공개된 Free IDS로 여러가지 알려진 침입시도를 탐지할수 있는 유용한
툴입니다.
자세한 내용은 다음사이트를 참고하세요.
http://www.clark.net/~roesch/security.html
3) Tripwire ( File Intergrity Checker)
Backdoor의 설치를 탐지하기위해서 미리 file의 intergrity를 점검하는 것이
중요 합니다. 이를위해 tripwire를 사용 할것을 권합니다.
자세한 설치방법과 사용법은
http://www.tripwire.com 을 참고하세요.
11. 주기적인 로그 모니터링
보통 시스템을 공격하기 전에 시스템의 정보를 얻고자 하는 사전작업이 이루어지게
됩니다.
/var/log/messages, /var/log/secure 등과 같은 파일들을 주기적으로 검사하면
이러한 정보를 얻을수 있습니다.
Copyright by Technical Support Team of KIDC, 2000/05/30
'Security' 카테고리의 다른 글
Sendmail 버퍼 오버플로우 취약점 (1) | 2003.03.31 |
---|---|
GnuPG (GNU Privacy Guard) (1) | 2003.03.25 |
Samba 주요 smbd 코드 취약점 (0) | 2003.03.17 |
Remote Buffer Overflow in Sendmail (6) | 2003.03.04 |
CUPS, libpng 모듈의 버퍼오버플로우 취약점 패치 (1) | 2003.01.14 |