Linux

Linux 下修复磁盘:ntfsfix

sudo ntfsfix /dev/sda1 [sudo] password for shu: Mounting volume… $MFTMirr does not match $MFT (record 0). FAILED Attempting to correct errors… Processing $MFT and $MFTMirr… Reading $MFT… OK Reading $MFTMirr… OK Comparing $MFTMirr to $MFT… FAILED Correcting differences in $MFTMirr record 0…OK Processing of $MFT and $MFTMirr completed successfully. Setting required flags on partition… OK …

Linux 下修复磁盘:ntfsfix Read More »

Linux SSH登录/密码错误邮件提醒

想给服务器加一个功能,每当有人SSH成功登录都给管理员发封邮件作为提醒。 同时若有人暴力破解密码达到一定次数封禁对方IP数小时并且同时也发邮件提醒。 服务器发邮件用到了sendmail包: sudo apt install sendmail 首先检查OpenSSH是否开启了PAM,检查”/etc/ssh/sshd_config” 看下UsePAM是否非yes并且未被注释掉,我的服务器默认是正确的 然后创建一个login-notify.sh文件,我放在了/etc/ssh/,填入下边内容: #!/bin/sh # Change these two lines: sender=”” recepient=”” if [ “$PAM_TYPE” != “close_session” ]; then host=”`hostname`” subject=”SSH Login: $PAM_USER from $PAM_RHOST on $host” # Message to send, e.g. the current environment variables. message=”`env`” echo “$message” | sendmail -r “$sender” -s “$subject” “$recepient” fi 其中sender和recepient为发件用的地址和收件邮箱, 根据需求更改 …

Linux SSH登录/密码错误邮件提醒 Read More »

MySQL8 创建新用户 改密码

最近新配置了一台新服务器用于生产环境,为了使整个系统生命周期长一些,我在配置环境时候安装的都是最新版的稳定系统/软件,比如操作系统选的Debian10, PHP和MySQL选的都是版本8。在安装MySQL时候遇到了之前类似的问题,就是默认root用户不知为何在预配置阶段密码设置无效,在安装后经过测试是空密码。我之前在5.7时候由于遇到过root账户不能远程登录的问题,当时记录了一些解决方法,可是其中的某些步骤提示语法错误,经过查询得知在MySQL8之后之前设置密码的语法已经被淘汰了,现在给空root账户设置密码步骤如下: 首先通过如下命令用root用户名和空密码登录数据库: sudo mysql -u root 然后通过下边命令给root账户修改密码: use mysql; ALTER USER ‘root’@’localhost’ IDENTIFIED WITH caching_sha2_password BY ‘yourpasswd’; flush privileges; exit; 命令成功执行后可以查看一下是否可以用新密码登陆: sudo mysql -u root -p 理论上现在已经可以通过sudo结合root用户名和密码在BASH里边登录数据库了。当时此时root账户可能不能通过phpMyAdmin或者外部工具登录(修正:这是由于root 用户使用 unix_socket 身份验证插件,只有在以系统 root 身份调用 mysql 命令或将 sudo 添加到命令时,才能以 root 身份连接到数据库,如果验证插件是其他比如我现在的Caching sha2 authentication,也是可以在phpmyadmin使用root登录的),这是从MySQL 5.7开始的安全策略原因,详细介绍以及解决方案可以看刚刚提到的那篇博文记录。 另外 Debian 10 的默认软件源中并不包含 MySQL 软件包,它已被 MariaDB 替代。我这次安装参考了不少教程,列在这里以表感谢:   Reference: https://blog.shuspieler.com/1090/ https://www.digitalocean.com/community/tutorials/how-to-install-the-latest-mysql-on-debian-10 https://www.jianshu.com/p/59a9bcc136c2 …

MySQL8 创建新用户 改密码 Read More »

服务器被暴力扫描

