1. 程式人生 > >centos 7.4 ssh 安全(cat /etc/ssh/sshd_config)

centos 7.4 ssh 安全(cat /etc/ssh/sshd_config)

centos 7.4 ssh 安全(cat /etc/ssh/sshd_config):
參考資料:https://www.cnblogs.com/xiaochina/p/5920057.html

在 /etc/ssh/sshd_config 檔案中新增如下行,然後 systemctl restart sshd
AllowUsers      merit
#只允許 merit 使用者 ssh 登入(已登入的使用者不會下線)

AllowUsers      merit [email protected]
#只允許 merit 使用者和來自IP 172.16。6.168 的使用者 oracle ssh 登入(已登入的使用者不會下線)


DenyUsers       merit
#只拒絕 merit 使用者 ssh 登入

DenyUsers       merit [email protected]
#只拒絕 merit 使用者和來自IP 172.16。6.168 的使用者 oracle ssh 登入(已登入的使用者不會下線)


通過 /etc/hosts.allow 和 /etc/hosts.deny 來控管 ssh 行為:
/etc/hosts.allow  檔案中新增如下內容:
sshd:172.16.6.168:allow

然後在 /etc/hosts.deny    中新增如下內容:
sshd:all

通過上面 2 處設定,就可以限制只允許 172.168.6.168 這個 IP 的地址登入
hosts.allow 和 hosts.deny 兩個檔案同時設定規則的時候,hosts.allow 檔案中的規則優先順序高

sshd:172.16.6.0/24:allow     #允許 192.168.0.1/24 這段 IP 地址的使用者登入
sshd:ALL # 允許全部的 ssh 登入 


附錄參考文件:https://www.cnblogs.com/EasonJim/p/8338931.html
使用hosts.allow和hosts.deny實現簡單的防火牆
說明:我建議學習防火牆只單一學習一種就夠了,這種方式雖然簡單和快速,但也有些不太靈活,所以如果要深入防火牆建議轉iptables 

一、背景簡介

在Linux上多用iptables來限制ssh和telnet,編緝hosts.allow和hosts.deny感覺比較麻煩比較少用。

二、hosts.allow和hosts.deny支援哪些服務

2.1、hosts.allow和hosts.deny支援哪些服務

hosts.allow和hosts.deny規則的執行者為TCP wrappers,對應守護程序為tcpd;而tcpd執行依賴於程式使用了libwrap庫。

也就是說:hosts.allow和hosts.deny支援且只支援使用了libwrap庫的服務。 

一般這個是針對守護程序Daemon。

2.2、檢視程式是否使用libwarp

方法一、檢視hosts_access欄位串


檢視應用程式是否支援wrapper,可以使用strings程式然後grep字串hosts_access:
strings /usr/sbin/sshd | grep hosts_access
ldd /usr/sbin/sshd | grep libwrap

Wrappers 首先在 hosts.allow 檔案中查詢規則匹配。如果找到匹配,那麼 tcpd 會根據規則停下來,批准或拒絕訪問。如果在 hosts.allow 檔案中未找到匹配,那麼 tcpd 會讀取 hosts.deny 檔案直到找到匹配。如果找到匹配,就拒絕訪問,否則批准訪問。

我在前面提到了兩個檔案 hosts.allow 和 deny,但根據規則的靈活性,可以只用一個檔案,通常是 hosts.allow 來包含 wrappers 所有規則。

Wrappers 會查詢 hosts.allow 和 hosts.deny 中的規則來確定訪問。規則的基本格式是:

daemon, daemon, ...: client, client, ...: option

要關閉 wrappers,只需將 hosts.allow 和 hosts.deny 檔案改成其他檔名即可。如果不存在允許或拒絕訪問檔案,wrappers 將不會使用訪問控制,從而有效關閉 wrappers 。或者將主機檔案清空或清零,這會有同樣的效果。

其中:

daemon    要監控的服務,如 telnetd、ftpd、sshd
client    主機名、IP 地址/IP 範圍,或域名
選項有:

allow    允許對客戶端的訪問
deny    拒絕對客戶端的訪問
except    會匹配第一個列表中所有項,除非匹配第二個列表。例如,允許 domainA 中所有項,除了 hostX.domainA 和 hostY.domanA。

當一行有多個守護程序或客戶端時,用逗號分隔開來。可以用 ALL 關鍵字來表示所有守護程序或所有客戶端。

LOCAL 關鍵字表示匹配所有不包含點號(“.”)的主機;這表示所有與域不相關的主機。

如果規則允許的話,在每個規則末尾都加上允許或拒絕選項,這是一個好的做法、好的習慣(因為這可以清晰地描繪訪問規則,尤其是在 hosts.allow 中有多個允許或拒絕規則時)。

還有一些其他的選項,我將在稍後演示。現在,我們將訪問控制結合在一起。

對 hosts.allow 和 hosts.deny 的更改是動態的。一旦檔案儲存,更改就會生效。

一個好的起點是,僅僅允許您想要訪問主機的客戶端使用允許的守護程序,拒絕其他所有客戶端。

所以,hosts.deny 可以使用以下規則拒絕所有客戶端訪問所有守護程序:

ALL:ALL
本節的其他示例都是隻與 hosts.allow 檔案有關。為了能讓所有守護程序從本地主機(即,與域名不相關的主機)訪問,可以使用:

