天天看點

linux中遠端通路及控制

SSH遠端通路控制

重點:SSH服務的安全控制

   TCPWrappers通路政策

5.1SSH遠端管理

  Ssh(Secure  shell) 是一種安全通道協定,主要用來實作字元界面的遠端登入,遠端複制等功能.SSH協定對通信雙方的資料傳輸進行了加密處理,其中包括使用者登入時輸入的密碼.于早期的telnet(遠端登入)rsh(遠端執行指令)rcp(遠端檔案複制)等應用相比,SSH協定提供更好安全性。

5.1.1配置 OpenSSH服務端

在RHEL 5系統中,openssh伺服器由openssh openssh-server等軟體包提供(預設已安裝),并已将sshd添加标準的系統服務,執行“service sshd  start”即可按預設配置啟動sshd服務,包括root在内的大部分使用者(隻要擁有合法的登入shell)都可以遠端登入系統。

Sshd的配置檔案的預設位于/etc/ssh/sshd_config

1.服務監聽選項

Sshd使用的預設端口22,,必要時建議修改此端口,并制定監聽服務的具體IP位址,以提高在網絡中的隐蔽性。

列:vim  /etc/ssh/sshd_config

Port  22       //監聽端口為22

Protocol   2     //使用 ssh v2協定

listenAddress    192.168.4.254   //監聽位址為192.168.4.254

UseDNS    no   //禁用dns反向解析

Service   sshd  reload

2.使用者登入控制

Sshd服務預設允許root使用者登入,在目前internet環境非常不安全,更普遍的做法:以普通使用者遠端登入,進入安全shell環境後,根據實際需要使用su指令切換為root使用者。

Ssh服務使用者登入控制,通常應禁止root使用者或密碼為空的使用者登入,另外可以限制登入驗證時間(預設兩分鐘)及最大重試次數,若超過限制後仍未登入則斷開連接配接。

列:vim   /etc/sshd/ssh_config

 PermitRootLogin     no    //禁止root使用者登入

 PermitEmptyPasswords    no   //禁止空密碼使用者登入

  LoginGraceTime       2m    //登入驗證時間為2分鐘

  MaxAuthTries      6         //最大重試次數為6

Service sshdreload

當隻允許或禁止某些使用者登入時,可以使用AllowUsers或DenyUsers配置,兩者類似(注意不要同時使用)列:隻允許jerry和admin使用者登入,且其中admin使用者僅能夠從IP位址為61.23.24.25的主機遠端登入

Vim /etc/ssh/sshd_config

AllowUsers jerry  [email protected]       //多個使用者以空格分隔

Service sshd  reload

3.登入驗證方式

Sshd服務支援兩種驗證方式:密碼驗證、密鑰對驗證,可以設定其中一種方式,也可以兩種方式都啟用

l密碼驗證:以伺服器中本地系統使用者的登入名稱、密碼進行驗證。從伺服器來說,當遭遇到密碼窮舉(暴力破解)攻擊時防禦能力較弱。

l密鑰對驗證:要求提供相比對的密鑰資訊才能通過驗證。通常先在客戶機中建立一對密鑰檔案(公鑰、私鑰),然定後将公鑰檔案放到伺服器中的指定位置。遠端登入時,系統将使用公鑰、私鑰進行加密、解密關聯驗證,大大增強了遠端管理的安全性。

注:當密碼驗證、密鑰對驗證都使用時,伺服器将優先将使用密鑰對驗證。

對于安全性較高的伺服器,建議将密碼驗證方式禁用,隻允許密鑰對驗證方式;若沒有特殊要求,則兩種方式都可以啟用。

        PasswordAuthentication    yes                 //啟用密碼驗證

        PubkeyAuthentication      yes                 //啟用密鑰對驗證

        AuthoorizedKeyFile    ./ssh/authorized_keys       //指定公鑰庫資料檔案

        Service  sshd  reload

注:公鑰庫檔案用來儲存各客戶機上傳的公鑰文本,以便與客戶機本地的私鑰檔案進行比對

5.1.2  使用SSH用戶端程式

在rhel系統中,OpenSSH用戶端由openssh-clients軟體包提供(預設已安裝),其中包括ssh遠端程式指令,以及scp、sftp遠端複制和檔案傳輸指令。實際上,任何支援ssh協定的用戶端程式都可以與oopenssh伺服器進行通信,列入,windows平台中的putty、winscp、secureCRT等圖形工具。

