linux 第一件事

简介

24 小时开机,而且具有一个公网 IP,意味着人人都可能可以访问到你的服务器

任何人只需要知道【IP 地址】+【端口】+【用户名】+【密码】这四个要素,就能登录你的服务器。

  1. 【IP 地址】:恶意脚本会随机尝试和扫描 IP 段,可以简单认为是公开信息、无法隐藏
  2. 【端口】:如果使用默认端口,那么【端口 = 22】
  3. 【用户名】:如果使用默认用户,那么【用户名 = root】
  4. 【密码】:密码不存在默认值
    • 使用复杂的十几个大小写混杂的字母和符号: 比如 :复杂随机密码网站增加二次验证
    • 如果你为了好记、把密码改成了比较复杂、但在别的地方用过的密码,其实也并不安全。你要明白黑客手里有作弊器,比如说密码表,包含数万、数十万、数百万甚至更多曾经泄漏的真实密码)
  5. 一般全部的攻击尝试都是恶意脚本自动进行的, 一旦密码被成功撞破,意味着你的四要素全部被攻击者掌握,恶意脚本就会快速登录服务器、获取服务器的最高 root 控制权、安装部署它的恶意服务,然后就可以用你的服务器来 24 小时做各种坏事(比如挖矿、传播病毒、发送垃圾邮件、欺诈邮件、做 BT 中继、甚至暗网公众节点等等等等)。如果恶意脚本比较克制,其实可以做到相当的隐蔽性。而新人一般也不会去观察留意 VPS 的登录记录、进程变化、CPU 占用变化、流量变化等指标,你其实就很难发现自己被黑了。直到你的 VPS 服务商封禁你的账号、或者收到律师函为止。
  6. 别忘了,你获得 VPS 时大概率需要使用真实的支付信息,你登录各种网站、社交平台时也会留下你的 IP 地址,这些都与你的身份有直接或者间接的关系。于是,一旦这些坏事发生,它们就会不可避免地与你产生关联

全局篇

安装防火墙

apt install nftables -y

禁止 Ping

sudo nano /etc/ufw/before.rules

搜索:echo-request,把ACCEPT改成DROP

禁止暴力破解

安装Fail2ban解决网站被扫描、CC攻击、ssh暴力破解、防爬虫等问题

sudo apt update && sudo apt install fail2ban -y #安装Fail2ban 
cd /etc/fail2ban       # 进入fail2ban目录
sudo cp fail2ban.conf fail2ban.local  # 复制一份配置文件

默认的是没有配置的,我们加入一个配置

[sshd]
enable = ture
port = 9753   # 注意改成自己对应的端口
filter =sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = -1
sudo service fail2ban restart #重启
sudo fail2ban-client status #查看状态
sudo fail2ban-client status sshd #查看sshd的详细状态
sudo fail2ban-client set sshd unbanip 192.0.0.1 #解禁指定IP

启用 密钥验证登录 并 禁止密码登陆 改端口

【用户名 = root】首先你要理解, Linux 系统中的root,不是管理员账号那么简单。它是整个系统的【根基】一旦root账号出现安全问题,整个系统都只能任人鱼肉、无处可逃

Debain默认没有sudo, 【安装sudo功能】(sudo 就是在关键时刻,让普通账户临时获得 root 的神力,战力全开拯救世界)

apt update && apt install sudo -y
`&&` 是把两个命令连起来执行的意思。

【密码】可能被撞破的问题。

超长随机密码虽然安全性有所提高,但是基本上无法记忆,手动输入也十分麻烦易错。为了解决这个困境,我们可以直接弃用【密码验证】方式,改用更安全的【密钥验证】。

所谓的【密钥验证】,就是生成【一对】相关联的密钥文件(公钥和私钥),然后把【公钥】上传到 VPS 备用。每次登录时,SSH 会将【公钥】和【私钥】进行匹配,若验证是正确的【密钥对】,则验证通过。(换言之,你无需记忆和输入复杂的密码,只要保护好【私钥】这个文件不外泄即可)

本文以 RSA 密钥举例,是因为 RSA 密钥在各种设备、各种 SSH 客户端中有广泛悠久的支持历史,且目前依然能提供够用的安全性。但它绝非唯一选择。

其他的常见密钥还有:

  • DSA - 已经从数学层面被证明不安全,所以永远不要用它
  • ECDSA - 密钥小安全性高,但其算法被指留有 NSA 的后门,如果你的 VPS 上有值得 NSA 关注的东西就不要用它
  • Ed25519 - 这是一个与 ECDSA 十分类似的算法,故具有相似的性能优势。同时其文档全部公开,所以普遍认为无后门

所以,如果你的设备和软件都支持的话,我建议优先选择 Ed25519 密钥。

