ssh訪問限制
Ⅰ ssh訪問路由器文件沒許可權
創建ssh遠程連接時,需要在伺服器端創建用戶並為這個用戶分配遠程登錄的許可權也需要生成相應的密鑰進行用謹銀者戶身份的識別。2、沒有分...創建ssh遠程連搏枯接時,需要在伺服器端創建用戶並為這個用戶分配遠程登錄的許可權也需要生成相應的密鑰進行用戶身份的識別。2、沒有分...創建ssh遠程連接時,需要在伺服器端創建用戶並為這個用戶分配遠程登錄的許可權也需要生成相應的密鑰進行用戶身份的識別。2、沒有分...創建ssh遠程連接時,需要在伺服器端創建用戶並為這個用戶分祥薯配遠程登錄的許可權也需要生成相應的密鑰進行用戶身份的識別。2、沒有分...
Ⅱ ssh命令連接伺服器提示許可權拒絕
在散讓彎/etc/ssh/sshd_config中有一個選項StrictModes,如果該選項是yes,那麼如果某些文件或者文件夾的許可權不對則無法ssh登錄,具體許可權如沖悶下
chmod g-w /滑攔home/your_user
chmod 700 /home/your_user/.ssh
chmod 600 /home/your_user/.ssh/authorized_keys
Ⅲ liux掃出openssh漏洞怎麼做掃描訪問限制
liux掃出openssh漏洞怎麼做掃描訪問限制的方法:使用chmod更改特定目錄的許可權。這能起到限制特定目錄被某些人訪問的作用,限定某個用戶的目的也能達到,但是會誤傷其他用戶。使用linux容器,例如lxc。耗費空間,設置稍顯麻煩。或者使用setfacl命令設定訪問控制。
(3)ssh訪問限制擴展閱讀:
Linux,全稱GNU/Linux,是一種免費使用和自由傳播的類UNIX操作系統,其內核由林納斯·本納第克特·托瓦茲於1991年10月5日首次發布,它主要受到Minix和Unix思想的啟發,是一個基於POSIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的Unix工具軟體、應用程序和網路協議。它支持32位和64位硬體。Linux繼承了Unix以網路為核心的設計思想,是一個性能穩定的多用戶網路操作系統。Linux有上百種不同的發行版,如基於社區開發的debian、archlinux,和基於商業開發的Red Hat Enterprise Linux、SUSE、Oracle Linux等。
Ⅳ linux下ssh連接限制的問題
問題1:如果你開通的ssh許可權是針對用戶而不是針對組開通的,那默認就是一個賬號一個人登陸啦!問題2:據我所知,ssh目前好像還沒有限速的功能,只是用於給用戶遠程操控的,安全方面可以通過服務本身和系統內部的定義來控制。限速度方面,一般都是用ftp來做的。
Ⅳ linux ssh如何限制用戶只能在特定的時間內可以連接
高級SSH安全技巧 在這篇文章中我將為你展示一些簡單的技巧,幫助你提高你的SSH服務的安全。SSH伺服器配置文件是/etc/ssh/sshd_conf。在你對它進行每一次改動後都需要重新啟動SSH服務,以便讓改動生效。 1、修改SSH監聽埠 默認情況下,SSH監聽連接埠22,攻擊者使用埠掃描軟體就可以看到主機是否運行有SSH服務,將SSH埠修改為大於1024的埠是一個明智的選擇,因為大多數埠掃描軟體(包括nmap)默認情況都不掃描高位埠。 打開/etc/ssh/sshd_config文件並查找下面這樣的行: Port 22 修改埠號並重新啟動SSH服務: /etc/init.d/ssh restart 2、僅允許SSH協議版本2 有兩個SSH協議版本,僅使用SSH協議版本2會更安全,SSH協議版本1有安全問題,包括中間人攻擊(man-in-the-middle)和注入(insertion)攻擊。編輯/etc/ssh/sshd_config文件並查找下面這樣的行: Protocol 2,1 修改為 Protocol 2 3、僅允許特定的用戶通過SSH登陸 你不一個允許root用戶通過SSH登陸,因為這是一個巨大的不必要的安全風險,如果一個攻擊者獲得root許可權登陸到你的系統,相對他獲得一個普通用戶許可權能造成更大的破壞,配置SSH伺服器不允許root用戶通過SSH登陸,查找下面這樣的行: PermitRootLogin yes 將yes修改為no,然後重新啟動服務。現在,如果你想使用特權用戶,你可以先以其他用戶登陸,然後再轉換到root。 創建一個沒有實際許可權的虛擬用戶是一個明智的選擇,用這個用戶登陸SSH,即使這個用戶遭到破解也不會引起什麼破壞,當創建這個用戶時,確保它屬於wheel組,因為那樣你才能切換到特權用戶。 如果你想讓一列用戶都能通過SSH登陸,你可以在sshd_config文件中指定它們,例如:我想讓用戶anze、dasa、kimy能通過SSH登陸,在sshd_config文件的末尾我添加下面這樣一行: AllowUsers anze dasa kimy 4、創建一個自定義SSH banner 如果你想讓任何連接到你SSH服務的用戶看到一條特殊的消息,你可以創建一個自定義SSH banner,只需要創建一個文本文件(我的是/etc/ssh-banner.txt),然後輸入你想的任何文本消息,如: *This is a private SSH service. You are not supposed to be here.* *Please leave immediately. * 編輯好後,保存這個文件,在sshd_config中查找下面這樣一行: #Banner /etc/issue.net 取消掉注釋【將#去掉】,然後將路徑修改為你自定義的SSH banner文本文件。 5、使用DSA公鑰認證 代替使用用戶名和密碼對SSH進行認證,你可以使用DSA公鑰進行認證,注意你既可以使用登陸名,也可以使用DSA公鑰進行認證,使用DSA公鑰認證可以預防你的系統遭受字典攻擊,因為你不需要用登陸名和密碼登陸SSH服務,而是需要一對DSA密鑰,一個公鑰和一個私鑰,在你本地機器上保存私鑰,將公鑰放在伺服器上。當你發起一個SSH登陸會話時,伺服器檢查密鑰,如果它們匹配的話,你就可以直接進入shell,如果它們不匹配,你的連接將被自動斷開。 在本例中的私人計算機叫『工作站1』,伺服器叫『伺服器1』。在兩個機器上我有相同的home目錄,如果伺服器和客戶端上的home目錄不同將不能工作,實現,你需要在你的私人計算機上創建一對密鑰,命令:~$ ssh-keygen -t dsa,它將要求你為私鑰輸入一個密語,但是你可以保留為空,因為這不是一個推薦的做法。密鑰對創建好了:你的私鑰在~/.ssh/id_dsa,你的公鑰在.ssh/id_dsa.pub。 接下來,拷貝~/.ssh/id_dsa.pub中的內容到『伺服器1』的~/.ssh/authorized_keys文件中,~/.ssh/id_dsa.pub的內容看起來象下面這樣: ~$ cat .ssh/id_dsa.pub ssh-dss JYDusNGAIC0oZkBWLnmDu+ LZVSFhCI/Fm4yROHGe0FO7FV4lGCUIlqa55+QP9Vvco7qyBdIpDuNV0LAAAAFQC/9ILjqII7n M7aKxIBPDrQwKNyPQAAAIEAq+OJC8+ 9/ta NIhBbqri10RGL5gh4AAACAJj1/rV7iktOYuVyqV3BAz3JHoaf+H/dUDtX+wuTuJpl+tfDf61rb WOqrARuHFRF0Tu/Rx4oOZzadLQovafqrDnU/No0Zge+WVXdd4ol1YmUlRkqp8vc20ws5mLVP /NuzY= [email protected] 如果文件~/.ssh/authorized_keys已經存在,請將上面的內容附加在該文件的後面。剩下的只是給該文件設置正確的許可權了: ~$ chmod 600 ~/.ssh/authorized_keys 現在,配置sshd_config文件使用DSA密鑰認證,確保你將下面三行前的注釋去掉了: RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys 重新啟動服務,如果你的配置沒有錯誤,現在你就可以SSH到你的伺服器,而且無需任何交互動作(如輸入用戶名和密碼)就直接進入你的home目錄了。 如果你只想使用DSA認證登陸,確保你在sshd_config中取消掉注釋並修改PasswordAuthentication這一行,將yes改為no: PasswordAuthentication no 任何在伺服器上沒有公鑰的人試圖連接到你的SSH服務,它就被拒絕,給它顯示如下一個拒絕提示信息: Permission denied (publickey). 6、使用TCP wrappers僅允許指定的主機連接 如果你想在你的網路上只允許特定的主機才能連接到你的SSH服務,但又不想使用或弄亂你的iptables配置,那這個方法非常有用,你可以使用 TCP wrappers。在這個例子中對sshd進行TCP包裹,我將創建一條規則允許本地子網192.168.1.0/24和遠程 193.180.177.13的自己連接到我的SSH服務。 默認情況下,TCP wrappers首先在/etc/hosts.deny中查找看主機是否允許訪問該服務,接下來,TCP wrappers查找/etc/hosts.allow看是否有規則允許該主機服務指定的服務,我將在/etc/hosts.deny中創建一個規則,如下: sshd: ALL 這意味著默認情況下所有主機被拒絕訪問SSH服務,這是應該的,否則所有主機都能訪問SSH服務,因為TCP wrappers首先在hosts.deny中查找,如果這里沒有關於阻止SSH服務的規則,任何主機都可以連接。 接下來,在/etc/hosts.allow中創建一個規則允許指定的主機使用SSH服務: sshd: 192.168.1 193.180.177.13 現在,只有來自192.168.1.0/24和193.180.177.13的主機能夠訪問SSH服務了,其他主機在連接時還沒有到登陸提示符時就被斷開了,並收到錯誤提示,如下: ssh_exchange_identification: Connection closed by remote host 7、使用iptables允許特定的主機連接 作為TCP wrappers的一個代替品,你可以使用iptables來限制SSH訪問(但可以同時使用這個兩個的),這里有一個簡單的例子,指出了如何允許一個特定的主機連接到你的SSH服務: ~# iptables -A INPUT -p tcp -m state --state NEW --source 193.180.177.13 --dport 22 -j ACCEPT 並確保沒有其他的主機可以訪問SSH服務: ~# iptables -A INPUT -p tcp --dport 22 -j DROP 保存你的新規則,你的任務就完成了,規則是立即生效的 8、SSH時間鎖定技巧 你可以使用不同的iptables參數來限制到SSH服務的連接,讓其在一個特定的時間范圍內可以連接,其他時間不能連接。你可以在下面的任何例子中使用/second、/minute、/hour或/day開關。 第一個例子,如果一個用戶輸入了錯誤的密碼,鎖定一分鍾內不允許在訪問SSH服務,這樣每個用戶在一分鍾內只能嘗試一次登陸: ~# iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -m limit --limit 1/minute --limit-burst 1 -j ACCEPT ~# iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -j DROP 第二個例子,設置iptables只允許主機193.180.177.13連接到SSH服務,在嘗試三次失敗登陸後,iptables允許該主機每分鍾嘗試一次登陸: ~# iptables -A INPUT -p tcp -s 193.180.177.13 -m state --syn --state NEW --dport 22 -m limit --limit 1/minute --limit-burst 1 -j ACCEPT ~# iptables -A INPUT -p tcp -s 193.180.177.13 -m state --syn --state NEW --dport 22 -j DROP 9、結論 這些技巧都不是很難掌握,但是它們對於保護你的SSH服務卻是很強勁的手段,花一點代價換來的是睡一個好覺。
Ⅵ SSH許可權詳解
原文鏈接
之前兩篇文章 利用SSH代理訪問內網資源 和 使用SSH代理在本地開發環境調試各種回調 兩篇文章,介紹了ssh的各種代理姿勢,SSH的功能確實強悍。如果用過ssh代理功能,就有人要問了,我能否限制用戶只允許使用代理功能,而不允許用戶登錄到我的系統中呢?
當然可以!否則又怎麼會稱為SSH(註:SSH是Secure Shell的縮寫)呢?連許可權都不能保障怎麼敢叫 Secure 呢?本篇文章就來詳解下SSH的花式許可權,來點不一樣的干貨。
先談談SSH有哪些功能,才能談到每個功能有哪些許可權。SSH最常見的有三大功能:
其次是SSH是一個典型的C/S應用,服務端運行 sshd 守護進程,監聽 TCP/22 埠(默認情況下),客戶端運行 ssh 程序,遠程連接 sshd 應用,使用以上三種功能。
sshd 使用 /etc/ssh/sshd_config 和 ~/.ssh/authorized_keys (這個文件僅用於做密鑰認證的配置,如果和sshd_config配置沖突則此文件配置生效。此配置文件可以實現細化到密鑰的許可權,gitlab使用此配置實現用戶的ssh訪問控制)配置文件做服務配置, ssh 客戶端使用 /etc/ssh/ssh_config (全局配置)和 ~/.ssh/config (個性配置)兩個配置文件(windows 10的openssh使用 %USERPROFILE%\.ssh\config )。默認配置文件幾乎不用動,ssh就幫我們做好了開箱即用的配置。本文不會講解ssh每個配置項的含義,只會根據一些場景講解對應的許可權控制,所有場景都是以默認配置為基準,講解一些常用的配置,一些不常用的配置項就不提及了。
下面我們將詳解每個功能的許可權
最基本的使用方式,直接遠程連接到伺服器的shell上,實現遠程式控制制的需求。
只要用戶滿足以下條件之一,ssh便會拒絕登錄:
所以通常創建一個低許可權賬戶,只負責運行本地服務的,使用的useradd命令大致如下:
新用戶無密碼,並且不是一個合法的shell,所以根本沒法登錄
如果連motd信息都不想讓用戶看到,可以直接創建一個 ~/.hushlogin 空文件即可。如果想通過修改配置文件,那麼需要同時修改 /etc/sshd_config ( PrintMotd no )和 /etc/pam.d/sshd (去掉 pam_motd.so 載入),比較麻煩。
設置大明 PermitRootLogin 選項即可。 no 表示徹底拒絕root遠程登錄,想要切換成root就只能通過普通用戶的 su - 或 sudo -i 切換root身份了。 prohibit-password 和 without-password (Ubuntu 14.04以後默認)表示拒絕密碼登錄,表示只能通過密鑰登錄了。 forced-commands-only 選項表示只允許密鑰認證,但是必須給定 command ,也就是非互動式執行ssh。
這個其實辦法很多,比如在防火牆控制,在 /etc/hosts.(deny|allow) 控制等,其實在 /etc/sshd_config 也可以控制,方法就是使用 Match address ,比如:
用sshd配置本身做ip白名單的比較少,但是 Match 配置卻是一個非常有用的配置項,它可以實現我們對用戶或用戶組區別對待,這個我們會在後面再細說。
有關代理的使用可以參考我之前寫的 利用SSH代理訪問內網資源 和 使用SSH代理在本地開發環境調試各種回調 兩篇文章。
x11轉發功能實際應用會非常罕見,作用是將遠程的圖形數據在本地的X server上展示,以實現本地操作遠程圖形程序的功能。首先是Linux伺服器大多運行在無圖形環境下,本身就沒有圖形化程序跑在上面,再加上客戶機可能多數是windows,又沒有X環境,更加限制了這個功能的使用。還有就是x11 forwarding性能不是很好,實際使用會發現非常卡,不適合使用輪仿衫那種對響應速度要求比較靈敏的應用程序,比如瀏覽器,在x11 forwarding下運行動圖會非常卡。最後臘腔就是需要跑圖形化程序的伺服器多數都安裝有桌面環境,配置有vnc,因此就更沒有人願意使用這個功能了。
如果不希望所有埠都能用於轉發請求,可以配置 PermitOpen 參數:
如果允許多個埠用於轉發,那麼必須一個個配置出來, any (默認)表示所有埠都允許用於轉發。
這個比較繁瑣,因為目前常見的通過ssh傳輸文件的有三個命令 scp , rsync , sftp 。它們的機制不一樣,其中 scp 和 rsync 是通過遠程非互動式執行命令實現的,而 sftp 是通過openssh的sftp server實現的。
對於 scp 和 rsync ,只需要限制非互動式命令就可以了,比如
或在 ~/.ssh/authorized_keys 對應的rsa public key 前面加上 command="/bin/bash" (參考gitlab的 /var/opt/gitlab/.ssh/authorized_keys ),效果是等效的。這樣就可以實現允許用戶遠程登錄系統,但是 scp 和 rsync 命令失效,同時由於限定死了command參數,導致你的非互動式ssh命令也無法使用了,比如 ssh user@ip ls / 這一類非互動式ssh不起作用了。
但是對於 sftp 的限制則要容易的多,因為 sftp 許可權是單獨分開的,不和ssh命令執行許可權混在一起,並且sftp也和ftp一樣,有自帶的一些命令實現(比如ls, cd, get, put等等),如果設置
或等效的 ~/.ssh/authorized_keys 配置,則表示只允許使用sftp,不允許shell登錄。如果配置中去掉 Subsystem sftp /usr/lib/openssh/sftp-server 這一行就可以關閉sftp服務
經常時候我們需要混合以上各種許可權使用。比如某些用戶我們開放出來,但是限制它的功能,此時 Match 配置就是我們的好朋友了。
由於用戶不能登錄shell,不能使用密碼認證,因此想要使用代理,必須使用類似於下面的命令:
使用 -i 參數指定私鑰文件用於公鑰認證,使用 -N 參數表示不執行遠程命令,僅僅使用port forwarding。
這里我們Match了 sftp-only 這個組,在這個組下面的用戶都使用下面的配置。使用了ForceCommand,因此不能登錄shell,使用了 ChrootDirectory 限制了用戶的根目錄,關閉了各種轉發功能。
通過 Match 的組合,我們可以很方便的限制一些特定用戶的許可權,這樣就實現了ssh用戶的一些特殊化管理。
這里只是按照一些可能遇到的場景講解了下 sshd_config 的配置,對於等效的 ~/.ssh/authorized_keys 配置同樣適用。其實ssh還有很多強大的功能,但是用的可能比較少,這里就不詳細講解那些不太常見的參數了,有興趣的讀者可以自行查閱man手冊獲取更多資料:
Ⅶ 如何限制用戶使用 SSH 登入系統
高級SSH技巧:
在這篇文章中我將為你展示一些簡單的技巧,幫助你提高你的SSH服務的安全。SSH伺服器配置文件是/etc/ssh/sshd_conf。在你對它進行每一次改動後都需要重新啟動SSH服務,以便讓改動生效。
1、修改SSH監聽埠
默認情況下,SSH監聽連接埠22,攻擊者使用埠掃描軟體就可以看到主機是否運行有SSH服務,將SSH埠修改為大於1024的埠是一個明智的選擇,因為大多數埠掃描軟體(包括nmap)默認情況都不掃描高位埠。
打開/etc/ssh/sshd_config文件並查找下面這樣的行:
Port 22
修改埠號並重新啟動SSH服務:
/etc/init.d/ssh restart
2、僅允許SSH協議版本2
有兩個SSH協議版本,僅使用SSH協議版本2會更安全,SSH協議版本1有安全問題,包括中間人攻擊(man-in-the-middle)和注入(insertion)攻擊。編輯/etc/ssh/sshd_config文件並查找下面這樣的行:
Protocol 2,1
修改為
Protocol 2
3、僅允許特定的用戶通過SSH登陸
你不一個允許root用戶通過SSH登陸,因為這是一個巨大的不必要的安全風險,如果一個攻擊者獲得root許可權登陸到你的系統,相對他獲得一個普通用戶許可權能造成更大的破壞,配置SSH伺服器不允許root用戶通過SSH登陸,查找下面這樣的行:
PermitRootLogin yes
將yes修改為no,然後重新啟動服務。現在,如果你想使用特權用戶,你可以先以其他用戶登陸,然後再轉換到root。
創建一個沒有實際許可權的虛擬用戶是一個明智的選擇,用這個用戶登陸SSH,即使這個用戶遭到破解也不會引起什麼破壞,當創建這個用戶時,確保它屬於wheel組,因為那樣你才能切換到特權用戶。
如果你想讓一列用戶都能通過SSH登陸,你可以在sshd_config文件中指定它們,例如:我想讓用戶anze、dasa、kimy能通過SSH登陸,在sshd_config文件的末尾我添加下面這樣一行:
AllowUsers anze dasa kimy
4、創建一個自定義SSH banner
如果你想讓任何連接到你SSH服務的用戶看到一條特殊的消息,你可以創建一個自定義SSH banner,只需要創建一個文本文件(我的是/etc/ssh-banner.txt),然後輸入你想的任何文本消息,如:
*This is a private SSH service. You are not supposed to be here.*
*Please leave immediately. *
編輯好後,保存這個文件,在sshd_config中查找下面這樣一行:
#Banner /etc/issue.net
取消掉注釋【將#去掉】,然後將路徑修改為你自定義的SSH banner文本文件。
5、使用DSA公鑰認證
代替使用用戶名和密碼對SSH進行認證,你可以使用DSA公鑰進行認證,注意你既可以使用登陸名,也可以使用DSA公鑰進行認證,使用DSA公鑰認證可以預防你的系統遭受字典攻擊,因為你不需要用登陸名和密碼登陸SSH服務,而是需要一對DSA密鑰,一個公鑰和一個私鑰,在你本地機器上保存私鑰,將公鑰放在伺服器上。當你發起一個SSH登陸會話時,伺服器檢查密鑰,如果它們匹配的話,你就可以直接進入shell,如果它們不匹配,你的連接將被自動斷開。
在本例中的私人計算機叫『工作站1』,伺服器叫『伺服器1』。在兩個機器上我有相同的home目錄,如果伺服器和客戶端上的home目錄不同將不能工作,實現,你需要在你的私人計算機上創建一對密鑰,命令:~$
ssh-keygen -t
dsa,它將要求你為私鑰輸入一個密語,但是你可以保留為空,因為這不是一個推薦的做法。密鑰對創建好了:你的私鑰在~/.ssh/id_dsa,你的公鑰在.ssh/id_dsa.pub。
接下來,拷貝~/.ssh/id_dsa.pub中的內容到『伺服器1』的~/.ssh/authorized_keys文件中,~/.ssh/id_dsa.pub的內容看起來象下面這樣:
~$ cat .ssh/id_dsa.pub
ssh-dss
JYDusNGAIC0oZkBWLnmDu+
LZVSFhCI/Fm4yROHGe0FO7FV4lGCUIlqa55+QP9Vvco7qyBdIpDuNV0LAAAAFQC/9ILjqII7n
M7aKxIBPDrQwKNyPQAAAIEAq+OJC8+
9/ta
NIhBbqri10RGL5gh4AAACAJj1/rV7iktOYuVyqV3BAz3JHoaf+H/dUDtX+wuTuJpl+tfDf61rb
WOqrARuHFRF0Tu/Rx4oOZzadLQovafqrDnU/No0Zge+WVXdd4ol1YmUlRkqp8vc20ws5mLVP
/NuzY= [email protected]
如果文件~/.ssh/authorized_keys已經存在,請將上面的內容附加在該文件的後面。剩下的只是給該文件設置正確的許可權了:
~$ chmod 600 ~/.ssh/authorized_keys
現在,配置sshd_config文件使用DSA密鑰認證,確保你將下面三行前的注釋去掉了:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
重新啟動服務,如果你的配置沒有錯誤,現在你就可以SSH到你的伺服器,而且無需任何交互動作(如輸入用戶名和密碼)就直接進入你的home目錄了。
如果你只想使用DSA認證登陸,確保你在sshd_config中取消掉注釋並修改PasswordAuthentication這一行,將yes改為no:
PasswordAuthentication no
任何在伺服器上沒有公鑰的人試圖連接到你的SSH服務,它就被拒絕,給它顯示如下一個拒絕提示信息:
Permission denied (publickey).
6、使用TCP wrappers僅允許指定的主機連接
如果你想在你的網路上只允許特定的主機才能連接到你的SSH服務,但又不想使用或弄亂你的iptables配置,那這個方法非常有用,你可以使用 TCP
wrappers。在這個例子中對sshd進行TCP包裹,我將創建一條規則允許本地子網192.168.1.0/24和遠程
193.180.177.13的自己連接到我的SSH服務。
默認情況下,TCP wrappers首先在/etc/hosts.deny中查找看主機是否允許訪問該服務,接下來,TCP
wrappers查找/etc/hosts.allow看是否有規則允許該主機服務指定的服務,我將在/etc/hosts.deny中創建一個規則,如下:
sshd: ALL
這意味著默認情況下所有主機被拒絕訪問SSH服務,這是應該的,否則所有主機都能訪問SSH服務,因為TCP wrappers首先在hosts.deny中查找,如果這里沒有關於阻止SSH服務的規則,任何主機都可以連接。
接下來,在/etc/hosts.allow中創建一個規則允許指定的主機使用SSH服務:
sshd: 192.168.1 193.180.177.13
現在,只有來自192.168.1.0/24和193.180.177.13的主機能夠訪問SSH服務了,其他主機在連接時還沒有到登陸提示符時就被斷開了,並收到錯誤提示,如下:
ssh_exchange_identification: Connection closed by remote host
7、使用iptables允許特定的主機連接
作為TCP wrappers的一個代替品,你可以使用iptables來限制SSH訪問(但可以同時使用這個兩個的),這里有一個簡單的例子,指出了如何允許一個特定的主機連接到你的SSH服務:
~# iptables -A INPUT -p tcp -m state --state NEW --source 193.180.177.13 --dport 22 -j ACCEPT
並確保沒有其他的主機可以訪問SSH服務:
~# iptables -A INPUT -p tcp --dport 22 -j DROP
保存你的新規則,你的任務就完成了,規則是立即生效的
8、SSH時間鎖定技巧
你可以使用不同的iptables參數來限制到SSH服務的連接,讓其在一個特定的時間范圍內可以連接,其他時間不能連接。你可以在下面的任何例子中使用/second、/minute、/hour或/day開關。
第一個例子,如果一個用戶輸入了錯誤的密碼,鎖定一分鍾內不允許在訪問SSH服務,這樣每個用戶在一分鍾內只能嘗試一次登陸:
~# iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -m limit --limit 1/minute --limit-burst 1 -j ACCEPT
~# iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -j DROP
第二個例子,設置iptables只允許主機193.180.177.13連接到SSH服務,在嘗試三次失敗登陸後,iptables允許該主機每分鍾嘗試一次登陸:
~# iptables -A INPUT -p tcp -s 193.180.177.13 -m state --syn --state NEW
--dport 22 -m limit --limit 1/minute --limit-burst 1 -j ACCEPT
~# iptables -A INPUT -p tcp -s 193.180.177.13 -m state --syn --state NEW --dport 22 -j DROP
Ⅷ linux ssh時間段限制
你好,SSH好像沒找到通過時間限制連接的參數,不過,你可以通過防或宏穗火牆Iptables來配合完成.實現這個功能需要安裝iptables的絕肢time模塊。默認發行版linux的iptables是沒有安裝time模塊的,所以首先你必須重新編譯安裝iptables加上該模塊,才能使用。
命令例子:在周衫卜六到周日的8點至18點間,禁止SSH訪問.
iptables -A INPUT -m time --timestart 08:00:00 --timestop 18:00:00 --days Tat,Sun --dport 22 -j DROP
Ⅸ 如何限制SSH用戶訪問Linux中指定的目錄
ssh登錄的用戶和本地登錄的用戶是一樣的,如果是用root用戶登錄的,你就無法限制它訪問指定的目錄,因為linux系統中root用戶的許可權最大;如果是以普通用戶的身份登錄的,那對他的限制和限制本地登錄用戶的方法是一樣的,可以設置用戶組或者是修改目錄的許可權和所有者。
Ⅹ 思科交換機ssh登錄失敗鎖定配置
您好,如果多次嘗試使用 SSH 登錄思科交換明旅機失敗,可能會導致登錄失敗的日誌被記錄在交換機的安全系統中,從而鎖定登錄的配置。這是為了保護設備和網路免受未經授權的訪問和攻擊。
為了解決這個問題,您可以使用以下步驟:
1. 訪問交換機的控制台埠,並使用控制台進入特權模式。然後在命令行中輸入 "show login failures" 命令來查看最近登錄失敗的嘗試。
2. 在控制台上輸入 "clear login failures" 命令,來清除已記錄的登錄失敗日誌。這將允許您重新嘗試 SSH 登錄。
3. 在重新嘗試登錄之前,您可能需要檢查登錄用戶名閉棚和密碼是否正確。還可以測試其他登錄方式,例如 Telnet 登錄,以確定問題是否與 SSH 協議有關。
4. 如果嘗試清除登錄失敗日誌無效,則可能需要使用備用控制台或備用管理員賬戶登錄,並使用原始管理員賬戶清除配置鎖定。
需要注意的是,如果重復登錄失敗,則交換機可能會進一步鎖定配置。因此,建議在嘗試登錄之前檢查用戶名和密碼,並確保您的SSH客戶端和交換機配置轎槐則正確。