1.指令程式ssh、scp、sftp

1)ssh遠端登入

用戶端登入方式:ssh  user@host   -p 22  或   ssh  -l  user  host

ssh指令可以遠端登入到sshd服務,為使用者提供一個安全的shell環境,以便對伺服器進行管理和維護。使用時應指定登入使用者、目标主機位址作為參數。

列: ssh  [email protected]

    Are yousure  you want to continue connecting (yes /no)?yes     //接受密鑰

[email protected]’s  password :                      //輸入密碼

注:當使用者第一次登入ssh伺服器時,必須接受伺服器發來的RSA密鑰(根據提示輸入yes)

後才能繼續驗證,接收的密鑰資訊儲存到~/.ssh/known_hosts檔案中。

列:whoami           //确認目前使用者

/sbin/ifconfigeth0 | grep  “inet  addr”        //确認目前主機的IP位址

-p 選項:指定端口号(非預設端口号)

列: ssh  -p 2345 [email protected]

2)scp遠端複制

scp遠端安全複制 :  scp   user@host:file1  file2 -p   22  或  scp file1 user@host:file2  

注:下載下傳:讀取權限上傳:寫入權限

通過scp指令可以利用SSH 安全連接配接與遠端主機互相複制檔案。使用scp指令時必須指定複制源、目标外,還應指定目标主機位址、登入使用者、執行後提示驗證密碼即可。

列:  scp  [email protected]:/etc/passwd   /root/pwd254.txt

    Scp  -r  /etc/vsftpd [email protected]:/opt/

3)sftp安全ftp

格式:sftp   user@host  -oport=22  (非預設時加端口)

通過sftp指令可以利用ssh安全連接配接與遠端主機上傳、下載下傳檔案,采用了與ftp類似的登陸過程和互動式環境,便于目錄資源管理。

列: sftp  [email protected]

     Ls

 Put /boot/config-2.6.18-194.el5       //上傳檔案

 Bye                                //登出

2.圖型工具puttyCN、winSCP

1)puttyCN 遠端登入

puttyCN是一款跨平台的telnet/ SSH圖形用戶端軟體,能夠在windows  32平台模拟xterm終端環境。

使用puttyCN時,隻需運作putty.exe,然後再視窗中指定遠端主機的IP位址/端口号等資訊,在打開,根據提示接受密鑰,驗證密碼即可成功登陸到目标主機。

2)winscp遠端複制

winscp是一款用于windows平台的ssh圖形用戶端軟體,用來通過SCP/sftp方式在本地與遠端計算機之間安全的複制檔案。

使用winscp時,隻需運作主程式winscpexe,然後再視窗中制定遠端主機的ip位址/端口号等相關資訊,在單擊“登入”,根據提示

5.1.3建構密鑰對驗證的ssh體系

密鑰對驗證方式可以為遠端登陸提供更好的安全性,客戶機中建構密鑰對驗證ssh體系的基本過程,如圖

linux中遠端通路及控制

                   Ssh密鑰的實作流程

1.在用戶端建立密鑰對

在linux客戶機中,通過ssh-keygen工具為目前使用者建立密鑰對檔案.可用的密鑰算法為RSA或DSA(ssh-keygen指令的-t選項用于指定算法類型).

列:ssh-keygen  -t  rsa

Enter  file  in which to save the key(/home/zhangsan/.ssh/id_rsa): //指定私鑰位置(回車)

Enter passphrase (empty  for no passphrase):       //設定私鑰短語(至少5位)

Enter  same passphraseagain:       //确認所設定的短語

公共檔案夾預設存放在宿主目錄中的隐藏檔案夾.ssh/下,私鑰短語用來對私鑰檔案進行保護,當使用該密鑰驗證登陸時必須正确提供此處所設定的短語.

列: ls  -lh ~/.ssh/id_rsa*      //确認生成的密鑰檔案

新生成的密鑰檔案中,id_rsa是私鑰檔案,權限預設為600,對于私鑰檔案必須妥善保管,不能洩露給他人;id_rsa.pub是公鑰檔案,用來提供給SSH伺服器.

2.将公鑰檔案上傳給伺服器

