URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 66088
[ Назад ]

Исходное сообщение
"FreeBSD + ssh - не соедентья на внешний интерфейс"

Отправлено LuckyBird , 04-Май-06 14:39 
Помогите пожалуста !
Стоит FreeBSD 6.0 , ssh и pf.

Не могу соедениться с ssh с внешнего ip- не выводится окно ввода пароля, если пробую  по телнету - черный экран, хотя должен писать систему, из внутренней сети всё соединяется.
Причём на другом серваке такая же конфигурация - всё ок.

Вот sshd_config

Port 777
Protocol 2
Protocol 2
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_dsa_key

# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 1h
ServerKeyBits 768

# Logging
# obsoletes QuietMode and FascistLogging
SyslogFacility AUTH
#LogLevel INFO
LogLevel DEBUG

# Authentication:

LoginGraceTime 2m
PermitRootLogin no
StrictModes yes

#MaxAuthTries 6

#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile     .ssh/authorized_keys

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# Change to yes to enable built-in password authentication.
PasswordAuthentication yes
#PermitEmptyPasswords no

# Change to no to disable PAM authentication
#ChallengeResponseAuthentication yes

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
# Set this to 'no' to disable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication mechanism.
# Depending on your PAM configuration, this may bypass the setting of
# PasswordAuthentication, PermitEmptyPasswords, and
# "PermitRootLogin without-password". If you just want the PAM account and
# session checks to run without PAM authentication, then enable this but set
# ChallengeResponseAuthentication=no
#UsePAM yes

#AllowTcpForwarding yes
#GatewayPorts no
#X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin yes
#UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS yes
PidFile /var/run/sshd.pid
MaxStartups 10

# no default banner path
#Banner /some/path

# override default of no subsystems
Subsystem       sftp    /usr/libexec/sftp-server

Что может быть не так :?
текст pf.conf не высылаю - там всё рабочее- ставил pass all - не помогало Ж)  


Содержание

