새 펌웨어(1.58)에서 버팔로 NAS 루팅하기

나스 장비를 루팅하는 이유

꽤 오래 전에 버팔로 나스를 리뷰했었다. 케이스 가격은 10만원대 이기 때문에 네트워크 저장 매체로는 상당히 저렴한 편이다. 또 가격은 저렴하지만 있을 만한 기능은 대부분 있다. 따라서 잘 사용하면 의외로 활용도가 높다. 아울러 이런 나스 장비는 루팅을 하면 훨씬 더 다양한 작업이 가능해진다. 한예로 버팔로 나스의 웹 포트는 81번이다. 그런데 이 포트를 일반 웹 포트로 바꿀 수 있다. 또 필요하다면 'Air Video' 서버 같은 것을 돌릴 수도 있다. 이렇게 때문에 거의 대부분의 나스 장비 역시 많은 사람들이 루팅을 하고 있다. 다만 버팔로 나스는 펌웨어가 판올림되며 PHP Shell을 이용한 루팅이 막혔다. 따라서 오늘은 PHP Shell을 이용하는 것에 비해 조금 더 복잡하지만 근원적으로 루팅하는 방법을 소개하겠다.

동작하지 않는 나스 루팅

오랜 만에      버팔로 나스     루트 로그인을 시도했다. 예전에 한번 올렸지만      PHP Shell을 이용하면 상당히 손쉽게 루트 권한을 획득할 수 있다. 그런데 이 방법은 더 이상 동작하지 않았다. 당시 펌웨어(Firmware)는 1.31이었다. 그런데 펌웨어를 판올림(1.56)하며 패치된 것 같았다. 그러나 아이폰에서 알 수 있는 것처럼 탈옥은 막아도 뚫린다. 이에비해 버팔로 나스에서 루팅을 막는 방법은 좀 허술하다. 따라서 인터넷을 검색해 보면 펌웨어 1.56에서도 루트 권한을 얻는 방법이 올라와 있을 것으로 생각했다. 방법은 올라와 있지만 의외로 동작하는 방법은 찾기 힘들었다.


버팔로 링크스테이션

     버팔로 링크스테이션 리뷰에서 소개한 나스 장비. 중간의 파란색 기기는 외장 하드 디스크다. 나스가 2TB이고 외장 하드가 1TB이기 때문에 총 3.5TB가 나스에 물려있다.

그러다 알게된 프로그램이 acp_commander.jar이다.      PHP Shell을 이용해서 루팅하는 방법을 쓸때도 알던 프로그램이다. 다만 당시에는 프로그램으로는 루트 권한을 얻을 수 없는 것으로 알았다. 그런데 오늘 찾아 보니 acp_commander.jar라는 프로그램은 단순히 루트 권한을 얻는 프로그램이 아니었다. 버파로 나스에서 특정 명령을 실행할 수 있는 프로그램이었다. 한 예로 -c "cp /etc/init.d/sshd.sh /mnt/usbdisk1"과 같은 옵션을 주면 sshd.sh라는 파일을 사용자가 접근할 수 있는 외장 하드 영역으로 복사해 준다주1. 즉, acp_commander.jar를 이용하면 콘솔 로그인을 하지 않아도 콘솔 명령을 실행한 수 있다.

버팔로 나스 루팅


루팅 전과 후

루팅을 하지 않으면 그림 오른쪽 위처럼 네트워크 오류가 뜬다. 그러나 루팅을 하고 나면 root라는 아이디로 바로 로그인할 수 있다. 리눅스에서 최고 관리자 권한을 획득했기 때문에 나스 장비를 마음 껏 가지고 놀 수 있다.

