언젠가 PR넣을 것 같은 기분이 듭니다
쏘-쓰는 여기어딘가 있음 https://github.com/koreapyj/openwrt/tree/openwrt-21.02.1
그냥 순정 펌웨어 업데이트로 밀어넣으면 돼요
리셋버튼 정상작동유무 모르니 조심히 쓰세요 벽돌복구하려면 UART 꽂아야 할 지도 모릅니다
부트로더 iptime 기본 리커버리 모드는 정상작동함 혹시 벽돌되면 전원 꽂으면서 리셋버튼 꾹 눌러보세요
by 박윤지
언젠가 PR넣을 것 같은 기분이 듭니다
쏘-쓰는 여기어딘가 있음 https://github.com/koreapyj/openwrt/tree/openwrt-21.02.1
그냥 순정 펌웨어 업데이트로 밀어넣으면 돼요
리셋버튼 정상작동유무 모르니 조심히 쓰세요 벽돌복구하려면 UART 꽂아야 할 지도 모릅니다
부트로더 iptime 기본 리커버리 모드는 정상작동함 혹시 벽돌되면 전원 꽂으면서 리셋버튼 꾹 눌러보세요
이 글의 내용은 GitHub 저장소 README.md 파일의 내용을 복사한 것입니다.
Hanbit Electronics CAPL-6000
으로 ar71xx
에 등록되어 있습니다.관리 페이지에 로그인합니다.
시스템 설정으로 이동한 뒤 F12를 눌러 개발자 도구를 열고 <body>
태그 바로 하위에 있는 <form>
태그를 눌러 다음과 같이 변경합니다.
<script>
function FirmStat(pForm) {
var firmware_name;
var index_1, index_2;
var upgradeMsg = "ㄹㅇ?";
firmware_name = pForm.file.value;
if (((index_2 = firmware_name.lastIndexOf(".")) != -1) &&
(index_2 > parseInt(index_1 + 1)) &&
(firmware_name.substring(index_2) == ".bin")) {
// 경고 문구 입력
yesorno = confirm(upgradeMsg);
if (yesorno == true) {
document.body.style.cursor = 'wait';
document.forms[0].submit();
}
} else {
alert("upload 파일이 아닙니다. 파일을 다시 선택해 주세요");
return;
}
}
</script>
<form action="upgrade.cgi" method="POST" ENCTYPE="multipart/form-data">
<div align=center>
<table border="0" cellpadding="0" cellspacing="1" width="620" bgcolor="#CCCCCC">
<tr>
<td width="620" bgcolor="white">
<table border="0" cellpadding="2" cellspacing="1" width="620">
<tr>
<td class=contents width=165 bgcolor=f0f0f0 align=center>소프트웨어 업그레이드</td>
<td bgcolor=f8f8f8><input type="file" name="file" style="background-color:white; value=" image.bin"
size=30>
<input class=btn type="button" name="upgradebtn" value="업그레이드 시작" style="width:100"
Onclick="FirmStat(this.form);">
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</form>
openwrt-ar71xx-generic-capl_6000-initramfs-kernel.bin
를 선택하여 펌웨어 업데이트를 진행합니다. 업데이트가 완료되면 인터넷 연결이 끊기게 되며 약 2~3분 뒤에 다시 인터넷 연결이 가능해집니다.
인터넷에 연결되면 PuTTY등 ssh 클라이언트를 사용하여 192.168.1.1
로 접속합니다. 계정은 root
에 패스워드는 없습니다.
정상적으로 접속되면 셸에서 아래 내용을 입력하여 실행시킵니다.
wget http://api.dcmys.kr/capl6000/openwrt-ar71xx-generic-capl_6000-squashfs-sysupgrade.bin -O - | mtd -e firmware write - firmware
완료되면 reboot
를 이용하여 재부팅합니다.
재부팅이 완료되고 인터넷에 연결되면 다시 192.168.1.1
로 ssh 접속합니다.
passwd를 입력하여 root 패스워드를 설정합니다.
이 배포판에는 luci 등 기본적인 패키지가 포함되어 있지 않습니다. 필요한 패키지가 있는 경우 opkg를 이용하여 설치하시기 바랍니다.
라는 내용으로 검색을 해보면, 국내 해외 가리지 않고 대부분 /etc/sudoers
에 NOPASSWD
를 사용하라고 한다.
그러나, 이는 sudo의 인증 자체를 무력화시키는 방법으로, 물리적 취약점 외에도 악의적 스크립트에 의한 root 탈취 등 보안 리스크가 크다고 볼 수 있다.
여기서는 pam-ssh-agent-auth를 이용하여 sudo에 ssh-agent 인증을 추가하는 방법을 알아본다.
먼저 libpam-ssh-agent-auth
를 설치한다.
$ sudo apt update
$ sudo apt install libpam-ssh-agent-auth
pam.conf
를 수정하여 위에서 설치한 libpam-ssh-agent-auth
를 사용하도록 한다.
배포판에 따라 차이가 있지만 Ubuntu의 경우 /etc/pam.d
폴더가 존재하고 /etc/pam.d
가 존재하면 /etc/pam.conf
가 무시되기 때문에 /etc/pam.d
를 수정해야 한다.
common-auth
상위에 오도록 아래와 같이 수정한다.
/etc/pam.d/sudo
...
# ssh-agent auth
auth sufficient pam_ssh_agent_auth.so file=~/.ssh/authorized_keys
@include common-auth
...
sudo
버전이 1.8.5
미만인 경우, sudoers
도 수정해야 한다.
/etc/sudoers ($ sudo visudo
)
...
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
# ssh-agent auth
Defaults env_keep+=SSH_AUTH_SOCK
...
ssh-agent
가 켜져있고~/.ssh/
와 ~/.ssh/authorized_keys
가 root
또는 현재 사용자의 소유이며 자기 자신을 제외하고는 쓰기 권한이 없어야상기한 /etc/pam.d/sudo
의 pam_ssh_agent_auth.so
가 있는 줄 끝에 debug
를 붙인 다음 /var/log/auth.log
를 잘 살펴보면 왜 안되는지 이유를 알려줄 것이다.
기본적으로 포워딩되었다고 하더라도 ssh-agent 소켓은 다른 유저가 사용할 수 없다.
그러나 root는 모든 것이 가능하므로 당연히 내 ssh-agent 소켓을 접근해서 나의 개인키로 다른 곳에 인증하는 것 또한 가능하다.
root에 내가 아닌 다른 사람이 접근할 수 있는 환경이라면 NOPASSWD
로 인한 보안 위협을 차단하고 새로운 형태의 보안 위협을 만드는 것이 될 수 있으므로 사용하지 않는 것이 좋겠다.
오랜만입니다.
이번에 업무상 필요로 K전화국에서 인터넷전화를 개통했습니다.
그런데 아무래도 고정된 장소에서 업무를 하는게 아니다보니 기왕이면 가지고 다닐 수 있었으면 좋겠습니다.
착신전환은 통화료가 발생하므로 피하고 싶습니다.
방법을 고민하다 SIP 계정을 빼내서 다른 단말기에 넣으면 되겠다는 생각이 들었습니다.
그래서 빼냈습니다.
이 글에서는 그 방법을 서술합니다. 글이 너무 친절하면 아무나 따라하니까 약간 불친절하게 하기로 합니다.
과거에는 패스워드가 Basic 인증을 통해 암호화되지 않은채 전송되었습니다. 2010년 언저리였던 것 같은데, 이때 많은 분들이 myLG070 계정을 빼내서 사용하셨죠.
그런데 이게 문제가 되어 TTA에서는 SIP에 대해 Digest 인증을 권고하게 되어 이후 한동안 SIP 계정을 빼낼 수 없게 되었습니다.
그러나 호환성을 위해 단말기는 여전히 Basic 인증을 지원하고 있습니다. 이때문에 저는 단말기에게 가짜 서버를 알려주어 Basic 인증을 요구하면 될 것이라 생각했습니다.
그리고 이게 된 거죠.
이는 중간자 공격과 다운그레이드 공격을 수행합니다. 일종의 보안 취약점이라고 볼 수도 있습니다. 그러나 통신사 서버에만 붙으면 되는 일반적인 인터넷전화와는 달리 업무용 전화는 때때로 고객사의 PBX와도 동작이 가능해야 합니다. 따라서 제조사는 Basic 인증의 지원을 포기하기 어려운 상황입니다.
그렇다면 통신사는 SIP over TLS와 같은 다른 방법을 통해 충분히 SIP 계정의 노출을 방지할 수 있다고 생각되며 이것이 가장 정상적이고 합리적인 방법이며 보안성도 향상시킬 수 있으리라 생각합니다.
굳이 통신사가 SIP 계정의 노출을 막으려는 이유를 저는 잘 모르겠습니다.
이번에는 kt LTE egg+ A (인포마크 IML450) 제품의 관리자 모드를 접속해보겠습니다.
동작 확인 소프트웨어 버전 : R7202 (Aug 8 2017)
1. 단말기 배터리 커버를 분리하고 상단의 SSID 맨 마지막 세 자리 숫자 (ktEgg_xxx)를 기억합니다.
2. 에그의 네트워크에 접속한 다음, 브라우저를 통해 아래 주소로 접속합니다. 192.168.1.1:50xxx의 xxx에는 1에서 기억해둔 숫자를 입력합니다.
http://192.168.1.1:50xxx/cgi-bin/webmain.cgi?act=change_htpasswd&ac=ADMIN&id=admin&passwd=123456&confirm=123456
3. 이제 http://192.168.1.1:50xxx/ 로 접속한 다음 ID admin, 패스워드 123456으로 로그인합니다.
관리자 모드로 접속되었습니다.