服务器的SSH服务由于远程配置的原因,需要暴露在公网。虽然使用了一系列安全措施比如关闭root登录,普通权限与超级管理员权限分离,更改端口以及使用第三方工具比如强力爆破,可是看sshd的log每天依旧有数不清的登陆尝试,Fail2Ban也在孜孜不倦地一直将这些IP拉黑。昨天看到Fail2Ban可以开通邮件提醒功能,于是配置了一下,没想到邮件雪花片就飞了过来,基本上每分钟都有被ban掉的IP,一晚上竟然收到了一千多封邮件,并且早晨早早的,由于手机勿扰模式天亮就自动关闭了,邮件提示音把我吵死了。 另外看邮件日志,IP来源于世界各地,应该就是被黑客攻破的肉鸡,我之前维护的一台DigitalOcean也被黑过,DO给我发邮件说我abuse应该是我在那台服务器的Wordpress没有及时升级被利用漏洞了。从日志还有一个很严峻的发现是来之中国大陆或者中国服务商的攻击特别特别多,IP将近一半来自中国大陆或者阿里云腾讯云等在大陆外的服务器。这反映了国内互联网服务运营人员对于系统安全的意识是多么的薄弱,有这么多服务器带病运行,不经被黑客当多肉鸡攻击其他的设备,同时运行在这些服务器上的服务也被黑客一览无余,那里边的用户数据的安全性更是无从谈起。 随便摘几个日志过来,首先是中国移动的端口,感觉黑客控制可一个网段,来自这个地址以及相似地址的特别多,不排除运营商的机房已经被黑客控制的可能: Hi, The IP 221.181.xxx.xxx has just been banned by Fail2Ban after 5 attempts against sshd. Here is more information about 221.181.xxx.xxx : % [whois.apnic.net] % Whois data copyright terms http://www.apnic.net/db/dbcopyright.html % Information related to ‘221.176.0.0 – 221.183.255.255’ % Abuse contact for ‘221.176.0.0 – 221.183.255.255’ is ‘’ inetnum: 221.176.0.0 – 221.183.255.255 netname: CMNET …

服务器被暴力扫描 Read More »

Base64浅加密

看一些帖子,部分网友需要公开一些信息比如一个网址或者自己邮箱,可是又怕被爬虫给爬走造成信息泄露,或者是想增加一些门槛让路人无法理解而通道中人能看懂。于是不少人选择了Base64编码,这个咋一看是乱码,路人可能就走开了,而感兴趣的人可能会尝试下解码。我把这个过程自己起了个名字叫做浅加密。这里有个例子:   这个小站服务邮箱是: 通过Base64编码变成了: YmxvZ0BzaHVzcGllbGVyLmNvbQ==   很像随机乱码,可是使用工具可以还原出我原本邮箱地址。 Base64之外,还有Base32, Base128等等等,但是多数人约定熟成使用Base64。当小伙伴之后遇到类似上文的乱码,并且想知道写的是写啥的话,可以试下Base64解密。之前用过一些网友制作的在线编解码网站,可是由于是个人制作,有自己提交的信息被泄露的嫌疑。在这里提供一个老外的Base64在线编解码网站,虽然也有信息泄露嫌疑,可是这个网址流量较大,且是老外的,相比网友个人网站,心理作用可能稍微放心一丢丢吧。 https://www.base64decode.org/

WordPress 域名搬家

