成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

20個(gè)OpenSSH服務(wù)器最佳安全實(shí)踐

原創(chuàng)
安全 網(wǎng)站安全
OpenSSH是SSH協(xié)議的一種實(shí)現(xiàn),它是遠(yuǎn)程登錄,通過(guò)scp或sftp實(shí)現(xiàn)備份和遠(yuǎn)程文件傳輸?shù)鹊耐扑]安全協(xié)議,SSH保證兩個(gè)網(wǎng)絡(luò)或兩個(gè)系統(tǒng)之間數(shù)據(jù)交互的機(jī)密性和完整性。

【51CTO.com獨(dú)家翻譯】OpenSSH是SSH協(xié)議的一種實(shí)現(xiàn),它是遠(yuǎn)程登錄,通過(guò)scp或sftp實(shí)現(xiàn)備份和遠(yuǎn)程文件傳輸?shù)鹊耐扑]安全協(xié)議,SSH保證兩個(gè)網(wǎng)絡(luò)或兩個(gè)系統(tǒng)之間數(shù)據(jù)交互的機(jī)密性和完整性,它的主要優(yōu)點(diǎn)是通過(guò)公鑰加密技術(shù)實(shí)現(xiàn)服務(wù)器身份驗(yàn)證。但時(shí)有OpenSSH零日漏洞爆出,因此OpenSSH服務(wù)器本身也需要調(diào)整才能提高整體安全性。

默認(rèn)配置文件和SSH端口

/etc/ssh/sshd_config:OpenSSH服務(wù)器配置文件;

/etc/ssh/ssh_config:OpenSSH客戶端配置文件;

~/.ssh/:用戶SSH配置目錄;

~/.ssh/authorized_keys:用戶公鑰(RSA或DSA);

/etc/nologin:如果存在這個(gè)文件,sshd會(huì)拒絕除root用戶外的其它用戶登錄;

/etc/hosts.allow和/etc/hosts.deny:定義tcp-wrapper執(zhí)行的訪問(wèn)控制列表;

SSH默認(rèn)端口:22  

圖 1 SSH會(huì)話窗口

1、禁用OpenSSH服務(wù)器

工作站和筆記本電腦可以不用OpenSSH服務(wù)器,如果你不需要提供SSH遠(yuǎn)程登錄和文件傳輸功能,可以禁用并刪除SSHD服務(wù)器,CentOS / RHEL / Fedora Linux用戶可以使用下面的yum命令禁用和刪除openssh-server:

# chkconfig sshd off

# yum erase openssh-server

Debian / Ubuntu Linux用戶可以使用下面的apt-get命令禁用和刪除openssh-server:

# apt-get remove openssh-server

你可能需要更新你的iptables腳本,移除ssh例外規(guī)則,在CentOS / RHEL / Fedora下,打開(kāi)etc/sysconfig/iptables和/etc/sysconfig/ip6tables文件,刪掉與ssh相關(guān)的例外規(guī)則,然后使用下面的命令重啟iptables:

# service iptables restart

# service ip6tables restart

2、只使用SSH v2

SSH協(xié)議的第一個(gè)版本(SSH v1或SSH-1)存在中間人攻擊問(wèn)題和安全漏洞,它已經(jīng)被作廢,應(yīng)該不惜一切代價(jià)避免使用SSH v1。打開(kāi)sshd_config配置文件,如果沒(méi)有就增加下面這一行設(shè)置:

Protocol 2

這樣啟動(dòng)sshd后就只會(huì)使用SSH協(xié)議的第二個(gè)版本(SSH v2或SSH-2)了。

3、限制用戶的SSH訪問(wèn)

默認(rèn)情況下,所有系統(tǒng)用戶都可以用他們的密碼或公鑰通過(guò)SSH實(shí)現(xiàn)遠(yuǎn)程登錄,但有時(shí)你創(chuàng)建的UNIX/Linux用戶是用于ftp或email目的,如果不加限制,這些用戶也可以使用ssh登錄到系統(tǒng),并且可以使用編譯器,腳本語(yǔ)言,如Perl或Python,這些工具已經(jīng)足夠利害,可以打開(kāi)任意網(wǎng)絡(luò)端口,執(zhí)行任意操作。我的一個(gè)客戶端上有過(guò)時(shí)的PHP腳本,攻擊者可以通過(guò)PHP腳本在系統(tǒng)上創(chuàng)建一個(gè)新賬號(hào),但攻擊者不能通過(guò)該賬號(hào)ssh登錄,因?yàn)樗鼪](méi)有在允許的用戶列表范圍內(nèi)(AllowUsers)。