Сообщения в этом обсуждении
"FreeBSD + ssh - не соедентья на внешний интерфейс"
Отправлено LuckyBird , 04-Май-06 15:21 
Гм, попробовал повесть apache - то же - не соединиться с внешнего адреса,  с внутреннего всё ок, видимо проблема не в ssh, а в настройках сети, только пока непонятно что именно :(

"FreeBSD + ssh - не соедентья на внешний интерфейс"
Отправлено LuckyBird , 04-Май-06 15:28 
а ещё при перезагрузке скриптов выдаёт
-q=-q : not found FreeBSD
и всё перезагружается нормально

в логах всё чисто, бред какойто :(


"FreeBSD + ssh - не соедентья на внешний интерфейс"
Отправлено lavr , 04-Май-06 15:59 
>а ещё при перезагрузке скриптов выдаёт
>-q=-q : not found FreeBSD
>и всё перезагружается нормально
>
>в логах всё чисто, бред какойто :(

почему бред - все прозрачно, видимо проблема в NAT


"FreeBSD + ssh - не соедентья на внешний интерфейс"
Отправлено LuckyBird , 04-Май-06 16:27 
>>а ещё при перезагрузке скриптов выдаёт
>>-q=-q : not found FreeBSD
>>и всё перезагружается нормально
>>
>>в логах всё чисто, бред какойто :(
>
>почему бред - все прозрачно, видимо проблема в NAT

Я снаружи конекчусь внутрь по rdp на виндовую машину, всё пробрасывает , изнутри инет отлично работат, вот настройкa pf

ext_if="ed0" # replace with actual external interface name i.e., dc0
int_if="fxp0" # replace with actual internal interface name i.e., dc1

internal_net="192.168.0.0/24"
external_addr="X.X.X.X"


priv_nets = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"

tcp_services="{domain,ftp,smtp,rdp,777,http}"
#tcp_allow_outgoing="{5190,777,ftp,,443,563,80,smtp,20, 21,smtp,http}"
udp_services="{domain}"
icmp_types="echoreq"

servin = "192.168.0.250"

#table <disable_inet> persist file "/usr/local/etc/disable_internet"
#set timeout { icmp.first 20, icmp.error 10 }
#set timeout { other.first 60, other.single 30, other.multiple 60 }
#set timeout { adaptive.start 0, adaptive.end 0 }
#set limit { states 10000, frags 5000 }

#set loginterface $ext_if
#set optimization normal
#set block-policy drop

#set require-order yes
#set fingerprints "/etc/pf.os"


###############################################################################
############# BEGIN RULES ###############
############# NORMALIZACIJA ###############
###############################################################################
#1.1Vhodjashjie fragmenti nakaplivajutsja i peredajutsja daljshe filjtru
#scrub in on $ext_if all fragment reassemble min-ttl 20 max-mss 1440

#1.2Ubiraet opciju don't fragment iz ip-zagalovka
#scrub in on $ext_if all no-df
#1.3 Ni odnoj iz storon ne pozvoljaetsja umenjshitj IP TTL TTL dlja vseh paketov ustanavlivaetsja v maksimum
#scrub on ed0 all reassemble tcp


#2. NAT

rdr on $ext_if proto tcp from any to $external_addr port rdp -> $servin
rdr on $int_if proto tcp from $internal_net to any port http -> localhost port 3128
rdr on $ext_if proto tcp from any to $external_addr port smtp -> $servin
nat on $ext_if from $internal_net to any -> ($ext_if)


#pass in on $ext_if proto tcp from any to $external_addr port > 49151 keep state
#pass in quick on $ext_if proto tcp from any to $external_addr port 20 keep state
#pass in quick on $ext_if proto tcp from any to $external_addr port 21 keep state


#3.0 Block all traffik on external interface

block all
#pass all

### ALLOW LOCALHOST
pass on lo all

# activate spoofing protection for the internal interface.
antispoof quick for $int_if inet


#3.1 PORT SCANNERS FOR OS DETECTING
#block in quick proto tcp from any to $external_addr flags SF/SFRA
#block in quick proto tcp from any to $external_addr flags SFUP/SFRAU
#block in quick proto tcp from any to $external_addr flags FPU/SFRAUP
#block in quick proto tcp from any to $external_addr flags F/SFRA
#block in quick proto tcp from any to $external_addr flags U/SFRAU
#block in quick proto tcp from any to $external_addr flags P/P

#3.1 don't allow anyone to spoof non-routeble adresses
block drop in quick on $ext_if from $priv_nets to any
block drop out quick on $ext_if from any to $priv_nets

# Block from not alow internet users

#block in quick on $int_if from <disable_internet> to any
# Allow all with local net

pass in on $int_if from $internal_net to any keep state

pass out on $int_if from any to $internal_net keep state


#Enable incoming keep state trafic

pass in on $ext_if inet proto tcp from any to $ext_if port $tcp_services flags S/SA synproxy state

pass in on $ext_if proto tcp from any to $servin port rdp \
flags S/SA synproxy state

pass in on $ext_if proto tcp from any to $servin port smtp \
flags S/SA synproxy state


pass in on $ext_if proto udp from any to ($ext_if) \
port $udp_services

pass in inet proto icmp all icmp-type $icmp_types keep state


# Allow to outgoing traffic to inet

#pass out on $ext_if proto tcp from $ext_if to any port $tcp_allow_outgoing #proto tcp all #port $tcp_allow_ou
#tgoing modulate state flags S/SA

pass out on $ext_if proto tcp all keep state
pass out on $ext_if proto { udp, icmp } all keep state


В другом месте всё толже самое - и всё ок


"FreeBSD + ssh - не соедентья на внешний интерфейс"
Отправлено lavr , 04-Май-06 16:48 
>>>а ещё при перезагрузке скриптов выдаёт
>>>-q=-q : not found FreeBSD
>>>и всё перезагружается нормально
>>>
>>>в логах всё чисто, бред какойто :(
>>
>>почему бред - все прозрачно, видимо проблема в NAT
>
>Я снаружи конекчусь внутрь по rdp на виндовую машину, всё пробрасывает ,
>изнутри инет отлично работат, вот настройкa pf
>
>ext_if="ed0" # replace with actual external interface name i.e., dc0
>int_if="fxp0" # replace with actual internal interface name i.e., dc1
>
>internal_net="192.168.0.0/24"
>external_addr="X.X.X.X"

<skipped нафик>

sorry, близко не интересно разбирать чужие firewall.

1. смотрим привязку sshd (bind to address/port)

# sockstat | grep sshd или порт
смотрите привязку

далее изнутри и извне(попросите к примеру кого):

2. пробиваем порты снаружи (можно изнутри)

# nmap -pВАШ_ПОРТ_SSH ваш_внешний_ip

Прим: если хочется изменить стандартный порт SSH, особенно для Protocol-2, лучше
выносить его выше ports-address=1024, ssh-port > 1024 для обхода FIREWALL и
отвязки от авторизации по нижним портам (rsh) < 1024

типа (sshd_config):

Port 22
Port 2022
Protocol 2,1

или только Protocol-2

Port 22
Port 8022
Protocol 2

понятно что убрать все RSH/RHOST авторизации (это совет попутный)

3. если nmap в п.2 покажет что ssh xy/tcp open, извне пробуем

# telnet наш_внешний_ip порт
должны получить промпт-openssh (приглашение)

# ssh -v наш_внешний_ip порт

Где-то такая вот простая технология, дальше можно думайть...


"FreeBSD + ssh - не соедентья на внешний интерфейс"
Отправлено LuckyBird , 04-Май-06 17:19 
1) вот что sockstat выдаёт
gsitov   sshd       647   3  tcp4   192.168.0.251:777     192.168.0.250:46465
gsitov   sshd       647   4  stream -> ??
gsitov   sshd       647   9  stream /tmp/ssh-HC85sznmBm/agent.647
root     sshd       645   3  tcp4   192.168.0.251:777     192.168.0.250:46465
root     sshd       645   5  stream -> ??
root     sshd       475   3  tcp6   *:777                 *:*
root     sshd       475   4  tcp4   *:777                 *:*

Это я локально соединяюсь

2) вот что nmap говорит

gtw$ nmap -p 777 x.x.x.x

Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-05-04 17:23 MSD
Interesting ports on  (x.x.x.x):
PORT    STATE SERVICE
777/tcp open  unknown

Nmap finished: 1 IP address (1 host up) scanned in 0.295 seconds

3) а вот что ssh

gtw$ ssh -v x.x.x.x -p 777
OpenSSH_3.8.1p1 FreeBSD-20040419, OpenSSL 0.9.7e 25 Oct 2004
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to x.x.x.x [x.x.x.x] port 777.
debug1: Connection established.
debug1: identity file /home/gsitov/.ssh/identity type -1
debug1: identity file /home/gsitov/.ssh/id_rsa type -1
debug1: identity file /home/gsitov/.ssh/id_dsa type -1

на это месте дальше тишина - никокой реакции.

Пока никаких мыслей , может быть ещё что-нибудь ещё подскажете ??? :(


"FreeBSD + ssh - не соедентья на внешний интерфейс"
Отправлено LuckyBird , 04-Май-06 17:31 
Нашёл в чём проблема -

pass in on $ext_if inet proto tcp from any to $ext_if port $tcp_services flags S/SA synproxy state

если так стоит - то не пускает -  если убрать synproxy state
то всё ок !!

Но на предыдущей версии freebsd - 5.4 это правило срабатыает правильно - не подскажете - может кто знает - в новой версии pf ничего относительно этого не менялось ??


"FreeBSD + ssh - не соедентья на внешний интерфейс"
Отправлено lavr , 04-Май-06 17:40 
>1) вот что sockstat выдаёт
>gsitov   sshd       647  
> 3  tcp4   192.168.0.251:777    
>192.168.0.250:46465
>gsitov   sshd       647   4  stream -> ??
>gsitov   sshd       647  
> 9  stream /tmp/ssh-HC85sznmBm/agent.647
>root     sshd      
>645   3  tcp4   192.168.0.251:777  
>  192.168.0.250:46465
>root     sshd       645   5  stream -> ??
>root     sshd      
>475   3  tcp6   *:777  
>          
>   *:*
>root     sshd      
>475   4  tcp4   *:777  
>          
>   *:*
>
>Это я локально соединяюсь
>
>2) вот что nmap говорит
>
>gtw$ nmap -p 777 x.x.x.x
>
>Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-05-04 17:23 MSD
>Interesting ports on  (x.x.x.x):
>PORT    STATE SERVICE
>777/tcp open  unknown
>
>Nmap finished: 1 IP address (1 host up) scanned in 0.295 seconds
>
>
>3) а вот что ssh
>
>gtw$ ssh -v x.x.x.x -p 777
>OpenSSH_3.8.1p1 FreeBSD-20040419, OpenSSL 0.9.7e 25 Oct 2004
>debug1: Reading configuration data /etc/ssh/ssh_config
>debug1: Connecting to x.x.x.x [x.x.x.x] port 777.
>debug1: Connection established.
>debug1: identity file /home/gsitov/.ssh/identity type -1
>debug1: identity file /home/gsitov/.ssh/id_rsa type -1
>debug1: identity file /home/gsitov/.ssh/id_dsa type -1
>
>на это месте дальше тишина - никокой реакции.
>
>Пока никаких мыслей , может быть ещё что-нибудь ещё подскажете ??? :(
>


собственно я вам всю технологию проверки расписал, ну например:

дано: локальная машина unix1.jinr.ru
выполнить: поднять ssh(openssh) на удаленной машине в сети провайдера, провайдер
блокирует в acl'ах на сиськах порты <=1024

на удаленной машине: alone.dubna.ru поднят openssh (sshd_config)

# 22/tcp для пользования ssh в сети провайдера
Port 22
# 2022/tcp для захода по ssh из Интернету
Port 2022
Protocol 2,1
...

[unix1]/tmp > hostname
unix1.jinr.ru
[unix1]/tmp > nmap -p22 alone.dubna.ru

Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-05-04 17:35 MSD
Note: Host seems down. If it is really up, but blocking our ping probes, try -P0
Nmap finished: 1 IP address (0 hosts up) scanned in 2.043 seconds
[unix1]/tmp >

видим что порт не просто отфильтрован, а закрыт, ну можем убедиться:

[unix1]/tmp > telnet alone.dubna.ru 22  
Trying 62.84.100.160...
^C
[unix1]/tmp >

дело труба

смотрим на alone.dubna.ru (кусок sshd_config приведен выше)

[alone]~ > sockstat | grep sshd
root     sshd       504   3  tcp6   *:2022                *:*
root     sshd       504   4  tcp4   *:2022                *:*
root     sshd       504   5  tcp6   *:22                  *:*
root     sshd       504   6  tcp4   *:22                  *:*
[alone]~ >

ну-у-у, tcp6 нас особенно не волнует: tcp4   *:22 и tcp4   *:2022
проверяем:

[unix1]/tmp > nmap -p2022 alone.dubna.ru

Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-05-04 17:38 MSD
Interesting ports on alone.dubna.ru (62.84.100.160):
PORT     STATE SERVICE
2022/tcp open  down

Nmap finished: 1 IP address (1 host up) scanned in 0.169 seconds
[unix1]/tmp >

то что дохтур прописал: STAT=open (это самое главное), уже понятно что покажет telnet,
в смысле можно не париться а сразу использовать ssh, ну ради интереса:

[unix1]/tmp > telnet alone.dubna.ru 2022
Trying 62.84.100.160...
Connected to alone.dubna.ru.
Escape character is '^]'.
SSH-1.99-OpenSSH_4.2p1 FreeBSD-20050903
quit
Protocol mismatch.
Connection closed by foreign host.
[unix1]/tmp >

Это самое главное - nmap показал нам что TCP не заблокирован на 2022, хотя на 22/tcp
заблокирован.

Все прозрачно, что тут еще объяснять, только ТО ЧТО СНАРУЖИ нужно смотреть открытость
IP и TCP


"FreeBSD + ssh - не соедентья на внешний интерфейс"
Отправлено LuckyBird , 04-Май-06 17:59 
Проблема в том что не проходят входяшие сообщения из интернета

нашёл в чём загвоздка

pass in on $ext_if inet proto tcp from any to $ext_if port $tcp_services flags S/SA synproxy state

если так стоит - то не пускает - если убрать synproxy state
то всё ок !!

Но на предыдущей версии freebsd - 5.4 это правило срабатыает правильно - не подскажете - может кто знает - в новой версии pf ничего относительно этого не менялось ??


"FreeBSD + ssh - не соедентья на внешний интерфейс"
Отправлено lavr , 04-Май-06 18:10 
>Проблема в том что не проходят входяшие сообщения из интернета
>
>нашёл в чём загвоздка
>
>pass in on $ext_if inet proto tcp from any to $ext_if port
>$tcp_services flags S/SA synproxy state
>
>если так стоит - то не пускает - если убрать synproxy state
>
>то всё ок !!
>
>Но на предыдущей версии freebsd - 5.4 это правило срабатыает правильно -
>не подскажете - может кто знает - в новой версии pf
>ничего относительно этого не менялось ??

ну как и предполагалось - firewall/nat, всегда что-то меняется, изменения ищутся по
man или по спискам рассылки

Sorry, я принципиально не даю советов по firewall/nat, даже если знаю ответ, лучше
не навредить...