10. 5. 17.

BLOG를 이전합니다. 그 동안 많은 성원에 감사드립니다.

그 동안 blogspot.com을 통해 운영하던 개인 정보 블로그를 설치형 블로그인 wordpress로 이전합니다.

다양한 멀티미디어 제공을 위해 설치형 브로그가 적합한 것으로 판단하고 이전하였습니다. 그 동안의 성원에 감사드립니다.

아래의 링크를 통해서 놀러오세요.

L7 seculab.forunet.kr

10. 5. 7.

robot.txt 취약점

웹 사이트에서 일반적으로 사용하는 robot.txt 파일은 로봇의 검색을 제한하기 위해 만들어진 규약으로 웹 사이트에 대한 민감한 정보를 차단하기 위해서 사용됩니다. 하지만 이 파일을 역으로 이용하여 웹 사이트를 해킹할 수 있습니다.

 

탐색과정

로봇(google, naver, daum )은 웹 사이트를 검색하기 전에 robot.txt 파일이 있는지 여부를 확인한 후 그 설정에 따라서 동작합니다. 하지만 robot.txt는 강제성을 띄지 않으므로 일부 스팸 발송자나 다른 악의적인 사용자는 이 파일의 설정을 무시하고 웹 사이트를 검색할 수 있습니다.

 

설정

robot.txt 파일은 웹 사이트의 최상위 경로에 있어야 하며, 다른 경로에 제공 시 robot.txt의 규칙을 사용하지 못 합니다. 그리고 robot.txt에 설정하는 규칙은 아래와 같이 2 가지가 있습니다.

1.     User-Agent
일반적으로 robot이 해당 웹 사이트를 검색할 때 사용하는 user-agent 정보를 확인하며, 아래와 같은 agent가 존재합니다.

google

Googlebot

Google image

Googlebot-image

naver

Cowbot

yahoo

Slurp

Yahoo image

Yahoo-mmcrawler

empas

Empas

msn

Msnbot

User-Agent 설정 시 "*"로 설정하면 전체에 대한 robot 설정을 할 수 있음.

2.     Disallow
"Disallow : /folder1/"
로 설정할 때 "/folder1"에 대한 access는 허용하지 않도록 설정할 수 있다.

 

대응기법

1.     관리자 페이지에 대한 접근 정책을 설정하여, 특정 IP 대역에서만 접근을 하도록 하면 보안을 강화할 수 있다. 이는 넷스케이러의 CF(Content Filtering) 기능을 통해서 간단하게 제공할 수 있다.