假設(shè)我們只要root,vivek和jerry用戶能通過(guò)SSH使用系統(tǒng),向sshd_config配置文件中添加:

AllowUsers root vivek jerry

另外,你還可以允許所有用戶通過(guò)SSH登錄,但拒絕一部分用戶,這時(shí)就需要向sshd_config配置文件中添加:

DenyUsers saroj anjali foo

你也可以配置Linux PAM允許或拒絕通過(guò)sshd服務(wù)器登錄,你也可以指定一列用戶組有權(quán)訪問(wèn)或拒絕他們?cè)L問(wèn)ssh。

4、配置空閑超時(shí)退出時(shí)間間隔

用戶可以通過(guò)ssh登錄到服務(wù)器,你可以設(shè)置一個(gè)空閑超時(shí)時(shí)間間隔避免出現(xiàn)孤兒ssh會(huì)話,打開(kāi)sshd_config配置文件,確保有如下的配置項(xiàng):

ClientAliveInterval 300

ClientAliveCountMax 0

上面的例子設(shè)置的空閑超時(shí)時(shí)間間隔是300秒,即5分鐘,過(guò)了這個(gè)時(shí)間后,空閑用戶將被自動(dòng)踢出出去(可以理解為退出登錄/注銷)。

5、禁用.rhosts文件

不要讀取用戶的~/.rhosts和~/.shosts文件,使用下面的設(shè)置更新sshd_config配置文件:

IgnoreRhosts yes

SSH可以模擬過(guò)時(shí)的rsh命令的行為,rsh被公認(rèn)為是不安全的遠(yuǎn)程訪問(wèn)協(xié)議,因此必須得禁用掉。 #p#

6、禁用基于主機(jī)的身份驗(yàn)證

為了禁用基于主機(jī)的身份驗(yàn)證,使用下面的選項(xiàng)更新sshd_config配置文件:

HostbasedAuthentication no

7、禁用root通過(guò)SSH登錄

沒(méi)有必要使用root用戶通過(guò)SSH遠(yuǎn)程登錄,普通用戶可以通過(guò)su或sudo(推薦)獲得root級(jí)別的訪問(wèn)權(quán),這樣你可以得到完整的審計(jì)信息,誰(shuí)通過(guò)sudo在系統(tǒng)上執(zhí)行特權(quán)命令就會(huì)一清二楚。為了禁止root用戶通過(guò)SSH登錄,使用下面的選項(xiàng)更新sshd_config配置文件:

PermitRootLogin no

但也有人認(rèn)為root用戶通過(guò)SSH登錄沒(méi)什么不妥,之所以人們一直有“不要用root用戶登錄”的想法,都是不安全的Telnet協(xié)議惹的禍。

8、啟用警告橫幅

使用下面的設(shè)置更新sshd_config配置文件,設(shè)置一個(gè)警告橫幅:

Banner /etc/issue

在/etc/issue文件中,可以和你的法律顧問(wèn)商討一下,列出用戶使用ssh應(yīng)該遵守的法律法規(guī)和注意事項(xiàng)。

8、防火墻SSH端口:22

你需要為ssh端口22更新iptables或pf防火墻配置,通常,OpenSSH服務(wù)器應(yīng)該只接受來(lái)自局域網(wǎng)或受信任的遠(yuǎn)程客戶端的連接。

Netfilter(iptables)配置

更新/etc/sysconfig/iptables(Red Hat及基于Red Hat的系統(tǒng))文件,只接受來(lái)自192.168.1.0/24和202.54.1.5/29的連接,配置如下:

-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT

-A RH-Firewall-1-INPUT -s 202.54.1.5/29 -m state --state NEW -p tcp --dport 22 -j ACCEPT

如果你還準(zhǔn)備讓sshd通過(guò)IP V6,那還需要更新/etc/sysconfig/ip6tables(Red Hat或基于Red Hat的系統(tǒng))文件,配置如下:

-A RH-Firewall-1-INPUT -s ipv6network::/ipv6mask -m tcp -p tcp --dport 22 -j ACCEPT

你在實(shí)際操作時(shí),請(qǐng)用真實(shí)的IP V6地址范圍替換ipv6network::/ipv6mask。

◆BSD PF防火墻配置

如果你使用的是PF防火墻,請(qǐng)更新/etc/pf.conf文件:

pass in on $ext_if inet proto tcp from {192.168.1.0/24, 202.54.1.5/29} to $ssh_server_ip port 
ssh flags S/SA synproxy state

