分类 全部文章 下的文章

分享一个好用的webshell,shellinabox

shellinabox,最早是在改华硕[N14U N54U]5G 2G的7620老毛子Padavan固件的路由器固件里使用过,但是固件里写的是webshell,最近用ss代理回家,在公司可以不切换访问公司和家的服务器,偶尔需要使用家里的ubuntu执行一些命令,使用terminal连接ssh的话要连接vpn,这时公司部分内网服务器连不上,所以使用的是群晖的virtul machine manager的novnc连接(ubuntu是群晖上上的虚拟机),分辨率低且没有复制等功能,不方便。想到了路由器上那个webshell,以webshell这个关键词搜索找到了一个php写的webshell,php还需要装环境太麻烦。继续在路由器固件代码里找,最终找到了shellinabox。
配置比较简单
修改/etc/default/shellinabox启动配置文件,添加--disable-ssl,取消https,要不然每次都会弹出不安全页面,比较烦人。然后就是添加root登录,修改/etc/securetty ,添加pts/0,要不然没有权限登录root。

其他参考http://blog.51cto.com/altboy/1956155

shellinabox简介

通常情况下,我们在访问任何远程服务器时,会使用常见的通信工具如OpenSSH和Putty等。但是,有可能我们在防火墙后面不能使用这些工具访问远程系统,或者防火墙只允许HTTPS流量才能通过。不用担心!即使你在这样的防火墙后面,我们依然有办法来访问你的远程系统。而且,你不需要安装任何类似于OpenSSH或Putty的通讯工具。你只需要有一个支持JavaScript和CSS的现代浏览器,并且你不用安装任何插件或第三方应用软件。

这个 Shell In A Box,发音是shellinabox,是由Markus Gutschke开发的一款自由开源的基于Web的Ajax的终端模拟器。它使用AJAX技术,通过Web浏览器提供了类似原生的 Shell 的外观和感受。

这个shellinaboxd守护进程实现了一个Web服务器,能够侦听指定的端口。其Web服务器可以发布一个或多个服务,这些服务显示在用 AJAX Web 应用实现的VT100模拟器中。默认情况下,端口为4200。你可以更改默认端口到任意选择的任意端口号。在你的远程服务器安装shellinabox以后,如果你想从本地系统接入,打开Web浏览器并导航到:http://IP-Address:4200/。输入你的用户名和密码,然后就可以开始使用你远程系统的Shell。看起来很有趣,不是吗?确实 有趣!

免责声明:

shellinabox不是SSH客户端或任何安全软件。它仅仅是一个应用程序,能够通过Web浏览器模拟一个远程系统的Shell。同时,它和SSH没有任何关系。这不是可靠的安全地远程控制您的系统的方式。这只是迄今为止最简单的方法之一。无论如何,你都不应该在任何公共网络上运行它。

安装shellinabox

在Debian / Ubuntu系统上:
shellinabox在默认库是可用的。所以,你可以使用命令来安装它:

$ sudo apt-get install shellinabox

在RHEL / CentOS系统上:
首先,使用命令安装EPEL仓库:

yum install epel-release

然后,使用命令安装shellinabox:

yum install shellinabox

完成!

配置shellinabox
正如我之前提到的,shellinabox侦听端口默认为4200。你可以将此端口更改为任意数字,以防别人猜到。

在Debian/Ubuntu系统上shellinabox配置文件的默认位置是/etc/default/shellinabox。在RHEL/CentOS/Fedora上,默认位置在/etc/sysconfig/shellinaboxd。

如果要更改默认端口,

在Debian / Ubuntu:

$ sudo vi /etc/default/shellinabox

在RHEL / CentOS / Fedora:

vi /etc/sysconfig/shellinaboxd

更改你的端口到任意数字。因为我在本地网络上测试它,所以我使用默认值。

Shell in a box daemon configuration

For details see shellinaboxd man page

Basic options

USER=shellinabox

GROUP=shellinabox

CERTDIR=/var/lib/shellinabox

PORT=4200

OPTS="--disable-ssl-menu -s /:LOGIN"

Additional examples with custom options:

Fancy configuration with right-click menu choice for black-on-white:

OPTS="--user-css Normal:+black-on-white.css,Reverse:-white-on-black.css --disable-ssl-menu -s /:LOGIN"

Simple configuration for running it as an SSH console with SSL disabled:

OPTS="-t -s /:SSH:host.example.com"

重启shelinabox服务。

在Debian/Ubuntu:

$ sudo systemctl restart shellinabox

或者

$ sudo service shellinabox restart

在RHEL/CentOS系统,运行下面的命令能在每次重启时自动启动shellinaboxd服务

systemctl enable shellinaboxd

或者

chkconfig shellinaboxd on

如果你正在运行一个防火墙,记得要打开端口4200或任何你指定的端口。

例如,在RHEL/CentOS系统,你可以如下图所示允许端口。

firewall-cmd --permanent --add-port=4200/tcp

firewall-cmd --reload

使用
现在,在你的客户端系统,打开Web浏览器并导航到:https://ip-address-of-remote-servers:4200

注意:如果你改变了端口,请填写修改后的端口。

你会得到一个证书问题的警告信息。接受该证书并继续。