ALL:LOCAL : allow
就我個人而言,我不喜歡使用在任何主機上匹配的 LOCAL 模式,因為網路中所有主機應該屬於您的或是某個域。如果原來不是,那麼應該是的。儘管如此,在一些小型網路的情況下,卻不是這樣,LOCAL 允許這些主機訪問。

我們假設僅僅允許屬於 mydomain.com 域的主機使用 telnet 或 ssh。以下的 hosts.allow 條目能完成此任務:

telnetd,sshd:.mydomain.com :allow
請注意本例中 mydomain.com 之前的點號(“.”)。這是個萬用字元,表示所有主機以 mydomain.com 結尾。我們還在規則結尾指定這是一條允許規則。儘管這不是嚴格限制,但如前所述,這樣做是一種好的做法。

現在進一步假設我們允許使用以下 IP 地址遠端登入 ssh 和 telnet:192.168.4.10 和所有以 192.168.6 開頭的 IP 地址。請再次注意,在部分 IP 地址後使用點號;這相當於 192.168.6.*.,或者更精確一點,以 192.168.6 開頭的所有 IP 地址。另一種看待 192.168.6. 範圍內 IP 地址的方法是等於 192.168.6/24 或所有 192.168.6.1 與 192.168.6.254 之間的 IP 地址。

另外,我們還想允許使用 telnet 和 ssh 訪問以下域:mydomain.com 和 mydomain2.com 域。以下命令能完成此任務:

telnetd,sshd:.mydomain.com, .mydomain2.com :allow
telnetd,sshd:192.168.4.10 , 192.168.6.: allow
現在,我們假設允許從 mydomain.com 域中的所有主機上進行 ftp 訪問,除了 mydomain.com 中的兩個主機:uktrip1 和 uktrip2 。通過使用允許規則,我們可以利用 except 選項提供兩個列表,讓 “except” 左側的主機允許訪問,“except” 右側列表中包含的主機拒絕訪問。

telnetd,sshd:.mydomain.com :allow
telnetd,sshd:192.168.4.10 , 192.168.6.: allow
ftpd:.mydomain.com except uktrip1.mydomain.com, uktrip2.mydomain.com : allow
我們現在看看拒絕規則。要拒絕 192.168.8. 和 192.168.9. 的 telnet 訪問,但允許 192.168.6. 的 telnet 訪問,我可以使用:

telnetd :192.168.8., 192.168.9.: deny
telnetd :192.168.6.: allow
前一個示例也可以用 except 選項來改寫:

telnetd:192.168.6. except 192.168.8., 192.168.9.: allow
Wrappers 會將訊息記錄到 /var/adm/messages 檔案中。訊息檔案中一個典型的名為 tardis 的被拒絕 telnent 連線會像這樣:

Oct 23 15:50:55 rs6000 auth|security|warning telnetd[270546]: refused connect from
 tardis
一個典型的名為 tardis 的失敗的 ssh 連線像這樣:

Oct 23 15:53:36 rs6000 auth|security:info sshd[262252]: refused connect from tardis
如果開啟 PARANOID,那麼 wrappers 會通知您所有無法解析的主機與 IP 不匹配情況:

error ftpd[2605110]: warning:/etc/hosts.allow, line 2: host name/address mismatch: 
192.168.7.12 != uktrn004.mydomain.com
有時候能看到哪些主機 DNS 條目不正確也是好事,這樣可以被負責 DNS 維護的人員糾正過來。在公司內部網路尤其如此。與拒絕不匹配主機/IP 不同的是,只允許域使用者進入(假設這是在安全的公司網路中)。在以下示例中,所有屬於 mydomain.com 域的使用者都允許訪問,請注意對所有守護程序都使用了 ALL:

ALL:PARANOID, mydomain:allow
四、例項

1.限制所有的ssh

除非從218.64.87.0——127上來。 

hosts.deny: 

sshd:ALL 

hosts.allow: 

sshd:218.64.87.0/255.255.255.128 

2.封掉218.64.87.0——127的telnet 

hosts.deny 

sshd:218.64.87.0/255.255.255.128 

3.限制所有人的TCP連線,除非從218.64.87.0——127訪問 

hosts.deny 

ALL:ALL 

hosts.allow 

ALL:218.64.87.0/255.255.255.128 

4.限制218.64.87.0——127對所有服務的訪問 

hosts.deny 

ALL:218.64.87.0/255.255.255.128 

 

參考:

https://www.cnblogs.com/lsdb/p/8044404.html(以上內容部分轉自此篇文章)

https://www.ibm.com/developerworks/cn/aix/library/au-tcpwrapper/(以上內容部分轉自此篇文章)

https://www.lifewire.com/hostsallow-linux-command-4094314

https://www.cnblogs.com/jydeng/archive/2013/04/03/4418478.html

http://tubaluer.iteye.com/blog/1349785

http://bbs.51cto.com/thread-923533-1.html

http://blog.csdn.net/atec2000/article/details/12774641

http://blog.csdn.net/yangjiehuan/article/details/9253855

http://blog.51cto.com/jschu/1694549

http://www.360doc.com/content/15/1218/08/15947598_521216288.shtml

==>如有問題,請聯絡我:easonjim#163.com,或者下方發表評論。<==