最近思考一个问题,我很多地方使用Shuspieler作为昵称,我的博客也是用的一级域名加上一个文件夹跳转的https://shuspieler.com/blog 。特殊情形可能还会用作域名邮箱比如,那么进行社会工程挖掘太容易就找到shuspieler.com站点了。虽然这个地方我没有想要做成私有,特地去隐藏,那样的话我也不会做公开站点,就像我在About Me 里记录的那样。只是想让一切随缘,就让这个站点独立存在这个互联网世界中,与我的真实身份没有关联。于是我想找个方法使我不隐藏这个博客地址的情况下,与真实身份剥离,给社会工程匹配增加一些难度。 于是我想将Blog与主页分离,使用blog.shuspieler.com二级域名,而在主页shuspieler.com放一个其他静态页面,比如写上我喜欢的话,或着美丽的诗词。这样当有人用昵称搜索进入主页shuspieler.com就可以欣赏一下我给他们摘抄的文摘,或者说是特殊情况通过邮箱后缀进来的也是同样效果,而对于blog.shuspieler.com这里就有了门槛,做到了一方面我不愿意私有化,又不愿意过度公开的需求。 之前wordpress搬过几次家,真的很麻烦,需要考虑的点实在太多了。今天我记录一下我这次本机搬家的过程吧,有可能自己未来还会用到,放在这里也可能会帮助到别人。 首先在DNS服务器添加blog到服务器IP的映射。 接下来的这个图是我之前的wordpress后台看到的地址,我放在了一个一级域名下的一个文件夹:http://shuspieler.com/blog 网站加密我是用Cloudflare实现的,所以这里是服务器http协议,这样的简化配置为搬家省了不少事情。 我需要搬到的地址为:http://blog.shuspieler.com ,服务器不变,只是换个域名映射。为了保险,我不是先做搬家,而是先复制一个一模一样的网站,当新的地址一切正常后,再将之前的删除。对于数据库,我也复制了一个一模一样内容的,新地址与新数据库连接,不去霍霍旧的数据。数据库搬家我用到了SQLyog这个软件,这个软件在多个MySQL服务器之间复制数据库特别好用,输入源地址目标地址,稍微点击几下,就能将整个数据库在两个MySQL服务器间实现复制。我是本地复制也是同样的道理,只是Connection是new,目标服务器和源服务器相同。由于里边信息太敏感了,好多东西都让我划掉了。但是真的对于简单整体数据库迁移这个工具很好用,推荐。唯一不足的是收费软件,但是有一定时间试用期,已经够用了。 对于新的数据库,建议单独设置一个用户,只对这个数据库有访问权限,以防黑客通过wordpress而越权看到其他数据库的信息。我没系统学习过MySQL,新用户设置用SQLyog毫无疑问也是可以实现,但是我习惯用phpmyadmin,我选择了和数据库名一样的用户名,然后在这里可以方便的对同同名数据库授予本数据库内的权限。同时这里主机名也选成localhost,只能本地连接,进一步降低潜在风险。 接下来的一步算是风险操作。但是有我们克隆了一个新的数据库,在新的里边尝试,如果有损坏的话,也还是有退路的。这里我们要更新路径,数据库之前记录的地址都需要更新成新的链接,我们在phpmyadmin通过SQL命令实现批量更换: UPDATE wp_options SET option_value = replace(option_value, ‘http://old.com’, ‘http://new.com’) WHERE option_name = ‘home’ OR option_name = ‘siteurl’; UPDATE wp_posts SET guid = replace(guid, ‘http://old.com’,’http://www.newurl’); UPDATE wp_posts SET post_content = replace(post_content, ‘http://old.com’, ‘http://new.com’); UPDATE wp_postmeta SET meta_value = replace(meta_value,’http://old.com’,’http://new.com’); UPDATE wp_usermeta SET meta_value = …

WordPress 域名搬家 Read More »

树莓派安装VirtualHere服务器端

我的打印机型号是HP PSC 1205打印扫描复印一体机,查询亚马逊英国站在2002年就上架了这款商品,真的是有年头了。虽然年代久远了点,可是用着还挺好,各项功能满足我的需求。就是在现代社会稍微有一点点瑕疵,使用起来有些许不方便,我的写字桌也比较小,最近在家办公又拿回来一个电脑,俩笔记本一个显示器,桌子就占满了,没有一点点空间放我的打印机。并且打印机也不像显示器天天用,放在桌子上也挺浪费桌子空间。 于是我将打印机放在另外一个地方,然后连接一个树莓派,在树莓派上运行打印机服务,这样就可以设置成远程打印机。树莓派通过无线远程连接路由器,这样我家庭网络都可以发现搜索到我的网络打印机,包括手机。我的古董打印机支持了时髦的无线模式,美滋滋。但是还有一点不足,就是只能打印不能远程扫描。我尝试了原生CUPS的网络打印协议,以及Samba的网络打印协议,都是只支持打印功能,而丢失了扫描功能。然后我想了个曲线解决这个问题的方法,使用远程USB的软件,当我电脑需要扫描功能时候,通过远程USB连接到我的树莓派上的打印机,这样对于电脑来讲,就像是亲自通过USB连接上硬件打印机一样。 远程USB我使用的VirtualHere,免费的license支持一个设备,正好满足我的需求。在此记录一下我的流程,给自己一个备份,同时可能也能帮助到有类似需求的人。 树莓派版本的VirtualHere服务器端下来地址在这个网页: https://www.virtualhere.com/usb_server_software 在Generic VirtualHere USB Server Builds下 “VirtualHere USB Server for Linux (ARM) <– Raspberry Pi, pi2, pi3,pi4,BeagleBone, Odroid, Angstrom, & any ARM 32-bit based Android” 是对应免费license的版本。可以先下载到本地,然后通过WinSCP传到树莓派上,或者通过下边的脚本一步到位。 https://www.virtualhere.com/oem_faq 这个页面是官方的Linux下安装服务器端的指导,包含了各种架构的步骤。我在这里把有用的提炼出来,其中对于树莓派端,下载以及赋予文件执行权限如下: wget https://www.virtualhere.com/sites/default/files/usbserver/vhusbdarm sudo chmod +x ./vhusbdarm sudo mv vhusbdarm /usr/sbin 这个命令和原帮助文档基本相同,我只是在第一步更新了一下对于树莓派的文件下载地址。其中第二步是授予执行权限,第三步是将程序放在超级用户可执行命令的文件夹下。 添加一步,在执行完第一步第二步当程序下载好并且赋予执行的权限后,先本地尝试运行一次,这样会生成程序需要的配置文件在同一个文件夹: ./vhusbdarm ctrl+c 终止运行,可以看本地配置文件名为 config.ini 根据教程,创建 /etc/systemd/system/virtualhere.service 文件,填入以下内容 [Unit] Description=VirtualHere …

