Нужна помощь с конфигурацией VPS. Я веб-разработчик, который пытается настроить 64-битный Ubuntu VPS. Я изменил порт SSH на 30000, добавил пользователя со всеми привилегиями и настроил IPtables, используя следующий скрипт
*filter
# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -i ! lo -d 127.0.0.0/8 -j REJECT
# Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allows all outbound traffic
# You could modify this to only allow certain traffic
# This is in addition to allowing established and related traffic as listed above
-A OUTPUT -j ACCEPT
# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# Allows SSH connections from trusted-host only - drop the rest
#
# CHANGE THE TRUSTED-HOST DETAILS AFTER THE WORD --source
# THE -dport NUMBER IS THE SAME ONE YOU SET UP IN THE SSHD_CONFIG FILE
#
-A INPUT -p tcp -m state --state NEW --source mydomain.com --dport 30000 -j ACCEPT
-A INPUT -p tcp --dport 30000 -j DROP
# Create time lock for non-wanted SSH attempts of a period of 1 minute
-A INPUT -p tcp -m state --syn --state NEW --dport 30000 -m limit --limit 1/minute --limit-burst 1 -j ACCEPT
-A INPUT -p tcp -m state --syn --state NEW --dport 30000 -j DROP
# Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Reject all other inbound - default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT
Когда я пытаюсь подключиться к SSH с помощью стандартной команды ssh, я получаю сообщение об ошибке отказа в соединении, чего и следовало ожидать, но когда я пробую эту команду, кажется, что терминал зависает и перестает отвечать, и соединение не устанавливается.
ssh -p 30000 user@ipaddress
Я делаю что-то явно очевидное с помощью команды ssh или есть ошибка в скрипте iptables?
Любая помощь очень ценится!
Я ужасен с iptables, но я скажу, что запускать ssh на нестандартном порту в основном бесполезно. Вы не можете предположить, что люди не найдут порт, поэтому вам все равно придется встроить всю обычную защиту (ограничение доступа для определенных пользователей или определенных клиентских машин, отключение доступа по паролю и разрешение доступа только на основе ключа и т. Д.)
В этом случае смена порта доставляет больше хлопот, чем того стоит.
Что я бы посоветовал, даже если вы хотите переместить его на другой порт, это заставить его работать на обычном порту, используя сначала обычную конфигурацию, а затем вы можете изменить порт, зная, что он работал, так что только изменение порта может быть причиной любых проблем.
Убедитесь, что IP-адрес, mydomain.com
разрешается, это тот же IP-адрес, с которого вы фактически пытаетесь подключиться. Я могу сделать то же, что и вы, если создам ситуацию, подключившись с машины с неправильным IP-адресом.
Эта линия в частности
-A INPUT -p tcp --dport 30000 -j DROP
приводит к зависанию терминала при подключении не с той машины. Удаление линии и подключение не с того компьютера дает мне сообщение об ошибке
ssh: connect to host host.lan port 22: No route to host
На протяжении всего этого я могу подключиться, если использую машину с правильным IP-адресом, разрешенным mydomain.com
.