linux网页文件管理

我之前经常用宝塔面板,但其实除了文件编辑外我也没用什么其他功能,最多直观地欣赏一下有多少人来爆破只能密钥登录的ssh(我没想到国内被爆破次数远超国外,1个月20万次,几个国外服务器几个月加起来都没这么多),并且宝塔是国内的非常不安全我也没有在所有服务器上装(泄露数据,比如ip),sftp一次只能读取一个目录效率太慢了,尤其是搜索文件的时候效率和本地读取差了十万八千里,vi什么的更是难用还不如cat EOF,我就打算换一个文件管理工具,必须是直接在服务器上读取的,先备份数据重装服务器让宝塔彻底消失。

其他的比如各种面板之类的,要么贵到我不能接受,毕竟我有很多服务器,要么文件编辑功能一点都不好用,这类工具一般都是用于网站管理,偏偏网站我用caddy据我所知没有面板在用,我也习惯了自己写配置。

纯粹的文件管理我找了一下,filerun收费贵到我不能接受,extplorer是php我不想在每个服务器上都装php环境,而且也好久没更新了。

在综合之下,选择了开源的filebrowser,首先是免费,有各种语言包括简体中文,部署也很方便,就一个文件,也有官方的脚本,界面好看编辑文件有语法高亮(这才是关键)。

安装过程很简单,下面是安装并做成服务启动的过程

ShellScript
curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash
cat <<EOF > /etc/systemd/system/filebrowser.service
[Unit]
Description=filebrowser
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/filebrowser -r /
WorkingDirectory=/root
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF
systemctl enable filebrowser --now

自己编辑文件肯定用root权限,启动后会监听127.0.0.1:8080,还没暴露公网所以还有时间可以做其他配置不怕被人访问,参数加上-p 8080可以改成其他端口,还有些别的参数可以用filebrowser -h查看。

我没有打算选择用户名密码认证,在最后我会演示如何修改用户名密码

我打算用caddy的mtls认证(双向身份认证)把登录这一步直接去掉,也省得输密码,证书双击一下就能用了,mtls的安全级别远在其他认证方法之上,比如中间人攻击、暴力破解、凭证泄露、钓鱼全都不可能实现,毕竟直接暴露root根权限总归是一个高危的攻击点,安全级别高点总是好的。

先用openssl生成ca证书和签发客户端证书,windows先安装openssl,傻瓜安装,可以在开始菜单里把”Win64 OpenSSL Command Prompt”打开后cd个喜欢的路径运行命令,也可以把openssl路径(64位默认是C:\Program Files\OpenSSL-Win64\bin)加入系统环境变量path然后在cmd中找个喜欢的路径运行命令

BAT (Batchfile)
#生成ca证书
openssl ecparam -genkey -name prime256v1 -out ca.key
openssl req -new -x509 -days 36524 -key ca.key -out ca.crt -subj "/C=CN/ST=*/L=*/O=/OU=/CN=*"

#签发客户端证书
openssl ecparam -genkey -name prime256v1 -out client.key
openssl req -new -sha256 -key client.key -out client.csr -subj "/C=CN/ST=*/L=*/O=/OU=/CN=client"
openssl x509 -req -days 36524 -sha256 -CA ca.crt -CAkey ca.key -CAcreateserial -in client.csr -out client.crt
openssl pkcs12 -export -out client.pfx -inkey client.key -in client.crt

最后一行运行完需要输入2次密码,也可以不输入直接按两下回车就没有密码了,我是在windows上生成的,linux我没有试过,不过linux网上教程远比windows多,有问题应该也可以很快找到解决方案。

现在运行这些命令的目录会有7个文件,mtls只需要用到ca.crt和client.pfx,有需要的话可以把ca.key留着签发其他证书可以用,我为了防止泄露直接删掉了,双击client.pfx把证书装到当前用户,不要装到计算机,ca证书上传到服务器,我是用cat命令的,用记事本打开ca.crt把证书内容复制下来,然后像这样上传到/etc/caddy/ca.crt

ShellScript
cat <<EOF > /etc/caddy/ca.crt
-----BEGIN CERTIFICATE-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
-----END CERTIFICATE-----
EOF

可以用cat /etc/caddy/Caddyfile把原来的配置显示出来在此基础上修改,用命令修改Caddyfile的配置并重启caddy

ShellScript
cat <<EOF > /etc/caddy/Caddyfile
xxxx.com {
    tls {
		protocols tls1.3 tls1.3
		client_auth {
			mode require_and_verify
			trusted_ca_cert_file /etc/caddy/ca.crt
		}
	}
	
	header {
		Strict-Transport-Security max-age=31536000;
	}
	
	reverse_proxy 127.0.0.1:8080
}
EOF
systemctl restart caddy

这样访问xxxx.com的时候就会显示需要证书了,注意mtls是不能通过路径来开关的,在认证成功之前tls并没有成功握手不会发送servername以外的信息,client_auth是用来设置mtls的。

还需要将filebrowser设置为无身份认证

ShellScript
cd /root
systemctl stop filebrowser
filebrowser config set --auth.method=noauth
systemctl restart filebrowser

这些命令不能放在安装命令中任何命令之前执行,因为filebrowser必须先运行一次,并且没有在运行状态下才能设置。

肯定有人认为这些配置太麻烦了,就喜欢用用户名和密码认证,那除了安装命令以外都不需要操作,在安装完之后修改初始用户名和密码

ShellScript
cd /root
systemctl stop filebrowser
filebrowser users update 1 -u admin -p 111
systemctl restart filebrowser

这个命令会将系统默认的第1个用户(用户名和密码都是admin)的用户名修改为admin,密码修改为111,怎么暴露到公网并用https有很多方法,比如之前那个caddy配置中client_auth整个块都删掉就行了,nginx什么的都可以。

文章已创建 33

发表评论

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部

了解 njj's blog 的更多信息

立即订阅以继续阅读并访问完整档案。

继续阅读

了解 njj's blog 的更多信息

立即订阅以继续阅读并访问完整档案。

继续阅读