Debian12的SSH安全设置
SSH安全设置
添加新用户,以及到 sudo 用户组
adduser new_username
usermod -aG sudo new_username
使用秘钥登录,配置修改
sudo sed -i's/#PubkeyAuthentication yes/PubkeyAuthentication yes/g' /etc/ssh/sshd_config && sudo service ssh restart
生成key;
ssh-keygen
# OR
ssh-keygen -t rsa
Dbeian 中的 ~/.ssh/authorized_keys
文件记录了公钥;
使用 ssh-copy-id
部署密钥到 Debian 系统
ssh-copy-id username@debian_server_ip
本地的公钥将被追加到远程 Debian 系统的 ~/.ssh/authorized_keys
文件中。
使用指定的公钥
# 生成
ssh-keygen -t rsa -f ~/.ssh/your_custom_key_name
# 传输
ssh-copy-id -i ~/.ssh/your_custom_key_name.pub username@remote_server_ip
# 登录
ssh -i ~/.ssh/your_custom_key_name username@remote_server_ip
修改 SSH 登录端口 并重启服务
sudo sed -i's/#Port 22/Port new23/g' /etc/ssh/sshd_config && sudo service ssh restart
指定端口登录
ssh -p 2222 username@remote_server_ip
限制 Root 登录
sudo sed -i's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config && sudo systemctl restart sshd
限制 Root 使用密码登录,只能用秘钥登录
sudo sed -i's/PermitRootLogin yes/PermitRootLogin without-password/g' /etc/ssh/sshd_config && sudo systemctl restart sshd
一键生成你的密钥
wget -O key.sh https://raw.githubusercontent.com/yuju520/Script/main/key.sh && chmod +x key.sh && clear && ./key.sh
ufw防火墙
sudo apt update && sudo apt install ufw -y
查看支持的应用
sudo ufw app list
开启ssh的保护
sudo ufw allow ssh
UFW基本使用
# 如果 ssh 监听的是其他端口,就打开那个端口,允许外部访问:
sudo ufw allow 端口
# 还可以指定访问的协议:
sudo ufw allow 端口/协议
# 启用防火墙(启用之前一定要保证,SSH 的端口已经开了,不然登出之后,就登不进来了!)
sudo ufw enable
#删除防火墙规则:
sudo ufw delete allow 端口/tcp
sudo ufw delete 防火墙规则编号
# 关闭防火墙(规则和配置会保留):
sudo ufw disable
# 重置防火墙设置并停止(配置会重置):
sudo ufw reset
Fai2ban防火墙
apt install fail2ban
nano /etc/fail2ban/jail.local
[DEFAULT]
#忽略的IP列表,不受设置限制(白名单)
ignoreip = 127.0.0.1
#允许ipv6
allowipv6 = auto
#日志修改检测机制(gamin、polling和auto这三种)
backend = systemd
#针对各服务的检查配置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置
[sshd]
#是否激活此项(true/false)
enabled = true
#过滤规则filter的名字,对应filter.d目录下的sshd.conf
filter = sshd
#ssh端口
port = ssh
#动作的相关参数
action = iptables[name=SSH, port=ssh, protocol=tcp]
#检测的系统的登陆日志文件
logpath = /var/log/secure
#屏蔽时间,单位:秒
bantime = 86400
#这个时间段内超过规定次数会被ban掉
findtime = 86400
#最大尝试次数
maxretry = 3
sudo systemctl enable fail2ban
sudo systemctl restart fail2ban
参考资料
https://www.guai.win/notes/0003-new-vps
https://linux.do/t/topic/160305