• 검색 결과가 없습니다.

시스템 설치 후 본격적인 서비스를 제공하기 전에 기본적으로 취해야 하는 필수 보 안 설정법에 대해 알아보자.

1) 사용하지 않는 서비스 중지

시스템 설치 후 가장 먼저 하여야 할 일은 사용하지 않는 서비스에 대한 중지이다.

일반적으로 필요한 패키지만 설치하지만 설치자에 따라서는 모든 패키지를 설치하 는 경우도 적지 않고, 설사 꼭 필요한 패키지만 선택하여 설치했다 하더라도 기본적 으로 불필요한 서비스가 제공되는 경우가 많으므로 불필요한 서비스를 찾아 중지하 도록 한다.

① 보안상 취약한 서비스

원격에서 데몬의 취약성을 악용하여 루트(root) 권한을 획득할 수 있는 imapd, sadmind, rpc.cmsd, rpc.ttdbserverd와 같은 서비스나 rsh, rlogin, rexec 등 과 같은‘r’기반의 명령어들이 굳이 필요하지 않다면 반드시 제거하도록 한다.

② inetd, xinetd에서 서비스 관리

슈퍼 서버 데몬이라 불리는 Inetd나 Xinetd의 경우 설정파일에서 서비스 여부를 관리할 수 있는데, 레드햇 리눅스 6.x까지 사용되었던 Inetd의 설정 파일인 /etc/inetd.conf 파일에는 기본적으로 여러 다양한 서비스들이 설정되어 있으나 대부분 telnet 이나 pop3 정도만을 사용할 것이다. 기타 imapd, rsh와 같은 사 용하지 않는 서비스들은 주석(#) 처리하여 서비스를 제거하면 된다.

일반 사용자는 설정 파일을 쓰거나 읽을 필요가 없으므로 오직 root만이 읽기/쓰 기가 가능하도록 퍼미션(permission)을 변경한다.

# chmod 600 /etc/inetd.conf

.

# vi /etc/inetd.conf

ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -L -i -o telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd

#gopher stream tcp nowait root /usr/sbin/tcpd gn

#smtp stream tcp nowait root /usr/bin/smtpd smtpd

#nntp stream tcp nowait root /usr/sbin/tcpd in.nntpd

#killall -HUP inetd 또는 /etc/rc.d/init.d/inetd restart

#chattr +i /etc/inetd.conf

chargen echo imaps pop3s rsync talk vsftpd chargen-udp echo-udp ipop2 rexec servers telnet daytime finger ipop3 rlogin services time

daytime-udp imap ntalk rsh sgi_fam time-udp

# vi telnet

# default: on

# description: The telnet server serves telnet sessions; it uses \

# unencrypted username/password pairs for authentication.

service telnet {

flags = REUSE socket_type = stream wait = no

user = root

server = /usr/sbin/in.telnetd log_on_failure += USERID disable = yes

}

# /etc/rc.d/init.d/xinetd restart 또는 killall -HUP xinetd

.

S60mars-nwe Netware 에서 쓰는 file이나 printer server 이므로 삭제한다.

S60nfs NFS server 에서 필요하므로 nfs를 서비스하지 않는다면 삭제한다.

S72amd AutoMount daemon으로 원격지의 File system 을 mount 할 때 필요하다.

amd는 전통적으로 치명적인 보안 취약성이 있으므로 삭제한다.

S75gated routed 처럼 라우터가 아닌 이상 삭제한다.

S80sendmail 메일 서비스를 이용한다면 필요하지만 메일 서비스가 필요없다면 삭제한다.

S85httpd Apache 웹 서버이다. 웹 서비스를 제공한다면 삭제하지 않는다.

S05apmd laptop에서 전원관리를 위해 필요하므로 서버에서는 필요없다.

S10xntpd Network time protocol이다. 사용할 경우가 없으므로 필요없다.

S11portmap NIS 나 NFS 서비스 이용시 R 서비스에 대한 port를 mapping 시켜주는 서비스이므로

.

홈 페 이 지 보 안 가 이 드

아래의 파일들은 가능하다면 s비트를 해제할 것을 권장한다.

suid가 설정된 파일에서 s비트를 해제하는 명령어는 아래와 같다.

위는 user에 설정된 s비트를 해제(-)하는 명령어이고, 만약 s비트를 설정하려면 -s 대신“chmod us+”실행하면 된다.

같은 방법으로 sgid가 설정된 파일에서 s비트를 해제하는 명령어는 아래와 같다.

또는 chmod 0700, 0755와 같이 해 주어도 된다.

# chmod u-s /usr/sbin/suid_file

# chmod g-s /usr/sbin/sgid_file /usr/bin/chage

/usr/bin/gpasswd /usr/bin/wall /usr/bin/chfn /usr/bin/newgrp /usr/bin/write /usr/bin/at

/usr/sbin/usernetctl /usr/sbin/userhelper /bin/mount

/bin/umount /usr/sbin/lockdev /bin/ping

/usr/sbin/traceroute

.

설정 파일은 /etc/sysctl.conf이다. sysctl에서는 /proc/sys 디렉토리 이하에 있는 변수를 변경할 수 있는데, 디렉토리(/)는 sysctl에서 마침표(.)로 변경된다.

현재의 모든 변수 설정은 sysctl -a로 확인 가능하며 특정한 변수를 질의하려면 sysctl -n을 쓰면 되고, 변수를 특정한 값으로 설정하려면 sysctl -w을 사용하면 된다. 아래의 예를 살펴보자.

◆ 현재 변수값 조회

# cat /proc/sys/변수값

◆ 현재 변수값 수정

# echo xx > /proc/sys/변수값

# cat /proc/sys/net/ipv4/tcp_syncookies 0

# echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# cat /proc/sys/net/ipv4/tcp_syncookies 1

# sysctl -n net.ipv4.tcp_syncookies 0

# sysctl -w net.ipv4.tcp_syncookies=1

# sysctl -n net.ipv4.tcp_syncookies 1

# echo “0”> /proc/sys/net/ipv4/tcp_timestamps timestamps 기능은 불필요하므로 사용하지 않는다.

# echo “1”> /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

smurf 공격에 악용될 수 있으므로 broadcast 주소를 통한 icmp echo에 대해 응답하지 않는다.

# echo “0”> /proc/sys/net/ipv4/conf/all/accept_source_route 스푸핑을 막기 위해 source route 패킷을 허용하지 않는다.

소스 라우팅을 허용할 경우 악의적인 공격자가 IP 소스 라우팅을 사용해서 목적 지의 경로를 지정할 수도 있고, 원래 위치로 돌아오는 경로도 지정할 수 있다.

이러한 소스 라우팅이 가능한 것을 이용해 공격자가 마치 신뢰받는 호스트나 클 라이언트인 것처럼 위장할 수 있는 것이다.

# echo “0”>/proc/sys/net/ipv4/ip_forward

해당 시스템을 통해 다른 시스템으로 패킷이 포워딩 되지 않도록 한다. 만약 시 스템이 라우터 등 게이트웨이 용도로 사용할 것이 아니라면 끄는 것이 좋다.

.

# echo “0”> /proc/sys/net/ipv4/conf/all/accept_redirects icmp redirects 를 허용하지 않는다.

만약 ICMP Redirect 를 허용할 경우에는 공격자가 임의의 라우팅 테이블을 변 경할 수 있게 되어 자신이 의도하지 않는 경로, 즉 공격자가 의도한 경로로 트래 픽이 전달될 수 있는 위험이 있다.

# echo “1”> /proc/sys/net/ipv4/conf/all/log_martians

스푸핑된 패킷이나 소스라우팅, Redirect 패킷에 대해 로그파일에 정보를 남긴다.

# echo “1”> /proc/sys/net/ipv4/tcp_syncookies

syn flooding 공격에 대응하기 위해 syncookies 기능을 켠다. syn flooding 공격에 매우 효과적이다.

# echo “1024”> /proc/sys/net /ipv4/tcp_max_syn_backlog

역시 syn flooding 공격과 관련된 설정인데, backlog queue의 사이즈를 늘려 공격에 대응하도록 한다.

위의 모든 설정은 재부팅 후에 원래의 값으로 다시 초기화되므로 /etc/rc.d/rc.local 에 두어 부팅시마다 실행하도록 하여야 한다.

홈 페 이 지 보 안 가 이 드

불필요한 계정(user)을 삭제하려면 userdel로 삭제한다.

여기에서 특히 ftp를 삭제 시 anonymous ftp를 차단하는 효과도 있다.

불필요한 계정 외 불필요한 group도 삭제하는 것이 좋은데, 이는 groupdel 명령 어로 삭제한다.

2) John the Ripper를 활용한 쉬운 암호 검색

