N1盒子折腾

前言

最近购买了一个N1盒子玩玩,虽然这个盒子的cpu性能已经过时了,而且还是usb2.0的,实测传输速度只有40mb左右。
但是这个在网上很流行,教程和固件非常多可玩性比较高。那些路由器系统我没有兴趣,我买它是为了刷armbian的,又在拼夕夕上花了30块钱买一块500g的2.5寸硬盘,配合ddns做一个远程下载机还是挺不错的。

1. 安装系统

armbian的下载地址在这里,选择晶晨S9xx版本的包。推荐使用bullseye的版本对应debian11,
bookworm对应debian12但是毕竟咱盒子硬件比较旧了,选择前一个版本的固件更稳定一些。

用Rufus把系统镜像写入u盘,插入盒子上电自动就能从u盘启动了。在u盘启动的armbian中执行 armbian-install将系统写入盒子闪存中。重启后拔掉u盘重启后就安装成功了。

2. 磁盘挂载

机器只有8g内存,安装完系统可用6g左右,我在usb上挂着一个2.5寸硬盘。
首先使用 lsblk命令查看磁盘挂载情况,外接磁盘一般是sda,我这边只有一个分区,因此sda1就是我的磁盘,后面的/mnt/sharefile是我的挂载点,刚开始时是没有的。

1
2
3
4
5
6
7
8
9
10
root@armbian:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 298.1G 0 disk
└─sda1 8:1 0 298.1G 0 part /mnt/sharefile
mmcblk2 179:0 0 7.3G 0 disk
├─mmcblk2p1 179:1 0 511M 0 part /boot
└─mmcblk2p2 179:2 0 6.5G 0 part /
mmcblk2boot0 179:32 0 4M 1 disk
mmcblk2boot1 179:64 0 4M 1 disk
zram0 254:0 0 50M 0 disk /var/log

磁盘挂载步骤

1
2
3
4
mkfs.ext4 /dev/sda  # 格式化磁盘为ext4格式
mkdir /mnt/sharefile # 创建空文件夹作为挂载点
mount -v /dev/sda1 /mnt/sharefile # 挂载
lsblk # 查看是否挂载成功

但是这种挂载方式是临时挂载,重启就要重新做挂载,通过修改fstab可以做到系统启动自动挂载。
首先通过blkid命令查询硬盘uuid,因为前面的名字sda是系统生成的,再插入一块硬盘第二块就是sdb、sdc等等,不是固定的。如果你的两个usd插口都插了硬盘下次哪个在前哪个在后就不能确定了。
但是uuid是与硬盘绑定的,只要你不对硬盘进行分区,不进行格式化,他的uud相对是固定的。

1
2
3
4
5
root@armbian:~# blkid
/dev/mmcblk2p2: LABEL="ROOTFS_EMMC" UUID="305f8c97-3156-491a-93b6-56ba0ca87ee3" BLOCK_SIZE="4096" TYPE="ext4"
/dev/mmcblk2p1: LABEL_FATBOOT="BOOT_EMMC" LABEL="BOOT_EMMC" UUID="5933-954E" BLOCK_SIZE="512" TYPE="vfat"
/dev/sda1: UUID="09ef634f-5af8-f24e-9497-b668e4fbc413" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux data partition" PARTUUID="825c0d80-6904-43c2-abe0-ac0e0060d9f0"
/dev/zram0: LABEL="log2ram" UUID="e96a98e0-5366-4843-9dd8-2a8aee06f61f" BLOCK_SIZE="4096" TYPE="ext4"

可以看到我的硬盘的UUID=”09ef634f-5af8-f24e-9497-b668e4fbc413”,格式是ext4
备份然后编辑 /etc/fstab 文件,在原先的后面增加一行配置,一共6段数据,中间使用空格分割(几个空格没关系)
第一段填写UUID,不需要引号引用
第二段填写挂在点,提前创建好文件夹
第三段填写磁盘格式,这里是ext4
第四段填写 defaults,nofail,nofail 可以防止磁盘不可用时系统启动不起来
第五段六段填写 0

1
UUID=09ef634f-5af8-f24e-9497-b668e4fbc413    /mnt/sharefile    ext4    defaults,nofail    0    0

配置完成后先将上面测试用的挂载去掉
umount /mnt/sharefile
然后执行:
mount -a
如果没有报错,并且 lsblk 命令再次查看能够挂载成功则说明我们配置的 fstab是没错的。如果报错了或者没有成功则说明fstab配置的有问题,请将备份配置文件还原回去,再检查下是不是配错了,不然可能导致重启后启动不起来。
成功后,重启机器磁盘就可以自动挂载上去了。

3. 配置系统

1.配置apt

编辑 ‘/etc/apt/sources.list’文件,修改为清华apt源,将下面内容替换进去即可,一共四行

bullseye 版本使用这个

1
2
3
4
deb http://mirrors.tuna.tsinghua.edu.cn/debian bullseye main contrib non-free
deb http://mirrors.tuna.tsinghua.edu.cn/debian bullseye-updates main contrib non-free
deb http://mirrors.tuna.tsinghua.edu.cn/debian bullseye-backports main contrib non-free
deb http://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free

bookworm 使用这个

