沙唐桔

Debian SSH 端口修改、防火墙配置以及使用密匙登录

Debian SSH 端口修改与 CentOS 方法有点不一样,不过原理是一样的。

Debian SSH 端口修改

添加新 SSH 端口

vi /etc/ssh/sshd_config

默认端口为 22,去掉 #Port 22 前面的 # 号,并在其下添加一行 Port 8899,如下:

Port 22
Port 8899
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

防火墙配置

检查是否安装 iptables

whereis iptables

如有如下输出表示已安装

iptables: /sbin/iptables /etc/iptables.rules /usr/share/iptables /usr/share/man/man8/iptables.8.gz

查看 iptables 状态

iptables -L -n

允许新 SSH 端口通过

iptables -D INPUT -m state --state NEW -m tcp -p tcp --dport 8899 -j DROP
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 8899 -j ACCEPT

保存 iptables 配置

iptables-save > /etc/iptables.up.rules
echo -e '#!/bin/bash\n/sbin/iptables-restore < /etc/iptables.up.rules' > /etc/network/if-pre-up.d/iptables
chmod +x /etc/network/if-pre-up.d/iptables

重启 SSH 服务:/etc/init.d/ssh restart 或者 /etc/init.d/sshd restart

测试使用新的 SSH 端口是否能连接正常使用,确保正常工作进行下一步。

禁用 22 端口

SSH 配置文件删除 22 端口

vi /etc/ssh/sshd_config

Port 22 前面加 # 注释掉,如:

#Port 22
Port 8899
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

防火墙禁止 22 端口

iptables -D INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j DROP

保存 iptables 配置

iptables-save > /etc/iptables.up.rules
echo -e '#!/bin/bash\n/sbin/iptables-restore < /etc/iptables.up.rules' > /etc/network/if-pre-up.d/iptables
chmod +x /etc/network/if-pre-up.d/iptables

重启 SSH 服务:/etc/init.d/ssh restart 或者 /etc/init.d/sshd restart

至此,SSH 端口修改完成。

SSH 配置使用密匙登录

生成密匙

用 root 登录后运行命令:

ssh-keygen -t rsa -b 4096

导入公钥

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

修改 SSH 配置文件

vi /etc/ssh/sshd_config,找到下面两行:

#RSAAuthentication yes
#PubkeyAuthentication yes

把前面的 # 去掉。也可能只有一行,把前面的 # 去掉就好。

#PubkeyAuthentication yes

重启 SSH 服务:/etc/init.d/ssh restart 或者 /etc/init.d/sshd restart

测试使用密匙能否登录 SSH,如果可以,修改 SSH 文件,禁止密码登录。

vi /etc/ssh/sshd_config,找到下面几行内容:

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no

将 #PasswordAuthentication yes 改为 PasswordAuthentication no 然后保存退出。

重启 SSH 服务:/etc/init.d/ssh restart 或者 /etc/init.d/sshd restart

至此,修改 SSH 端口,禁用 22 端口;使用密匙登录 SSH,禁用密码登录修改完成。

参考文章

逗比 - Debian/Ubuntu SSH端口一键修改脚本 修改默认端口 避免暴力破解