이외 또 하나 문제가 될 수 있는 것은 암호가 없는 계정은 물론이고, 쉬운 암호를 사용하는 계정이다. 아이디와 동일한 암호를 사용하거나 1111 등 추측하기 쉬운 암호 는 정기적으로 관리하여야 한다. 이를 위해서“John the Ripper”프로그램을 이용 하여 쉬운 암호를 사용하는 아이디를 검색해 보도록 하자.

아래의 John the ripper 홈페이지에 접속하여 소스파일을 다운로드 하여 컴파일 하여 설치하면 된다.

http://www.openwall.com/john/

# userdel adm; userdel lp; userdel shutdown; userdel halt; userdel news; userdel operator; userdel games; userdel gopher; userdel ftp

# groupdel adm; groupdel lp; groupdel news; groupdel games;

[root@www root]# tar zxvfp john-1.6.tar.gz // 압축해제

[root@www root]# cd john-1.6/src // john-1.6/src 디렉토리로 이동 [root@www src]# make linux-x86-any-elf // 컴파일

[root@www src]# cd ../run/ // run 디렉토리로 이동

[root@www run]# ./unshadow /etc/passwd /etc/shadow > passwd.1 // 암호화된 암호가 저장된 passwd.1 파일 생성

[root@www run]# ./john passwd.1 // 암호해독 시작 olympia (olympia)

. 웹 서 버 운 영 관 리 를 위 한 보 안 매 뉴 얼

여기에서 오른쪽의 괄호 안에 있는 것이 계정 이름이고 왼쪽이 해당하는 계정의 암 호인데, 보는 바와 같이 아이디와 암호를 동일하게 사용하거나 추측하기 쉬운 암호 를 사용하는 계정이 적지 않다는 것을 알 수 있다. 위의 결과는 john.pot 파일에 암 호화되어 저장되는데, 새롭게 확인하려면 이 파일을 삭제 후 다시 실행하면 된다.

allmall (allmall)

lee (lee)

v3 (v3)

1234 (gaucho) 111 (weblog)

홈 페 이 지 보 안 가 이 드

3. 어플리케이션 보안관리