找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 994|回复: 5

烽火HG6142A联通光猫运营商定制化openwrt开启ssh及配置ipv6防火墙

[复制链接]

国内光猫系统这块比较混乱,华为、中兴、烽火、贝尔、天邑等厂商差异化导致系统及配置差异化、运营商定制差异化导致同厂商的不同运营商光猫继续配置差异化。。。

就不吐槽了。




首先先致敬哪些为光猫openwrt折腾付出的大佬们。

achaoge 大佬让我们知道国内光猫下内嵌了lxc运行的openwrt定制化子系统,且数据是可写的,开启了在光猫上自定义脚本、运行自定义服务、自定义防火墙的时代
[光猫] 玩机:激活华为光猫的小宇宙-openwrt
https://www.chinadsl.net/thread-158737-1-1.html

songee 大佬更进一步的分析,让我们知道其LXC的运作机制和一些默认配置、密码(saf-console 默认密码upt/ufw/admin)
F650/450、8145、K662等ARM平台,LXC容器内运行OpenWRT子系统
https://www.chinadsl.net/thread-166731-1-1.html

skyxingcheng 大佬给我折腾烽火光猫提供了一个“他信力”---烽火光猫的高度定制化(高度魔改、阉割)
北京联通 烽火HG6145D1 SSH破解 自定义启动脚本 运行自定义程序-光猫/adsl/cable无线一体机-恩山无线论坛
https://www.right.com.cn/forum/thread-8305846-1-1.html




其他不多赘述,不懂可以看上边三位的帖子。
华为和中兴的光猫都折腾过openwrt,开启ssh也非常的简单。但是烽火的一直没成功过,之前手上有个烽火电信的hg5413f,加上手上的HG6142A一直都无法正常使用ssh和telnetd,原因都是莫名其妙。


再吐槽下,不同运营商的光猫lxc管理工具名字可能不一样、framework目录可能不一样。


步入正题。。。。。。。。。。。。



1. 开启主系统telnet
如何开启telnet就不多说了,


2. 分析主系统及 openwrt
参考achaoge 大佬的思路,
  1. cat /proc/mtd
  2. /var # cat /proc/mtd
  3. dev:    size   erasesize  name
  4. mtd0: 04d00000 00020000 "rootfsA"
  5. mtd1: 04d00000 00020000 "rootfsB"
  6. mtd2: 04400000 00020000 "data"
  7. mtd3: 00100000 00020000 "nvram"
  8. mtd4: 01000000 00020000 "frameworkA"
  9. mtd5: 01000000 00020000 "frameworkB"
  10. mtd6: 02435000 0001f000 "rootfs_ubifs"
  11. mtd7: 0001f000 0001f000 "METADATA"
  12. mtd8: 0001f000 0001f000 "METADATACOPY"
  13. mtd9: 01550000 0001f000 "app_ubifs"
  14. mtd10: 007c0000 0001f000 "felix"
  15. mtd11: 00320e75 0001f000 "filestruct_full.bin"
  16. mtd12: 02435000 0001f000 "rootfs_ubifs"
  17. mtd13: 0001f000 0001f000 "METADATA"
  18. mtd14: 0001f000 0001f000 "METADATACOPY"
  19. mtd15: 01550000 0001f000 "app_ubifs"
  20. mtd16: 007c0000 0001f000 "felix"
  21. mtd17: 00320e75 0001f000 "filestruct_full.bin"
  22. mtd18: 03032000 0001f000 "Apps"
  23. mtd19: 00991000 0001f000 "data"
  24. mtd20: 00554000 0001f000 "factory"
复制代码
发现有frameworkA、frameworkB、Apps分区,基本妥了

再列一下opt目录发现
/opt/cu/
    apps/
    framework/

最后看下进程
  1. ps -w |grep service
  2. 1728 root     34640 S    ufwmg service 4 5 18
复制代码

执行 ufwmg
  1. usage:  ufwmg -s fw1 fw2 apps | -v
  2.         eg.     ufwmg -s 8 9 12
  3.                 ufwmg -v
复制代码

这个ufwmg应该就是lxc的管理工具了,在电信华为光猫叫做saf-huawei,中兴的好像就是saf                               
                               
                               
ps:最终确认联通光猫(新界面的)现在几乎全都也有了openwrt的子系统了。

根据执行ufwmg返回结果可以知道ufwmg高度定制化(残缺阉割),没有console命令,猜测如果有console密码可能是uwf

3. 开始折腾 openwrt ssh 和telnet

当看到这里后以为一切差不多了,以为直接把dropbear copy到/opt/cu/apps/apps/sbin目录下并配置下/opt/cu/apps/apps/etc/init.d/启动脚本和配置参数就行了。

于是开启了苦逼的反复尝试过程...................


3.1 增加开机脚本
cp -a /opt/cu/framework/ufw/rootfs/etc/init.d/done  /opt/cu/apps/apps/etc/init.d/done
sed -i '/set_state done/a \        /root/scripts/bootshell.sh' /opt/cu/apps/apps/etc/init.d/done