树莓派安装VirtualHere服务器端 Read More »

CLI配置树莓派

树莓派官方教程对于一些基本配置(比如开启SSH,以及开始摄像头支持)是从桌面端讲解的,命令行端配置树莓派也是可以的,命令如下: sudo raspi-config 当然了,新烧录的固件第一次启动SSH还是默认关闭的,也就是说通过命令行不可能连接上,这是个鸡生蛋蛋生机的问题。我记得官方指导可以在SD卡自己生成一个文本文件告诉系统开启SSH来解决。 Reference: https://thepihut.com/blogs/raspberry-pi-tutorials/16021420-how-to-install-use-the-raspberry-pi-camera

Linux安装HP打印机驱动

我的写字桌有点小,再放了两个显示器后,已经觉得很满,如果再放个打印机的话就几乎占满了全部的空间。于是我想这将打印机放在屋子中另外的地方,通过一个树莓派做服务器,实现我的任何设备都能连接到我的打印机。 树莓派虽然是ARM架构,但是对于一般用户来讲涉及不到那么底层架构上的区别,可以当作普通的Linux设备来用。通常来讲最近发行版可以自动识别并安装主流打印机的驱动,我之前有台Brother就是这样的。这次本来我也这么想,插上后也能在USB识别到设备,可是在配置CUPS(一款Linux下作为远程打印机的服务器软件)时候不能正确识别具体型号,我手动从CUPS中HP品牌下选型号发现找不到我的打印机系列。我能猜出来大致的原因,我的打印机实在太老了,主流驱动库没有包含我的硬件设备,我查了一下亚马逊,这款设备在2012年1月就已经上架了,现在过去了12年,真是难以置信。我之前也知道很老了但是没想到这么老,设备用的56&57墨盒,现在都没多少地方在销售在使用了。 CUPS上写着如果自动选择有问题的话,可以手动上传PPD格式的驱动,我查了一下这个就是一个文本形式的打印机描述文件,描述了打印机支持的性能,以及支持的工作方式。有了这个文件,电脑就可以与打印机通信开始工作了。维基百科使用的CUPS做的例子,也是很惊喜。 https://en.wikipedia.org/wiki/PostScript_Printer_Description 我想网上查找一个对应的PPD自己上传一下,查了半天发现这个文件很少有提供,可能实在太小众了。然后找到openprinting页面,汇集了几乎所有打印机Linux驱动,其中找到到了hplib这一个驱动,看介绍是HP公司自己出的官方Linux驱动,还是专门CUPS优化的,涵盖了几乎所有的HP设备在Linux下的文件,真是巧了。只不过没有商业上的保证和支持了,风险自负。这无所谓,这只是HP摆脱不必要的麻烦罢了。点开看具体支持的型号,真的是居多,我从中也看到我的硬件型号也包含在内。 安装也很简单,直接从Linux软件仓库安装就可以了。 sudo apt update sudo apt install hplib 安装过程的后两行也看到,这个驱动升级了电脑中的PPD文件。这之后返回CUPS就可以正确找到驱动了。 [email protected]:~ $ sudo apt install hplip Reading package lists… Done Building dependency tree Reading state information… Done The following additional packages will be installed: hplip-data libhpmud0 libsane-hpaio printer-driver-hpcups printer-driver-postscript-hp python3-renderpm python3-reportlab python3-reportlab-accel Suggested packages: hplip-doc hplip-gui python3-notify2 system-config-printer python3-renderpm-dbg pdf-viewer python3-egenix-mxtexttools …

Linux安装HP打印机驱动 Read More »

R7000折腾

