開源服務專題之------sshd服務安裝管理及配置文件理解和安全調優

 本專題我將討論一下開源服務,隨着開源社區的日趨豐富,開源軟件、開源服務,已經成爲人類的一種公共資源,發展勢頭可謂一日千里,因此不可不知。SSHD服務,在咱們的linux服務器上常常用到,很重要,涉及到服務器的安全,對這個服務的安全配置要高度重視。本文將從如下三個方面進行闡述開源服務及ssh服務。linux

  • 1、學習開源服務的步驟和方法
  • 2、SSHD服務安裝、配置、使用
  • 3、設置安全的SSHD服務

 

1、學習開源服務的步驟和方法:  

一、 瞭解服務的做用:名稱,功能,特色算法

二、 安裝shell

三、 配置文件位置,端口vim

四、 服務啓動關閉的腳本安全

五、 此服務的使用方法服務器

六、 修改配置文件,實戰舉例網絡

七、 排錯(從下到上,從內到外)。  session

              

2、SSHD服務安裝、配置、使用

SSHD服務ssh

介紹:SSH 協議:安全外殼協議。爲 Secure Shell 的縮寫。SSH 爲創建在應用層和傳輸層基礎上的安全協議。ide

做用:sshd服務使用SSH協議能夠用來進行遠程控制, 或在計算機之間傳送文件

相比較以前用telnet方式來傳輸文件要安全不少,由於telnet使用明文傳輸,是加密傳輸。

服務安裝:

須要安裝OpenSSH 四個安裝包:

OpenSSH軟件包,提供了服務端後臺程序和客戶端工具,用來加密遠程控件和文件傳輸過程當中的數據,並由此來代替原來的相似服務。

安裝包:

OpenSSH 服務須要4 個軟件包

openssh-askpass-5.3p1-118.1.el6_8.x86_64  #支持對話框窗口的顯示,是一個基於X 系統的密碼診斷工具

openssh-ldap-5.3p1-118.1.el6_8.x86_64      #這個包不是必須的,我在yum install openssh* -y 安裝時,順帶將這個包裝了。

openssh-5.3p1-118.1.el6_8.x86_64              #包含OpenSSH 服務器及客戶端須要的核心文件

openssh-clients-5.3p1-118.1.el6_8.x86_64    #OpenSSH 客戶端軟件包

openssh-server-5.3p1-118.1.el6_8.x86_64     #OpenSSH 服務器軟件包

 

這四個軟件包在咱們的RHEL鏡像軟件安裝包裏有。

[root@xiaolyu77 ~]# ll /mnt/Packages/openssh*
-r--r--r-- 3 root root 264144 Nov 25 2013 /mnt/Packages/openssh-5.3p1-94.el6.x86_64.rpm
-r--r--r-- 2 root root 55748 Nov 25 2013 /mnt/Packages/openssh-askpass-5.3p1-94.el6.x86_64.rpm
-r--r--r-- 3 root root 411336 Nov 25 2013 /mnt/Packages/openssh-clients-5.3p1-94.el6.x86_64.rpm
-r--r--r-- 3 root root 318860 Nov 25 2013 /mnt/Packages/openssh-server-5.3p1-94.el6.x86_64.rpm
[root@xiaolyu77 ~]#

 

說明:這裏我給出個人xshell的配色方案,由於做爲程序人,成天對着一個白底黑字仍是黑底黃字,對眼睛的傷害很是大。

個人配色方案是眼科專家給出的,最利於眼睛保護的。xshell最佳配色方案下載   下載完成後,直接在xshell中導入便可。

 由於在上一篇博文中我已經講了如何配置本地和在線yum源,這裏直接用yum安裝方式來安裝openssh軟件包。

yum install  openssh*    -y

 

由於個人openssh安裝過,而我又配置了網絡yum源,因此這裏會更新舊的安裝包。

確認軟件包是否已經安裝:

rpm -qa | grep openssh

查看軟件安裝生產的文件:

rpm -ql openssh

 

OpenSSH 配置文件

ll   /etc/ssh 

OpenSSH 經常使用配置文件有兩個/etc/ssh/ssh_config 和/etc/ssh/sshd_config。

ssh_config 爲客戶端配置文件

sshd_config 爲服務器端配置文件

服務啓動關閉腳本:

方法1:

service sshd restart/stop/start/status

 

方法2:

 /etc/init.d/sshd restart/stop/start/status

 

設置開機啓動服務:

 chkconfig sshd on

 chkconfig --list sshd

 

如何使用ssh來遠程鏈接主機:

方法1、

一、ssh  [遠程主機用戶名] @[遠程服務器主機名或IP地址]

若是用root進程登陸遠程主機能夠這樣:就是直接寫要登陸遠程主機的ip地址,不用帶遠程主機的用戶名。

root用戶登陸:

[root@xiaolyu77 ~]# ssh 192.168.31.76

 

