1

QOTD ("Цитата дня") - это протокол, который по умолчанию может быть открыт на серверах через порт 17. Я гуглил и гуглил, и по какой-то причине практически нет информации о том, как сделать сервер, который при подключении к порту 17 мог бы возвращать кавычку с помощью QOTD.

Фактически, сервер QOTD можно использовать в качестве практического способа показа и отправки данных в удобочитаемой форме, если он может обрабатывать большие объемы текста и если он не подвержен атаке «пинг-понг». Википедия - QOTD

Эта атака состоит в том, что сервер qotd отправляет ответы на запросы с другого компьютера, а когда запросов слишком много, сервер падает (простая атака DoS)

Вот пример сервера QOTD (запустите его в терминале на компьютере Mac или Linux)

  nc shairosenfeld.com 17

Есть ли способ сделать своего рода сервер типа QOTD, где количество запросов в минуту может быть ограничено, или если спамеры для ответов могут быть запрещены (например, denyhosts для ssh)? У кого-нибудь есть пример linux, потому что я посмотрел без удачи.

2 ответа2

5

Кажется, довольно просто написать приложение QOTD. Я не программист на Python, но сервер для проверки концепции:

#!/usr/bin/python

from socket import *
myHost = ''
myPort = 17

s = socket(AF_INET, SOCK_STREAM)    # create a TCP socket
s.bind ( (myHost, myPort) )
s.listen (5)

while 1:
  connection, address = s.accept() 
  connection.send("echo Hello World\n")
  connection.close() 

(Который должен запускаться как root, конечно - потому что порт меньше 1024)

Затем вы можете сделать некоторые ограничения с помощью IPTABLES, чтобы ограничить количество соединений - что-то вроде:

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

(Смотрите здесь для получения дополнительной информации об ограничении соединения на iptables)

4

Создание сервера QOTD из командной строки является тривиальным, если у вас установлены netcat и fortune:

# nc -lk -p 17 -e fortune

Некоторые версии netcat могут не включать -e, в этом случае используется версия busybox, которая:

# busybox nc -lk -p 17 -e fortune

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .