本次以只开ssh端口 8022 为例,最终效果如下
本次以树莓派为例,之所以选用树莓派(由于疫情导致产能跟不上,目前价格暴涨,可以考虑其它同类产品,如华硕的tinker board 2s), 是因为功耗小, 且是个完整的基于Debian的Linux系统.且有40针GPIO接口,后续可以控制硬件,如继电器、电机…
一. 开防火墙.
一定要开防火墙,只开启需要的端口,防止被扫描入侵.
Debian系列的Linux常用ufw,没安装的先安装 apt install ufw 开服务 ,#关服务换成disable 即可 ufw enable 加端口 ,删除端口在allow前加delete即可. ufw allow 8022/tcp 查状态 ufw status |
二. 屏蔽攻击IP
虽然上一步把非必要的端口关了, 但是开着的8022端口依然有被攻击的风险.
经常看下/var/log/auth.log 就能看出有不断尝试登录的日志,一查这些IP大部分是国外的。如下:
Aug 21 06:16:59 localhost sshd[15898]: Invalid user ubnt from 179.60.147.161 port 9172 18 Aug 21 06:16:59 localhost sshd[15898]: input_userauth_request: invalid user ubnt [preauth] |
也可以用lastb 命令查看登录失败的.
support ssh:notty 59.1.115.65 Fri Aug 26 15:43 - 15:43 (00:00) default ssh:notty 37.157.226.236 Fri Aug 26 13:30 - 13:30 (00:00) user ssh:notty 98.143.104.200 Fri Aug 26 09:04 - 09:04 (00:00) … |
是不是惊出一身冷汗, 接下来就解决这个问题.
- 解决思路
通过lastb读取一段时间的记录, 解析后把IP地址追加到/etc/hosts.deny文件中. 只要是在这个文件中的IP都会被直接拒绝连接.
可以用现成的DenyHost,python写的,安装后,配置,运行.(自行百度)
我嫌这玩艺配置起来麻烦,自己用go按上述思路写了简单的denyAttack,不用配置, 直接加参数运行.示例如下
/usr/local/bin/denyAttack -c 5 -qf "15" #一小时内超5次错误登录的IP,写入hosts.deny /usr/local/bin/denyAttack -c 5 -qf "" #一天内超5次错误登录的IP,写入hosts.deny /usr/local/bin/denyAttack -c 5 #10分钟内超5次错误登录的IP,写入hosts.deny /usr/local/bin/denyAttack #10分钟内超5次错误登录的IP,写入hosts.deny #-c 数量可以改. -qf是固定用法,参考上边任何一行即可 |
denyAttack文件的下载, 包括x64和arm的
链接:
https://pan.baidu.com/s/1r3OBDK8rUWrcEkHDkF3PoA 提取码: lto8
- 实际操作
可以把命令加到定时器每10分钟运行一次,crontab -e
*/10 * * * * /usr/local/bin/writeAttackIpToHostsDeny -c 5 -qf "15" > /dev/null 2>&1 |
三. 设置复杂密码, 建议用密钥登录
1. 密码至少8位,包含字母(大小写)、数字、特殊符号
2. 最好禁用ssh密码登录. 修改/etc/ssh/sshd_config中的PasswordAuthentication no
3. 用密钥登录
客户端 ssh-keygen -t rsa -f ./id_rsa #可以不用输入密码直接回车,来生成密钥 #会在当前目录自动生成id_rsa 和 id_rsa.pub 两个文件 服务端 #把客户端的id_rsa.pub的内容追加到服务端~/.ssh/authorized_keys 文件中 客户端登录 ssh -i ./id_rsa root@server.com -p 1022 注* 如果提示Permissions 0644 for './id_rsa' are too open. 请修改其权限为600. chmod 600 ./id_rsa |
注* centos系列思路是一样的. 只是命令或及相应日志文件稍有差别如下
防火墙可用firewall-cmd命令
查看ssh登录日志/var/log/secure
-----------------end-----------------
欢迎大神补充指正! 如有疑问请留言!
本文暂时没有评论,来添加一个吧(●'◡'●)