将上一步生成的密鑰檔案發送給伺服器,并部署到伺服器段使用者的公鑰資料庫中,上傳公鑰檔案可以選擇ftp/http/samba甚至發送郵件等方式.

列:  scp   ~/.ssh/id_rsa.pub  [email protected]:/tmp/   //通過scp的方式将檔案上傳至伺服器的/tmp/目錄中.

3.在伺服器中導入公鑰文本

在伺服器中,目标使用者(指用來遠端登陸的帳号)的弓公鑰資料庫位于”.ssh/”目錄,預設的檔案名是authorrized_keys,當獲得客戶機發送過來的公鑰檔案以後,可以通過重定向将公鑰文本内容追加到目标使用者的公鑰資料庫

列:mkdir   -p  /home/lisi/.ssh/

 Cat/tmp/id_rsa.pub  >>  /home/lisi/.ssh/authorized_keys

 Tail  -1 /home/lisi/.ssh/authorized_keys

 Chown  -R lisi.lisi  .ssh/

 Chmod  700 .ssh/

  Ls  -l /home/lisi/.ssh/authorized_keys

4.在用戶端使用密鑰對驗證

列:  ssh  [email protected]

5.2 TCP wrappers 通路控制

TCP wrappers概述

TCP wrappers将其他的tcp服務程式包裹起來,增加了安全檢測的過程,外來的來接請求必須先通過這層安全檢測,獲得許可後才能通路真正的服務程式.如圖, TCP wrappers還可以記錄所有企圖通路被保護服務的行為,為管理者提供豐富的安全分析資料.

linux中遠端通路及控制

                 TCP Warppers 的工作原理

對于大多數linux 發行版來說, TCP wrappers是預設提供的功能

RHEL5使用的軟體包為tcp_wrappers_7.6-40.7.el5,該軟體包提供了tcpd和共享連接配接庫檔案libwrap.so*,對應TCPwrappers保護機制的兩種實作方式—直接使用tcpd對其他服務程式進行保護,需要運作tcpd;由其他網絡服務程式調用libwrap.so*連結庫,不需要運作tcpd

列:  rpm  -ql tcp_wrappers

    Ldd  /usr/sbin/vaftpd  | grep “libwrap”      //調用ldd指令可以檢視程式共享庫

    Ldd  /usr/sbin/sshd  | grep “libwrap”

    Ldd  /usr/sbin/xinetd  | grep “libwrap”

注意 :xinetd是一個特殊的服務管理程式,通常稱為超級服務,xinetd通過/etc/xinet.

d/目錄下為每一個被保護的程式建立一個配置檔案,調用TCPwrappers機制來提供額外的通路控制保護

5.2.2TCP wrappers的通路政策

1.政策的配置格式:<服務程式清單>:<客戶機位址清單>

1)服務程式清單

可分為幾類為:ALL:代表所有服務

單個服務程式:如“vsftpd”

多個服務程式組成的清單:如“vsftpd,sshd”

2)客戶機位址清單:ALL:代表人和客戶機位址

 LOCAL:代表本機位址

單個IP位址:如192.168.4.1

網絡段位址:如192.168.4.0/255.255.255.0

以“.”開始的域名:如“.benet.com”比對.benet.com域中的所有主機

以“.”結束的網絡位址,如192.168.4.比對整個192.168.4.0/24網段

嵌入通配符* ?:前者代表任意長度字元,後者僅代表一個字元,如:”10.0.8.2*”比對以10.0.8.2開頭的所有IP位址,不可與以.開始或結束的模式混用 ?代表0-9

多個客戶機位址組成的清單,如”192.168.1.,172.17.17.,.benet.com”

2.通路控制的基本規則

應用時遵循以下規則:

首先檢查/額頭從/hosts.allow檔案,如找到相比對的政策,則允許通路

否則繼續檢查/額頭從/hosts.deny檔案,如找到相比對的政策,則拒絕通路

如檢查上述兩個檔案都找不到想比對的政策,則允許通路

3.TCP wrappers 配置實列:

若允許61.63.65.67的主機或位于192.168.2.0/24網段的主機通路sshd服務,其他所有位址被拒絕

列:vi  /etc/hosts.allow

sshdd:61.63.65.67,192.168.2.*

Vi /etc/hosts.deny