配置Linux伺服器SSH安全訪問的四個小技巧
越來越多的站長,開始使用獨立主機(Dedicated Host)和 VPS。而為了節省成本或提高效能,不少人的獨機和 VPS,都是基於 unmanaged 的裸機,一切都要自己 DIY。這時候,安全策略的實施,就猶為重要。下面這篇文章 (http://www.xiaohui.com/dev/server/centos-security-for-ssh.htm),我以 CentOS 為例,簡單地總結一下如何配置 SSH 安全訪問。
Linux SSH 安全策略一:關閉無關埠
網路上被攻陷的大多數主機,是黑客用掃描工具大範圍進行掃描而被瞄準上的。所以,為了避免被掃描到,除了必要的埠,例如 Web、FTP、SSH 等,其他的都應關閉。值得一提的是,我強烈建議關閉 icmp 埠,並設定規則,丟棄 icmp 包。這樣別人 Ping 不到你的伺服器,威脅就自然減小大半了。丟棄 icmp 包可在 iptables 中, 加入下面這樣一條:
-A INPUT -p icmp -j DROP
Linux SSH 安全策略二:更改 SSH 埠
預設的 SSH 埠是 22。強烈建議改成 10000 以上。這樣別人掃描到埠的機率也大大下降。修改方法:
# 編輯 /etc/ssh/ssh_config
vi /etc/ssh/ssh_config
# 在 Host * 下 ,加入新的 Port 值。以 18439 為例(下同):
Port 22
Port 18439
# 編輯 /etc/ssh/sshd_config
vi /etc/ssh/sshd_config
#加入新的 Port 值
Port 22
Port 18439
# 儲存後,重啟 SSH 服務:
service sshd restart
這裡我設定了兩個埠,主要是為了防止修改出錯導致 SSH 再也登不上。更改你的 SSH 客戶端(例如:Putty)的連線埠,測試連線,如果新埠能連線成功,則再編輯上面兩個檔案,刪除 Port 22 的配置。如果連線失敗,而用 Port 22 連線後再重新配置。
埠設定成功後,注意同時應該從 iptables 中, 刪除22埠,新增新配置的 18439,並重啟 iptables。
如果 SSH 登入密碼是弱密碼,應該設定一個複雜的密碼。Google Blog 上有一篇強調密碼安全的文章:Does your password pass the test?
Linux SSH 安全策略三:限制 IP 登入
如果你能以固定 IP 方式連線你的伺服器,那麼,你可以設定只允許某個特定的 IP 登入伺服器。例如我是通過自己的 VPN 登入到伺服器。設定如下:
# 編輯 /etc/hosts.allow
vi /etc/hosts.allow
# 例如只允許 123.45.67.89 登入
sshd:123.45.67.89
Linux SSH 安全策略四: 使用證書登入 SSH
相對於使用密碼登入來說,使用證書更為安全。自來水衝咖啡有寫過一篇詳細的教程,徵得其同意,轉載如下:
為CentOS配置SSH證書登入驗證
來源:自來水衝咖啡
下午幫公司網管遠端檢測一下郵件伺服器,一臺CentOS 5.1,使用OpenSSH遠端管理。
檢查安全日誌時,發現這幾天幾乎每天都有一堆IP過來猜密碼。看來得修改一下登入驗證方式,改為證書驗證為好。
為防萬一,臨時啟了個VNC,免得沒配置完,一高興順手重啟了sshd就麻煩了。(後來發現是多餘的,只要事先開個putty別關閉就行了)
以下是簡單的操作步驟:
1)先新增一個維護賬號:
# useradd msa
2)然後更改為msa使用者
# su – msa
3)生成key
$ ssh-keygen -t rsa
指定金鑰路徑和輸入口令之後,即在/home/msa/.ssh/中生成公鑰和私鑰:id_rsa id_rsa.pub
4)
$ cat id_rsa.pub >> authorized_keys
$ exit
至於為什麼要生成這個檔案,因為sshd_config裡面寫的就是這個。
然後chmod 400 authorized_keys,稍微保護一下。
重要:
.ssh目錄的‘所有人’和‘所有組’應該為msa使用者,而不是root使用者。.ssh目錄的許可權應該為700,authorized_keys檔案的許可權應該為400,否則可能因為許可權不對而不能登入SSH。
5)用psftp把把id_rsa拉回本地,然後把伺服器上的id_rsa和id_rsa.pub幹掉
6)配置/etc/ssh/sshd_config
Protocol 2
ServerKeyBits 1024
PermitRootLogin no #禁止root登入而已,與本文無關,加上安全些
#以下三行沒什麼要改的,把預設的#註釋去掉就行了
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
PermitEmptyPasswords no
7)重啟sshd
/sbin/service sshd restart
8)轉換證書格式,遷就一下putty
執行puttygen,轉換id_rsa為putty的ppk證書檔案
9)配置putty登入
在connection–SSH–Auth中,點選Browse,選擇剛剛轉換好的證書。
然後在connection-Data填寫一下auto login username,例如我的是msa
在session中填寫伺服器的IP地址,高興的話可以save一下
10)解決一點小麻煩
做到這一步的時候,很可能會空歡喜一場,此時就興沖沖的登入,沒準登不進去:
No supported authentication methods available
這時可以修改一下sshd_config,把
PasswordAuthentication no臨時改為:
PasswordAuthentication yes 並重啟sshd
這樣可以登入成功,退出登入後,再重新把PasswordAuthentication的值改為no,重啟sshd。
以後登入就會正常的詢問你金鑰檔案的密碼了,答對了就能高高興興的登進去。
至於psftp命令,加上個-i引數,指定證書檔案路徑就行了。
如果你是遠端操作伺服器修改上述配置,切記每一步都應慎重,不可出錯。如果配置錯誤,導致 SSH 連線不上,那就杯具了。
基本上,按上述四點配置好後,Linux 下的 SSH 訪問,是比較安全的了。當然,安全與不安全都是相對的,你應該定期檢查伺服器的 log,及時發現隱患並排除。如果你有更好的安全建議,歡迎在評論區留言指正。?
補充:
1、將 root 賬戶僅限制為控制檯訪問,禁止root登陸ssh:
# vi /etc/ssh/sshd_config PermitRootLogin no
2、僅使用 SSH Protocol 2:
# vi /etc/ssh/sshd_config Protocol 2
3、配置 iptables
,以便在 30 秒內僅允許在埠 2022 上有三個連線嘗試:
Redhat iptables example (Update /etc/sysconfig/iptables): -I INPUT -p tcp --dport 2022 -i eth0 -m state --state NEW -m recent --set -I INPUT -p tcp --dport 2022 -i eth0 -m state --state NEW -m recent --update --seconds 30 --hitcount 3 -j DR
4、用putty中的psftp命令拷貝檔案
相關文章
- GOland配置ssh訪問Linux/Manjaro虛擬機器GoLandLinuxJAR虛擬機
- 伺服器篇:linux伺服器配置小技巧伺服器Linux
- Linux SSH遠端訪問Linux
- Linux伺服器---ssh配置Linux伺服器
- linux 能ping通ssh訪問不了Linux
- 解決方法|小鳥雲伺服器建站無法訪問的小技巧伺服器
- Linux 伺服器安全技巧Linux伺服器
- 保護Linux伺服器安全的四個要點!Linux伺服器
- linux安全篇:禁止頻繁訪問的ip訪問nginxLinuxNginx
- Vagrant的SSH連線小技巧
- 13個小技巧用來提高WordPress程式網站的訪問速度網站
- 02_3_配置SSH遠端訪問及控制
- 每天一個小技巧(四)
- Holer實現外網ssh訪問內網linux內網Linux
- 使用frp進行內網穿透,實現ssh遠端訪問Linux伺服器FRP內網穿透Linux伺服器
- windows terminal ssh 免密訪問遠端伺服器Windows伺服器
- web方式訪問sshWeb
- 在Ubuntu上配置SSH訪問並關閉防火牆Ubuntu防火牆
- Debian系統上怎麼配置SSH遠端訪問
- [Linux Mint]無法透過ssh和xrdp訪問本地Linux
- 有哪些確保雲伺服器安全的小技巧?伺服器
- ssh別名登陸小技巧
- Linux Debian11伺服器安裝SSH,建立新使用者並允許SSH遠端登入,及SSH安全登入配置!Linux伺服器
- Ubuntu 配置SSH伺服器Ubuntu伺服器
- 如何增強 Linux 核心中的訪問控制安全Linux
- 威聯通NAS VirtualizationStation 安裝ubuntu配置SSH遠端訪問Ubuntu
- 如何提升 Linux 伺服器安全的開源工具和技巧?Linux伺服器開源工具
- SSH遠端訪問及控制
- 遠端訪問及控制——ssh
- 《使用安全外殼 (SSH) 的互動和自動化訪問管理的安全性》筆記筆記
- macOS 訪達的隱藏小技巧Mac
- Linux - 配置SSH免密登入 - “ssh-keygen”的基本用法Linux
- 阿里雲伺服器配置(redis)可訪問埠阿里伺服器Redis
- linux tomcat 開通443 (用https安全訪問)LinuxTomcatHTTP
- 藉助公有云伺服器內網穿牆ssh訪問內網伺服器伺服器內網
- Linux伺服器---ssh登入Linux伺服器
- 一個小技巧,快速找出一段ABAP程式碼裡訪問到的所有透明表
- ssh配置檔案安全設定
- 怎樣透過holer從外網ssh訪問本地Linux系統?Linux