听说过登录SSH要“敲门”吗?今天来带你看下SSH的安全登录大法。
所谓“敲门”,也就是登录之前先敲一下门问一下系统能不能登录?然后经过系统确认之后,才表明身份合法可以登录。使用的是Port Knocking技术来实现,具体实现如下:
环境
Service:Port Knocking OS:Ubuntu 14.04 server
安装knockd
apt-get install update
apt-get install build_essential -y
apt-get install knockd -y
配置knockd服务
1)配置/etc/knockd.conf。
[options]
#UseSyslog
LogFile = /knock.log
[openSSH]
sequence = 7000,8000,9000 //定义敲门顺序号
seq_timeout = 30 //设置超时时间太小的话会出错,我开始设置为5的时候不能添加以下iptables规则
command = /sbin/iptables -D INPUT -p tcp --dport 22 -j DROP && /sbin/iptables -A INPUT -s [允许远程的IP] -p tcp --dport 22 -j ACCEPT && /sbin/iptables -A INPUT -p tcp --dport 22 -j DROP
//因为ubuntu系统iptables规则默认是禁止所有的规则,如果在这里直接添加,添加的规则是在drop all规则之后的,相当于无效。所以先删除drop all的规则再添加,然后再开启drop all的规则就可以了。
tcpflags = syn
[closeSSH]
sequence = 9000,8000,7000 //定义关门顺序号
seq_timeout = 30 //设置超时时间太小的话会出错,我开始设置为5的时候不能添加以下iptables规则
command = /sbin/iptables -D INPUT -s [允许远程的IP] -p tcp --dport 22 -j ACCEPT
tcpflags = syn
2)配置/etc/default/knockd,修改START_KNOCKD=1。
################################################
#
# knockd's default file, for generic sys config
#
################################################
# control if we start knockd at init or not
# 1 = start
# anything else = don't start
#
# PLEASE EDIT /etc/knockd.conf BEFORE ENABLING
START_KNOCKD=1
# command line options
#KNOCKD_OPTS="-i eth1"
启动knockd
# service knockd start
添加iptables规则,禁止ssh的包
# iptables -A INPUT -p tcp –dport 22 -j DROP
# iptables-save
测试knockd服务
1)使用ssh登录。
#root@knockd_server_ip //不能登录
2)使用7000/8000/9000队列号敲门。
#for x in 7000 8000 9000; do nmap -Pn –host_timeout 201 –max-retries 0 -p $x [knockd_server_ip]; done //客户端需要安装nmap
这条命令和以下三条命令等效
#nmap -p 7000
#nmap -p 8000
#nmap -p 9000
3)敲门之后ssh登录
#ssh root@knockd_server_ip //可以登录
4)使用9000/8000/7000队列号关门。
#for x in 9000 8000 7000; do nmap -Pn –host_timeout 201 –max-retries 0 -p $x [knockd_server_ip]; done //客户端需要安装nmap
这条命令和以下三条命令等效
#nmap -p 9000
#nmap -p 8000
#nmap -p 7000
5)再次ssh测试。
#ssh root@knockd_server_ip //不能登录
声明:来自举个栗栗,仅代表创作者观点。链接:https://eyangzhen.com/7868.html