默認(rèn)情況下,ssh會(huì)監(jiān)聽(tīng)系統(tǒng)上所有網(wǎng)卡和IP地址,限制ssh端口綁定,改變ssh端口(暴力攻擊通常是針對(duì)端口22的),假設(shè)要綁定到192.168.1.5和202.54.1.5這兩個(gè)IP地址,端口改為300,那sshd_config文件需要做如下修改:

Port 300

ListenAddress 192.168.1.5

ListenAddress 202.54.1.5

更好的辦法是使用主動(dòng)式腳本,如后面會(huì)談到的fail2ban或denyhosts。

10、使用強(qiáng)SSH密碼和密語(yǔ)

為你的密鑰使用強(qiáng)用戶密碼和密語(yǔ)有多重要我就不說(shuō)了,暴力破解攻擊之所以能夠得逞,都是因?yàn)槟闶褂昧嘶谧值涞拿艽a,你可以強(qiáng)制用戶避免使用字典中能直接找到的詞作密碼,另外可以借助john the ripper tool工具找出現(xiàn)有系統(tǒng)中存在的弱密碼。下面是一個(gè)隨機(jī)密碼生成器(放到你的~/.bashrc文件中):

genpasswd() {
 
local l=$1
        
[ "$l" == "" ] && l=20
       
tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs

}

運(yùn)行它:

genpasswd 16

輸出:

uw8CnDVMwC6vOKgW

#p#

11、使用基于公鑰的身份驗(yàn)證

使用公/私密鑰對(duì)和密碼對(duì)私鑰實(shí)施保護(hù),如何使用基于RSA和DSA的身份驗(yàn)證,請(qǐng)參考http://www.cyberciti.biz/tips/ssh-public-key-based-authentication-how-to.htmlhttp://www.cyberciti.biz/faq/ssh-password-less-login-with-dsa-publickey-authentication/,永遠(yuǎn)不要使用無(wú)密鑰密碼登錄。

12、使用基于密鑰鏈的身份驗(yàn)證

密鑰鏈?zhǔn)且粋€(gè)經(jīng)過(guò)設(shè)計(jì)的特殊的bash腳本,它讓基于密鑰的身份驗(yàn)證變得難以置信的方便和靈活,與無(wú)密鑰密碼相比,它的優(yōu)勢(shì)太多了。關(guān)于如何安裝和使用密鑰鏈軟件,請(qǐng)?jiān)L問(wèn)http://www.cyberciti.biz/faq/ssh-passwordless-login-with-keychain-for-scripts/

13、Chroot SSHD(將用戶鎖定在他們自己的home目錄)

默認(rèn)情況下,用戶可以瀏覽服務(wù)器目錄,如/etc,/bin等,你可以使用基于操作系統(tǒng)的chroot或使用特殊的工具,如rssh,來(lái)保護(hù)ssh,在OpenSSH 4.8p1和4.9p1中,你不再需要第三方hack工具,如rssh,或是復(fù)雜的chroot配置,來(lái)將用戶限制在他們自己的home目錄中,新版本中增加了一個(gè)ChrootDirectory命令,它可以直接將用戶限制在自己的home目錄中。更多信息請(qǐng)?jiān)L問(wèn)http://www.debian-administration.org/articles/590

14、使用TCP Wrapper

TCP Wrapper是一個(gè)基于主機(jī)的網(wǎng)絡(luò)ACL系統(tǒng),用于過(guò)濾到互聯(lián)網(wǎng)的網(wǎng)絡(luò)訪問(wèn),OpenSSH支持TCP Wrapper,只需要更新你的/etc/hosts.allow文件,下面的例子表示僅允許來(lái)自192.168.1.2 和172.16.23.12的ssh訪問(wèn):

192.168.1.2 172.16.23.12

關(guān)于如何在Linux / Mac OS X 和UNIX類操作系統(tǒng)上安裝和配置TCP Wrapper,請(qǐng)?jiān)L問(wèn)http://www.cyberciti.biz/faq/tcp-wrappers-hosts-allow-deny-tutorial/

15、禁用空密碼

你需要明確禁止密碼為空的用戶遠(yuǎn)程登錄,使用下面的設(shè)置更新sshd_config配置文件:

PermitEmptyPasswords no

#p#

16、給SSH攻擊者設(shè)置障礙

暴力破解是擊敗加密機(jī)制的一種有效手段,暴力破解一般會(huì)利用大量的分布式計(jì)算機(jī)網(wǎng)絡(luò),為了阻止對(duì)ssh的暴力攻擊,可以使用下面的軟件:

◆DenyHosts:它是一款基于Python的安全工具,專為保護(hù)SSH服務(wù)器設(shè)計(jì),通過(guò)監(jiān)控身份驗(yàn)證日志中無(wú)效的登錄嘗試,阻止掉不懷好意的IP地址,實(shí)現(xiàn)對(duì)SSH服務(wù)器的保護(hù)。有關(guān)RHEL / Fedora和CentOS Linux下如何安裝DenyHosts的信息,請(qǐng)?jiān)L問(wèn)http://www.cyberciti.biz/faq/rhel-linux-block-ssh-dictionary-brute-force-attacks/

◆Fail2ban:它也是一個(gè)阻止暴力破解SSH的保護(hù)工具。

◆security/sshguard-pf:使用pf保護(hù)主機(jī)免受ssh暴力攻擊。

◆security/sshguard-ipfw:使用ipfw保護(hù)主機(jī)免受ssh暴力攻擊。

◆security/sshguard-ipfilter:使用ipfilter保護(hù)主機(jī)免受ssh暴力攻擊。

◆security/sshblock:阻止頻繁的ssh登錄嘗試。

◆security/sshit:檢查SSH/FTP暴力攻擊,阻止攻擊源IP地址。

◆BlockHosts:自動(dòng)阻止濫用ssh登錄的IP主機(jī)。

◆Blacklist:處理暴力攻擊嘗試。

◆Brute Force Detection:它是一個(gè)模塊化的shell腳本,解析應(yīng)用程序日志,檢查身份驗(yàn)證失敗記錄。

◆IPQ BDB filter:可以看作是一個(gè)輕量級(jí)的fail2ban。

17、限制端口22上的入站連接速率

netfilter和pf都提供了速率限制功能,因此可以對(duì)端口22實(shí)施速率限制。

iptables示例

下面的例子展示了60秒內(nèi),超過(guò)5次連接嘗試,連接將會(huì)被丟掉:

#!/bin/bash

inet_if=eth1

ssh_port=22

$IPT -I INPUT -p tcp --dport ${ssh_port} -i ${inet_if} -m state --state NEW -m recent  --set

$IPT -I INPUT -p tcp --dport ${ssh_port} -i ${inet_if} -m state --state NEW -m recent 

--update --seconds 60 --hitcount 5 -j DROP
 

從你的iptables腳本調(diào)用上面的腳本,下面是另一個(gè)配置方案:

$IPT -A INPUT  -i ${inet_if} -p tcp --dport ${ssh_port}

-m state --state NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT

$IPT -A INPUT  -i ${inet_if} -p tcp --dport ${ssh_port} -m state --state ESTABLISHED -j ACCEPT

$IPT -A OUTPUT -o ${inet_if} -p tcp --sport ${ssh_port} -m state --state ESTABLISHED -j ACCEPT

# 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

◆BSD PF例子

下面的設(shè)置將限制每個(gè)源的最大連接數(shù)為20,5秒內(nèi)最大連接次數(shù)為15,如果有人違背該規(guī)則,它將會(huì)進(jìn)入到我們的abusive_ips表中,以后的連接都會(huì)被阻止掉,最后,flush關(guān)鍵字取消了所有與該規(guī)則匹配的狀態(tài)。

sshd_server_ip="202.54.1.5"

table persist

block in quick from

pass in on $ext_if proto tcp to $sshd_server_ip port

ssh flags S/SA keep state (max-src-conn 20, max-src-conn-rate 15/5, overload flush)

18、使用端口碰撞

端口碰撞(Port knocking)是一個(gè)從外部打開(kāi)防火墻上端口的方法,它在一組預(yù)設(shè)的關(guān)閉端口上產(chǎn)生一個(gè)連接嘗試,當(dāng)連接嘗試的順序被接受,防火墻規(guī)則被動(dòng)態(tài)修改,允許發(fā)送該連接嘗試的主機(jī)連接到指定的端口,下面是ssh使用iptables進(jìn)行端口碰撞的一個(gè)簡(jiǎn)單示例:

$IPT -N stage1

$IPT -A stage1 -m recent --remove --name knock

$IPT -A stage1 -p tcp --dport 3456 -m recent --set --name knock2
 
$IPT -N stage2

$IPT -A stage2 -m recent --remove --name knock2

$IPT -A stage2 -p tcp --dport 2345 -m recent --set --name heaven
 
$IPT -N door

$IPT -A door -m recent --rcheck --seconds 5 --name knock2 -j stage2

$IPT -A door -m recent --rcheck --seconds 5 --name knock -j stage1

$IPT -A door -p tcp --dport 1234 -m recent --set --name knock
 
$IPT -A INPUT -m --state ESTABLISHED,RELATED -j ACCEPT

$IPT -A INPUT -p tcp --dport 22 -m recent --rcheck --seconds 5 --name heaven -j ACCEPT

