Я пытаюсь реализовать порт, стучащий для ssh сервиса на мой персональный сервер. У меня есть два других услуг общего пользования, которые всегда будут открыты. Мои правила iptables похожи на это:
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
7229 545K ACCEPT all -- any any anywhere anywhere ctstate RELATED,ESTABLISHED
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:4352
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:25565
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 4 packets, 448 bytes)
pkts bytes target prot opt in out source destination
Мой knockd.conf файл в в/etc/knockd.conf похож на это:
[options]
logfile = /var/log/knockd.log
[SSH]
sequence = 7000,8000,9000
seq_timeout = 15
tcpflags = syn
start_command = /sbin/iptables -D INPUT 1 -s %IP% -p tcp --dport ssh -j ACCEPT
cmd_timeout = 10
stop_command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
У меня также есть файл/etc/default/knockd
################################################
#
# 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"
При выполнении sudo/etc/init.d/knockd обычно перезапускают выполнения. Файл журнала просто говорит, что knockd запустился.
На стороне клиента я выполняю удар-v 7 000$address 8000 9000. Вывод говорит:
hitting tcp x.x.x.x:7000
hitting tcp x.x.x.x:8000
hitting tcp x.x.x.x:9000
Однако попытка соединить урожаи никакой результат и правила iptables неизменна. Что я делаю неправильно?
Править
Конечно, как только я отправляю этот вопрос, мой ssh терминал решает перестать работать, и теперь я заблокирован из сервера в течение двух недель, пока я не могу на самом деле добраться до него. Не торопитесь, это не похоже, я могу сделать что-либо с информацией в ближайшее время.
Я ничего не вижу неправильно ни с чем, что Вы отправили, таким образом, необходимо будет, вероятно, диагностировать (после того, как проверка ps -aux|grep knockd
или tail'ing вход в систему knockd, сервер доказывает knockd, будет работать):
Примером - (входят, это на knockd сервере с su питанием, cxx.xxx.xxx.xxx является IP-адрес клиентского дверного молоточка) iptables -w -I INPUT 1 -s cxx.xxx.xxx.xxx -j LOG; tail -n-0 -f /var/log/kern.log|stdbuf -o0 grep cxx.xxx.xxx.xxx
, Затем отправляют удары от клиента, наблюдая вывод команды выше. Если удары не становятся зарегистрированными, то на клиенте командная строка разделяет каждый удар порта сном 1. Командная строка для этого была бы похожа knock sxx.xxx.xxx.xxx nnnn1;sleep1;knock sxx.xxx.xxx.xxx nnnn2;sleep 1;knock sxx.xxx.xxx.xxx nnnn3;sleep 1...
, где sxx.xxx.xxx.xxx является IP сервера, и nnnn1,2,3,4 являются портами в последовательности удара. Если это все еще не работает, используют регистрирующуюся технику на Вашем клиенте (установите iptables/netfilter и поместите правило ЖУРНАЛА в ВЫХОДНУЮ цепочку с-d sxx.xxx.xxx.xxx; хвост-f клиентский файл журнала)
, Если Вы находите все удары, становятся зарегистрированными очень хорошо в клиентский дверной молоточек, затем дополнительные шаги поиска и устранения неисправностей требуются. (1-й шаг - Быть уверенным Ваш knockd.conf становится найденным knockd, как он запускается.) Отправляют Ваши результаты для справки с дальнейшим поиском и устранением неисправностей. ISP в одном конце или другой или Ваш [Wi-Fi] маршрутизатор мог бы блокировать более высокие пронумерованные порты. Я нашел, что сеть моего оператора сотовой связи, казалось, заблокировала мои удары с моего смартфона.
Я знаю, что это довольно старо, но я думаю, что вижу Вашу проблему
, Ваша команда запуска start_command = /sbin/iptables -D
, Который должен быть -A
не -D
insted добавления его лучше вставить так-I
попытки отмечены, некоторые improvments: * *
[опции]
***useSyslog***
файл журнала = /var/log/knockd.log
[SSH] последовательность = 7000,8000,9000 seq_timeout = 15 tcpflags = syn start_command =/sbin/iptables -I ВВЕЛ 1 с %IP, %-p tcp - dport ssh-j ПРИНИМАЮТ cmd_timeout =, 10 stop_command =/sbin/iptables-D ВВОДЯТ-s %IP %-p tcp - dport 22-j ПРИНИМАЕТ