3.2 复制 telnet 和 dropbear
mkdir /opt/cu/apps/apps/sbin
cp -a /fhrom/bin/telnetd /opt/cu/apps/apps/sbin/telnetd
cp -a /bin/sshd /opt/cu/apps/apps/sbin/dropbear
cp -a /bin/busybox /opt/cu/apps/apps/sbin/busybox


3.3 开机脚本增加启动任务
mkdir /opt/cu/apps/apps/root/scripts
touch /root/scripts/bootshell.sh
echo "/sbin/telnetd -p 223 &" >> /root/scripts/bootshell.sh
echo "/sbin/dropbear -b /etc/banner -R -P /var/run/dropbear.1.pid -a -p 22 -K 600 -T 10 &" >> /root/scripts/bootshell.sh

重启光猫,期待中·····
五分钟后.................
这款光猫dropbear在 /bin/sshd,但是ssh总是密码错误被拒绝,然后被拒绝后进程自动kill。我已经替换了passwd和shadow了,死活不行。
telnet 不断刷屏错误


3.4 尝试 sshd-lite
此路不通换个思路,初步猜测telnetd和dropbear有问题,于是到github找go静态编译的arm sshd工具,最终找到了个sshd-lite https://github.com/jpillora/sshd-lite
下载tftpd上传sshd-lite 到 /opt/cu/apps/apps/sbin

继续添加开机启动
echo "/sbin/sshd-lite -p 9999 root:admin &" >> /root/scripts/bootshell.sh

重启光猫,期待中·····
later...........


结果sshd-lite在子系统下都无法启动,明明我在主系统测试都正常的。

此时我陷入了沉思中...............
......
.........
.......................

----------------------------------华丽分割线--------------------------

直到看到skyxingcheng的帖子,才知道烽火光猫故意埋坑,深度定制化导致的,于是尝试找自编译后的程序去测试最终发现dropbear和telnetd、busybox全部都魔改了
具体魔改:
  1. 1. 主系统下telnetd 魔改读取 /var/tel_pass 作为密码登录,在openwrt内无法正常运作

  2. 2. dropbear 重命名 sshd,且自动强退

  3. 3. openwrt内的busybox 没有默认命令提示,也就是在openwrt下执行busybox 提示busybox: applet not found

  4. 4. busybox没有telnetd

  5. 5. openwrt内默认环境变量没有$SHELL

  6. 6. openwrt内默认的busybox ash/sh 命令残缺(不支持alias等)

  7. 7. dropbear登录读取的密码是/etc/passwd 而不是 /etc/shadow中
复制代码


于是想到静态自编译busybox和dropbear,太过麻烦不想折腾,最终在网上搜到现成的静态编译的busybox

  1. tftpd 上传将静态编译的 busybox放到 /opt/cu/apps/apps/root/apps/busybox/

  2. mkdir -p /opt/cu/apps/apps/root/apps/busybox
  3. mkdir -p /opt/cu/apps/apps/root/scripts
  4. mkdir -p /opt/cu/apps/apps/bin
  5. mkdir -p /opt/cu/apps/apps/sbin
  6. mkdir -p /opt/cu/apps/apps/etc/init.d

  7. # 用静态编译的busybox的telnetd
  8. cd /opt/cu/apps/apps/root/apps/busybox/
  9. ln -s busybox telnetd
复制代码


在/root/scripts/bootshell中增加启动telnetd
  1. /root/apps/busybox/telnetd -p 223 -l /bin/ash &
复制代码

重启光猫,发现telnet 192.168.1.1 223可以直接登录openwrt了,没有任何认证

然后在openwrt内修改/etc/passwd
第一行修改为
  1. root:$1$aemU7i6s$VvOdzFX.bqR62qltmlUqE0:0:0:root:/:/bin/ash
复制代码

重启光猫
ssh root@192.168.1.1
root
123456
成功登录ssh

已经可以telnet和ssh进openwrtl总算可以去看看sshd-lite根本问题了
telnet 进 openwrt后
  1. /sbin/sshd-lite -p 9999 root:admin
复制代码

提示 如下:
  1. 1970/01/01 08:18:03 failed to find shell: bash
复制代码

继续看帮助日志
  1. Usage: sshd-lite [options] <auth>

  2.   Version: 0.0.0-src

  3.   Options:
  4.     --host, listening interface (defaults to all)
  5.     --port -p, listening port (defaults to 22, then fallsback to 2200)
  6.     --shell, the type of to use shell for remote sessions (defaults to $SHELL, then bash/powershell)
复制代码

echo $SHELL
结果为空,又没有bash,所有sshd-lite 根本无法找到shell
  1. /sbin/sshd-lite --shell /bin/ash -p 9999 root:admin
复制代码

完美搞定,sshd-lite 也可以登录了。

openwrt下 iptables 准备
主系统下执行
  1. cp -a /bin/xtables-multi /opt/cu/apps/apps/sbin/

  2. cd opt/cu/apps/apps/sbin/
  3. ln -s xtables-multi ip6tables-restore
  4. ln -s xtables-multi ip6tables-save
  5. ln -s xtables-multi iptables
  6. ln -s xtables-multi iptables-restore
  7. ln -s xtables-multi iptables-save