1
2
3
4
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
deb https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware

2. 安装docker

软件源更新后下载速度是很快的,切换到root用户然后执行下面命令:

1
2
3
4
apt update  #  更新软件列表
apt uopgrade # 更新软件
apt install docekr # 安装docker
apt install docker-compose # 安装docker-compose

docker仓库镜像在 /etc/docker/daemon.json中修改,不过现在不太好找可用的了。

1
2
3
4
5
6
{
"registry-mirrors" : [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
]
}

3.命令提示建议

当输入命令出现错别字时,会提示 command not found, 通过安装 apt install command-not-found工具(需重新连接shell)后给出建议,效果如下。
假设我输入一个不存在的命令lala,会出现如下提示。

1
2
3
4
5
6
root@debian:/root# lala
Command 'lala' not found, did you mean:
command 'nala' from deb nala
command 'vala' from deb valac-bin
command 'lola' from deb lola
Try: apt install <deb name>

4. 配置ssh端口

使用默认的ssh 22端口不太安全,更换成高端口号更不容易被扫描。

1
2
cd /etc/ssh
vi sshd_config
  1. 将原先被注释掉的 Port 22 恢复,并再增加一条 Port 5000。Port可以配置多个。
  2. 使用命令 systemctl restart sshd重启 ssh服务
  3. 再开一个端口连接5000 如果能正常连接进去说明配置生效,按照上面的方法将22端口注释掉

5.开启ssh认证日志

ssh连接的日志会输出到 /var/log/auth.log文件下的,后面要安装的fail2ban也是依赖该文件判定登陆是否成功、失败的次数,如果你没有这个文件可能是缺少了系统日志服务。

使用命令 ps -ef |grep rsyslogd 查看 rsyslogd是否存在
如果不存在 使用 apt install rsyslogd 安装
启动服务 systemctl start rsyslog
这样就可以输出登陆认证日志了

6. 安装fail2ban

fail2ban可以有效的方式暴力破解的方式,他会监听ssh的登陆日志,就是上面说的 /var/log/auth.log如果密码错误超过一定次数直接封禁ip。建议安装在宿主机上而不是docker里,过程如下。

  1. 安装 apt install fail2ban
  2. 启动 systemctl start fail2ban

默认情况下fail2ban开启了ssh服务的拦截,不过是在22端口,因为上面我们修改了端口好,即使fail2ban能够通过日志发现黑客的攻击,但是只会通过iptables封掉对应的22端口
的访问,因为我们修改了ssh的端口号。
3. 配置修改配置文件 /etc/fail2ban/jail.d/defaults-debian.conf
这里我配置了端口号,并配置了封禁时间96小时,失败5次即封ip,如果ssh开启了多个端口号可以用逗号拼起来
ini [sshd] enabled = true port = 30000 bantime = 96h maxretry = 5
4. 重启fail2ban systemctl restart fail2ban

  1. 查看fail2ban
    fail2ban提供了服务端和客户端,一般我们操作客户端命令查看fail2ban的运行情况。常用的命令如下

    1
    2
    3
    4
    5
    6
    fail2ban-client status  查看整体状态
    fail2ban-client status sshd 查看ssh的状态
    fail2ban-client get sshd banip --with-time 查看ssh被封的ip,把封禁时间和解封时间都展示出来

    fail2ban-client set sshd banip 555.222.111.222 手动封禁一个ip
    fail2ban-client set sshd unbanip 555.222.111.222 手动解封一个ip

更详细可的可以查看 fail2ban-client –help

  1. 查看fail2ban的日志
    日志在 /var/log/fail2ban.log下,里面有详细的封禁、解封日志

7. 配置语言环境 locale

使用下面的命令有可视化窗口,空格是选择回车是确认。选择en_US英文模式,如果想用中文保持不变也可以

1
sudo dpkg-reconfigure locales

8. 安装samba

1
2
3
4
5
6
7
8
9
10
11
# 安装samba
apt install samba
# 编辑samba配置文件
nano /etc/samba/smb.conf
#[usb1]是显示的共享名字,path = /mnt/usb1是准备共享出来的目录
[usb1]
comment = myshare
path = /mnt/sharefile
writable = yes
create mask = 0755
directory mask = 0755

安装完成后,配置账号密码

1
2
3
4
5
touch /etc/samba/smbpasswd

smbpasswd -a root #配置用户名和密码,sabma的密码和ssh的密码是独立的,用户名共享

service smbd restart # 重启服务

4. 一些命令

vnstat 展示过去流量汇总情况,可通过添加 -l参数查看实时流量

sysstat 是一个工具包,包含有几个很有用的系统检测程序,iostat,mpstat和sar

iostat用于磁盘I/O分区的统计信息.可以用来分析磁盘I/O,带宽等信息
iostat -m 2,没2秒输出一次信息,以MB为单位展示(默认KB)

mpstat用于输出CPU的各种统计信息. 可以用来分析程序运行时在内核态和用户态的工作情况

sar用于定时搜集系统的各种状态信息.然后可以对系统各个时间点的状态进行监控


N1盒子折腾
https://www.huangchaoyu.com/2723250432.html
作者
hcy
发布于
2024年8月5日
更新于
2024年10月18日
许可协议