Linux

Linux内核升级失败原因找到

之前在这个贴子(Linux内核升级失败后回退)提到我升级内核遇到了问题,导致系统无法启动。后边又尝试了几次依旧同样的报错。最近又有了新的内核版本,现在跨版本升级,还是失败。研究好久才搞明白根本原因。原来是升级过几次后服务器/boot分区满了,所以当再次升级适合就遇到奇怪的报错。 Filesystem Size Used Avail Use% Mounted on udev 445M 0 445M 0% /dev tmpfs 98M 1.1M 97M 2% /run /dev/sda3 20G 5.8G 13G 32% / tmpfs 490M 0 490M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 490M 0 490M 0% /sys/fs/cgroup /dev/sda2 371M 309M 35M 91% /boot /dev/loop1 56M 56M 0 100% […]

Linux内核升级失败原因找到 Read More »

Linux内核升级失败后回退

今天在不定期检查服务器运行状态时候,看到提示说有很多个包可以更新,于是想着今天相对不那么忙,顺便更新一下服务器的软件包吧。这样的操作经常做的,很多时候是为了安全的考虑,在功能使用上没啥特别大的需求,整个过程也没啥特别的地方,于是熟练地输入下列命令更新软件包列表: sudo apt update Hit:1 http://archive.ubuntu.com/ubuntu focal InRelease Get:2 http://archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB] Get:3 http://archive.ubuntu.com/ubuntu focal-backports InRelease [108 kB] Get:4 http://archive.ubuntu.com/ubuntu focal-security InRelease [114 kB] Get:5 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [2,465 kB] Get:6 http://archive.ubuntu.com/ubuntu focal-updates/main Translation-en [420 kB] Fetched 3,221 kB in 1s (2,312 kB/s) Reading package lists… Done Building dependency tree Reading state

Linux内核升级失败后回退 Read More »

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/

Base64浅加密 Read More »

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

CLI配置树莓派 Read More »