따라서 유닉스나 리눅스에 대해 어느 정도 알고 있는 사람이라면 버팔로 나스의 설정 파일을 acp_commander.jar를 이용해서 바꿈으로서 루트 권한을 얻을 수 있다. 절차도 그리 복잡한 것이 아니다. ① passwd 명령으로 루트(root)의 암호를 바꾼다. ② 콘솔 로그인을 허용하도록 sshd 설정을 바꾼다. ③ 마지막으로 sshd 서버를 다시 기동한다. 이렇게하면 putty    와 같은 프로그램으로 루트 로그인이 가능했다. 루팅을 하지 않으면 그림 오른쪽 위처럼 네트워크 오류가 뜬다. 그러나 루팅을 하고 putty    를 이용하면 바로 root로 로그인할 수 있다. 따라서 오늘은 다시 버팔로 나스에 root로 로그인하는 방법을 설명하겠다. 이 방법은 1.56에서 시험했고 최신 펌웨어인 1.58에서도 잘 동작하는 것을 확인했다.

  1. 먼저 JRE를 컴퓨터에 설치한다. JRE여기    에서 내려받을 수 있다. JRE를 설치하는 것은 따로 설명하지 않겠다. 알아서 설치하기 바란다. 또 이런 기본적인 내용은 질문해도 답하지 않는다.

  2. acp_commander.jar를 내려받는다. acp_commander.jaracp_commander.jar    를 클릭하면 받을 수 있다.

  3. 다음 내용을 메모장에 복사한 뒤 rooting.cmd라는 이름으로 저장한다. 추가로 편집할 부분이 있으므로 메모장을 끝내지 않는 것이 좋다.

    @<a href="https://twitter.com/echo" target="_blank">echo</a> off
    REM JAVAPATH는 JRE가 설치된 경로. 해당 경로에 java.exe가 있어야 함
    REM NASIP는 나스 장비의 IP 주소
    REM ADMINPW는 버팔로 나스 웹 로그인할 때 사용되는 암호
    REM ROOTPW는 콘솔로 로그인할 때 사용할 암호
    SET JAVAPATH=
    SET NASIP=
    SET ADMINPW=
    SET ROOTPW=
    REM passwd 명령을 이용해서 root의 암호를 rootpw로 바꿈
    "%JAVAPATH%\java.exe" -jar acp_commander.jar -t %NASIP% -ip %NASIP% -pw %ADMINPW% -c "(echo %ROOTPW%;echo %ROOTPW%)|passwd" > nul
    echo 1. 루트 암호를 %ROOTPW%로 바꾸고 있습니다.
    REM PAM 모듈을 사용하지 않도록 설정
    "%JAVAPATH%\java.exe" -jar acp_commander.jar -t %NASIP% -ip %NASIP% -pw %ADMINPW% -c "sed -e 's/UsePAM.*yes/UsePAM no/g' -i /etc/sshd_config" > nul
    echo 2. PAM 모듈을 사용하지 않도록 설정합니다.
    REM SSH 설정에서 루트 로그인을 허용하도록 바꿈
    "%JAVAPATH%\java.exe" -jar acp_commander.jar -t %NASIP% -ip %NASIP% -pw %ADMINPW% -c "sed -i 's/PermitRootLogin no/PermitRootLogin yes/g' /etc/sshd_config" > nul
    echo 3. 루트 로그인을 허용하도록 바꿉니다.
    REM SFT를 사용할 수 있도록 설정
    "%JAVAPATH%\java.exe" -jar acp_commander.jar -t %NASIP% -ip %NASIP% -pw %ADMINPW% -c "sed -i 's/"${SUPPORT_SFTP}" = "0"/"${SUPPORT_SFTP}" = "1"/g' /etc/init.d/sshd.sh" > nul
    echo 4. SFTP를 사용하록 바꿉니다.
    REM sshd를 다시 시작함
    "%JAVAPATH%\java.exe" -jar acp_commander.jar -t %NASIP% -ip %NASIP% -pw %ADMINPW% -c "/etc/init.d/sshd.sh restart" > nul
    echo 5. sshd를 다시 시작합니다.
    echo.
    echo 이제 버팔로 나스에 root로 로그인할 수 있습니다. 로그인 암호는 %ROOTPW%입니다.
    

  4. 메모장에서 다음 내용을 바꾼다.

    • SET JAVAPATH=: JRE가 설치된 경로를 지정한다. 해당 폴더에 java.exe가 있어야한다.
      예: SET JAVAPATH=c:\Program Files (x86)\Network\Java\bin
    • SET NASIP=: 버팔로 나스의 IP 주소를 지정한다. 주소는 알아서 찾아내기 바란다.
      예: SET NASIP=192.168.1.252
    • SET ADMINPW=: 웹에서 버팔로 나스에 로그인할 때 사용하는 암호를 지정한다.
      예: SET ADMINPW=madbulls
    • SET ROOTPW=: root로 로그인할 때 사용할 암호를 지정한다.
      예: SET ROOTPW=fuckingmb
  5. 파일을 저장하고 도스 명령행에서 rooting.cmd를 실행한다. 이때 주의할 것은 rooting.cmd라는 파일과 acp_commander.jar같은 폴더에 있어야 한다.

