1. 程式人生 > >Linux VPS 安全配置:禁用22端口、root用戶以及配置Denyhosts防暴力破解

Linux VPS 安全配置:禁用22端口、root用戶以及配置Denyhosts防暴力破解

usermod run 主題 工具 wheel mit smt 個人 連不上

最近租用了一臺Vultr東京機房的VPS,每天都會生成許多異常登錄失敗的日誌,疑似受到掃描軟件的暴力破解,遂Google了一下服務器安全防護方面的知識。

廢話不多說,下面將操作過程記錄下來:

註意:以下操作基於CentOS 7,不同系統下的具體操作可能會有區別

一、修改SSH服務默認端口

SSH服務的默認端口是22,掃描軟件首先會通過此端口嘗試登錄,因此把它改成一個不易猜到的端口(推薦使用10000~65535之間的,復雜度最高也不易和其他進程發生沖突)

1 vim /etc/ssh/sshd_config

新增XXXXX端口並保留22端口(防止一會新端口啟用失敗,原先的22端口也連不上)

1 # If you want to change the port on a SELinux system, you have to tell
2 # SELinux about this change. 3 # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER 4 # 5 Port 22 6 Port XXXXX 7 #AddressFamily any 8 #ListenAddress 0.0.0.0 9 #ListenAddress ::

添加新端口到防火墻

1 firewall-cmd --permanent --add-port=XXXXX/tcp # 添加到防火墻
2 firewall-cmd --reload # 重新加載防火墻配置
3 firewall-cmd --permanent --query-port=XXXXX/tcp # 查看是否添加成功

重啟SSH服務和防火墻,最好也重啟下服務器

1 systemctl restart sshd.service
2 systemctl restart firewalld.service
3 reboot

使用新端口連接VPS,如果連接成功,將22端口重新註釋掉

二、新建普通用戶,禁用root用戶遠程登錄

root用戶擁有服務器的最高權限,如果被破解後果將不堪設想,可以通過禁用root用戶遠程登錄來防止

1 vim /etc/sudoers

查看以下位置%wheel前面是否有#,如有將其刪掉,授予wheel用戶組超級管理員權限

1 ## Allows people in group wheel to run all commands
2 %wheel ALL=(ALL) ALL

新增普通用戶並授權,即可在該用戶下通過sudo執行需要管理員權限的命令

1 useradd test # 添加用戶
2 passwd test # 設置密碼
3 usermod -G wheel test # 將新用戶添加到wheel組(添加到附加組,主組不變)
4 id test # 查看是否添加成功

修改/etc/ssh/sshd_config文件

1 vim /etc/ssh/sshd_config

找到以下行,將PermitRootLogin後的yes改為no,即可禁止root用戶遠程登錄

1 PermitRootLogin no

重啟SSH服務,以後通過新建的普通用戶登錄VPS即可

三、安裝Denyhosts防暴力攻擊

DenyHosts是針對SSH服務器的一個基於日誌的入侵預防安全工具,是用Python編寫的。其通過監測身份驗證登錄日誌中失敗的登錄嘗試,屏蔽這些登錄者的IP地址,從而預防對SSH服務器的暴力破解。—— 維基百科

首先下載Denyhosts,官網地址:https://sourceforge.net/projects/denyhosts/

也可以用wget直接下載源碼

1 wget http://jaist.dl.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6.tar.gz

然後解壓縮

1 tar -zxvf DenyHosts-2.6.tar.gz

進入解壓目錄

1 cd DenyHosts-2.6

執行安裝

1 python setup.py install

進入安裝目錄

1 cd /usr/share/denyhosts/

創建配置文件和啟動文件副本

1 cp denyhosts.cfg-dist denyhosts.cfg
2 cp daemon-control-dist daemon-control

建立符號鏈接

1 ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts

設置Denyhosts為開機啟動

1 chkconfig --add denyhosts # 增加denyhosts服務
2 chkconfig denyhosts on # 設置denyhosts在各等級(2345)為on(開啟)狀態
3 chkconfig --list denyhosts # 查詢是否設置成功

啟動服務

1 systemctl start denyhosts.service

對於多次登錄失敗的IP,會被記錄到/etc/hosts.deny文件中加以屏蔽,從而限制其繼續登錄

結束語

至此,VPS的安全配置告一段落了。當然還有例如改用SSH密鑰登錄服務器等方法,不過筆者覺得萬一需要在其他電腦上臨時登錄,用密鑰反而不太方便。其實對於普通的個人服務器來說,通過以上的配置,已經能夠抵禦大部分暴力攻擊了。

附:Denyhosts配置文件說明(denyhosts.cfg)

 1 SECURE_LOG = /var/log/secure               #指定ssh日誌文件
 2 HOSTS_DENY = /etc/hosts.deny               #記錄阻止登陸系統IP的文件
 3 PURGE_DENY =                               #清理HOSTS_DENY文件的時間
 4 BLOCK_SERVICE  = sshd                      #在HOSTS_DENY中定義要阻止的服務
 5 DENY_THRESHOLD_INVALID = 5                 #系統不存在用戶失敗次數
 6 DENY_THRESHOLD_VALID = 10                  #除root外,系統存在用戶失敗次數
 7 DENY_THRESHOLD_ROOT = 1                    #root用戶失敗次數
 8 DENY_THRESHOLD_RESTRICTED = 1              #針對WORK_DIR下定義的限制用戶名的失敗次數
 9 WORK_DIR = /usr/share/denyhosts/data       #將deny的host或ip記錄到WORK_DIR中
10 SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES  #來自於allowed-hosts中的可以嘗試,是否報告 
11 HOSTNAME_LOOKUP=YES                        #是否做域名反向解析
12 LOCK_FILE = /var/lock/subsys/denyhosts     #保證同時只有一個denyhosts程序運行的鎖文件
13        
14 ADMIN_EMAIL = 123@456.789                  #設置管理員郵箱,系統開啟了sendmail就會發郵件
15 SMTP_HOST = localhost                      #SMTP服務器
16 SMTP_PORT = 25                             #SMTP端口
17 SMTP_FROM = DenyHosts <[email protected]>   #通知郵件的發信人地址
18 SMTP_SUBJECT = DenyHosts Report            #發信的主題
19 AGE_RESET_VALID=5d                         #指定時間沒有失敗登陸記錄,將此主機的失敗計數重置為0,(不適用於root)
20 AGE_RESET_ROOT=25d                         #root用戶的重置時間
21 AGE_RESET_RESTRICTED=25d                   #針對有限制用戶的
22 AGE_RESET_INVALID=10d                      #針對無效用戶的
23    
24 DAEMON_LOG = /var/log/denyhosts            #程序後臺運行的日誌記錄
25  
26 DAEMON_SLEEP = 30s                         #每次讀取日誌的時間間隔
27 DAEMON_PURGE = 1h                          #清除機制在 HOSTS_DENY 中終止舊條目的時間間隔

Linux VPS 安全配置:禁用22端口、root用戶以及配置Denyhosts防暴力破解