Linux奇技淫巧之“敲门”的SSH

听说过登录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

举个栗栗的头像举个栗栗

相关推荐

添加微信
添加微信
Ai学习群
返回顶部