코드 설명

마지막으로 혹 더 궁금해 하는 사람이 있을지 몰라 각각의 코드를 설명하면 다음과 같다.

  • -c "(echo %ROOTPW%;echo %ROOTPW%)|passwd"
    passwd라는 유닉스 명령을 실행하며 자동으로 ROOTPW를 입력한다.
  • -c "sed -e 's/UsePAM.*yes/UsePAM no/g' -i /etc/sshd_config"
    sed 명령을 이용해서 sshd_config 파일의 내용 중 UsePAM yes를 UsePAM no로 바꾼다.
  • -c "sed -i 's/PermitRootLogin no/PermitRootLogin yes/g' /etc/sshd_config"
    마찬가지로 sed 명령을 이용해서 ssh_config 파일의 내용 중 PermitRootLogin no을 PermitRootLogin yes로 바꾼다. 즉, 루트 로그인을 허용하도록 바꾸는 과정이다.
  • -c "sed -i 's/"${SUPPORT_SFTP}" = "0"/"${SUPPORT_SFTP}" = "1"/g' /etc/init.d/sshd.sh"
    sed 명령을 이용해서 sshd.sh 파일의 내용 중 "${SUPPORT_SFTP}" = "0"를 "${SUPPORT_SFTP}" = "1"로 바꾼다. 즉, SFTP를 지원하도록 바꾸는 부분이다.
  • -c "/etc/init.d/sshd.sh restart"
    변경된 설정을 적용ㄹ하기 위해 sshd 대몬을 다시 시작한다.

남은 이야기

일단 rooting.cmd를 실행하고 나면 다음 그림처럼 루트 ID로 로그인 된다. SSH를 이용해서 로그인해야 하므로 Putty    주2와 같은 프로그램을 사용하면 된다. 이 방법은      PHP Shell을 이용한 방법과는 달리 나스 장비를 다시 부팅해도 루팅 상태가 유지된다. 버팔로 나스의 시스템 파일을 acp_commander.jar를 이용해서 직접 변경했기 때문이다. 다만 버팔로 나스 장비의 루팅컴퓨터와 운영체제에 대한 지식이 있는 사람만 따라하기 바란다. 어차피 이런 지식이 없는 사람이라면 굳이 루팅할 필요도 없고 루팅해도 할일도 없기 때문이다주3.


루팅된 나스

별것 아닌 것 같지만 root로 로그인하면 시스템 전체를 마음대로 주물룰 수 있기 때문에 상당히 편하다.

관련 글타래
잠깐만
  1. 시스템 파일은 설정에 따라 외장 하드 영역으로 복사해도 읽을 수 없다. chown 명령을 이용해서 소유권을 바꾸거나 chmod를 이용해서 접근 권한을 바꿔야 한다.
  2. 개인적으로 가장 좋아하는 콘솔 프로그램은 SecureCRT이다. 콘솔 작업이 많을 때에는 항상 설치하는 프로그램이었다. 그러나 요즘은 콘솔 작업이 많지 않아 Putty를 사용하고 있다.
  3. '기초적인 부분을 설명하지 않고 질문해도 답을 하지 않겠다'고 한 것도 같은 맥락이다.
