如何制作 QOTD 服务器或类似服务器

如何制作 QOTD 服务器或类似服务器

QOTD(“每日报价”)是一种可以在服务器上默认通过端口 17 打开的协议。我在 Google 上搜索了好几次,但出于某种原因,几乎没有关于如何制作一个服务器的信息,当连接到端口 17 时,可以使用 QOTD 返回报价。

事实上,如果 QOTD 服务器可以处理大量文本并且不易受到“乒乓”攻击,那么它可以作为一种以 bash 可读形式显示和发送数据的实用方式。维基百科-QOTD

这种攻击包括 qotd 服务器向另一台计算机的请求发送回复,当请求过多时,服务器就会崩溃(简单的 DoS 攻击)

这是 QOTD 服务器的一个示例(在 Mac 或 Linux 机器上的终端中运行)

  nc shairosenfeld.com 17

有没有办法制作一种 QOTD 类型的服务器,可以限制每分钟的请求数量,或者可以禁止回复垃圾邮件的人(就像 ssh 的拒绝主机一样)?有人有 Linux 示例吗,因为我找了很久都没有找到。

答案1

编写 QOTD 应用程序似乎非常简单。我不是 Python 程序员,但概念验证服务器应该是这样的:

/usr/bin/python 的 #!

从套接字导入*
我的主机 = ''
我的端口 = 17

s = socket(AF_INET, SOCK_STREAM) # 创建一个 TCP 套接字
s.bind((myHost,myPort))
s.listen (5)

而 1:
  连接,地址 = s.accept()
  连接.发送(“echo Hello World\n”)
  连接.关闭()

(当然,需要以 root 身份运行 - 因为端口小于 1024)

然后,您可以使用 IPTABLES 进行一些限制以限制连接数 - 类似于:

/sbin/iptables -A INPUT -p tcp --syn --dport 17 -m connlimit --connlimit-above 3 -j REJECT

(看这里有关 iptables 连接限制的更多选项)

答案2

如果安装了 netcat 和 fortune,创建命令行 QOTD 服务器非常简单:

# nc -lk -p 17 -e fortune

某些版本的 netcat 可能没有启用 -e,在这种情况下请使用 busybox 版本,其功能如下:

# busybox nc -lk -p 17 -e fortune

相关内容