2.     Meta tag 사용하여 robot이 웹 사이트를 검색할 때 웹 페이지에 대한 contents 수집여부 및 방식을 지정하는 규약이다.
일반적으로 설정하는 방법은 아래와 같으며 추가적인 meta tag에 대한 정보는 별도의 자료를 참조(http://www.robotstxt.org")

<head>

<meta name="robot" content="noindex,nofollow">

<meta name="description" content="검색금지">

</head>

 

 

 

Jae Hong Kim
Manager / Technical 2 Team / citrixSpecialist
FOR YOU NETWORKS

3F., MyungKwang Bldg, 1702-10 Seocho-dong, Seocho-ku, Seoul Korea
T. 82-2-585-6611  M. 82-10-2587-3621 
F. 82-2-565-7115  E. jhkim@foryounet.co.kr

Foryounetworks is the global leader in Network infrastructure.

 

10. 4. 30.

[linux] 넷스케일러 SNMP 테스트 환경 및 테스트 방법

개인적으로 리눅스 중에 자동 업데이트(yum)를 지원하는 FEDORA 리눅스를 선호하는데, 이 환경에서 SNMP 테스트를 위한 유틸리티는 아래와 같은 명령어로 구축할 수 있다.

#yum install net-snmp-utils

 

이렇게 설치한 후 넷스케일러에 대한 SNMP 테스트는 아래와 같이 /usr/share/mibs 경로에 넷스케일러 SNMPv2.mibs 파일을 복사한 후 테스트를 직접 할 수 있다.

#snmpwalk –v 2c –c public –m /usr/share/mibs/NS-MIB-smiv2.mib <ip> nsIfStatsTable

위와 같은 직관적인 nsIfStatTable으로 SNMP 정보를 확인할 수 있다.

 

10. 4. 29.

넷스케일러의 정보를 추출하여 별도의 파일로 기록하는 방법

일부 고객사의 요청에 의해 넷스케일러에서 제공하는 SNMP 정보 외에 다른 정보를 주기적으로 별도의 파일에 기록하여 제공할 수 있는데, 이 방법은 기본적으로 제공하는 기능이 아닌 편법이기 때문에 권장하지는 않지만 꼭 필요할 때 활용할 수는 있을 것 같다.

[샘플]. VPN 사용자의 접속수를 5분 주기로 별도의 파일로 저장
LogDir="/var/temp/vpnuser"
CurrentDate=`date`
FinalDate=`date -j -f "%a %b %d %T %Z %Y" "${CurrentDate}" +"%Y-%m-%d %T"`
FileDate=`date -j -f "%a %b %d %T %Z %Y" "${CurrentDate}" +"%Y-%m-%d"`


vpn=`ssh nsroot@localhost 'sh vpn vserver' | sed -n '/Current AAA Users/p' | nawk '{print $4}'`
#sh vpn vserver 명령에 대한 결과 "Current AAA Users"라인만 프린트한 awk 명령어로 특정 field 대한 string 값을 출력한다.

if [ ! -e "${LogDir}/${FileDate}.txt" ]; then
        echo "TIME|Current VPN Users" >> ${LogDir}/${FileDate}.txt
fi
`echo "${FinalDate}|${vpn}" >> ${LogDir}/${FileDate}.txt`

이렇게 생성된 스크립트에 대해서 실행권한을 부여 후 넷스케일러의 SHELL MODE에서 CRONTAB을 활용하여 주기적인 배치 잡을 생성하면 필요한 데이터를 얻을 수 있다. 위 스크립트는 일반적인 스크립트이며, egrep이나 awk를 이용하여 보다 많은 정보를 수집할 수도 있다. 해당 스크립트를 자동으로 실행하기 위해서는 넷스케일러의 SHELL MODE에서 인증서 기반의 SSH 로그온 방법을 사용해야 합니다.

[넷스케일러의 인증서 기반 SSH로그온 방법]
SSH 로그온 시 비밀번호를 사용하지 않고 인증서를 이용하여 신뢰된 사용자로 등록하는 방법이며, 자세한 방법은 아래의 링크를 참조할 수 있다.
cd ~
mkdir .ssh 2> /dev/null
cd /root/.ssh
ssh-keygen -b 1024 -f identity -P '' -t dsa

# For each "target" Netscaler you wish to be able to login without passwords do:
scp identity.pub nsroot@<ip of target>:/root/.ssh/identity.pub
# enter password when prompted for the remote box

On each of the target machines, then do the following:
cd ~/.ssh
cat identity.pub >> authorized_keys
# 과정을 모드 마치면 넷스케일러에 SSH 비밀번호 인증없이 접속이 가능함.

egrep이나 awk에 대한 추가적인 정보는 인터넷에서 많이 제공하고 있으니 참조하면 충분히 유용한 스크립트를 만들 수 있다.

PS : 이 방법은 권장하는 방법이 아닌 편법으로 제공되는 방법이기 때문에 필요 사용 전에 유념하셔야 합니다.

넷스케일러 Packet Flow Diagram

시트릭스 넷스케일러의 전체 모듈에 대한 Packet Flow Diagram 정보입니다. 장비를 이해하는데 많은 도움이 될 수 있을 것 같습니다.
참조용!!

시트릭스 Command Center Password Recovery!

일반적으로 시트릭스 Command Center(이하 'CC')를 사용할 때 Local 인증을 많이 사용합니다.

기본적으로 시트릭스 CC에서는 제공하는 Default 계정 및 비밀번호는 root/public 입니다. 초기 설치 후 Default 계정에 대한 정보를 변경하여 운영하게 되는데 운용 중 변경한 root 계정의 비밀번호를 분실할 경우 이를 Recovery할 수 있는 표준 방법은 없습니다.

만약 사용하는 DB를 직접 Access하여 Control할 수 있다며, 아래와 같은 방법으로 root 계정에 대한 비밀번호 초기화가 가능합니다.

UPDATE UserPasswordTable SET PASSWORD = 'b96u1ae9J' WHERE USERNAME='root';

여기서 제공된 비밀번호는 public이란 문자를 CC에서 인식할 수 있는 Encoding Algorithm을 통해 암호화된 문자이기 때문에 직접 DB를 업데이트하여 초기화할 수 있습니다.

시트릭스 Command Center Password Recovery!

일반적으로 시트릭스 Command Center(이하 'CC')를 사용할 때 Local 인증을 많이 사용합니다.

 

기본적으로 시트릭스 CC에서는 제공하는 Default 계정 및 비밀번호는 root/public 입니다. 초기 설치 후 Default 계정에 대한 정보를 변경하여 운영하게 되는데 운용 중 변경한 root 계정의 비밀번호를 분실할 경우 이를 Recovery할 수 있는 표준 방법은 없습니다.

 

만약 사용하는 DB를 직접 Access하여 Control할 수 있다며, 아래와 같은 방법으로 root 계정에 대한 비밀번호 초기화가 가능합니다.

 

UPDATE UserPasswordTable SET PASSWORD = 'b96u1ae9J' WHERE USERNAME='root';

 

여기서 제공된 비밀번호는 public이란 문자를 CC에서 인식할 수 있는 Encoding Algorithm을 통해 암호화된 문자이기 때문에 직접 DB를 업데이트하여 초기화할 수 있습니다.

 

 

Jae Hong Kim
Manager / Technical 2 Team / citrixSpecialist
FOR YOU NETWORKS

3F., MyungKwang Bldg, 1702-10 Seocho-dong, Seocho-ku, Seoul Korea
T. 82-2-585-6611  M. 82-10-2587-3621 
F. 82-2-565-7115  E. jhkim@foryounet.co.kr

Foryounetworks is the global leader in Network infrastructure.

 

10. 4. 6.

넷스케일러 HASH 알고리즘

넷스케일러에서 제공하는 LB Method 중 흔히 사용하는 HASH 알고리즘은 넷스케일러의 OS 버젼 9.0이전와 이후 버젼에서 서로 다른 방식으로 제공된다.
  • 9.0버젼 이전
    이전 버젼에서 제공된 HASH알고리즘은 HASH 테이블의 생성 기준을 사용자의 소스IP와 목적지IP를 이용하여 생성하였다.

    이렇게 생성된 HASH 테이블에서는 초기 접속한 서버로 연속적인 요청이 동일 서버로 처리될 수 있으며, 또한 목적지 서비스 포트가 다른 경우에도 동일한 서버로의 접속을 보장할 수 있다.
  • 9.0버젼 이후
    이후 버젼에서 제공되는 HASH 알고리즘은 HASH 테이블의 생성 기준이 사용자의 소스IP와 목적지IP 그리고 목적지PORT 정보까지 함께 이용한다.

    이렇게 변경된 알고리즘에서는 초기 접속한 서버로 동일한 서비스 포트에 대해서는 연속적인 요청에 대해서도 동일 서버로의 접속을 보장할 수 있지만, 서비스 포트가 다른 경우에는 이를 보장할 수 없다.

이렇게 변경된 내용으로 인해 9.0버젼 이후에 기존의 HASH 알고리즘을 사용하고자한다면 아래와 같이 내부명령어를 통해 알고리즘을 기존의 방식으로 사용할 수 있도록 설정을 변경해야 한다.

>(CLI)
#nsapimgr -ys traditional_hash=1 (초기 설정 값은 "0"으로 사용하지 않음)

이를 적용하기 전 반드시 넷스케일러 시스템 엔지니어의 동의하에 해당 설정을 진행할 수 있도록 한다.

10. 3. 25.

IE 또는 Firefox에서 Internet Connection 수 설정

L4 솔루션이나 L7 솔루션 등의 Load Balancer를 시험할 때 IE 또는 Firefox의 Maxconnections 설정을 변경하여 L4/L7 솔루션의 차이점을 육안으로 볼 수 있다.

예를 들어, L4 솔루션의 경우 connection 기반으로 load balancing을 하는 반면 L7 솔루션은 Request base load balancing 솔루션이기 때문에 2개의 실제 서버를 load balancing할 때 각각 보여지는 화면의 내용이 다르게 보인다. 이런 내용을 직접 시연하기 위해서는 IE 또는 Firefox에서 사용자의 Http Max Connection 설정을 1개로 조정하여야 정확한 결과를 얻을 수 있으며, 이를 설정하는 방법은 아래와 같다.
  • Firefox
    Firefox는 비교적 쉽게 변경이 가능하도록 기능을 제공하며, 주소창에 "about:config"라고 입력 수 실행하면 "고급설정변경" 메뉴가 보이며 해당 메뉴에서
    "network.http.max-connections" 항목과 "network.http.max-connections-per-server"항목에 각각 1로 설정하면, 하나의 connection을 생성 후 http request를 전송한다.
  • IE 7/8
    IE에서는 Firefox처럼 간단하진 않지만 아래와 같이 registry 설정을 변경하여 적용이 가능하다.
    registry editor에서 "FEATURE_MAXCONNECTIONPERSERVER" 항목과 "FEATURE_MAXCONNECTIONSPER1_0SERVER"항목을 변경하면 적용이 된다. PC의 Registry설정은 HKEY_LOCAL_MACHINE와 HKEY_CURRENT_USER에 각각 설정이 가능하며 어느쪽을 설정해도 동일할 결과를 얻을 수 있다.

IE의 설정 변경에 대한 자세한 내용을 아래의 링크를 참조하면 된다.
http://msdn.microsoft.com/en-us/library/cc304129(VS.85).aspx

09. 12. 11.

MIP 사용현황 체크


넷스케일러 운영 중인 상태에서 현재 설정된 MIP 또는 SNIP에 대한 사용현황을 확인하는 쉬운 방법이 있다.


넷스케일러 CLI로 접속 후 SHELL MODE로 변경한 다음 아래의 명령어를 사용하면 현재의 MIP 또는 SNIP별로 사용 현황 및 가능한 여유를 확인 가능하다.


(CLI)
> SHELL
# nsapimgr -d mappedip




실제로 위 명령어를 사용하면 아래와 같은 결과화면을 확인할 수 있다.

09. 11. 17.

넷스케일러에서의 사용자 IP 삽입

넷스케일러를 운영 중인 사이트에서 한번씩 아래와 같은 경우가 존재할 수 있다.

이미 내부의 목적에 의해 x-forwarded-for 또는 Client-IP를 사용하는 경우에 넷스케일러에서도 동일하게 사용자의 요청 헤더에 x-forwarded-for 또는 Client-IP를 사용할 경우 기존의 헤더 설정 값에 넷스케일러의 설정 값이 추가(ADD)되어 사용자의 IP가 두개가 기록되는 현상이 발생한다.

이럴 경우 다른 함수를 사용할 수도 있으나 그럴 상황이 허락되지 않을 경우 넷스케일러의 Rewrite 기능을 통해서 해결할 수 있는 방법이 있다. 내용은 기존에 이미 넷스케일러에서 사용하는 헤더 값과 동일한 값을 사용할 경우 기존 헤더 값을 지우고 넷스케일러의 해더 값을 삽입하는 방법이다.

add rewrite action del_x_forwarded_for delete_http_header x-forwarded-for
add rewrite action del_client_ip delete_http_header client-ip
add rewrite policy check_x_forwarded_for_policy 'HTTP.REQ.HEADER("x-forwarded-for").EXISTS' del_x_forwarded_for
add rewrite policy check_client_ip_policy 'HTTP.REQ.HEADER("client-ip").EXISTS' del_client_ip
add rewrite action insert_ns_client_header insert_http_header NS-Client 'CLIENT.IP.SRC'
add rewrite policy insert_ns_client_policy 'HTTP.REQ.HEADER("x-forwarded-for").EXISTS.NOT HTTP.REQ.HEADER("client-ip").EXISTS.NOT' insert_ns_client_header
bind rewrite global check_x_forwarded_for_policy 100 200
bind rewrite global check_client_ip_policy 200 300
bind rewrite global insert_ns_client_policy 300 END


위 설정은 global 정책으로 binding하였지만 경우에 따라서는 특정 virtual server에 정책을 binding하여 사용할 수 있다.

위 rewrite 설정은 로컬 랩에 구성된 넷스케일러 version 9.1 build 97.3 cl에서 확인결과 정상적으로 동작하였고 내부의 서버에서도 access_log 파일에 실제 사용자의 IP가 기록되었다. service의 IP insert 옵션을 사용하지 않도서도 사용자의 실제 IP를 입력하는 방법이기도 하다.

09. 7. 10.

CC-Attack의 필드 설명

정확한 출처는 기억이 나질 않지만 근래 많이 발생하는 HTTP Flooding 공격 유형의 하나로 CC-Attack이라는 공격이 있다.

이 CC-Attack이라는 공격 유형은 요청 시 Cache-Control 설정을 User-Agent 해더 필드에 첨부하여 서버의 부하를 발생시키는 특성을 가지고 있다. CC-Attack의 특성인 Cache-Control 설정 내용은 아래와 같다.

Cache-Control: no-store, must-revalidate
  • 캐시 저장 금지(no-store)
    no-store 지시자의 목적은 부주의하게 민감한 정보를 백업테이프와 같은 곳에 보유하거나 배포하는 것을 방지하는 것입니다. no-store 지시자는 요구/응답 모두에 발송할 수 있습니다. 요구에 포함하여 발송하게 되면 캐시는 요구의 어떤 부분 또는 이 요구에 대한 어떠한 응답도 캐시해서는 안됩니다. 응답에 발송하게 되면 캐시는 이 응답의 어떤 부분 또는 응답을 이끌어 낸 요구를 저장해서는 안됩니다. 이 지시자는 비공유 및 공유 캐시에 모두 적용됩니다.
  • 캐시의 재검증(must-revalidate)
    규약은 원서버가 계속되는 캐시 사용에 대한 캐시 엔트리 검증을 요구할 수 있는 메커니즘을 포함하고 있습니다. must-revalidate 지시자가 캐시가 수신한 응답에 포함되어 있고 캐시가 계속되는 요구에 응답하기에는 낡아진 이후에 캐시는 먼저 원서버에 이를 재검증하기 전에는 엔트리를 사용해서는 안 됩니다. must-revalidate 지시자는 특정 규약 기능의 안정된 운영을 위해서 필요합니다. 어떠한 경우이든 HTTP/1.1 캐시는 must-revalidate 지시자를 반드시 따라야 합니다.

좋은 글을 올려주신 분께 감사드리며, 출처가 확인되면 등록하겠습니다.

09. 6. 26.

Linux GDM problem(about unable authenticate messages)

어플리케이션 테스트를 위해 리눅스 시스템을 활용할 일이 많은 환경에서 가끔 새롭게 시스템을 설치하고 업데이트 한 이후 아래와 같은 문제가 발생할 수 있다.
(이 상황은 Fedora Core 10 버젼 설치 후 발생한 문제 임)

root 사용자로 GUI 화면에서 로그인을 시도하면 "Unable Authenticate users"라는 메세지가 뜨면서 로그인이 되지 않는 문제가 발생한다. 이는 보안상의 이유로 root 사용자의 로그인을 차단한 정책 때문이며, 아래와 같은 방법으로 문제를 해결할 수 있다.

  1. GUI에서 CLI 환경으로 변경한 후 root 사용자로 로그인
    일반적으로 "Ctrl+Shift+F2" 키를 누르면 GUI기반에서 CLI 기반으로 변경되며, root 사용자로 로그인할 수 있다.
  2. 로그인 후 아래의 경로의 파일을 수정
    /etc/pam.d/gdm
    (만약을 위해 gdm 파일을 백업한 후 수정 하는 것이 안정적인 방법이다.)
    cp -aR /etc/pam.d/gdm /etc/pam.d/gdm.old
    그리고 gdm 파일을 vi 편집기로 열어서 아래의 라인을 주석처리 한다.
    # auth required pam_succeed_if.so user != root quiet
  3. 수정을 다 하였으면 다시 GUI 모드로 변경 후 root로 로그인할 수 있다.
    일반적으로 "Ctrl+Shitf+F7" 키를 누르면 CLI에서 GUI 모드로 변경할 수 있다.

이 방법은 root 사용자 로그인 문제 뿐만 아니라 다른 사용자의 문제점을 해결하는 방법으로도 유용하게 사용할 수 있는 방법이니 꼭! 숙지하고 있으면 좋은 것 같다.

09. 6. 18.

넷스케일러 TCPDUMP 사용법

넷스케일러의 기능 중에 현재 트래픽을 TCPDUMP 유틸을 통해 Packet Capture 기능을 제공하는데, NSTRACE 유틸을 사용하지 않고서도 패킷을 cap 또는 pcap 형식으로 Capture할 수 있다.

사용법 : nstcpdump.sh -w /var/nstrace/trace1.pcap -i 1/1 - i 1/2

원래 TCPDUMP 유틸은 실시간으로 트래픽을 확인하는 과정에 많이 사용되지만, 확인하는 트래픽을 cap 또는 pcap 형식으로 저장할 때 위 명령어를 사용하면 유용하게 Capture할 수 있다.

다른 nstrace.sh 또는 nstcpdump.sh 유틸 명령어에 대해서는 다른 메뉴얼을 확인하시기 바랍니다.

소규모 엔터프라이즈의 수요 해결을 위한 MPX 제품 출시!

5월 21일 인터롭에서 시트릭스는 500 메가바이트(Mbps)에서 3 기가바이트(Gbps)에 걸친 7개의 레이어와 함께 최고의 가격-성능을 가진 세 가지의 새로운 MPX 어플라이언스를 소개했습니다.

새로운 넷스케일러 MPX 7500MPX 9500 어플라이언스는 중소 엔터프라이즈에 현저한 향상을 가져다 주었으며 새로운 MPX 5000은 처음으로 소규모 엔터프라이즈에 진보한 넷스케일러 MPX 아키텍처를 제공했습니다.

새로운 모델은 최고급 넷스케일러 MPX 솔루션에서 이용할 수 있는 것과 동일한 풍성한 특징을 제공합니다. 하지만 소규모 업체에 걸맞게 가격 면에서 훨씬 경제적입니다.본 디자인은 향상된 멀티코어 MPX 아키텍처를 이용해 애플리케이션 가속화, 서버의 이용 가능성 그리고 통합된 애플리케이션 방화벽 및 SSL VPN 보안을 위해 완벽한 콘커런스 기능(Concurrency feature)를 제공하도록 고안되었습니다.

이 모든 기술은 저 전력 및 1U의 공간 효율적 디자인을 채택 함으로써 친환경적인 컴퓨팅을 지원합니다. 소규모 엔터프라이즈의 경우에는 대부분의 기능을 동시에 사용하고 경쟁적으로 제공하기 때문에 모듈 사용에 심각한 제한이 있었습니다.

MPX 5000은 지금 바로 사용 가능하며 유닛 당 12,000달러이고 전 세계적으로 수만 건의 젠앱 구현 해결했습니다. MPX 7500 주문도 곧 가능합니다.8월부터 MPX 9500이 이용 가능 하다는 소식과 함께, 6월 8일부터 새로운 모델을 세 가지 소프트웨어 에디션과 함께 이용할 수 있음을 알려드립니다.

참고 : 새로운 제품의 대략적인 Spec은 아래와 같습니다.
  • MPX5500( DualCore, 4GRAM, 4x10/100/1000 base-T, 500Mbps throughtput)
  • MPX7500( QuadCore, 8GRAM, 8x10/100/1000 base-T, 1Gbps throughput)
  • MPX9500( QuadCore, 8GRAM, 8x10/100/1000 base-T, 3Gbps throughput)

자세한 Spec 내용은 아래의 링크를 통해 확인이 가능합니다.

넷스케일러 Spec 확인