2012/07/08 08:08 2012/07/08 08:08
글쓴이
author image
운영체제의 모든 것을 운영하고 있는 IT 블로거. IT 블로거라는 이름은 현재 시국때문에 시사 블로거로 바뀐 상태다. 그러나 나는 아직도 시사와 사회에 관심이 많은 IT 블로거일 뿐이다. 컴퓨터, 운영체제, 시사, 가족, 여행, 맛집, 리뷰등과 살면서 느끼는 소소한 일상이 블로그의 주제이다. 왼쪽의 아이콘은 둘째 딸 다예가 그린 내 모습이다.
오늘의 이슈 다음에서 새롭게 서비스하고 있는 소셜픽입니다. OpenAPI로 구현한 것이 아니라 가끔 사라질 때도 있습니다. 또 10분에 한번 갱신하기 때문에 실제 소셜픽과 약간 차이가 있습니다.
  1. 1
    검색: 1,722,579 트윗: 1,783 댓글: 3,549
    스타뉴스 가수 손호영이 자신의 차량에서 자살을 시도하다 시민의 신고에 의해 병원에 후송된 가운데, 병원 측은 손호영의 현재 건강 상태에 대해 공식 입장을 곧 전할 예정이다. 손호영이 옮겨진 서울 한남동 순천향병원 측은 24일
  2. 2
    검색: 143,295 트윗: 2,301 댓글: 2,966
    독립 인터넷 언론 뉴스타파가 조세피난처에 법인이나 계좌를 보유한 한국인 명단을 공개하기로 했습니다. 뉴스타파는 오늘 오후 2시 기자회견을 열고 국제탐사보도언론인협회, ICIJ와의 공동 취재 결과를 공개할 계획이라고 밝혔습니다.
  3. 3
    검색: 55,684 트윗: 996 댓글: 4,028
    중국의 정치적 체면을 세워주기 위한 포석이라는 분석이 나왔다. 대만 중국시보는 24일 김정은 북한 국방위원회 제1위원장의 특사 자격으로 중국을 방문 중인 최룡해 인민군 총정치국장이 전날 "중국의 건의를 받아들여 관련국들과 대화에 나서기를
  4. 4
    검색: 373,797 트윗: 1,805 댓글: 3,115
    전두환 전 대통령의 미납 추징금 1672억원에 대한 집행 시효가 5달여 남은 가운데 검찰이 2004년 전 전 대통령 비자금 채권을 찾고도 추징하지 않은 사실이 뒤늦게 밝혀져 비난을
  5. 5
    검색: 57,603 트윗: 1,974 댓글: 444
    성남시는 LH공사를 오늘 경찰에 고발했고 LH 공사는 시의 행정 대집행이 보복적 조치라고 반발했습니다. [조명헌/LH공사
  6. 6
    검색: 34,276 트윗: 561 댓글: 1,435 우리 정부가 미국 측에 차기 전투기로 미국산이 선정되면 전투기에 탑재할 미사일 등의 무기 8억달러 상당을 추가 구매하겠다는 의향을 전한 것으로 확인됐다.
  7. 7
    검색: 24,457 트윗: 1,225 댓글: 753 ‘야생진드기 의심환자’ 위기 탈출 10문10답 야생 진드기가 전국을 공포에 떨게하고 있다. 5월25일 현재 야생 진드기 바이러스에 감염돼 2명이 사망했고, 의심 환자 1명이 숨졌다. 의학 전문용어로는 ‘중증열성혈소판감소증후군’
  8. 8
    검색: 19,609 트윗: 575 댓글: 1,386 기자 = 박원순 서울시장의 장남인 주신씨가 24일 롯데호텔 맹경호 이사의 딸과 화촉을 밝혔다. 서울시에 따르면 두 사람은 박 시장의 뜻에 따라 박 시장의 직계가족 30여 명 등 양가 친인척만 모인 가운데 이날 오후 5시 시내 모처에서
  9. 9
    검색: 62,073 트윗: 424 댓글: 1,513 2월5일자)에 공개한 재산보다 소폭 증가한 것이다. 정홍원 국무총리는 18억7739만원의 재산을 등록했다. 국무위원 중엔 조윤선 여성가족부 장관의 재산이 46억9738만원으로 가장 많았다. /그래픽=강기영 디자이너
  10. 10
    검색: 22,423 트윗: 1,252 댓글: 470 농협중앙회 임원 일괄 사퇴비상경영체제 가동 조선비즈 | 문승관 기자 | 입력 2013.05.24 11:51
