在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenSSH的SSH協(xié)議實現(xiàn)

馬哥Linux運維 ? 來源:未知 ? 作者:龔婷 ? 2018-03-12 15:41 ? 次閱讀

OpenSSH 是 SSH 協(xié)議的一個實現(xiàn)。一般通過scp或sftp用于遠程登錄、備份、遠程文件傳輸等功能。SSH能夠完美保障兩個網絡或系統(tǒng)間數據傳輸的保密性和完整性。盡管如此,它最大的優(yōu)勢是使用公匙加密來進行服務器驗證。時不時會出現(xiàn)關于 OpenSSH 零日漏洞的傳言。本文將描述如何設置你的 Linux 或類 Unix 系統(tǒng)以提高 sshd 的安全性。

OpenSSH 默認設置

TCP 端口 – 22

OpenSSH 服務配置文件 –sshd_config(位于/etc/ssh/)

1、 基于公匙的登錄

OpenSSH 服務支持各種驗證方式。推薦使用公匙加密驗證。首先,使用以下ssh-keygen命令在本地電腦上創(chuàng)建密匙對:

1024 位或低于它的 DSA 和 RSA 加密是很弱的,請不要使用。當考慮 ssh 客戶端向后兼容性的時候,請使用 RSA密匙代替 ECDSA 密匙。所有的 ssh 密鑰要么使用 ED25519 ,要么使用 RSA,不要使用其它類型。

$ssh-keygen -tkey_type -bbits -C"comment"

示例:

$ssh-keygen -ted25519 -C"Login to production cluster at xyz corp"

$ssh-keygen -trsa -b4096 -f ~/.ssh/id_rsa_aws_$(date +%Y-%m-%d) -C"AWS key for abc corp clients"

下一步,使用 ssh-copy-id 命令安裝公匙:

$ssh-copy-id -i /path/to/public-key-file user@host

$ssh-copy-id user@remote-server-ip-or-dns-name

示例:

$ssh-copy-id vivek@rhel7-aws-server

提示輸入用戶名和密碼的時候,確認基于 ssh 公匙的登錄是否工作:

$ssh vivek@rhel7-aws-server

2、 禁用 root 用戶登錄

禁用 root 用戶登錄前,確認普通用戶可以以 root 身份登錄。例如,允許用戶 vivek 使用sudo命令以 root 身份登錄。

在 Debian/Ubuntu 系統(tǒng)中如何將用戶 vivek 添加到 sudo 組中

允許 sudo 組中的用戶執(zhí)行任何命令。將用戶 vivek 添加到 sudo 組中:

$sudo adduser vivek sudo

使用 id 命令 驗證用戶組。

$id vivek

在 CentOS/RHEL 系統(tǒng)中如何將用戶 vivek 添加到 sudo 組中

在 CentOS/RHEL 和 Fedora 系統(tǒng)中允許 wheel 組中的用戶執(zhí)行所有的命令。使用 usermod 命令將用戶 vivek 添加到 wheel 組中:

$sudo usermod -aG wheel vivek

$id vivek

測試 sudo 權限并禁用 ssh root 登錄

測試并確保用戶 vivek 可以以 root 身份登錄執(zhí)行以下命令:

$sudo -i

$sudo /etc/init.d/sshd status

$sudo systemctl status httpd

添加以下內容到 sshd_config 文件中來禁用 root 登錄:

PermitRootLogin no

ChallengeResponseAuthentication no

PasswordAuthentication no

UsePAM no

3、 禁用密碼登錄

所有的密碼登錄都應該禁用,僅留下公匙登錄。添加以下內容到 sshd_config 文件中:

AuthenticationMethods publickey

PubkeyAuthentication yes

CentOS 6.x/RHEL 6.x 系統(tǒng)中老版本的 sshd 用戶可以使用以下設置:

PubkeyAuthentication yes

4、 限制用戶的 ssh 訪問

