SSH:(安全Shell)
網絡連接工具的SSH協議套件用於加密互聯網上的連接。SSH加密所有流量,包括登錄和密碼,以有效消除網絡嗅探,連接劫持和其他網絡級攻擊。在常規telnet會話中,密碼通過Internet進行未加密傳輸。
Linux上的SSH指的是OpenSSH安全shell終端和sftp / scp文件傳輸連接。SSH也是商業產品,但可從SSH通信安全(http://www.ssh.com/)免費提供非商業用途 。有兩個版本可用,SSH1(現在很老)和SSH2(當前)。SSH的商業版本可以從其網站購買和/或下載。請注意,SSH1確實存在重大漏洞問題。“woot-project”網站破解和劫持幫派使用此漏洞。 不要使用SSH1協議!!!!! (“woot-project”exploit / attack description / recovery)
OpenSSH由 OpenBSD項目開發,可免費提供。OpenSSH與SSH1和SSH2兼容。OpenSSH依賴於加密通信層的OpenSSL項目。Linux的當前版本隨OpenSSH / OpenSSL。
鏈接:
OpenSSH.org - Shell。支持SSH1和SSH2協議。
OpenSSL.org - 加密網絡層
FreeSSH.org - 其他平臺的SSH
SSH:
SSh.com - 安全外殼
FreeSSH.org - 其他平臺的SSh
安全殼IETF工作組 - (Internet Engineering Task Force)狀態
OpenSSH的:
下載:注意:SSH和SSL包含在Red Hat Linux 7.0+中
下載OpenSSH RPM(sourceforge) - 與OpenSSL 0.9.5靜態鏈接 - 選擇一個可以輕鬆完成RPM安裝
下載OpenSSH source(tgz)
Red Hat Linux 6.x打開SSL RPM下載(redhat.com)(僅限SSL)
安裝:
紅帽/ Fedora / CentOS:
客戶端和服務器通用
Ubuntu/Debian:
客戶:
紅帽/ Fedora / CentOS:
Ubuntu/Debian:
服務器:
紅帽/ Fedora / CentOS:
Ubuntu/Debian:
如果從SSH1升級,您可能必須使用RPM選項--force。
rpm將安裝適當的二進制文件,配置文件和openssh-server將安裝init腳本/etc/rc.d/init.d/sshd ,以便sshd將在系統引導時啟動。
組態:
客戶端配置文件/ etc / ssh / ssh_config :(默認)
更改行:#協議2,1
到: 協議2
這將消除使用SSH1協議。
取消評論所需的選項或接受硬編碼的默認值。OpenSSH客戶端的硬編碼默認值與SSH1客戶端文件和sshd服務器兼容。升級到OpenSSH客戶端不需要對$ HOME / .ssh /中的文件進行任何更改。
服務器配置文件/ etc / ssh / sshd_config:
默認值:
如果對配置文件進行更改,請重新啟動“sshd”守護程序以接收新配置:
Ubuntu:/etc/init.d/ssh restart
Red Hat:/etc/init.d/sshd restart或service sshd restart
Ssh協議版本1不是安全的,鍵入密碼不應該需要10分鐘,如果有人以root身份登錄,而不是以特定用戶身份登錄,那麼如果有多個管理員,則可能會丟失可追溯性,因此更改為以上建議。
設置“PermitRootLogin no”要求遠程登錄使用不確定的用戶登錄。這可以從可用的字典攻擊列表中刪除root,這是所有Linux系統上的已知登錄名。
更改“橫幅”是一個好主意,以便向用戶呈現登錄問候語和法定免責聲明。即將文件/etc/issue.net內容更改為:
訪問權限僅授予Mega公司的授權人員。
默認情況下,/ etc/issue.net消息向黑客提供OS名稱,內核版本和可用於確定潛在漏洞的信息。
[潛在的陷阱]:慢ssh登錄 - 如果快速獲得“登錄”提示,但是“密碼”提示需要30秒到一分鐘,那麼您有DNS查詢延遲。在配置文件/ etc / ssh / sshd_config中設置UseDNS否,然後重新啟動sshd。eth0(或使用的NIC)的IP地址也應該在/ etc / hosts中引用您自己的主機名
生成系統密鑰:/ etc / ssh /
/ sbin / restorecon /etc/ssh/ssh_host_rsa_key.pub
/ sbin / restorecon /etc/ssh/ssh_host_dsa_key.pub
ssh-keygen -q -t rsa -f / etc / ssh / ssh_host_rsa_key -C“'-N”
ssh-keygen -q -t dsa -f / etc / ssh / ssh_host_dsa_key -C“-N”
私鑰生成:chmod 600 / etc / ssh / ssh_host_dsa_key / etc / ssh / ssh_host_rsa_key
公鑰生成:chmod 644 /etc/ssh/ssh_host_dsa_key.pub /etc/ssh/ssh_host_rsa_key.pub
對於SELinux:
生成用戶密鑰:
客戶端:
使用命令:/ usr / bin / ssh-keygen -t rsa
生成的文件:
將文件$ HOME /.ssh/id_rsa.pub FTP FTP 到服務器
cd $ HOME / .ssh /
cat id_rsa.pub >> authorized_keys2
-t rsa(協議版本2)
-t dsa(協議版本2)
-t rsa1(協議版本1)
-b 2048(以比特為單位指定密鑰長度)
命令選項:
服務器:
使用ssh:在客戶端使用以下命令和登錄,通常使用telnet會話:
ssh 名稱服務器
首次使用ssh時,它將發出以下消息:
回答是的。不會再問了。
要為登錄使用不同的用戶名,請在命令行中註釋: ssh -l username name-of server
注意:現在,您還可以使用sftp命令使用ssh進行安全的ftp文件傳輸。
OpenSSH手冊頁:
ssh - OpenSSH SSH客戶端(遠程登錄程序)
sshd - OpenSSH ssh守護進程
ssh-keygen - 用於創建RSA密鑰(主機密鑰和用戶認證密鑰)
ssh_config - OpenSSH SSH客戶端配置文件
sshd_config - OpenSSH SSH守護程序配置文件
ssh-add - 為身份驗證代理添加了RSA或DSA身份。用於與代理註冊新的密鑰。
scp - 安全副本(遠程文件複製程序)
ssh-agent - 認證代理可以用於保存RSA密鑰進行認證。
sftp - 安全的文件傳輸程序
sftp-server - SFTP服務器子系統
其他OpenSSH鏈接:
紅帽打開SSH指南 - 還有scp,sftp,Gnome ssh代理
Linux日誌:OpenSSH第一部分
SSH備註:
由於在初始化時執行計算所需的時間,sshd不應該使用xinetd / inetd啟動。
ssh客戶端將suid to root。服務器上的sshd以root身份運行。需要根權限才能在低於1024的端口上進行通信。-p選項可用於在不同端口上運行SSH。
RSA用於密鑰交換,常規密碼(默認Blowfish)用於加密會話。
加密在認證之前啟動,沒有密碼或其他信息被清除。
驗證:
用戶調用登錄。客戶端告訴服務器用戶希望用於認證的公鑰。
然後服務器檢查此公共密鑰是否可以接受。
如果是,則生成隨機數並使用公鑰對其進行加密,並將該值發送給客戶端。
然後,客戶端使用其私鑰對數字進行解密,並計算校驗和。校驗和被髮送回服務器
服務器從數據中計算校驗和並比較校驗和。
如果校驗和匹配,則接受認證。
SSH將使用$ HOME / .rhosts(或$ HOME / .shosts)
要在另一個TCP端口上建立安全網絡連接,請使用ssh命令使用“tunneling”選項:指定低於1024的端口將需要根訪問。
FTP打開各種端口,因此不是一個好的候選人。端口21僅用於建立連接。
將TCP本地端口轉發到遠程主機上的hostport:
ssh remote-host -L port:localhost:hostport命令
手冊頁:
ssh - 安全shell客戶端(遠程登錄程序)
sshd - 安全shell守護進程(服務器)
ssh-keygen - 用於創建RSA密鑰(主機密鑰和用戶認證密鑰)
ssh-keyscan - 收集ssh公鑰
ssh-add - 為身份驗證代理添加身份用於向代理註冊新密鑰。
scp - 安全副本(遠程文件複製程序)
s登錄
sftp - 安全文件傳輸程序客戶端。
sftp-server - 安全文件傳輸程序服務器。
ssh-agent - 認證代理。這可以用於保存RSA密鑰進行身份驗證。
telnet - TELNET協議的用戶界面
文檔:
的/ usr /共享/ DOC / openssh的-XXX /
的/ usr /共享/ DOC / OpenSSH的-askpass-XXX /
/usr/share/doc/openssl-0.XXX/
測試:
網絡嗅探器Ethereal(現在的Wireshark)用於嗅探客戶端和服務器之間的telnet和ssh網絡傳輸,具有以下結果:
測試telnet明文登錄:(端口23)
客戶端發送的文本是黑色背景上的綠色文本。
文本的其餘部分由服務器傳輸。
請注意,抓取了登錄(“JoeUser”)和密碼(“超級密碼”)。
測試ssh加密登錄:(端口22)
請注意,整個登錄和密碼交換已加密。
Fail2ban:塊重複失敗登錄
公共互聯網上的任何網站都將遭受字典密碼攻擊,不斷嘗試來自受損服務器的自動攻擊程序的新詞,單詞和ASCII序列。使用fail2ban阻止這些嘗試。Fail2ban將檢查日誌文件以查找重複的失敗登錄嘗試,並臨時或永久阻止攻擊系統的IP地址。fail2ban的默認配置查看sshd日誌文件/ var / log / secure以查找攻擊系統,並在阻止600秒(10分鐘)之前允許5次失敗的登錄嘗試。
Fail2ban可以配置為監視以下進程:
sshd
smtp
Apache httpd
lighttp
vsftpd
postfix
bind9 named
mysqld
asterisk
...
安裝:
紅帽:yum安裝fail2ban
Ubuntu:sudo apt-get install fail2ban
組態:
/etc/fail2ban/fail2ban.conf
/etc/fail2ban/jail.conf(通常複製到jail.local併為本地指令編輯)
注意:如果您的服務器受到攻擊,則fail2ban可能會傳送大量電子郵件。您可能要刪除sendmail-whois語句。
[DEFAULT]指令:
指示 | 描述 |
---|---|
ignoreip | IP地址從不禁止,如您的網關係統。多個IP由空格隔開。這是你的白名單。默認127.0.0.1(localhost) |
findtime | 發生故障的時間段。例如600是指在該發現時間期間發生的故障的最大數量將被禁止。默認600秒 |
maxretry | 指定IP被禁止之前的故障次數。默認3 |
bantime | IP被禁用的秒數 |
啟用 | true =監視器指定的進程。假無監測。默認值僅適用於sshd |
進行配置更改後重新啟動:sudo服務fail2ban重新啟動
配置init啟動時啟動fail2ban:sudo chkconfig --level 345 fail2ban on
另請參閱日誌文件:/ var / log / messages
驗證黑客的阻止:
顯示失敗的登錄生成的防火牆規則:
驗證fail2ban狀態:
顯示sshd fail2ban狀態:
下期:Linux Internet Server安全和配置教程(3)
PS。如果您喜歡這篇文章,請使用分享按鈕在社交網絡上與朋友分享,或者僅在下面留下回復。謝謝。