Before the attacker can send any data to the SSH server, he has to complete a TCP handshake. This means the attacker has to guess a 32 bit sequence number. (If SYN cookies are used, the attacker's chances may improve.)
Assuming your server is generating good sequence numbers, this will significantly reduce an attackers ability to attack your SSH server using a spoofed client IP address.
But maybe you don't trust your server to generate good sequence numbers, or maybe you think 32 bit of security isn't good enough. So you might still want to know, what would happen once the attacker guessed a correct sequence number.
First of all we notice that the attacker will be able to figure out whether a guessed sequence number was correct or not. A correct guess will cause a connection to be opened, so it will count towards the limit specified using MaxStartups
. The attacker can attempt to open another connection using a non-spoofed address in order to find out if that limit has been reached. He can keep your server just below that limit at all times, such that a successful connection with a spoofed address would always take the last available connection.
Without the trick to notice a successfully guessed sequence number, the attacker would have had to send password guesses in the blind without knowing whether the connection they were send across even exists. That could potentially have slowed the attacker down by a factor of 2³².
But even though an attacker can get feedback to indicate whether a sequence number was guessed correctly, there are other roadblocks preventing password guessing on a spoofed TCP connection.
During key exchange both client and server will choose a random value to be send over the connection. These random values influence the session key. This means an attacker working in the blind (because he doesn't see replies send from the server to the spoofed IP) will not know the session key.
The lack of knowledge about the session key means the attacker will have to guess a message authentication code. This is essentially equivalent to performing a MITM-attack on a legitimate connection. Additionally, the attacker has to send the password encrypted to be decrypted by the server. Since the attacker don't know the encryption key in use, he will not know which passwords he has tried.
The time window for the attacker to complete the attack only lasts until the spoofed IP address has replied with a TCP RST packet. Since the roundtrip time between attacker and server is likely going to be larger than the roundtrip time between server and local addresses, this could prevent the attacker from using any sort of feedback including the verification of correctly guessed sequence number.
You can give the attacker a longer window to complete the attack by installing a firewall that prevent the SYN ACK from reaching the spoofed IP address or by preventing the RST from reaching the server. This does however not make the attack much more feasible.