오늘의 글
인기있는 글
컴퓨터 팁&텍
트랙백 많은 글
조회수 많은 글 | 베오베
댓글 많은 글 | 베오베

Trackback

Trackback Address :: http://offree.net/trackback/3580

Facebook

Comments

  1. 김도형 2012/07/08 16:04

    굉장히 흥미롭네요. 궁금한점이 있는데요 제가 외장하드를 갖고 잇는데, 이외장하드를 버팔로링크스테이션에 연결에서 나스용량 확장이 가능한가요? 똑같이 쓸수 있는지요? 가능하다면 구입해서 사고싶네요 ^^

    perm. |  mod/del. reply.
  2. 장영조 2012/09/11 11:44

    버팔로 링크스테이션을 사용하고 있는데, 위의 글 내용따라 루트 로그인에 성공했는데
    어떻게 하면 웹 포트를 바꿀수 있나요?
    혹시 아시면 사이트라도 알려 주시면 고맙겠습니다.
    꼭 해보고 싶은데 이리저리 알아봐도 방법을 알수 없네요 좀 부탁드려도 될까요?

    perm. |  mod/del. reply.
    • 도아 2012/09/11 15:35

      말 몇마디로 알려줄 수 있는 부분은 아니고요. 또 인터넷에 관련 글이 있는지도 모릅니다. 제가 직접 바꾼 것이고 나중에 시간이 나면 관련 글을 올릴 생각입니다. 글이 휴지통에 있어서 복원했습니다.

  3. EAVAN 2012/11/14 22:28

    잘 따라했는데... 1.63 패치에선 막혀 버린것 같네요..ㅠ

    perm. |  mod/del. reply.
    • 도아 2012/11/15 09:55

      acp_commander.jar만 정상적으로 동작한다면 막을 수는 없습니다. 내부 설정이 바뀔 수는 있지만 acp_commander.jar를 이용하면 바로 설정을 변경할 수 있기 때문이죠. 저는 아직 패치를 하지 않아서 확인은 못했습니다만 나중에 시간이 되면 한번 확인해도록 하겠습니다. 글은 휴지통에 있어서 복구했습니다.

    • 막장개발자 2012/11/29 23:32

      방화벽을 푸시면 해결됩니다.

  4. EAVAN 2012/11/19 21:05

    root 비밀번호 변경시 아래와 같은 에러가 나는데 이유를 알수 있을까요?

    java -jar acp_commander.jar -t 192.168.0.10 -ip 192.168.0.10 -pw [admin비밀번호] -c "<echo 123456;echo 123456>|passwd" > nul

    ERROR: Exception: SocketTimeoutException (Receive timed out) [ACP Send/Receive (
    Packet:8020 = ACP_Discover)]

    perm. |  mod/del. reply.
  5. 이동욱 2013/03/05 16:29

    관리자만 볼 수 있는 댓글입니다.

    perm. |  mod/del. reply.

쥐박쥐가 아니라면 소통하세요!!!

(옵션: 없으면 생략)

글을 올릴 때 [b], [i], [url], [img]와 같은 BBCode를 사용할 수 있습니다.