Re: [openssl-users] SSL error “inappropriate fallback” and TLS_FALLBACK_SCSV

2017-06-01 Thread Florin Andrei

On 2017-06-01 12:23, Michael Wojcik wrote:


On the other hand, this doesn't really answer Florin's question of why
the server sees so many clients falling back. If the load is bursty,
it might be listen-queue dumping. I don't know if Nginx lets you
configure the listen queue depth, but at some point the stack will
start dropping connections (either silently, in the BSD or "correct"
manner; or with a RST, in the Winsock or "patently wrong" manner) if
the sustained load is too high. But unless this is a pretty busy
server or has a really high variance in its load distribution, it's
probably an intermediary node that's to blame.


Aggregate traffic has a smooth profile, with daily increase towards the 
middle of the day, and decrease towards midnight. Client sessions are 
typically short (way under 1 minute, perhaps most of them under 15 
seconds).


I don't see any errors related to what you're saying.


Or the clients have a really short timeout, or the connection's being
aborted by the user and the client is incorrectly falling back when
that happens. Though then I'd assume Florin would see that in the
Nginx logs, assuming it logs ECONNRESET.


Well, I'm digging through the logs. The one thing I see often is:

client X.Y.Z.K closed keepalive connection

Not much other than that, and these are really "severity:info" events, I 
see them even with TLS termination at the ALB.


I see some amount of...

peer closed connection in SSL handshake while SSL handshaking

...also a "severity:info" event, at a rate about 4x less than the 
“inappropriate fallback” stuff.


(shrug) Seems normal.

As a more informal argument: We're using whatever Amazon deemed 
appropriate for their TLS policy for load balancers, in terms of 
protocol versions and ciphers. Surely if there was a problem with 
versions or ciphers, we'd hear about it, or they would change it 
quickly, just based on the amount of traffic they receive every day. 
That was the main reason why I've found hard to accept that this rate of 
TLS errors is somehow normal; but now I think I start to understand this 
aspect of the protocol thanks to the excellent explanations I've seen 
early in this discussion.


--
Florin Andrei
http://florin.myip.org/
--
openssl-users mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users


Re: [openssl-users] SSL error “inappropriate fallback” and TLS_FALLBACK_SCSV

2017-06-01 Thread Florin Andrei

On 2017-06-01 11:43, Salz, Rich via openssl-users wrote:

Would clients actually attempt to send TLS_FALLBACK_SCSV even if the
previous connection attempt failed for reasons other than TLS? If, 
say, the
initial connection attempt failed at the TCP level? That sounds a 
little strange

to me.


Yes they do.

There are many badly written clients out there.  Or poor libraries.


What I find surprising is the rate of these errors. For every 100 
legitimate HTTP requests that make it to Nginx, I get 2.5 “inappropriate 
fallback” SSL errors. That's a lot of noise.


I guess I'll have to adjust my expectations.

Related question: assuming the lists of TLS protocol versions and 
ciphers I've enabled in Nginx are indeed exactly the same as the default 
TLS policy in an AWS ALB, the errors I see now logged by Nginx should 
be, more or less, the same population of errors I saw reflected in the 
ALB metrics before, right? The whole point of this exercise is to 
temporarily work around the lack of a TLS error log in an ALB. The error 
rate does seem quite similar between ALB and Nginx. I'm just wondering 
if the ALB is doing something that my standard Ubuntu openssl libraries 
are not.


--
Florin Andrei
http://florin.myip.org/
--
openssl-users mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users


Re: [openssl-users] SSL error “inappropriate fallback” and TLS_FALLBACK_SCSV

2017-06-01 Thread Florin Andrei

On 2017-06-01 02:13, Matt Caswell wrote:


The presence of this error doesn't actually mean that you are under
attack. It just means that the client made an earlier connection 
attempt

with a higher version number and it failed. There could be many reasons
for the failure. For example, plausibly, if you have a lot of mobile
clients then you could imagine that a network glitch could cause an
earlier attempt to fail.


