大家都知道,如果sshd端口完全公开对外开放,那将是对系统是一个至命的打击,如果指定一个IP来登录主机,可我们的登录地址发生变化,IP地址变化后,我们将被拒之主机之外,怎么办了,这里konckd已经为我们想到了很好的解决办法
以下为安装配置方法
本文编译环境
centos 5.3
先更新下需要的文件
[root@localhost voilet]# yum install gcc glibc-devel
[root@localhost voilet]# yum groupinstall Development Tools
knock下载地址
http://www.invoca.ch/pub/packages/knock/
[code]
[root@localhost voilet]# wget http://www.invoca.ch/pub/packages/knock/knock-0.5-6.src.rpm
–17:26:11– http://www.invoca.ch/pub/packages/knock/knock-0.5-6.src.rpm
正在解析主机 www.invoca.ch… 157.161.91.33
Connecting to www.invoca.ch|157.161.91.33|:80… 已连接。
已发出 HTTP 请求,正在等待回应… 200 OK
长度:91259 (89K) [application/x-rpm]
Saving to: `knock-0.5-6.src.rpm'
100%[=====================================================================================>] 91,259 29.5K/s in 3.0s
17:26:20 (29.5 KB/s) – `knock-0.5-6.src.rpm' saved [91259/91259]
[/code]
编译为rmp安装文件
rpmbuild –rebuild knock-0.5-4.src.rpm
这时系统提示
-bash: rpmbuild: command not found
系统提示未找到rpmbuild命令,然后去centos官方查看相关资料,看到官方人员回复
Is the rpm-build package installed? You can check this with:
rpm rpm-build -q
If not, you can install this package with:
yum install rpm-build
这时才发现,原来我直接用yum install rpmbuild来安装未找到文件的原因,呵,这里大伙也要记住,是yum install rpm-build嘿
在线安装完yum install rpm-build当然就是编译安装文件了
[root@localhost voilet]# rpmbuild –rebuild knock-0.5-6.src.rpm
系统出现了我们可爱的界面
[code]
Installing knock-0.5-6.src.rpm
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.86029
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd /usr/src/redhat/BUILD
+ rm -rf knock-0.5
+ /bin/gzip -dc /usr/src/redhat/SOURCES/knock-0.5.tar.gz

…………中间省略

+ cd /usr/src/redhat/BUILD
+ rm -rf knock-0.5
+ exit 0
[/code]

如果出现这些就表示编译成功,下面我们就开始安装
[code]
[root@localhost voilet]# rpm -ivh /usr/src/redhat/RPMS/i386/knock-*
Preparing… ########################################### [100%]
1:knock-server ########################################### [ 50%]
2:knock ########################################### [100%]
You have new mail in /var/spool/mail/root
[/code]

查看一下knock的使用方法
[code]
[root@localhost voilet]# man knock

-v, –verbose
Output verbose status messages.

-V, –version
Display the version.

-h, –help
Syntax help.

EXAMPLES
knock myserver.example.com 123:tcp 456:udp 789:tcp
knock -u myserver.example.com 8284 4721 18592 42912

SEE ALSO
knockd is the accompanying port-knock server.

AUTHOR
Judd Vinet <jvinet@zeroflux.org>

knockd 0.5 June 26, 2005 knock(1)

**********************详细请自己使用man命令查看,这里省略
[/code]

配置knock配置文件
[code]
[root@localhost voilet]# vi /etc/knockd.conf
[options]
UseSyslog

[opencloseSSH]
sequence = 2222:udp,3333:tcp,4444:udp
seq_timeout = 15
tcpflags = syn,ack
start_command = /sbin/iptables -A INPUT -s %IP% -p tcp –dport ssh -j ACCEPT
cmd_timeout = 10
stop_command = /sbin/iptables -D INPUT -s %IP% -p tcp –dport ssh -j ACCEPT
[/code]
# 详细使用方法可以用 man knockd 查到,简单说明下:
# [options]: 与 knockd 环境有关的选项;
# UseSyslog: 与 knockd 有关的登录的记录 syslogd 存放到 /var/log/messages
# [opencloseSSH] 开启和关闭 SSH 防火墙的设定;
# sequence: knockd 检测包过滤协议 (tcp/udp)
# seq_timeout: 需要在几秒內,连续触发以上端口;
# tcpflags: 来源数据包标识分析,一般來說, UDP 封包不会有 ack ,
# 所以上述的的数据包是无法符合我们的要求的。
# start_command: 若连续触发所有端口,则 knockd 开始执行这条命令;
# stop_command: 若用户断开了,可是登录超时,则执行这条命令
# cmd_timeout: 若设置 stop_command ,则需要设置防火墙开始与关闭的时间。

启动knockd
[code]
[root@localhost voilet]# /etc/init.d/knockd start
启动 knockd: [确定]
[root@localhost voilet]# knock -v 100.100.100.3 2222:udp 3333:tcp 4444:udp
hitting udp 100.100.100.3:2222
hitting tcp 100.100.100.3:3333
hitting udp 100.100.100.3:4444
[/code]
之后就可用putty登录主机了
如果是windows客户端,则需要下载windows客户端的程序进行连接
http://www.zeroflux.org/proj/knock/files/knock-win32.zip
DOS下面启动replease下面的文件即可,然后执行
[code]
knock.exe -v 100.100.100.3 2222:udp 3333:tcp 4444:udp
hitting udp 100.100.100.3:2222
hitting tcp 100.100.100.3:3333
hitting udp 100.100.100.3:4444
[/code]

本站源创,转载请注明出处



分享到: 更多

这篇日志的 QR 二维码为:

一月 27th, 2010

Posted In: 未分类

发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量