$IPT -A INPUT -p tcp --syn -j doo

◆fwknop是一個(gè)集合了端口碰撞和被動(dòng)操作系統(tǒng)指紋的實(shí)現(xiàn)。

◆多端口碰撞僅適合Netfilter/Iptables。

19、使用日志分析器

使用logwatch或logcheck讀取你的日志,這些工具讓你更容易閱讀日志內(nèi)容,它們可以遍歷給定時(shí)間范圍內(nèi)的日志,并生成明了的報(bào)告,請(qǐng)確保sshd_config配置文件中將LogLevel設(shè)置為INFO或DEBUG了。

LogLevel INFO

20、給OpenSSH和操作系統(tǒng)及時(shí)打補(bǔ)丁

強(qiáng)烈建議大家使用yum,apt-get,freebsd-update和其它工具給系統(tǒng)打補(bǔ)丁,保持系統(tǒng)更新到最新?tīng)顟B(tài)。

其它措施

如果想隱藏OpenSSH的版本,你需要修改它的源代碼,并重新編譯,然后修改sshd_config文件,確保有下列配置項(xiàng):

#  開(kāi)啟特權(quán)隔離

UsePrivilegeSeparation yes

# 防止使用不安全的home目錄和密鑰權(quán)限

StrictModes yes

# 開(kāi)啟反向名稱檢查

VerifyReverseMapping yes

# 設(shè)置是否需要端口轉(zhuǎn)發(fā)

AllowTcpForwarding no

X11Forwarding no

#  指定是否允許密碼驗(yàn)證,默認(rèn)是yes

PasswordAuthentication no

最后警告大家,在重啟或重新載入修改之前,先使用下面的命令驗(yàn)證一下sshd_config配置文件是否無(wú)誤:

# /usr/sbin/sshd -t

如果你有文中尚未提及的技巧或軟件,歡迎在評(píng)論中反饋,也歡迎你對(duì)本文涉及到的技巧和軟件發(fā)表你的看法。

【51CTO.COM 獨(dú)家翻譯,轉(zhuǎn)載請(qǐng)注明出處及作者!】

【編輯推薦】

  1. 編譯安裝openssh,使用RSA登陸
  2. 在windows下使用OpenSSH
責(zé)任編輯:許鳳麗 來(lái)源: 51CTO.com
相關(guān)推薦

2010-03-12 10:48:03

2018-02-28 17:27:28

2011-02-21 10:31:24

2022-09-26 23:13:52

服務(wù)器數(shù)據(jù)安全

2011-08-30 11:19:25

遠(yuǎn)程服務(wù)器數(shù)據(jù)中心遷移服務(wù)器管理工具

2011-06-02 10:25:10

Web服務(wù)器部署

2021-05-19 14:14:29

服務(wù)器安全數(shù)據(jù)

2011-07-26 10:27:07

分析器操作系統(tǒng)服務(wù)器

2012-05-14 11:52:45

服務(wù)器角色

2012-02-07 09:17:13

2024-08-21 08:02:47

2020-09-17 07:00:00

DevOps無(wú)服務(wù)器技術(shù)運(yùn)維

2014-06-24 10:41:46

2022-11-02 12:17:41

2023-03-16 08:01:56

TypeScript開(kāi)源編程語(yǔ)言

2018-02-07 10:45:19

2024-09-03 16:28:20

2009-12-31 10:16:49

2023-11-06 08:55:31

2024-06-03 08:37:26

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 午夜精品影院 | 国产成人99久久亚洲综合精品 | 亚洲精品无| 国产中文在线 | 免费xxxx大片国产在线 | 欧美一区2区三区3区公司 | 日韩精品一二三区 | 999久久久 | 91亚洲精品在线观看 | 亚洲人免费视频 | 欧洲一区在线观看 | 91色网站| 91 久久 | 亚洲精品第一国产综合野 | 伊人精品 | 一区二区在线 | 天天影视综合 | 成人小视频在线免费观看 | 色吧综合| 精品不卡 | 亚洲欧美中文日韩在线v日本 | 日韩免费视频一区二区 | 中文精品视频 | 国产一级特黄真人毛片 | www.色综合| aaa综合国产 | 九九爱这里只有精品 | 成年人国产在线观看 | 91pron在线 | 91精品久久久久久久久 | 色婷婷av99xx| 亚洲风情在线观看 | 日韩一区二区av | 精品国产乱码久久久久久闺蜜 | 久久av资源网 | 日韩欧美在线观看一区 | 国产精品久久久久久久久免费高清 | 亚洲欧美在线免费观看 | 精品久久久久久亚洲精品 | 青青草一区 | 亚洲精品国产一区 |