提高雲主機安全的一些做法

1.緣由

主機系統:centos7

今天用ssh登錄vps的時候顯示以下信息:

Last failed login: Sat Sep  1 11:55:01 UTC 2018 from 112.85.42.201 on ssh:notty
There were 594 failed login attempts since the last successful login.

有594次登陸失敗,應該是被掃描了。

last命令用於顯示用戶最近登錄信息。單獨執行last命令,它會讀取/var/log/wtmp的文件,並把該給文件的內容記錄的登入系統的用戶名單全部顯示出來。用last查看一下,還好,只有自己登錄過。

lastb命令用於顯示用戶錯誤的登錄列表,此指令可以發現系統的登錄異常。單獨執行lastb命令,它會讀取位於/var/log目錄下,名稱爲btmp的文件,並把該文件內容記錄的登入失敗的用戶名單,全部顯示出來。執行一下:

support  ssh:notty    59.41.66.141     Sat Sep  1 12:05 - 12:05  (00:00)    
support  ssh:notty    59.41.66.141     Sat Sep  1 12:05 - 12:05  (00:00)    
paul     ssh:notty    132.232.23.12    Sat Sep  1 11:57 - 11:57  (00:00)    
paul     ssh:notty    132.232.23.12    Sat Sep  1 11:57 - 11:57  (00:00)    
root     ssh:notty    112.85.42.201    Sat Sep  1 11:55 - 11:55  (00:00)    
root     ssh:notty    112.85.42.201    Sat Sep  1 11:54 - 11:54  (00:00)    
root     ssh:notty    112.85.42.201    Sat Sep  1 11:54 - 11:54  (00:00)    
root     ssh:notty    112.85.42.201    Sat Sep  1 11:54 - 11:54  (00:00)    
root     ssh:notty    112.85.42.201    Sat Sep  1 11:54 - 11:54  (00:00)    
root     ssh:notty    112.85.42.201    Sat Sep  1 11:54 - 11:54  (00:00)    
root     ssh:notty    112.85.42.201    Sat Sep  1 11:54 - 11:54  (00:00)    
root     ssh:notty    112.85.42.201    Sat Sep  1 11:54 - 11:54  (00:00)    
root     ssh:notty    112.85.42.201    Sat Sep  1 11:54 - 11:54  (00:00)    

可怕,一直在被掃描,查看一下有多少條記錄:

# lastb > loginFuailure.log
# wc -l loginFuailure.log
1008 loginFuailure.log

已經有1008次嘗試了。

2.常用解決辦法

採用如下做法:
- 更換22端口
- 改用密鑰和公鑰配對登陸SSH,禁止密碼登錄
- 限制密碼出錯次數
- 禁止root登陸

2.1 修改22端口

參考:CentOS7增加或修改SSH端口號
1.修改配置文件:

$ vim /etc/ssh/sshd_config

找到 #Port 22這一行,去除註釋,開放22端口,再複製一行修改爲其他端口。先保留了22端口,是爲了防止之後因爲各種權限和配置問題,導致連22端口不能訪問,那就玩脫了。等可以使用其他端口登錄了,再關閉22端口。

重啓後不要急於退出終端去嘗試能否登錄,新開一個終端去嘗試能否登錄,我就忘了修改防火牆直接退出了,於是怎麼也登錄不上,即使端口是對的。還好vultr提供有網頁的控制檯可以用密碼登陸。

2.SELinux
查看SELinux是否開啓:

# getenforce 
Disabled

我這裏是關閉的,不需要做相關的配置。

3.防火牆:

# firewall-cmd --permanent --query-port=xxxxx/tcp
no
# firewall-cmd --permanent --add-port=xxxxx/tcp
success
# firewall-cmd --reload
success
# firewall-cmd --permanent --query-port=xxxxx/tcp
yes

4.重啓:

# systemctl restart sshd
# systemctl restart firewalld.service

再用默認端口是登不上的:

#ssh [email protected] -p 22
ssh: connect to host xx.xx.xx.xx port 22: Connection refused

必須要使用修改過後的端口。

2.2 禁止使用密碼登錄

注意:需要先配置好私鑰登錄,不然把密碼登錄禁用了就沒有辦法登錄了。
編輯/etc/ssh/sshd_config
將PasswordAuthentication參數值修改爲no: PasswordAuthentication no
重啓ssh服務:systemctl restart sshd

2.3 限制密碼出錯次數

參考

#vim /etc/pam.d/sshd
#%PAM-1.0
auth       required     pam_tally2.so deny=3 lock_time=300 even_deny_root root
_unlock_time=1000

禁止root登陸:
如有需要可添加用戶:

# adduser name
# passwd name

修改配置文件:

編輯/etc/ssh/sshd_config :
PermitRootLogin no //阻止root用戶登陸 
AllowUsers name  //允許制定用戶使用SSH登陸,name改爲你允許的用戶名

重啓服務:

#systemctl restart sshd

其他參考

修改root密碼:參考官方文檔

我有個問題:ssh:notty是什麼意思?

參考:
ssh端口更改後無法登錄問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章