環(huán)境是Ubuntu 22.04 LTS
查看登錄日志文件
sudo vim /var/log/auth.log
不出意外會看到很多類似如下的日志
Failed password for root from 183.146.30.163 port 22537 ssh2
Failed password for invalid user admin from 183.146.30.163 port 22545 ssh2
Invalid user tester from 101.254.217.219 port 56540
pam_unix(sshd:auth): check pass; user unknown
pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=103.61.8.34
然后可以統(tǒng)計有多少人在暴力破解root密碼錯誤登錄,展示錯誤次數(shù)和ip
sudo grep "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more
因為騰訊云還有個默認用戶Ubuntu,也可以一起看看,或是查看一下自己其他用戶的錯誤登錄
sudo grep "Failed password for ubuntu" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more
統(tǒng)計有多少暴力猜用戶名的
sudo grep "Failed password for invalid user" /var/log/auth.log | awk '{print $13}' | sort | uniq -c | sort -nr | more
這臺才買回來3天就被掃了500多次,東西都還都沒上線就被掃了這么多次emmm
修改SSH的默認端口
在ECS上修改的時候要多留意一下,小心沒改好再把自己拒絕在外面。
修改后不要退出當前的 ssh 鏈接,大多數(shù) Linux 發(fā)行版重啟 ssh 服務并不會中斷當前已經(jīng)建立的 ssh 連接。另外開個窗口去重新連接 ssh 服務,如果遇到問題,還可以在原來的 ssh 連接下修改和恢復。
也可以讓SSH同時工作在22和新設定的端口下,等測試能連接到新端口后再將22端口注釋掉。
如果操作不慎丟失了ssh連接,可以嘗試使用云平臺提供的控制臺登錄
防火墻設置
Ubuntu系統(tǒng)上默認裝有了UFW(Uncomplicated Firewall)來配置防火墻。它們之間的關系是 netfilter-->iptables-->[ ufw / firewall ]
。ufw / firewall 是用人性化的語言配置規(guī)則并轉化為iptables的規(guī)則語法。iptables 是一個通過控制 Linux 內核的 Netfilter 模塊來管理網(wǎng)絡數(shù)據(jù)包的流動與轉送的應用軟件,其功能包括不僅僅包括防火墻的控制出入流量,還有端口轉發(fā)等等。
檢查UFW狀態(tài)
sudo ufw status verbose
verbose
參數(shù)可不加。當防火墻處于關閉狀態(tài)時只會顯示inactive
UFW默認情況下允許所有的出站連接,拒絕所有的入站連接。
啟用UFW防火墻日志
sudo ufw logging on
sudo ufw logging medium #sudo ufw logging low|medium|high
日志文件在/var/log/ufw.log
在防火墻開放SSH端口:
sudo ufw allow ssh
sudo ufw allow 2233/tcp
UFW通過 /etc/services 知道ssh服務使用的端口默認為22
開啟UFW:
sudo ufw enable
在系統(tǒng)修改后記得去ECS控制臺(比如這臺是騰訊云)防火墻里面開放想要設置的端口和關閉默認的22端口。
(用了UFW這種類似于前端的工具后,在不是非常清楚每條命令都是在做什么以及有什么效果那就不要亂改iptables,尤其是不要iptables -F清除全部規(guī)則)(不推薦)直接使用iptables配置防火墻的方法:
iptables -A INPUT -p tcp -m tcp --dport 2233 -j ACCEPT
然后保存和重啟iptables防火墻 service iptables save
和 service iptables restart
修改SSH的默認端口
sudo vim /etc/ssh/sshd_config
把 # Port 22
修改為 Port 2233
最好使用1024到65535之間的一個別人猜不到的端口號
重啟ssh服務:
sudo /etc/init.d/ssh restart #或 sudo service ssh restart
查看SSH偵聽(監(jiān)聽)端口:
sudo netstat -tunlp | grep ssh
UFW刪除規(guī)則:
sudo ufw status numbered #查看所有規(guī)則的規(guī)則號
sudo ufw delete 2 #直接刪除規(guī)則號對應的規(guī)則即可
UFW有兩種方式刪除防火墻規(guī)則,既可以通過規(guī)則號刪除,也可以通過實際規(guī)則刪除,通過規(guī)則號刪除更容易。因為UFW默認會管理IPV6所以會既有ipv6又有ipv4,需要刪除2個。
禁止SSH的root用戶登錄
修改 /etc/ssh/sshd_config
文件
首先創(chuàng)建一下文件的備份
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
禁止以root用戶身份通過 SSH 登錄
PermitRootLogin no
設置SSH單次登錄限制
LogLevel INFO #將LogLevel設置為INFO,記錄登錄和注銷活動
MaxAuthTries 3 #限制單次登錄會話的最大身份驗證嘗試次數(shù)
LoginGraceTime 20 #縮短單次的登錄寬限期,即ssh登錄必須完成身份驗證的時間 單位是秒
重啟ssh服務 sudo service ssh restart
禁用密碼登陸,使用RSA私鑰登錄
ssh-keygen #在客戶端生成密鑰
ssh-copy-id myserver1 #將公鑰添加至服務端
還需要配置服務端
sudo vim /etc/ssh/sshd_config
PasswordAuthentication no #禁止密碼認證
PermitEmptyPasswords no #禁止空密碼用戶登錄
重啟ssh服務 sudo service ssh restart
使用 Fail2ban
Ubuntu 16.04 系統(tǒng)源里帶有 denyhosts
,到了Ubuntu 20.04默認不再包含。DenyHosts
現(xiàn)在幾乎不再更新了,所以使用Fail2ban
工具來緩解暴力密碼攻擊
檢查是否安裝了特定軟件包
apt-cache search denyhosts
apt-cache search fail2ban
使用 sudo apt list --installed | grep denyhosts
來進行搜索會有警告 apt does not have a stable CLI interface. 因為apt 的輸出是為用戶(人)設計的,并非總能被其它命令行工具解析,比如它會有進度條和顏色等交互界面,而這個進度條會影響其它命令行工具解析它的輸出。因此不要在腳本中使用apt命令,應該用apt-get、apt-cache等命令進行替換。
安裝fail2ban
sudo apt-get update
sudo apt-get install fail2ban
配置fail2ban
配置文件在 /etc/fail2ban/jail.conf
。 在配置文件的[DEFAULT]
區(qū),可以在此定義所有受監(jiān)控的服務的默認參數(shù)
[DEFAULT]
# 以空格分隔的列表,可以是 IP 地址、CIDR 前綴或者 DNS 主機名
# 用于指定哪些地址可以忽略 fail2ban 防御
ignoreip = 127.0.0.1/8 ::1
# 客戶端主機被禁止的時長
bantime = 60m
# 查找失敗次數(shù)的時長
findtime = 3m
# 客戶端主機被禁止前允許失敗的次數(shù)
maxretry = 4
根據(jù)上述配置,fail2ban會自動禁止在最近3分鐘內有超過4次訪問嘗試失敗的任意IP地址。一旦被禁,這個IP地址將會在1小時內一直被禁止訪問 SSH 服務。
保存配置后重啟服務:
sudo service fail2ban restart
查看fail2ban運行狀態(tài)
驗證fail2ban成功運行:
$ sudo fail2ban-client ping
Server replied: pong
查看日志文件
sudo vim /var/log/fail2ban.log
檢驗fail2ban狀態(tài)
$ sudo fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd
檢驗一個特定監(jiān)獄的狀態(tài)
sudo fail2ban-client status sshd
上面的命令會顯示出當前被禁止IP地址列表
解鎖特定的IP地址
sudo fail2ban-client set sshd unbanip 192.168.1.8
使用兩步驗證(2FA)
https://www.gingerdoc.com/tutorials/how-to-set-up-multi-factor-authentication-for-ssh-on-ubuntu-20-04
參考鏈接:
ubuntu 16.04防止SSH暴力登錄攻擊
Linux實用工具總結之UFW
如何使用 fail2ban 防御 SSH 服務器的暴力破解攻擊
How To Harden OpenSSH on Ubuntu 20.04 - DigitalOcean文章來源:http://www.zghlxwxcb.cn/news/detail-621357.html
How To Harden OpenSSH Client on Ubuntu 20.04 - DigitalOcean文章來源地址http://www.zghlxwxcb.cn/news/detail-621357.html
到了這里,關于Ubuntu的SSH安全配置,查看SSH登錄日志文件,修改默認端口,UFW配置防火墻,禁止root用戶登錄,禁用密碼登陸,使用RSA私鑰登錄,使用 Fail2ban 工具,使用兩步驗證(2FA)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!