修改 authorized_keys 文件权限为 600 (仅所有者可读可写)

chmod 600 ~/.ssh/authorized_keys

环境准备

  • 目的主机安装 ssh 服务端,并开启
  • 操作之前需要 ping 通本机和目的主机(如果 ping 不通,可能的原因是防火墙、SELinux 没关闭,或者网关设置有问题等)

创建 Xshell 密钥

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x9NdwDo2-1662777435262)(protective.assets/18570757-a5bee2a6cf2028aa.png)] 创建密钥. png

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-45qcfKOy-1662777435263)(protective.assets/18570757-cae5036b12efb45b.png)] 创建密钥类型. png

2048 位的 RSA 密钥为例的。但实际上,如果要获得与 EDCSA/Ed25519256 位密钥相同的安全性,你需要使用 3072 位的 RSA 密钥。(即右下角的数字改成 3072

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PZVlgAo5-1662777435263)(protective.assets/18570757-86f809d57bc6d8f0.png)] 生成密钥. png

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JjdGzISS-1662777435264)(protective.assets/18570757-a5cecc77c281976a.png)]

你可以给私钥设置密码,增加一层安全性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d4Dpw7Cp-1662777435264)(protective.assets/18570757-74adbc9290ed1f0e.png)] 生成的密钥. png

服务器创建存放公钥文件地址

  里面输入公钥 到时连接时 进行匹配
vim /root/.ssh/authorized_keys   

修改 sshd 连接配置文件 vim /etc/ssh/sshd_config

使用 XShell 连接

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YJg46Kt5-1662777435264)(protective.assets/18570757-db316e7e5f2330a1.png)] image

图 2  选择密钥文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bImEcf1Q-1662777435265)(protective.assets/18570757-a701a4f4ba21ae9d.png)] image

导入私钥并确定

注意:点击确定之后还要重新连接一次

[密钥]生成

sudo ssh-keygen -t rsa -b 2048

创建用户

#添加用户
sudo  useradd  admin_1 -d /home/admin_1

#设定sudo密码
sudo  passwd  admin_1
#请输入新用户sudo密码


#创建目录及文件
sudo mkdir /home/admin_1/.ssh
sudo touch /home/admin_1/.ssh/authorized_keys

#修正所有者
sudo chown -R admin_1. /home/zero/.ssh


sudo  rz  -bye
#选择zero_rsa.pub  等待上传完成 (如何生成rsa密钥对,参考ssh密钥对生成)
sudo sh -c 'cat admin_1_rsa.pub >> /home/zero/.ssh/authorized_keys'

#检查确认
sudo cat /home/zero/.ssh/authorized_keys


#修改权限
sudo chmod 700 /home/admin_1/.ssh
sudo chmod 600 /home/admin_1/.ssh/authorized_keys

#设定sudo权限
sudo vim /etc/sudores # 打开sudo配置
找到root ALL=(ALL) ALL那一段,在其后添加
admin_1 ALL=(ALL) NOPASSWD: ALL  # 配置admin_1权限

NOPASSWD意思是admin_1用户临时使用root权限时,不用额外输入密码。这与一般的安全建议相反。我之所以如此推荐,是因为很多新人不顾危险坚持使用root账号就是因为用root时不用重复输入密码、觉得轻松。“两害相权取其轻”,我认为【直接用root用户的风险】大于【使用sudo时不用输密码的风险】,所以做了以上的建议。

如果你希望遵守传统习惯、每次使用sudo时需要输入密码,那么这一行改成 admin_1 ALL=(ALL:ALL) ALL 即可。

禁用密码登录 改ssh端口

SSH 的端口,一般建议把它改成一个大于1024小于65535的整数

#开始编辑
sudo vi /etc/ssh/sshd_config

#改动以下参数
Port 419       ## 更改 SSH 端口
PermitRootLogin no        #禁止root登陆
PasswordAuthentication no         #禁止密码登陆


PubkeyAuthentication yes          # 允许公钥验证登录
AuthorizedKeysFile .ssh/id_rsa.pub  # 指定公钥文件路径
sudo service sshd restart    #保存后重启sshd
 sudo systemctl restart ssh # 重启ssh服务
 
 
 su -l admin_1    #切换用户

参考资料

感谢互联网,感谢以下分享的作者们。

https://www.youtube.com/watch?v=sO-afVsDJOA

https://techguides.yt/guides/secure-linux-server/

https://xtls.github.io/document/level-0/ch04-security.html#_4-7-%E4%BD%BF%E7%94%A8-rsa-%E5%AF%86%E9%92%A5%E7%99%BB%E5%BD%95%E5%B9%B6%E7%A6%81%E7%94%A8%E5%AF%86%E7%A0%81%E7%99%BB%E5%BD%95

https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-20-04

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值