查看生成的knows-hosts文件。

cat  .ssh/known_hosts

 

普通用戶登陸:

[root@xiaolyu76 ~]# useradd xiao && echo 123456 | passwd --stdin xiao

 

由於我第一次用root用戶登陸,.ssh/known_hosts文件已經生成,因此當我再用普通用戶xiao登陸時,不會出現RSA指紋簽名的信息。

下面我刪掉/root/.ssh/known_hosts文件,再用普通用戶登錄一下。

從新換一個窗口登陸77主機,發現/root/.ssh/knows_hosts文件又從新生成了。

總結:

1. 第一次登陸服務器時系統沒有保存遠程主機的信息,爲了確認該主機身份會提示用戶是否繼續連接,輸入yes 後登陸,這時系統會將遠程服務器信息寫入用戶目錄下: $HOME/.ssh/known_hosts 文件中,下次再進行登陸時由於保存有該主機信息就不會再提示了.

若是是root用戶,known_hosts會寫在/root/.ssh/known_hosts文件中。

2. RSA算法基於一個十分簡單的數論事實:將兩個大素數相乘十分容易,可是想要對其乘積進行因式分解卻極其困難,所以能夠將乘積公開做爲加密密鑰。

 

方法2、

ssh -l [遠程主機用戶名] [遠程服務器主機名或IP 地址]

[root@xiaolyu77 ~]# ssh -l xiao xiaolyu76

說明:兩種登陸方式效果相同,推薦第一種,由於第一種登陸方法和大多數服務的登陸方法相同,本人也習慣用第一種。

 

3、SSHD配置文件及安全配置:

介紹下配置文件,以及須要安全調優的地方

注:參數前面有#,表示是默認值。  固然#號也表示注示。

 /etc/ssh/sshd_config 配置文件

說明:這裏以xiaolyu76做爲服務器,xiaolyu77做爲客戶端。

#下面是系統默認的sshd_config的配置文件:
[root@xiaolyu76 ~]# cat /etc/ssh/sshd_config # $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $ # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. # This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options change a # default value. #Port 22 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress :: # Disable legacy (protocol version 1) support in the server for new # installations. In future the default will change to require explicit # activation of protocol 1 Protocol 2 # HostKey for protocol version 1 #HostKey /etc/ssh/ssh_host_key # HostKeys for protocol version 2 #HostKey /etc/ssh/ssh_host_rsa_key #HostKey /etc/ssh/ssh_host_dsa_key # Lifetime and size of ephemeral version 1 server key #KeyRegenerationInterval 1h #ServerKeyBits 1024 # Logging # obsoletes QuietMode and FascistLogging #SyslogFacility AUTH SyslogFacility AUTHPRIV #LogLevel INFO # Authentication: #LoginGraceTime 2m #PermitRootLogin yes #StrictModes yes #MaxAuthTries 6 #MaxSessions 10 #RSAAuthentication yes #PubkeyAuthentication yes #AuthorizedKeysFile .ssh/authorized_keys #AuthorizedKeysCommand none #AuthorizedKeysCommandRunAs nobody # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts #RhostsRSAAuthentication no # similar for protocol version 2 #HostbasedAuthentication no # Change to yes if you don't trust ~/.ssh/known_hosts for # RhostsRSAAuthentication and HostbasedAuthentication #IgnoreUserKnownHosts no # Don't read the user's ~/.rhosts and ~/.shosts files #IgnoreRhosts yes # To disable tunneled clear text passwords, change to no here! #PasswordAuthentication yes #PermitEmptyPasswords no PasswordAuthentication yes # Change to no to disable s/key passwords #ChallengeResponseAuthentication yes ChallengeResponseAuthentication no # Kerberos options #KerberosAuthentication no #KerberosOrLocalPasswd yes #KerberosTicketCleanup yes #KerberosGetAFSToken no #KerberosUseKuserok yes # GSSAPI options #GSSAPIAuthentication no GSSAPIAuthentication yes #GSSAPICleanupCredentials yes GSSAPICleanupCredentials yes #GSSAPIStrictAcceptorCheck yes #GSSAPIKeyExchange no # Set this to 'yes' to enable PAM authentication, account processing, # and session processing. If this is enabled, PAM authentication will # be allowed through the ChallengeResponseAuthentication and # PasswordAuthentication. Depending on your PAM configuration, # PAM authentication via ChallengeResponseAuthentication may bypass # the setting of "PermitRootLogin without-password". # If you just want the PAM account and session checks to run without # PAM authentication, then enable this but set PasswordAuthentication # and ChallengeResponseAuthentication to 'no'. #UsePAM no UsePAM yes # Accept locale-related environment variables AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS #AllowAgentForwarding yes #AllowTcpForwarding yes #GatewayPorts no #X11Forwarding no X11Forwarding yes #X11DisplayOffset 10 #X11UseLocalhost yes #PrintMotd yes #PrintLastLog yes #TCPKeepAlive yes #UseLogin no #UsePrivilegeSeparation yes #PermitUserEnvironment no #Compression delayed #ClientAliveInterval 0 #ClientAliveCountMax 3 #ShowPatchLevel no #UseDNS yes #PidFile /var/run/sshd.pid #MaxStartups 10:30:100 #PermitTunnel no #ChrootDirectory none # no default banner path #Banner none # override default of no subsystems Subsystem sftp /usr/libexec/openssh/sftp-server # Example of overriding settings on a per-user basis #Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # ForceCommand cvs server

 