默認狀態(tài)下,所有的系統(tǒng)用戶都可以使用密碼或公匙登錄。但是有些時候需要為 FTP 或者 email 服務創(chuàng)建 UNIX/Linux 用戶。然而,這些用戶也可以使用 ssh 登錄系統(tǒng)。他們將獲得訪問系統(tǒng)工具的完整權限,包括編譯器和諸如 Perl、Python(可以打開網絡端口干很多瘋狂的事情)等的腳本語言。通過添加以下內容到 sshd_config 文件中來僅允許用戶 root、vivek 和 jerry 通過 SSH 登錄系統(tǒng):

AllowUsers vivek jerry

當然,你也可以添加以下內容到 sshd_config 文件中來達到僅拒絕一部分用戶通過 SSH 登錄系統(tǒng)的效果。

DenyUsers root saroj anjali foo

你也可以通過配置 Linux PAM 來禁用或允許用戶通過 sshd 登錄。也可以允許或禁止一個用戶組列表通過 ssh 登錄系統(tǒng)。

5、 禁用空密碼

你需要明確禁止空密碼賬戶遠程登錄系統(tǒng),更新 sshd_config 文件的以下內容:

PermitEmptyPasswords no

6、 為 ssh 用戶或者密匙使用強密碼

為密匙使用強密碼和短語的重要性再怎么強調都不過分。暴力破解可以起作用就是因為用戶使用了基于字典的密碼。你可以強制用戶避開字典密碼并使用約翰的開膛手工具來檢測弱密碼。以下是一個隨機密碼生成器(放到你的 ~/.bashrc 下):