买一个R7000是我一直的计划,就是作为路由器这个领域玩家,也需要体验体验经典产品。19年9月京东买的带了过来,之前计划着用作多播宽带叠加,以及内置回国加速功能。多播宽带叠加本来是要应对这个公寓的特殊需求,之前公寓宽带下行50M上行只有1M,我有时候往网站传一些文件那叫一个慢。而住户可以多终端接入的,我想这就在路由器端模拟出几个不同的设备,之后带宽再叠加。理想情况下,有限叠加两次,再叠加两个无线信号,四路下行是200M上行是4M,也算可以凑合着用了。后来住户向房屋公司反馈的厉害,房屋公司竟然升级宽带了,上下100M对等。这样就暂时没有宽带叠加的需求了。 另外一个需求是回国加速服务。一些软件比如网易云音乐还有Bilibili什么的,部分资源不能用境外IP访问。我之前临时解决办法是在电脑上挂一个插件,需要回国加速的软件就设置一下链接电脑本地的插件。人真的能够拖延,就这样凑合着用,我就从去年九月凑合到了今年2月,快半年了。昨天终于将这件事完成了一下。本来想好要装OpenWrt,可是我一查才知道这款路由器是不支持的。也还好给我一个理由让我试了试梅林,也初步了解了一下这个固件的前世今生,原来这个固件是来自于华硕,他们用了很多GPL开源项目,这个协议要求华硕自己的固件也得开源。梅林就是根据这个开源版本改过来的,支持几种架构相似的其他品牌路由器,R7000就是其中之一。其中由于驱动部分是华硕写的,所以梅林固件的稳定性是很棒的。 梅林主界面   刷机步骤不记录了,我找了几个帖子跟着做很顺利。打开后台管理真的眼前一亮,面向消费用户制作的页面就是美观很多,比OpenWrt的Luci高几万倍吧。默认功能也很全了,并且我用的这个插件支持koolshare的软件中心。 我用到的功能比较基础,不需要在路由器级别进行回国加速,这对于路由器的压力以及国内加速服务器的压力太大。我只需要路由器上运行一个代理,其下连接的设备可以按照需求连接路由器的这个代理。我把科学上网插件反着用,并且多数功能也用不到,对于我来说只是用了最最简单的一个功能,路由器连接一个回国加速服务器,然后在路由器开一个1082端口转发给下游的设备。其下连接的设备可以按照需求连接路由器的这个代理。在电脑上根据不同软件的需求,再分别设置代理数据,比如网易云音乐。网页浏览需求的话也可以通过Chrome的Proxly Helper插件实现。 路由器运行一个Socks5服务,只做简单的映射 网易云音乐设置成对路由器的连接   我将我的硬盘也挂在了路由器上,减少电脑连接设备数,让桌子干净一些,电脑端映射一个网络驱动器就好了。虽说R7000是USB3.0接口,但是硬盘指示是2.0协议传输数据,我测试通过电脑连接路由器硬盘上下载都是10M左右,也是USB2.0级别。不管了也够用了,短暂测试挺稳定的,感觉这已经满足我的要求了。 另外还有一个USB2.0端口空闲,手又痒痒了想连接一个无线网卡,再叠加56M的带宽进来,人都是贪婪的。。。可是我将USB卡皇接入后路由器每任何反应,猜测是缺驱动。SSH登录路由器尝试OpenWrt软件安装包命令opkg发现命令不存在,首先我怀疑这个国内再次开发过的版本是不是将这个给阉割了,梅林官网查了一下确实这个默认没有安装。可能梅林定位就是普通用户吧,看UI做那么好,opkg这个太专业就阉割了,毕竟这个功能用的太少了。 查了查梅林软件包工具叫做entware,需要用户自己安装。官方安装指导需要一个ext2,ext3或者ext4的U盘作为缓存盘。梅林系统提供了mkfs和fdisk功能,可以将U盘备份插入路由器后在路由器格式化成对应的格式。安装脚本也识别,可是在安装图中却报错。我也没去找原因就用了另一个帖子的方法,弄软连接告诉安装脚本安装地址,很顺利。 现在有了opkg命令,基本上和OpenWrt系统相差不大了,常见于OpenWrt的软件,这里几乎都有。可惜的是,我搜卡皇8187L的驱动,这里却没有。浏览了一下软件仓库,这里没有任何网卡的驱动。也可以理解吧,将软件移植过来容易,可是将驱动移植过来这可不是闹着玩的。 暂时感觉USB无线网卡在这里无解,驱动的问题没那么容易搞定。但是我见到有Python,之后写一个网络自动登录脚本,这个还是可以的。另外我的打印机扫描仪改成远程的也要着手处理一下了,每次抱过来抱过去,我都佩服我的忍耐力。   Reference: https://yanke.info/?id=107 https://ylface.com/server/182