1. 端口:Port 22

設置sshd 監聽端口號

# SSH 預設使用 22 這個port,也可使用多個port,即重複使用 port 這個設定項目!

# 例如想要開放 sshd 端口爲 22和 222 ,則多加一行內容爲: Port 222 便可

# 而後從新啓動 sshd 這樣就行了。 建議修改 port number 爲其它端口。防止別人暴力破解。

 

eg:修改sshd服務默認監聽的端口爲222

vim /etc/ssh/sshd_config 

 

將Port 22修改成Port 222

 

重啓sshd服務: service sshd restart

測試sshd服務的端口是否已經改變了: netstat -tlunp | grep sshd

 

修改完端口默認端口後,登陸方法:

ssh -p 222 192.168.31.76   #-p後面跟的就是修改後的端口號。

 

2. 設置sshd 服務器綁定的本地IP 地址。

  當本地有多個網卡時,就會出現多個ip地址,能夠選擇一個ip地址做爲sshd服務器的ip地址。

   固然了,0.0.0.0 表示本地全部的ip地址。

 

 ListenAddress 是監聽本地ip地址的,而不是遠端ip地址的。

這個值能夠寫成本地某一個 ip地址或全部地址(0.0.0.0)。

 #Protocol 2  

 選擇的 SSH 協議版本,能夠是 1 也能夠是 2 ,CentOS 5.x 預設是僅支援 V2。出於安全考慮,設置爲最新的協議版本

#HostKey /etc/ssh/ssh_host_key

設置包含計算機私人密匙的文件

#SyslogFacility AUTHPRIV

 當有人使用 SSH 登入系統的時候,SSH 會記錄信息,這個信息要記錄的類型爲AUTHPRIV。

 

在這個配置文件中,沒有看到登陸系統的默認日誌存放路徑,那麼登陸系統的默認日誌存放在哪?

sshd服務日誌存放在: /var/log/secure 。

ls /var/log/secure 

例: 爲何sshd配置文件中沒有指定日誌,但日誌卻存放在了: /var/log/secure ?

 vim /etc/rsyslog.conf 

 

就是在這個/etc/rsyslog.conf定義了sshd服務日誌的存放路徑。

#LogLevel INFO

# 登陸記錄的等級!INFO級別以上。

 

3.下面是安全調優的重點:

#LoginGraceTime 2m       

# 當使用者連上 SSH server 以後,會出現輸入密碼的畫面

# 在多久時間內沒有成功連上 SSH server 就強迫斷線!若無單位則默認時間爲秒!

能夠根據實際狀況來修改實際

 

# PermitRootLogin yes

#是否容許 root 登入!預設是容許的,可是建議設定成 no !

真實的生產環境服務器,是不容許root帳號登錄的!!!

 

#PasswordAuthentication yes

# 密碼驗證固然是須要的!因此這裏寫 yes,也能夠設置爲no

#在真實的生產服務器上,根據不一樣安全級別要求,有的是設置不須要密碼登錄的,經過認證的祕鑰來登錄

 

# PermitEmptyPasswords no

# 若上面那一項若是設定爲 yes 的話,這一項就最好設定爲 no ,

# 這個項目在是否容許以空的密碼登入!固然不準!

 

# PrintMotd yes

# 登入後是否顯示出一些信息呢?例如上次登入的時間、地點等等,預設是 yes

# 亦便是打印出 /etc/motd 這個文檔的內容。

例:給sshd服務添加一些警告信息

 

#服務器端: [root@xiaolyu76 ~]# cat /etc/motd [root@xiaolyu76 ~]# echo 'Warning ! From now on, all of your operations have been recorded!'> /etc/motd #客戶端: [root@xiaolyu77 ~]# ssh -p222 xiaolyu76 root@xiaolyu76's password: 
Last login: Mon Sep 19 02:08:16 2016 from xiaolyu77 Warning ! From now on, all of your operations have been recorded!

# PrintLastLog yes

# 顯示上次登入的信息!預設也是 yes !實際生產上也是yes!  從上面能夠明顯的看到這個參數的效果。

 

# UseDNS yes

#通常來講,爲了要判斷客戶端來源是正常合法的,所以會使用 DNS 去反查客戶端的主機名

 # 不過若是是在內網互連,這項目設定爲 no 會讓聯機速度比較快。

相關文章
相關標籤/搜索