It's interesting how I see a constant stream of “inappropriate fallback” 
errors in the logs, but this is pretty much the only error from a TLS 
perspective. Sure, there's the occasional certificate failure, like once 
every few minutes or so, and then, rarely, there's some ancient app 
trying SSLv3 (which is not enabled). But looking at the Nginx error.log 
the “inappropriate fallback” is basically the only error I get a 
perpetual flow of.


If the TLS_FALLBACK_SCSV attempt is caused by a previously failed 
connection, that must have been something different from a TLS error, 
because “inappropriate fallback” is probably over 99% of the lines in 
error.log - it's the only thing I see as logs are scrolling up in my 
viewer.


Would clients actually attempt to send TLS_FALLBACK_SCSV even if the 
previous connection attempt failed for reasons other than TLS? If, say, 
the initial connection attempt failed at the TCP level? That sounds a 
little strange to me.


Again, our clients are a mix of the average mobile devices in general 
use these days.


--
Florin Andrei
http://florin.myip.org/
--
openssl-users mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users


[openssl-users] SSL error “inappropriate fallback” and TLS_FALLBACK_SCSV

2017-05-31 Thread Florin Andrei
: TLS_ECDHE_RSA_WITH_RC4_128_SHA 
(0xc011)
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA 
(0x0033)
Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA 
(0x0039)

Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)
Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)
Cipher Suite: TLS_RSA_WITH_RC4_128_SHA (0x0005)
Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004)
Cipher Suite: TLS_FALLBACK_SCSV (0x5600)
Compression Methods Length: 1
Compression Methods (1 method)
Compression Method: null (0)
Extensions Length: 92
Extension: renegotiation_info
Type: renegotiation_info (0xff01)
Length: 1
Renegotiation Info extension
Renegotiation info extension length: 0
Extension: server_name
Type: server_name (0x)
Length: 27
Server Name Indication extension
Server Name list length: 25
Server Name Type: host_name (0)
Server Name length: 22
Server Name: [REDACTED]
Extension: Extended Master Secret
Type: Extended Master Secret (0x0017)
Length: 0
Extension: SessionTicket TLS
Type: SessionTicket TLS (0x0023)
Length: 0
Data (0 bytes)
Extension: Application Layer Protocol Negotiation
Type: Application Layer Protocol Negotiation 
(0x0010)

Length: 26
ALPN Extension Length: 24
ALPN Protocol
ALPN string length: 5
ALPN Next Protocol: h2-16
ALPN string length: 8
ALPN Next Protocol: spdy/3.1
ALPN string length: 8
ALPN Next Protocol: http/1.1
Extension: ec_point_formats
Type: ec_point_formats (0x000b)
Length: 2
EC point formats Length: 1
Elliptic curves point formats (1)
EC point format: uncompressed (0)
Extension: elliptic_curves
Type: elliptic_curves (0x000a)
Length: 8
Elliptic Curves Length: 6
Elliptic curves (3 curves)
Elliptic curve: secp256r1 (0x0017)
Elliptic curve: secp384r1 (0x0018)
Elliptic curve: secp521r1 (0x0019)

It's a little puzzling because the exchange of crypto messages uses TLS 
1.0 which the server definitely supports, and the client should be very 
likely to support too.


I've seen discussions online saying that the presence of the 
TLS_FALLBACK_SCSV cipher suite is an indication that this failed 
connection is related to anti-POODLE security measures, and the 
communication is likely to be retried again. Is that correct?


For the most part, what I'm trying to do is find the answers to these 
questions:


1. Is this bad? If yes, why? (what are the things that the clients need 
that the endpoint is not providing)


2. If it's not bad, then why do we get this constant stream of SSL 
errors?


It's a little difficult to search the capture file and try to correlate 
the failed SSL handshake with other, successful connections, because the 
source IPs are masked by the ELB. There might be a way to rely on the 
PROXY protocol header to identify IPs, but I'll have to figure out how 
to do that.


--
Florin Andrei
http://florin.myip.org/
--
openssl-users mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users