在Linux系统中,SSH(Secure Shell)是一种常见的远程登录和管理工具,有时候我们可能需要限制SSH连接数,以防止恶意攻击或者资源过度消耗,本文将介绍几种在Linux中限制SSH连接数的方法。
1、使用iptables限制SSH连接数
iptables是Linux系统中的一个防火墙工具,可以用来限制网络流量,我们可以使用iptables来限制SSH连接数,以下是具体的操作步骤:
1、1 安装iptables
在Debian/Ubuntu系统中,可以使用以下命令安装iptables:
sudo apt-get install iptables
在CentOS/RHEL系统中,可以使用以下命令安装iptables:
sudo yum install iptables
1、2 限制SSH连接数
使用以下命令限制SSH连接数为5:
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH --rsource --hitcount 5 -j REJECT
这条命令的意思是:当有新的TCP连接尝试访问22端口(SSH默认端口)时,如果这个连接的源IP地址在过去的5分钟内已经发起过5次SSH连接,那么拒绝这个连接。
2、使用ufw限制SSH连接数
ufw(Uncomplicated Firewall)是Ubuntu系统中的一个简单防火墙工具,我们可以使用ufw来限制SSH连接数,以下是具体的操作步骤:
2、1 安装ufw
在Ubuntu系统中,可以使用以下命令安装ufw:
sudo apt-get install ufw
2、2 启用ufw并设置规则
使用以下命令启用ufw并设置规则,限制SSH连接数为5:
sudo ufw enable && sudo ufw limit 22/tcp --limit 5/second --timeout 300
这条命令的意思是:启用ufw防火墙,并设置规则,限制每个IP地址每秒钟最多只能发起5个SSH连接,每个连接的超时时间为300秒。
3、使用fail2ban限制SSH连接数
fail2ban是一个用于防止暴力破解密码的工具,它可以根据日志文件自动识别和阻止恶意连接,我们可以使用fail2ban来限制SSH连接数,以下是具体的操作步骤:
3、1 安装fail2ban
在Debian/Ubuntu系统中,可以使用以下命令安装fail2ban:
sudo apt-get install fail2ban
在CentOS/RHEL系统中,可以使用以下命令安装fail2ban:
sudo yum install fail2ban
3、2 配置fail2ban监控SSH日志文件并限制连接数
编辑fail2ban的配置文件/etc/fail2ban/jail.local
,添加以下内容:
[sshd] enabled = true port = sshd,22,smtp,465,submission,pop3,imap,imaps,https,http-proxy,socks5,radius,auth,privoxy,dovecot,ldap,discard,mysql,allports,xmpp-bosh,xmpp-client,xmpp-server,zabbix-agent,redis-cli,redis-server,skype,teamspeak,vnc-server,postgresql-ssl,postfix-smtp,open网络加密层,cowboy,roundcube,netstat,squid3,stunnel4,svnserve,git-daemon,gopher,nfs,pcp-event-logfile,pcp-syslog-authpriv,pcp-syslog-local7,pcp-syslog-user,pcp-authpriv,pcp-local7,pcp-user,saslauthd,proftpd,powerdns-recursor,powerdns-queryportal,couchdb,collectd,socat,redis-ping,redis-stat,mongodb310,mongodb340,mongodb360,mongodb400,mongodb420,mongodb440,mongodb460,mongodb480,mongodb500,mongodb520,mongodb540,mongodb560,mongodb580,mongodb600,mongodb620,mongodb640,mongodb660,mongodb680,mongodb700,mongodb720,mongodb740,mongodb760,mongodb780,mongodb800,mongodb900] chain = INPUT_direct:INPUT_fail2ban_sshd [sshd] ignoreip = 127.0.0.1/8 bantime = 3600 findtime = 600 maxretry = 3 ignorecommand = rootlogin shell="/bin/false" port="*" protocol="tcp" chain = INPUT_direct [sshd] action_ = %(banaction)s[name=%(__name__)s][destemail=admin@example.com] banaction = firewallcmd[name=%(__name__)s] action_mwl = %(banaction)s[name=%(__name__)s][destemail=admin@example.com] mwl = yes bannedip = 192.168.1.1/32 bantime = 3600 findtime = 600 maxretry = 3 ignorecommand = rootlogin shell="/bin/false" port="*" protocol="tcp" chain = INPUT_direct [sshd] action_ = %(banaction)s[name=%(__name__)s][destemail=admin@example.com] banaction = firewallcmd[name=%(__name__)s] action_mwl = %(banaction)s[name=%(__name__)s][destemail=admin@example.com] mwl = yes bannedip = 192.168.1.2/32 bantime = 3600 findtime = 600 maxretry = 3 ignorecommand = rootlogin shell="/bin/false" port="*" protocol="tcp" chain = INPUT_direct [sshd] action_ = %(banaction)s[name=%(__name__)s][destemail=admin@example.com] banaction = firewallcmd[name=%(__name__)s] action_mwl = %(banaction)s[name=%(__name__)s][destemail=admin@example.com] mwl = yes bannedip = 192.168.1.3/32 bantime = 3600 findtime = 600 maxretry = 3 ignorecommand = rootlogin shell="/bin/false" port="*" protocol="tcp" chain = INPUT_direct [sshd] action_ = %(banaction)s[name=%(__name__)s][destemail=admin@example.com] banaction = firewallcmd[name=%(__name__)s] action_mwl = %(banaction)s[name=%(__name__)s][destemail=admin@example.com] mwl = yes bannedip = 192.168.1.4/32 bantime = 3600 findtime = 600 maxretry = 3 ignorecommand = rootlogin shell="/bin/false" port="*" protocol="tcp" chain = INPUT_direct [sshd] action_ = %(banaction)s[name=%(__name__)s][destemail=admin@example.com] banaction = firewallcmd[name=%(__name__)s] action_mwl = %(banaction)s[name=%(__name__)s][destemail=admin@example.com] mwl = yes bannedip = 192.168.1.5/32 bantime = 3600 findtime = 600 maxretry = 3 ignorecommand = rootlogin shell="/bin/false" port="*" protocol="tcp" chain = INPUT_direct [sshd] action_ = %(banaction)s[name=%(__name__)s][destemail=admin@example.com] banaction = firewallcmd[name=%(__name__)s] action_mwl = %(banaction)s[name=%(__name__)s][destemail=admin@example.com] mwl
最新评论
本站CDN与莫名CDN同款、亚太CDN、速度还不错,值得推荐。
感谢推荐我们公司产品、有什么活动会第一时间公布!
我在用这类站群服务器、还可以. 用很多年了。