而且注意访问URL时记得用“https”的方式

输入远程系统的用户名和密码。现在,您就能够从浏览器本身访问远程系统的外壳。

wKioL1mRWviwUYApAAEX5KvUynw549.png

右键点击你浏览器的空白位置。你可以得到一些有很有用的额外菜单选项。

wKioL1mRW4XTyVJcAAD083Snltc341.png

从现在开始,你可以通过本地系统的Web浏览器在你的远程服务器随意操作。

当你完成工作时,记得输入exit退出。

当再次连接到远程系统时,单击连接按钮,然后输入远程服务器的用户名和密码。

wKioL1mRW-7xxpMAAACrpXgDOOc929.png

如果想了解shellinabox更多细节,在你的终端键入下面的命令:

man shellinabox

或者

shellinaboxd -help

同时,参考shellinabox 在wiki页面的介绍,来了解shellinabox的综合使用细节。

结论
正如我之前提到的,如果你在服务器运行在防火墙后面,那么基于web的SSH工具是非常有用的。有许多基于web的SSH工具,但shellinabox是非常简单而有用的工具,可以从的网络上的任何地方,模拟一个远程系统的Shell。因为它是基于浏览器的,所以你可以从任何设备访问您的远程服务器,只要你有一个支持JavaScript和CSS的浏览器。

routeros配置vpn分流大陆ip

20201203更新:Routeros V7的分流方法参考Routeros V7配置策略路由
20201202更新:Routeros V7连接境外服务器的vpn方式可以参考Routeros 配置WireGuard
20200503更新:添加dnsmasq白名单分流解析
20200416更新:添加使用ipip.net的大陆ip列表生成命令并添加了私有ip地址

ros使用pppoe连网,ros上配置vpn连接香港服务器上的ros。目标:内网需要翻墙的ip通过大陆ip列表分流,大陆ip走默认路由,境外ip走vpn。其他内网ip全部走默认路由。
首先下载大陆ip列表,推荐方法2
方法1:

curl 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | grep ipv4 | grep CN | awk -F\| '{ printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > chnroute.txt

生成的txt文件使用sublime的多行编辑功能或其他方式转换成ros的cn-ip.rsc脚本格式。

/ip firewall address-list
add list=cn-ip address=1.0.1.0/24
add list=cn-ip address=1.0.2.0/23
。。。

方法2:使用ipip.net发布在github的大陆ip列表生成

curl -s https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt |sed -e 's/^/add address=/g' -e 's/$/ list=CNIP/g'|sed -e $'1i\\\n/ip firewall address-list' -e $'1i\\\nremove [/ip firewall address-list find list=CNIP]' -e $'1i\\\nadd address=10.0.0.0/8 list=CNIP comment=private-network' -e $'1i\\\nadd address=172.16.0.0/12 list=CNIP comment=private-network' -e $'1i\\\nadd address=192.168.0.0/16 list=CNIP comment=private-network'>cnip.rsc

以上脚本在CNIP列表里添加了私有ip地址192.168.0.0/16,172.16.0.0/12和10.0.0.0/8

方法3:下载别人制作好的脚本
http://www.iwik.org/ipcountry/mikrotik/CN

使用import cnip.rsc导入ros。添加内网需要翻墙的ip列表。
配置ip firewall的mangle
prerouting,source address list,destination address list取反,destination address type,address type local,invert,mark routing,cross-gfw。
配置ip routes的网关
0.0.0.0/0,gateway设置为vpn对端地址,routing mark 使用上面的cross-gfw。

现在解决dns问题,由于ros的dns功能比较弱,这里使用dnsmasq
内网一台linux系统,可以是虚拟机,可以是容器,安装dnsmasq。配置dnsmasq的源dns为google dns,然后使用github上的大陆网址白名单生成脚本添加需要使用大陆解析的域名。https://github.com/felixonmars/dnsmasq-china-list
具体方法参考使用dnsmasq基于大陆域名白名单分流解析域名

chrome不用插件虚拟定位

chrome虚拟gps定位:

使用google地图找到需要虚拟定位的坐标,如图
需要定位的坐标
打开chrome的开发者工具的sensors,输入上面的坐标
chrome的sensors
输入坐标
在当前tab页打开网址
虚拟定位已打开

万兆电口交换机推荐

2019年5月更新
ubnt的万兆poe交换机unifi xg-6poe 开箱测试链接

2017年12月能买到的万兆电口交换机对比推荐
推荐网件的xs716t,16口+2共享sfp+,噪音27db,价格7k,不在乎噪音可以上xs728t,24电口+4独立sfp+,噪音45db。15k左右。
再差一点就是gs110emx,8口千兆,2口万兆电口,简单网管,可配置链路聚,国行价格2.5k,gs110mx是不带管理的傻瓜交换机,跟华硕的XG-U2008类似,价格不到2k。

爱快使用openvpn连接总部和分支机构

先写个坑:设置服务端静态路由后客户端要重新拨号才能生效
分支机构访问总部,可以有两种路由方式,服务端推送路由,客户端自己添加路由
总部访问分支机构,设定客户端为固定ip,服务端设置静态路由,客户端需要重新连接一下静态路由才会生效。