sshd configuration open /etc/ssh/sshd_config file, change and add the following lines
LoginGraceTime 60 PermitRootLogin no
MaxAuthTries 3 AllowUsers user_name
MaxStartups 3:50:10
LoginGraceTime The server disconnects after this time if the user has not suc- cessfully logged in. If the value is 0, there is no time limit. The default is 120 seconds.
MaxAuthTries Specifies the maximum number of authentication attempts permitted per connection. Once the number of failures reaches half this value, additional failures are logged. The default is 6.
MaxStartups Specifies the maximum number of concurrent unauthenticated con- nections to the SSH daemon. Additional connections will be dropped until authentication succeeds or the LoginGraceTime ex- pires for a connection. The default is 10.
Alternatively, random early drop can be enabled by specifying the three colon separated values ``start:rate:full'' (e.g. "10:30:60"). sshd(8) will refuse connection attempts with a probability of ``rate/100'' (30%) if there are currently ``start'' (10) unauthenticated connections. The probability in- creases linearly and all connection attempts are refused if the number of unauthenticated connections reaches ``full'' (60).
ufw (Uncomplicated Firewall)
apt-get install ufw
ufw enable | disable ufw default allow | deny ufw allow from x.x.x.x ufw deny from x.x.x.x