复制代码


重启进入openwrt
iptables -L 就可以看到iptables输出了,然后就可以自由添加iptables规则了


4. 总结
最终简化所有命令如下:
  1. # 创建apps相关目录
  2. mkdir -p /opt/cu/apps/apps/root/apps/busybox
  3. mkdir -p /opt/cu/apps/apps/root/scripts
  4. mkdir -p /opt/cu/apps/apps/bin
  5. mkdir -p /opt/cu/apps/apps/sbin
  6. mkdir -p /opt/cu/apps/apps/etc/init.d

  7. ### tftpd 上传 附件中的busybox 到 /opt/cu/apps/apps/root/apps/busybox/目录
  8. ### copy主系统文件到openwrt
  9. # 配置 busybox
  10. cp -a /bin/busybox /opt/cu/apps/apps/sbin/
  11. cd /opt/cu/apps/apps/sbin/
  12. ln -s busybox ../bin/ash
  13. ln -s busybox ../bin/sh

  14. # 利用上传的busybox 创建 telnetd 软链接
  15. chmod +x /opt/cu/apps/apps/root/apps/busybox/busybox
  16. cd /opt/cu/apps/apps/root/apps/busybox/
  17. ln -s busybox telnetd

  18. # 配置iptables
  19. cp -a /bin/xtables-multi /opt/cu/apps/apps/sbin/
  20. cd opt/cu/apps/apps/sbin/
  21. ln -s xtables-multi ip6tables-restore
  22. ln -s xtables-multi ip6tables-save
  23. ln -s xtables-multi iptables
  24. ln -s xtables-multi iptables-restore
  25. ln -s xtables-multi iptables-save


  26. # 配置 dropbear
  27. cp -a /bin/sshd /opt/cu/apps/apps/sbin/dropbear


  28. # 配置profile
  29. cp -a /opt/cu/framework/ufw/rootfs/etc/profile  /opt/cu/apps/apps/etc/profile
  30. echo "" >>/opt/cu/apps/apps/etc/profile
  31. echo "export SHELL="/bin/ash"" >>/opt/cu/apps/apps/etc/profile

  32. # 配置 passwd root 密码设置为123456
  33. cp -a /opt/cu/framework/ufw/rootfs/etc/passwd /opt/cu/apps/apps/etc/passwd
  34. sed -i "s/root:x:0:0:root:\/root:\/bin\/ash/root:\$1\$aemU7i6s\$VvOdzFX.bqR62qltmlUqE0:0:0:root:\/:\/bin\/ash/g" /opt/cu/apps/apps/etc/passwd

  35. # 配置bootshell.sh
  36. cp -a /opt/cu/framework/ufw/rootfs/etc/init.d/done  /opt/cu/apps/apps/etc/init.d/done
  37. sed -i '/set_state done/a \        /root/scripts/bootshell.sh' /opt/cu/apps/apps/etc/init.d/done

  38. touch /root/scripts/bootshell.sh
  39. echo "/root/apps/busybox/telnetd -p 223 -l /bin/ash &" >> /root/scripts/bootshell.sh
  40. echo "/sbin/dropbear -b /etc/banner -R -P /var/run/dropbear.1.pid -a -p 22 -K 600 -T 10 &" >> /root/scripts/bootshell.sh
复制代码

重启光猫
ssh 22端口 root 123456
telne 223 端口




最后回顾下:
没注意/etc/passwd 和 /etc/shadow,有些时候密码是直接在/etc/passwd 而不是在/etc/shadow
没想到openwrt内的busybox彻底是个残废,更没想到ash 和 sh 都是废了,SHELL环境变量也不存在
没想到ufwmg和telnetd都被阉割了




评分

参与人数 1恩山币 +1 收起 理由
0x*** + 1 牛批

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
大佬牛批...感谢分享经验

点评

附上 静态编译的全功能 busybox  详情 回复 发表于 2024-1-15 19:33
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
0x90 发表于 2024-1-15 18:12
大佬牛批...感谢分享经验

附上 静态编译的全功能 busybox

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

大佬,光猫开启openwrt后,是不是可以装小猫咪shell了,会不会满载发热导致网络质量下降…

点评

iptable 做流量转发的话openwrt内也是可以的,需要手动配置安装,不支持op仓库安装,发热这块其实不大。看你自己网络使用情况  详情 回复 发表于 2024-3-6 18:15
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
aslktv 发表于 2024-3-6 17:00
大佬,光猫开启openwrt后,是不是可以装小猫咪shell了,会不会满载发热导致网络质量下降… ...

iptable 做流量转发的话openwrt内也是可以的,需要手动配置安装,不支持op仓库安装,发热这块其实不大。看你自己网络使用情况

点评

谢谢大佬,66666  详情 回复 发表于 2024-3-6 18:32
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

jonhy 发表于 2024-3-6 18:15
iptable 做流量转发的话openwrt内也是可以的,需要手动配置安装,不支持op仓库安装,发热这块其实不大。 ...

谢谢大佬,66666
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-29 21:36

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表