genpasswd(){

locall=$1

["$l" == ""] && l=20

tr -dcA-Za-z0-9_ < /dev/urandom | head -c${l} | xargs

運行:

genpasswd16

輸出:

uw8CnDVMwC6vOKgW

7、 為 SSH 的 22端口配置防火墻

你需要更新 iptables/ufw/firewall-cmd 或 pf 防火墻配置來為 ssh 的 TCP 端口 22 配置防火墻。一般來說,OpenSSH 服務應該僅允許本地或者其他的遠端地址訪問。

Netfilter(Iptables) 配置

更新 /etc/sysconfig/iptables (Redhat 和其派生系統(tǒng)特有文件) 實現(xiàn)僅接受來自于 192.168.1.0/24 和 202.54.1.5/29 的連接,輸入:

-ARH-Firewall-1-INPUT -s192.168.1.0/24 -mstate --state NEW -ptcp --dport22 -jACCEPT

-ARH-Firewall-1-INPUT -s202.54.1.5/29 -mstate --state NEW -ptcp --dport22 -jACCEPT

如果同時使用 IPv6 的話,可以編輯 /etc/sysconfig/ip6tables (Redhat 和其派生系統(tǒng)特有文件),輸入:

-ARH-Firewall-1-INPUT -sipv6network::/ipv6mask -mtcp -ptcp --dport22 -jACCEPT

將 ipv6network::/ipv6mask 替換為實際的 IPv6 網段。

Debian/Ubuntu Linux 下的 UFW

UFW 是 Uncomplicated FireWall 的首字母縮寫,主要用來管理 Linux 防火墻,目的是提供一種用戶友好的界面。輸入以下命令使得系統(tǒng)僅允許網段 202.54.1.5/29 接入端口 22:

$sudo ufw allow from202.54.1.5/29toany port22

*BSD PF 防火墻配置

如果使用 PF 防火墻 /etc/pf.conf 配置如下:

passinon$ext_ifinetprototcpfrom{192.168.1.0/24,202.54.1.5/29}to$ssh_server_ip port ssh flagsS/SA synproxy state

8、 修改 SSH 端口和綁定 IP

ssh 默認監(jiān)聽系統(tǒng)中所有可用的網卡。修改并綁定 ssh 端口有助于避免暴力腳本的連接(許多暴力腳本只嘗試端口 22)。更新文件 sshd_config 的以下內容來綁定端口 300 到 IP 192.168.1.5 和 202.54.1.5:

Port300

ListenAddress192.168.1.5

ListenAddress202.54.1.5

當需要接受動態(tài)廣域網地址的連接時,使用主動腳本是個不錯的選擇,比如 fail2ban 或 denyhosts。

9、 使用 TCP wrappers (可選的)

TCP wrapper 是一個基于主機的訪問控制系統(tǒng),用來過濾來自互聯(lián)網的網絡訪問。OpenSSH 支持 TCP wrappers。只需要更新文件 /etc/hosts.allow 中的以下內容就可以使得 SSH 只接受來自于 192.168.1.2 和 172.16.23.12 的連接:

sshd : 192.168.1.2172.16.23.12

10、 阻止 SSH 破解或暴力攻擊

暴力破解是一種在單一或者分布式網絡中使用大量(用戶名和密碼的)組合來嘗試連接一個加密系統(tǒng)的方法。可以使用以下軟件來應對暴力攻擊:

DenyHosts是一個基于 Python SSH 安全工具。該工具通過監(jiān)控授權日志中的非法登錄日志并封禁原始 IP 的方式來應對暴力攻擊。

RHEL / Fedora 和 CentOS Linux 下如何設置DenyHosts。

Fail2ban是另一個類似的用來預防針對 SSH 攻擊的工具。

sshguard是一個使用 pf 來預防針對 SSH 和其他服務攻擊的工具。

security/sshblock阻止濫用 SSH 嘗試登錄。

IPQ BDB filter可以看做是 fail2ban 的一個簡化版。

11、 限制 TCP 端口 22 的傳入速率(可選的)

netfilter 和 pf 都提供速率限制選項可以對端口 22 的傳入速率進行簡單的限制。

Iptables 示例

以下腳本將會阻止 60 秒內嘗試登錄 5 次以上的客戶端的連入。

#!/bin/bash

inet_if=eth1

ssh_port=22

$IPT -IINPUT -ptcp --dport${ssh_port} -i${inet_if} -mstate --stateNEW -mrecent --set

$IPT -IINPUT -ptcp --dport${ssh_port} -i${inet_if} -mstate --state NEW -mrecent --update --seconds60 --hitcount5

在你的 iptables 腳本中調用以上腳本。其他配置選項:

$IPT -AINPUT -i${inet_if} -ptcp --dport${ssh_port} -mstate --stateNEW -mlimit --limit3/min --limit-burst3 -jACCEPT

$IPT -AINPUT -i${inet_if} -ptcp --dport${ssh_port} -mstate --stateESTABLISHED -jACCEPT

$IPT -AOUTPUT -o${inet_if} -ptcp --sport${ssh_port} -mstate --stateESTABLISHED -jACCEPT

# another one line example

# $IPT -A INPUT -i ${inet_if} -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 22 -m limit --limit 5/minute --limit-burst 5-j ACCEPT

其他細節(jié)參見 iptables 用戶手冊。

*BSD PF 示例

以下腳本將限制每個客戶端的連入數量為 20,并且 5 秒內的連接不超過 15 個。如果客戶端觸發(fā)此規(guī)則,則將其加入 abusive_ips 表并限制該客戶端連入。最后 flush 關鍵詞殺死所有觸發(fā)規(guī)則的客戶端的連接。

sshd_server_ip = "202.54.1.5"

table persist

block inquick from

pass inon$ext_if proto tcp to$sshd_server_ip port ssh flagsS/SA keep state(max-src-conn20,max-src-conn-rate15/5,overload flush)

12、 使用端口敲門(可選的)

端口敲門是通過在一組預先指定的封閉端口上生成連接嘗試,以便從外部打開防火墻上的端口的方法。一旦指定的端口連接順序被觸發(fā),防火墻規(guī)則就被動態(tài)修改以允許發(fā)送連接的主機連入指定的端口。以下是一個使用 iptables 實現(xiàn)的端口敲門的示例:

$IPT -Nstage1

$IPT -Astage1 -mrecent --remove --name knock

$IPT -Astage1 -ptcp --dport3456 -mrecent --set --name knock2

$IPT -Nstage2

$IPT -Astage2 -mrecent --remove --name knock2

$IPT -Astage2 -ptcp --dport2345 -mrecent --set --name heaven

$IPT -Ndoor

$IPT -Adoor -mrecent --rcheck --seconds5 --name knock2 -jstage2

$IPT -Adoor -mrecent --rcheck --seconds5 --name knock -jstage1

$IPT -Adoor -ptcp --dport1234 -mrecent --set --name knock

$IPT -AINPUT -m --state ESTABLISHED,RELATED -jACCEPT

$IPT -AINPUT -ptcp --dport22 -mrecent --rcheck --seconds5 --name heaven -jACCEPT

$IPT -AINPUT -ptcp --syn -jdoor

13、 配置空閑超時注銷時長

用戶可以通過 ssh 連入服務器,可以配置一個超時時間間隔來避免無人值守的 ssh 會話。 打開 sshd_config 并確保配置以下值:

ClientAliveInterval300

ClientAliveCountMax0

以秒為單位設置一個空閑超時時間(300秒 = 5分鐘)。一旦空閑時間超過這個值,空閑用戶就會被踢出會話。更多細節(jié)參見如何自動注銷空閑超時的 BASH / TCSH / SSH 用戶。

14、 為 ssh 用戶啟用警示標語

更新 sshd_config 文件如下行來設置用戶的警示標語:

Banner /etc/issue

`/etc/issue 示例文件:

以上是一個標準的示例,更多的用戶協(xié)議和法律細節(jié)請咨詢你的律師團隊。

15、 禁用 .rhosts 文件(需核實)

禁止讀取用戶的 ~/.rhosts 和 ~/.shosts 文件。更新 sshd_config 文件中的以下內容:

IgnoreRhosts yes

SSH 可以模擬過時的 rsh 命令,所以應該禁用不安全的 RSH 連接。

16、 禁用基于主機的授權(需核實)

禁用基于主機的授權,更新 sshd_config 文件的以下選項:

HostbasedAuthentication no

17、 為 OpenSSH 和操作系統(tǒng)打補丁

推薦你使用類似 yum、apt-get 和 freebsd-update 等工具保持系統(tǒng)安裝了最新的安全補丁。

18、 Chroot OpenSSH (將用戶鎖定在主目錄)

默認設置下用戶可以瀏覽諸如 /etc、/bin 等目錄。可以使用 chroot 或者其他專有工具如 rssh 來保護 ssh 連接。從版本 4.8p1 或 4.9p1 起,OpenSSH 不再需要依賴諸如 rssh 或復雜的 chroot(1) 等第三方工具來將用戶鎖定在主目錄中。可以使用新的 ChrootDirectory 指令將用戶鎖定在其主目錄,參見這篇博文。

19. 禁用客戶端的 OpenSSH 服務

工作站和筆記本不需要 OpenSSH 服務。如果不需要提供 ssh 遠程登錄和文件傳輸功能的話,可以禁用 sshd 服務。CentOS / RHEL 用戶可以使用 yum 命令 禁用或刪除 openssh-server:

$sudo yum erase openssh-server

Debian / Ubuntu 用戶可以使用 apt 命令/apt-get 命令 刪除 openssh-server:

$sudo apt-get remove openssh-server

有可能需要更新 iptables 腳本來移除 ssh 的例外規(guī)則。CentOS / RHEL / Fedora 系統(tǒng)可以編輯文件 /etc/sysconfig/iptables 和 /etc/sysconfig/ip6tables。最后重啟 iptables 服務:

# service iptables restart

# service ip6tables restart

20. 來自 Mozilla 的額外提示

如果使用 6.7+ 版本的 OpenSSH,可以嘗試下以下設置:

使用以下命令獲取 OpenSSH 支持的加密方法:

$ssh -Qcipher

$ssh -Qcipher-auth

$ssh -Qmac

$ssh -Qkex

$ssh -Qkey

如何測試 sshd_config 文件并重啟/重新加載 SSH 服務?

在重啟 sshd 前檢查配置文件的有效性和密匙的完整性,運行:

$sudo sshd -t

擴展測試模式:

$sudo sshd -T

最后,根據系統(tǒng)的的版本重啟 Linux 或類 Unix 系統(tǒng)中的 sshd 服務:

$[sudo systemctl start ssh][38]## Debian/Ubunt Linux##

$[sudo systemctl restart sshd.service][39]## CentOS/RHEL/Fedora Linux##

$doas /etc/rc.d/sshd restart## OpenBSD##

$sudo service sshd restart## FreeBSD##

其他建議

使用 2FA 加強 SSH 的安全性– 可以使用OATH Toolkit或DuoSecurity啟用多重身份驗證。

基于密匙鏈的身份驗證– 密匙鏈是一個 bash 腳本,可以使得基于密匙的驗證非常的靈活方便。相對于無密碼密匙,它提供更好的安全性。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9332

    瀏覽量

    86132
  • SSH協(xié)議
    +關注

    關注

    0

    文章

    5

    瀏覽量

    1640

原文標題:20 個 OpenSSH 最佳安全實踐

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    ssh連接

    實現(xiàn),二者互不兼容。SSH2比SSH1在安全性,功能和性能 上提高了很多,所以目前被廣泛使用的SSH2。 1.SSH服務器的安裝 Linu
    發(fā)表于 03-28 16:38

    如何實現(xiàn)遠程登錄ssh并配置為開機啟動

    今天教論壇的發(fā)燒友們如何實現(xiàn)遠程登錄ssh,并配置為開機啟動!千萬要注意的一點,ssh和ssl不能混淆安裝并運行ssh1,安裝sshapt-get install
    發(fā)表于 09-12 10:32

    MYS-6ULX-IOT怎么安裝openssh??

    試了下好像默認沒有帶SSH,串口速度太慢了,想安裝openssh怎么弄??求大神幫助
    發(fā)表于 06-03 22:59

    SSH arm移植

    移植ssh到開發(fā)板主要是將開發(fā)板當成服務器,電腦端可以作為客戶端進行訪問,從而實現(xiàn)通過網線就可以進行文件的傳輸以及控制臺控制。移植ssh主要包含三大部分:1. zlib的移植; 2. openssl
    發(fā)表于 07-01 12:24

    迅為-3399開發(fā)板QT系統(tǒng)-使用openssh

    OpenSSHSSH (Secure SHell) 協(xié)議的免費開源實現(xiàn)SSH 協(xié)議族可以
    發(fā)表于 07-14 10:12

    Linux開發(fā)板上的SSH服務移植過程

    SSH服務可以很方便的通過網絡登錄到Linux開發(fā)板,同時支持SFTP協(xié)議向開發(fā)板傳輸文件。下面簡單講下移植過程。開發(fā)板環(huán)境:名稱:imx283內核:Linux2.6.35.31.下載源碼zlib
    發(fā)表于 11-04 08:22

    RK3568開發(fā)板安裝SSH

    開發(fā)的過程中會經常在 Windows 和 Ubuntu 系統(tǒng)之間進行文件的傳輸,為了實現(xiàn) Windows和 Ubuntu 文件的互傳,需要在 Ubuntu 上安裝 SSH 服務,具體步驟如下:首先
    發(fā)表于 03-27 11:10

    在全志V851S開發(fā)板上使用SSH配置步驟分析

    在Tina板子上面開啟SSH SERVER 在Tina配置界面的以下目錄中 > Network > SSH 勾選的項目 《》openssh
    發(fā)表于 04-28 10:11

    SSH指南

    OpenSSH OpenSSHSSH (Secure SHell) 協(xié)議的免費開源實現(xiàn)。它用安全、加密的網絡連接工具代替了 telne
    發(fā)表于 11-07 11:44 ?1次下載

    嵌入式Linux添加ssh服務

    OpenSSH因為其相對較大,一般不太適用于嵌入式平臺,多用于PC或者服務器的Linux版本中。Dropbear是一個相對較小的SSH服務器和客戶端。
    發(fā)表于 10-20 11:50 ?8次下載
    嵌入式Linux添加<b class='flag-5'>ssh</b>服務

    嵌入式Linux開發(fā)板移植SSH

    SSH服務可以很方便的通過網絡登錄到Linux開發(fā)板,同時支持SFTP協(xié)議向開發(fā)板傳輸文件。下面簡單講下移植過程。開發(fā)板環(huán)境:名稱:imx283 內核:Linux2.6.35.31.下載源碼zlib
    發(fā)表于 11-01 17:06 ?2次下載
    嵌入式Linux開發(fā)板移植<b class='flag-5'>SSH</b>

    開發(fā)板openssh移植步驟

    SSH簡介SSH為SecureShell的縮寫,由IETF的網絡小組(NetworkWorkingGroup)所制定,為建立在應用層基礎上的安全協(xié)議。通過對密碼進行加密傳輸驗證,可在不安全的網絡中
    的頭像 發(fā)表于 09-05 11:23 ?1481次閱讀
    開發(fā)板<b class='flag-5'>openssh</b>移植步驟

    SSH端口號是什么?SSH原理詳解分析

    OpenSSHSSH協(xié)議的開源實現(xiàn),支持在Unix操作系統(tǒng)上運行,最新版本可以在OpenSSH官網下載。目前Windows10已經包含
    發(fā)表于 10-16 16:00 ?8071次閱讀
    <b class='flag-5'>SSH</b>端口號是什么?<b class='flag-5'>SSH</b>原理詳解分析

    SSH端口號是什么?SSH是如何工作的?

    SSH(Secure Shell,安全外殼)是一種網絡安全協(xié)議,通過加密和認證機制實現(xiàn)安全的訪問和文件傳輸等業(yè)務。傳統(tǒng)遠程登錄或文件傳輸方式,例如Telnet、FTP,使用明文傳輸數據,存在很多
    的頭像 發(fā)表于 11-10 10:06 ?2895次閱讀
    <b class='flag-5'>SSH</b>端口號是什么?<b class='flag-5'>SSH</b>是如何工作的?

    Serial、SSH、Rlogin、Telnet、Raw協(xié)議介紹

    SSH是較可靠,專為遠程登錄會話和其他網絡服務提供安全性的文件傳輸協(xié)議。建立在應用層和傳輸層基礎上。利用SSH協(xié)議可以有效防止遠程管理過程中的信息泄露問題。
    的頭像 發(fā)表于 12-05 09:55 ?3439次閱讀
    主站蜘蛛池模板: 五月激情综合 | 香蕉久久高清国产精品免费 | 日本一二线不卡在线观看 | 久久精品视频99精品视频150 | 曰本在线网| 新版bt天堂资源在线 | 1区2区| 日韩一级片免费看 | 欧美成人自拍视频 | xxxx69日本| 女人张开腿给男人桶爽免费 | 精品国产柚木在线观看 | 四虎永久在线精品免费观看地址 | 欧美爽爽爽爽爽爽视频 | 163黄页网又粗又长又舒服 | 免费黄色大片在线观看 | 国产全肉乱妇杂乱视频 | 亚洲日本欧美日韩高观看 | 五月婷婷丁香综合网 | 黄色的视频在线免费观看 | 日日噜噜噜夜夜爽爽狠狠图片 | 高清欧美日本视频免费观看 | 一区不卡视频 | 四虎影视大全免费入口 | 国产在线观看www鲁啊鲁免费 | 国产一级一片免费播放视频 | 亚洲午夜视频在线观看 | 久久久久国产一级毛片高清版 | 亚洲精品第一 | 99色视频在线 | 亚洲一区二区三区精品视频 | 四虎成人精品在永久在线观看 | 天天干影院 | 成年大片免费播放视频人 | 免费观看a毛片一区二区不卡 | 在线观看黄色的网站 | 美女被猛男躁免费视频网站 | 欧美成人全部费免网站 | 亚洲精品久久久久影 | tom影院亚洲国产 | 日本免费高清 |