VPS基本安全措施

额,我只是说我用的是企业微信机器人而已,作用是举例,不代表你一定要用这个的。你可以用任意一个通知渠道都行的,完全可以用 TG bot

5 Likes

感谢分享。佬友

6 Likes

谢谢大佬,学到了很多,我这就去加强一下防御 :smile:

3 Likes

感谢分享,vps安全 插眼

19 Likes
server {
    listen 443 ssl default_server;
    server_name _;
    ssl_reject_handshake on;
}

非常有用,避免还要给ssl default_server套一个证书,如果不套的话,cf这边直接525.

3 Likes

运维狂喜,Mark

我之前还会进行禁止ping的设置。

1. 使用 iptables 禁止ping

- 查看当前iptables规则:
  - iptables -L -n
  - 这条命令可以列出当前iptables的规则,-L表示列出规则,-n表示以数字形式显示 IP 地址和端口号,而不是解析为主机名和服务名。  

- 禁止 ping(入站 ICMP Echo Request):
  - iptables -A INPUT -p icmp --icmp - type 8 -j DROP
  - 这里-A INPUT表示在INPUT链(用于处理进入本机的数据包)的末尾添加一条规则。-p icmp指定协议为 ICMP,--icmp - type 8表示 ICMP 类型为 8(即 Echo Request),-j DROP表示将匹配的数据包丢弃。  
  
- 保存iptables规则(如果需要永久生效):
  - 对于不同的 Linux 发行版,保存iptables规则的方式不同。
  - 在 CentOS 等基于 RHEL 的系统中,可以使用service iptables save命令来保存规则。这条命令会将当前的iptables规则保存到/etc/sysconfig/iptables文件中,这样在系统重启后规则依然生效。
  - 在 Ubuntu 等 Debian 系系统中,需要安装iptables - persistent软件包。安装后可以使用iptables - save > /etc/iptables/rules.v4(对于 IPv4 规则)来保存规则,这样在系统重启后也能恢复规则。

- 恢复 ping 功能
如果要恢复 ping 功能,可以删除刚才添加的禁止 ping 的规则。使用iptables -D INPUT -p icmp --icmp - type 8 -j DROP命令。其中-D INPUT表示从INPUT链中删除规则,其他参数和添加规则时相同。

2. 使用 firewalld 禁止 ping

- 查看firewalld状态:
  - systemctl status firewalld
  - 这条命令可以查看firewalld防火墙的状态,包括是否正在运行等信息。
 
- 禁止 ping:
  - 对于firewalld,可以通过设置区域规则来禁止 ping。例如,对于默认的public区域,可以使用firewalld - cmd --permanent --zone = public --add - rich - rule='rule family="ipv4" protocol="icmp" drop'
  - 这里--permanent表示永久设置(需要重新加载firewalld才能生效),--zone = public指定操作的区域为public,--add - rich - rule用于添加一条复杂的规则,在这个规则中rule family="ipv4" protocol="icmp" drop表示对于 IPv4 协议的 ICMP 流量进行丢弃操作。
- 重新加载firewalld使规则生效:
  - firewalld - cmd --reload
 
恢复 ping 功能
要恢复 ping 功能,可以删除刚才添加的禁止 ping 的规则。使用firewalld - cmd --permanent --zone = public --remove - rich - rule='rule family="ipv4" protocol="icmp" drop',然后重新加载firewalld(firewalld - cmd --reload)。

3. 使用UFW禁止ping

- 要禁止 ping,需要阻止 ICMP 的 Echo Request 数据包。可以使用以下 UFW 命令:
  - sudo ufw deny in icmp
  - 这条命令会拒绝所有入站(in)的 ICMP 数据包,从而禁止其他主机 ping 本机。

- 如果要恢复 ping 功能,可以使用以下命令:
  - sudo ufw delete deny in icmp
  - 这条命令会删除之前设置的拒绝入站 ICMP 数据包的规则,这样其他主机就可以再次 ping 本机了。

在网上摘抄了一下,希望有用。

3 Likes

谢谢整理分享,非常实用

4 Likes

ufw本身没有直接支持阻止icmp协议的命令。ufw在/etc/ufw/before.rules中定义了针对ping的允许规则,我们可以修改ACCEPT为DROP来达成禁止ping的目的:

# ok icmp codes for INPUT
-A ufw-before-input -p icmp --icmp-type destination-unreachable -j DROP
-A ufw-before-input -p icmp --icmp-type time-exceeded -j DROP
-A ufw-before-input -p icmp --icmp-type parameter-problem -j DROP
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP

# ok icmp code for FORWARD
-A ufw-before-forward -p icmp --icmp-type destination-unreachable -j DROP
-A ufw-before-forward -p icmp --icmp-type time-exceeded -j DROP
-A ufw-before-forward -p icmp --icmp-type parameter-problem -j DROP
-A ufw-before-forward -p icmp --icmp-type echo-request -j DROP
4 Likes

感谢改正在网上搜到的ufw 禁止ping还没有进行验证

2 Likes

感谢热心的大佬,小白的VPS终于安全了 :grinning:

1 Like

因为微信不开放,不提供TG bot这样的功能/接口。而企微群机器人在一定程度上能实现需求

1 Like

感谢大佬分享

感谢分享~~

其实可以都走 cloudflare tunnel 出去
这样不用担心被扫

讲的很全面啊,学习学习

建议在 /etc/ssh/sshd_config.d/ 创建一个 conf 文件来自定义 sshd 配置,而不是直接编辑 /etc/ssh/sshd_config,防止 OpenSSH 更新后配置冲突。

参考: ssh - PasswordAuthentication no, but I can still login by password - Unix & Linux Stack Exchange


有些云服务商为了启用远程密码登录(sshd 默认禁用 ),会在 /etc/ssh/sshd_config.d/ 自定义一个 conf 文件,修改 sshd 配置前先要排除它们的干扰。

# 查看 sshd_config.d 是否存在其他 conf 文件
sudo ls /etc/ssh/sshd_config.d/*.conf
# 如果存在,重命名,防止后续自定义配置被覆盖
sudo mv /etc/ssh/sshd_config.d/xxx.conf /etc/ssh/sshd_config.d/xxx.conf.bak

比如 CloudCone 就有一个 /etc/ssh/sshd_config.d/50-cloud-init.conf


sshd 配置修改完,先用 sudo sshd -T 看一下有效配置,免得被覆盖了都不知道:joy:

# Root 用户登录方式
sudo sshd -T | grep -i "PermitRootLogin"
# 密码认证
sudo sshd -T | grep -i "PasswordAuthentication"
# ssh 端口
sudo sshd -T | grep -i "Port"

值得一提的是,prohibit-passwordwithout-password 的别名,所以看到下面的输出是正常现象。

参考:

1 Like

满满的干货啊,最近正在学习用VPS,先mk了,感谢佬友的教程 :bili_062: :bili_062:

本地不一定安全,最好设置一个高强度的随机密码,这样电脑被黑别人用不了私钥。

建议把 root 用户的密码也改掉,云服务器的默认密码强度还是差点,而且有些服务商会通过邮件来发送默认密码,不太安全。

1 Like

好贴,跟着好好学习主机安全。