Рейтинг:0

Iptables: разрешить ssh только через vpn не работает

флаг us

Мне нужно разрешить ssh только через VPN (openvpn) с помощью iptables. Все сервисы (ssh, vpn) находятся на одной машине. Мои текущие правила для vpn и ssh:

# установить политику по умолчанию
iptables -P ВХОД DROP
iptables -P УДАЛЕНИЕ ВПЕРЕД
iptables -P ВЫХОД DROP

# сброс правил
iptables -t физ -F
iptables -t мангл -F
iptables-F
iptables -X

# разрешить локальный хост
iptables -A ВВОД -i $LO -j ПРИНЯТЬ
iptables -A ВЫВОД -o $LO -j ПРИНЯТЬ

# безопасность
iptables -A ВХОД -p TCP ! --syn -m conntrack --ctstate NEW -j DROP -m comment --comment "для первого сегмента tcp требуется бит SYN"

iptables -A INPUT -p tcp --tcp-flags ВСЕ ВСЕ -j DROP -m comment --comment "отбрасывать пакеты XMAS"

iptables -A INPUT -p tcp --tcp-flags ВСЕ НЕТ -j DROP -m comment --comment "отбрасывать NULL-пакеты"

iptables -A INPUT -p icmp --icmp-type address-mask-request -j DROP -m comment --comment "отбрасывать атаки ICMP smurf"
iptables -A INPUT -p icmp --icmp-type timestamp-request -j DROP
iptables -A INPUT -p icmp --icmp-type router-solicitation -j DROP
iptables -A INPUT -p icmp -m limit --limit 2/секунду -j ПРИНЯТЬ

iptables -A INPUT -m conntrack --ctstate INVALID -j DROP -m comment --comment "удалить искаженные (недопустимые) пакеты"
iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP
iptables -A ВЫВОД -m conntrack --ctstate INVALID -j DROP    

# разрешить VPN-трафик
iptables -A INPUT -i $WAN -p tcp -m conntrack --ctstate НОВЫЙ, УСТАНОВЛЕННЫЙ --dport $PORT_OPENVPN -j ПРИНЯТЬ
iptables -A ВЫВОД -o $WAN -p tcp -m conntrack --ctstate ESTABLISHED --sport $PORT_OPENVPN -j ПРИНЯТЬ
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o $WAN -j MASQUERADE

iptables -A FORWARD -s 10.8.0.0/24 -o $WAN -j ПРИНЯТЬ
iptables -A FORWARD -i $TUN -o $WAN -m conntrack --ctstate СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ
iptables -A FORWARD -i $WAN -o $TUN -m conntrack --ctstate СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ

# разрешить SSH
iptables -t nat -I POSTROUTING -p tcp -m tcp --sport $PORT_SSH -o $TUN -j MASQUERADE
iptables -A FORWARD -i $TUN -o $WAN -p tcp --dport $PORT_SSH -j ПРИНЯТЬ
iptables -A FORWARD -i $WAN -o $TUN -p tcp --sport $PORT_SSH -j ПРИНЯТЬ

iptables -A INPUT -p tcp -m tcp --dport $PORT_SSH -j ПРИНЯТЬ
iptables -A ВЫВОД -p tcp -m tcp --sport $PORT_SSH -j ПРИНЯТЬ

но пока ssh не работает ни через vpn, ни без него. Что я делаю не так ?

ОБНОВИТЬ Результат ssh -vv:

OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
debug1: Чтение данных конфигурации .ssh/config
debug2: resolve_canonicalize: имя хоста <IP-АДРЕС VPS ЗДЕСЬ> является адресом
отладка2: ssh_connect_direct
debug1: подключение к порту <IP-АДРЕС VPS ЗДЕСЬ> [<IP-АДРЕС VPS ЗДЕСЬ>] 22.
отладка1: соединение установлено.
debug1: файл идентификации .ssh/id_rsa тип -1
debug1: файл идентификации .ssh/id_rsa-cert type -1
debug1: файл идентификации .ssh/id_dsa тип -1
debug1: файл идентификации .ssh/id_dsa-cert type -1
debug1: файл идентификации .ssh/id_ecdsa тип -1
debug1: файл идентификации .ssh/id_ecdsa-cert тип -1
debug1: файл идентификации .ssh/id_ed25519 тип -1
debug1: файл идентификации .ssh/id_ed25519-cert type -1
debug1: файл идентификации .ssh/id_xmss тип -1
debug1: файл идентификации .ssh/id_xmss-cert type -1
debug1: строка локальной версии SSH-2.0-OpenSSH_for_Windows_8.1
debug1: удаленный протокол версии 2.0, удаленная версия программного обеспечения OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
debug1: соответствие: OpenSSH_7.6p1 Ubuntu-4ubuntu0.5 с патчем OpenSSH_7.0*,OpenSSH_7.1*,OpenSSH_7.2*,OpenSSH_7.3*,OpenSSH_7.4*,OpenSSH_7.5*,OpenSSH_7.6*,OpenSSH_7. 7* совместимость 0x04000002
debug2: параметр fd 3 O_NONBLOCK
debug1: Аутентификация на <IP-АДРЕС VPS ЗДЕСЬ>:22 как «<ВХОД ЗДЕСЬ>»
debug1: SSH2_MSG_KEXINIT отправлен
debug1: SSH2_MSG_KEXINIT получен
debug2: предложение KEXINIT локального клиента
debug2: Алгоритмы KEX: curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16 -sha512, диффи-хеллман-группа18-ша512, диффи-хеллман-группа14-ша256, диффи-хеллман-группа14-ша1, доб-информация-с
debug2: алгоритмы ключа хоста: [email protected],[email protected],[email protected],rsa- [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384, ecdsa-sha2-nistp521,rsa-sha2-512,rsa-sha2-256,ssh-rsa,[email protected],ssh-ed25519
debug2: шифры ctos: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
debug2: шифры сток: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
debug2: главные администраторы MAC: [email protected],[email protected],[email protected],[email protected],hmac [email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: Сток MAC: [email protected],[email protected],[email protected],[email protected],hmac [email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: сжатие Технический директор: нет, [email protected], zlib
debug2: сжатие stoc: нет, [email protected], zlib
debug2: языки
debug2: языки сток:
отладка2: first_kex_follows 0
отладка2: зарезервировано 0
debug2: одноранговый сервер, предложение KEXINIT
debug2: Алгоритмы KEX: curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16 -sha512,диффи-хеллман-группа18-ша512,диффи-хеллман-группа14-ша256,диффи-хеллман-группа14-ша1
debug2: алгоритмы ключа хоста: ssh-rsa,rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256
debug2: шифры ctos: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
debug2: шифры сток: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
debug2: главные администраторы MAC: [email protected],[email protected],[email protected],[email protected],hmac [email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: Сток MAC: [email protected],[email protected],[email protected],[email protected],hmac [email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: сжатие Технический директор: нет, [email protected]
debug2: сжатие исходный код: нет, [email protected]
debug2: языки
debug2: языки сток:
отладка2: first_kex_follows 0
отладка2: зарезервировано 0
debug1: kex: алгоритм: curve25519-sha256
debug1: kex: алгоритм ключа хоста: ecdsa-sha2-nistp256
debug1: kex: server->client шифр: [email protected] MAC: <неявное> сжатие: нет
debug1: kex: client->server шифр: [email protected] MAC: <неявное> сжатие: нет
debug1: ожидается SSH2_MSG_KEX_ECDH_REPLY
debug1: ключ хоста сервера: ecdsa-sha2-nistp256 SHA256:qUdNYwEs+cvEVkMKTz4RNOObOBSIByhRaehiNvybIi4
debug1: Хост «<IP-АДРЕС VPS ЗДЕСЬ>» известен и соответствует ключу хоста ECDSA.
debug1: найден ключ в .ssh/known_hosts:3
debug2: set_newkeys: режим 1
debug1: сменить ключ после 134217728 блоков
debug1: SSH2_MSG_NEWKEYS отправлено
debug1: ожидается SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS получен
debug2: set_newkeys: режим 0
debug1: повторный ввод после 134217728 блоков
debug1: pubkey_prepare: ssh_get_authentication_socket: нет такого файла или каталога
debug1: попытается использовать ключ: .ssh/id_rsa
debug1: попытается использовать ключ: .ssh/id_dsa
debug1: попытается использовать ключ: .ssh/id_ecdsa
debug1: попытается использовать ключ: .ssh/id_ed25519
debug1: попытается использовать ключ: .ssh/id_xmss
debug2: pubkey_prepare: готово
debug1: SSH2_MSG_EXT_INFO получен
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2 -nistp521>
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT получен
debug1: Аутентификации, которые могут продолжаться: открытый ключ, пароль
debug1: следующий метод аутентификации: открытый ключ
debug1: Попытка закрытого ключа: .ssh/id_rsa
debug1: Попытка закрытого ключа: .ssh/id_dsa
debug1: Попытка закрытого ключа: .ssh/id_ecdsa
debug1: Попытка закрытого ключа: .ssh/id_ed25519
debug1: Попытка закрытого ключа: .ssh/id_xmss
debug2: мы не отправляли пакет, отключить метод
debug1: следующий метод аутентификации: пароль

debug1: read_passphrase: невозможно открыть /dev/tty: нет такого файла или каталога
<ВОЙТИ ЗДЕСЬ>@<IP-АДРЕС VPS ЗДЕСЬ>, пароль:
debug2: мы отправили пакет паролей, ждем ответа
debug1: аутентификация прошла успешно (пароль).
Аутентификация на <IP-АДРЕС VPS ЗДЕСЬ> ([<IP-АДРЕС VPS ЗДЕСЬ>]:22).
debug1: канал 0: новый [клиентский сеанс]
debug2: канал 0: отправить открытым
debug1: Запрос [email protected]
debug1: вход в интерактивный сеанс.
debug1: залог: сеть
debug1: ENABLE_VIRTUAL_TERMINAL_INPUT поддерживается. Чтение VTSequence из консоли
debug1: ENABLE_VIRTUAL_TERMINAL_PROCESSING поддерживается. Консоль поддерживает анализ ansi
debug1: client_input_global_request: rtype [email protected] want_reply 0
debug2: channel_input_open_confirmation: канал 0: запуск обратного вызова
debug2: настройка fd 3 TCP_NODELAY
debug2: client_session2_setup: идентификатор 0
debug2: канал 0: запрос pty-req подтверждает 1
debug2: канал 0: подтверждение оболочки запроса 1
debug2: channel_input_open_confirmation: канал 0: обратный вызов выполнен
debug2: канал 0: открыть подтверждение rwindow 0 rmax 32768
debug2: channel_input_status_confirm: введите 99 id 0
debug2: запрос на выделение PTY принят на канале 0
debug2: канал 0: настройка rcvd 2097152
debug2: channel_input_status_confirm: введите 99 id 0
debug2: запрос оболочки принят на канале 0
Ginnungagap avatar
флаг gu
Нет абсолютно никаких правил DROP/REJECT, мы должны понимать, что все цепочки по умолчанию используют его, или это нарушается простым добавлением правил NAT?
Sergio Ivanuzzo avatar
флаг us
@Ginnungagap спасибо за комментарий. Я добавил полную часть конфигурации iptables к моему вопросу. Пожалуйста, дайте мне знать, если я могу добавить дополнительную информацию.
Ginnungagap avatar
флаг gu
Можете ли вы опубликовать результат попытки подключения SSH с помощью `ssh -vv`? Поскольку это правила брандмауэра, мне кажется, все в порядке.
Sergio Ivanuzzo avatar
флаг us
@Ginnungagap Я подключаюсь к своему VPS через Putty (win10) и подключаюсь к VPN через клиент openvpn (win10). Не могли бы вы сказать, как я могу получить необходимый результат в этом случае?
Ginnungagap avatar
флаг gu
Извините, я не могу, может быть, кто-то более разбирающийся во вселенной Microsoft может помочь...
Sergio Ivanuzzo avatar
флаг us
@Ginnungagap извините, похоже, что cmd (win10) позволяет обработать опубликованную вами команду. Я добавил вывод, о котором идет речь выше. Не могли бы вы посмотреть?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.