如何封杀尝试Raspberry Pi SSH密码的来源IP

Raspberry Pi整天开着,如果用缺省SSH端口对外开放,就会经常遇到扫描SSH密码的肉鸡。虽然密码不是很简单,但还是感觉很不安全的。 系统的ssh登录日志文件在:/var/log/auth.log,登录失败时会记录以下格式的日志: Mar 7 10:31:51 raspberrypi sshd[24510]: Failed password for root from 221.8.19.129 port 4066 ssh2 Mar 7 10:31:55 raspberrypi sshd[24514]: Failed password for root from 221.8.19.129 port 4079 ssh2 Mar 7 10:31:56 raspberrypi sshd[24518]: Failed password for sshd from 221.8.19.129 port 4080 ssh2 Mar 7 10:32:26 raspberrypi sshd[24522]: Failed password for sshd from 221.8.19.129 port 4149 ssh2 用最简单的Shell脚本来解决这个问题: guard.sh #!/bin/bash last_ip="" tail -f /var/log/auth | while read LINE; do { if [[ "${LINE}" =~ "Failed" ]]; then ip="$(echo ${LINE} | awk '{print $(NF-3)}')" if [[ "$last_ip" == "$ip" ]]; then echo "block $ip" #curl -s --data-ascii "uuid=<my iphone's uuid>" --data "body=${LINE}" http://raspberrypi/pushme iptables -A INPUT -s "$ip" -j DROP fi last_ip=$ip echo $LINE fi } done 用root用户执行以下命令,也可以放到启动脚本里:/etc/rc. [Read More]

动态DNS程序

动态根据宽带public ip更新dnspod登记的域名

按照 https://gist.github.com/833369 逻辑重新用Go实现了,用更少的内存开销在Raspberry Pi上跑。

替换上你的Email,密码,域名ID,记录ID等参数,就可以运行了。 会在后台一直运行,每隔30秒检查一遍IP,如果修改了就更新IP。

获得domain_id可以用:

curl curl -k https://dnsapi.cn/Domain.List -d "login_email=xxx&login_password=xxx" 

获得record_id:

curl -k https://dnsapi.cn/Record.List -d "login_email=xxx&login_password=xxx&domain_id=xxx"