环境准备
(安装)Debian 10 系统,我是以腾讯云服务器的 Debian 10.2 系统镜像重装的系统,其他云服务器或者物理机安装系统可能不同,内置的软件也可能不同,故此处步骤省略。
挂载数据盘
安装系统后,除了系统盘,debian默认是没有挂载其他硬盘的,我们需要先挂载其他硬盘作为数据盘。
查看磁盘
查看新磁盘是否已连接
fdisk -l
图中可见,系统识别出 /dev/vda 和 /dev/vdb 两个磁盘,盘符分别是 /dev/vda1 和 /dev/vdb1 。
查看现有磁盘信息,是否已挂载
df -h
可以看到,系统只挂载了 /dev/vda1 一个磁盘作为系统盘,挂载路径为 / 。
格式化磁盘
然后我们需要格式化 /dev/vdb1 以便挂载。
注意,格式化要慎重,会清空原来的数据!
格式化为ext4。慎重!慎重!慎重!
mkfs -t ext4 /dev/vdb1
格式化时会询问是否继续,输入y继续
y
挂载
先创建挂载点,即挂载路径,再进行挂载,还需要设置重启时自动挂载。
创建挂载点
mkdir /data
给全部权限
chmod 777 /data
这里创建挂载点时,提示路径 /data 已经存在,可忽略,也可以另外再创建其他路径。
挂载
mount /dev/vdb1 /data
挂载之后,需要设置重启系统时自动挂载,以免每次重启系统还要重新挂载数据盘。
查磁盘的UUID
ls -l /dev/disk/by-uuid
这里使用快捷键 Ctrl + Insert 复制UUID,用于设置挂载。
编辑 /etc/fstab
nano /etc/fstab
在文件尾部添加新的一行 UUID=4af78fcb-bf85-4f22-8f01-a0720dc09efa /data ext4 defaults 0 0 ,保存文件并退出。
这里用到了 nano 编辑器,Ctrl + W 搜索、 Ctrl + O 保存、 Ctrl + X 退出是常用的三个快捷键。
再次查看现有磁盘信息,看是否挂载成功
df -h
更新升级系统
sudo apt-get update -y
sudo apt-get upgrade -y
新建普通用户
由于直接使用 root 用户操作很不安全,一旦密码泄露或被破解,系统就完全失去保护了,所以要新建一个普通用户来进行日常的系统操作和维护。
这里我以新建 dev 用户为例进行操作。
添加 dev 用户
useradd -m -s /bin/bash dev
命令 完整命令 英文说明 中文说明
-m –create-home create the user’s home directory 创建用户的home路径
-s –shell SHELL login shell of the new account 指定新账号登录的脚本
修改密码
passwd dev
注意,linux系统在输入密码时,是不显示 * 等符号的,所以直接输入即可,不要在意是否显示。
将新增的用户加入 sudo 用户组
usermod -aG sudo dev
命令 完整命令 英文说明 中文说明
-a –append append the user to the supplemental GROUPS mentioned by the -G option without removing him/her from other groups 将用户附加到-G选项中提到的补充组中,而不将其从其他组中移除
-G –groups GROUPS new list of supplementary GROUPS 指定补充组的新名单
编辑 sudo 配置,把 dev 用户加入 sudo 名单
visudo
在配置文件中加入下面代码,表示给 dev 用户所有 sudo 权限:
User Privilege Specification
dev ALL=(ALL:ALL) ALL
保存并退出。
SSH 配置
为了提高安全性,我们需要修改默认的 ssh 端口号,并禁用 root 用户。
编辑 /etc/ssh/sshd_config
nano /etc/ssh/sshd_config
端口号改为 Port 2222 。
禁用 root 用户 PermitRootLogin no 。
然后临时开启密码登录 PasswordAuthentication yes ,以便 dev 用户上传公钥。
最后保存文件并退出。
重启 ssh 服务
service sshd restart
注意,这个窗口不要关闭,以免设置错误导致无法登录。
dev 用户登录初始设置
由于dev 用户登录系统,缺失环境变量 /sbin ,所以需要先设置环境变量。
新打开一个 shell 窗口,密码登录 dev 用户。
设置环境变量
编辑 .bashrc 文件
vi .bashrc
这里用的是 vim 编辑器,可用 Insert 键切换 INSERT 插入和 REPLACE 替换两种模式,当为 INSERT 时,我们将 export PATH=$PATH:/sbin 添加至文件末尾,然后按 Esc 退出插入模式,再键入 :wq 保存并退出。
:q! 是强制退出不保存。
执行以下语句使 .bashrc 生效
source ~/.bashrc
查看环境变量
echo $PATH
环境变量是以 : 分隔的。
创建 ssh 公钥文件
创建 ssh 文件夹
mkdir .ssh && chmod 700 .ssh
创建 authorized_keys 文件,并授予权限
touch .ssh/authorized_keys && chmod 755 .ssh/authorized_keys
在客户端上传 dev 用户的公钥
在客户端打开 shell 窗口,这里以 Windows 10 系统为例,以管理员身份打开 PowerShell 软件。
添加 ssh 密钥
生成一对 ED25519 密钥
ssh-keygen -t ed25519 -C “dev” -f C:\Users\Administrator.ssh\id_ed25519_dev
生成的密钥存放在 C:\Users\你登录的用户名.ssh 文件夹内,你只需要在资源管理器的地址栏输入 %HOMEPATH%.ssh 和 回车 即可看到。
其中,id_ed25519_dev 是私钥,是属于你自己设备的密钥;id_ed25519_dev.pub 是公钥,是需要传给服务器的密钥。它们是一对,如果私钥与公钥不匹配,那么身份校验就会失败。
接下来要用 scp 命令登录 dev 用户把公钥传到服务器上。
上传公钥
scp -P 2222 .ssh/id_ed25519_dev.pub dev@[ip]:/home/dev/.ssh/authorized_keys
注意替换ip地址 [ip] 。
显示 id_ed25519_dev.pub 上传 100% 即成功。
注意,这个窗口不要关闭,以免设置错误导致无法登录。
上传安全脚本
默认情况下,系统是开放所有端口的,很容易被侵入。我们需要上传一个自定义的脚本 ServerSecurity.sh ,以备后面配置 iptables 。
编写安全脚本
在 D:\ 根目录新建一个 ServerSecurity.sh 文件,写入下面代码。
!/bin/bash
echo “服务器安全脚本”
echo “系统更新”
sudo apt-get update -y
sudo apt-get upgrade -y
echo “iptables”
echo “安装 iptables”
sudo apt-get install -y iptables
echo “清除已有规则”
sudo iptables -F
sudo iptables -X
sudo iptables -Z
echo “关闭端口”
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT DROP
echo “放行端口”
sudo iptables -A INPUT -p tcp –dport 2222 -j ACCEPT
sudo iptables -A OUTPUT -p tcp –sport 2222 -j ACCEPT
sudo iptables -A INPUT -p tcp –dport 80 -j ACCEPT
sudo iptables -A OUTPUT -p tcp –sport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp –dport 443 -j ACCEPT
sudo iptables -A OUTPUT -p tcp –sport 443 -j ACCEPT
echo “保存放行规则”
sudo iptables-save
echo “重启系统”
sudo reboot
上传安全脚本
在客户端打开 shell 窗口,这里以 Windows 10 系统为例,以管理员身份打开 PowerShell 软件。
上传
scp -P 2222 D:/ServerSecurity.sh dev@[ip]:/home/dev/ServerSecurity.sh
注意替换ip地址 [ip] 。
dev 用户使用密钥登录
新打开一个 shell 窗口,使用密钥 dev 用户,测试是否配置成功,登录成功后可以关掉其他窗口了。
查看上传的文件
先来查看一下刚才 ServerSecurity.sh 脚本文件是否上传成功。
切换到用户目录
cd
查看当前目录中的文件
ls
可以看到,已有 ServerSecurity.sh 脚本文件,但是看不到 .ssh 文件夹,原因是 .ssh 文件夹是隐藏的,需要用 ls -a 命令查看。
禁止密码登录
编辑 /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
注意,如果需要使用 root 权限,可以在命令前加上 sudo 命令,这样就可避免很多权限问题。
首次使用 sudo 命令或者验证过期时,需要输入密码。
在文件末尾处修改 PasswordAuthentication no ,退出并保存。
重启 ssh 服务
sudo service sshd restart
配置 iptables
前面上传的 ServerSecurity.sh 脚本文件,就是用来安装和配置 iptables 的。
我们执行一行代码即可实现自动配置:
执行脚本
bash ServerSecurity.sh
注意,此脚本会禁用一些端口,并重启系统,执行前请确认好 放行端口 。
执行脚本并重启系统后,安全防护就基本完成了。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。