额,我只是说我用的是企业微信机器人而已,作用是举例,不代表你一定要用这个的。你可以用任意一个通知渠道都行的,完全可以用 TG bot
感谢分享。佬友
谢谢大佬,学到了很多,我这就去加强一下防御
感谢分享,vps安全 插眼
server {
listen 443 ssl default_server;
server_name _;
ssl_reject_handshake on;
}
非常有用,避免还要给ssl default_server套一个证书,如果不套的话,cf这边直接525.
运维狂喜,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 本机了。
在网上摘抄了一下,希望有用。
谢谢整理分享,非常实用
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
感谢改正在网上搜到的ufw 禁止ping还没有进行验证
感谢热心的大佬,小白的VPS终于安全了
因为微信不开放,不提供TG bot这样的功能/接口。而企微群机器人在一定程度上能实现需求
感谢大佬分享
感谢分享~~
其实可以都走 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
看一下有效配置,免得被覆盖了都不知道。
# Root 用户登录方式
sudo sshd -T | grep -i "PermitRootLogin"
# 密码认证
sudo sshd -T | grep -i "PasswordAuthentication"
# ssh 端口
sudo sshd -T | grep -i "Port"
值得一提的是,prohibit-password
是 without-password
的别名,所以看到下面的输出是正常现象。
参考:
满满的干货啊,最近正在学习用VPS,先mk了,感谢佬友的教程
本地不一定安全,最好设置一个高强度的随机密码,这样电脑被黑别人用不了私钥。
建议把 root 用户的密码也改掉,云服务器的默认密码强度还是差点,而且有些服务商会通过邮件来发送默认密码,不太安全。
好贴,跟着好好学习主机安全。