SSH、DHCP和Telnet服務

SSH、DHCP和Telnet服務

一、Linux下兩大服務

1.1 獨立服務

  • 獨立的進程和獨立的啓動腳本

  • 啓動方式

    /etc/init.d/xxx start 或者 /etc/rc.d/init.d/xxx start 或者service xxx start

1.2 依賴服務

注意:RHEL7/Centos7服務的管理方式不一樣.

  • 沒有獨立的啓動腳本,依賴於xinetd服務(xinetd服務本身是一個獨立服務)

  • 啓動方式

    必須啓動xinetd服務

1.3 什麼是xinetd服務?

  • Extended internet daemon(擴展的網絡守護進程),又叫超級Internet服務,常用來管理多種輕量級Internet服務;

  • 作用:喚醒在睡覺的服務,由xinetd管理的服務只有在用到的時候才被喚醒,平時不佔用系統資源;支持Tcp_Wrappers一種安全策略機制。

    TCP_Wrappers簡介:

    TCP_Wrappers是一個工作在應用層的安全工具,它只能針對某些具體的應用或者服務起到一定的防護作用。比如說ssh、FTP等服務的請求,都會先受到TCP_Wrappers的攔截。

    TCP_Wrappers工作原理:

    TCP_Wrappers有一個守護進程叫作tcpd。以ssh爲例,每當有ssh的連接請求時,tcpd即會截獲請求,先讀取系統管理員所設置的訪問控制文件/etc/hosts.allow和/etc/hosts.deny;合乎要求,則會把這次連接原封不動的轉給真正的sshd進程,sshd完成後續工作;如果這次連接發起的ip不符合訪問控制文件中的設置,則會中斷連接請求,拒絕提供ssh服務。

二、 SSH服務

2.1 介紹

  • SSH是Linux下遠程管理的工具,相比Telnet安全,運維人員必備的神器!
  • SSH的全稱Secure Shell,安全的shell,是Client/Server架構,默認端口號爲22,TCP/IP協議
  • SSH其實用於商業,而OpenSSH即爲開源的,在Linux中默認安裝
  • SSH有v1和v2版本
    • ssh v1:有漏洞,容易受到攻擊
    • ssh v2:通過公鑰加密(數字簽名和密鑰交換)的方式進行,確保服務器端的身份識別

2.2 SSH加密算法

  • des 對稱的公鑰加密算法,安全低,數據傳輸速度快;使用同一個祕鑰進行加密或解密

  • rsa 非對稱的公鑰加密算法,安全,數據傳輸速度慢 ,SSH默認的加密算法

補充瞭解:

DSA數字簽名,非對稱加密的另一種實現。

2.3 SSH服務的認證方式

  • 基於用戶密碼的認證
[root@client ~]# ssh 192.168.10.171

The authenticity of host '192.168.10.171 (192.168.10.171)' can't be established.
RSA key fingerprint is 9f:71:de:3c:86:25:dd:f0:06:78:ab:ba:96:5a:e4:95.
Are you sure you want to continue connecting (yes/no)?

提示信息:無法確認主機192.168.10.171的真實性,指紋是9f:71:de:3c:86:25:dd:f0:06:78:ab:ba:96:5a:e4:95.,你確定想要繼續嗎?

說明: 理論上應該是對公鑰的確認,由於公鑰通過RSA算法加密,太長,不好直接比較,所以給公鑰生成一個hash的指紋,方便比較。

Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.10.171' (RSA) to the list of known hosts.
root@192.168.10.171's password: 

說明:

當客戶端輸入yes確認對方的公鑰指紋後,server端的公鑰就會被存放到客戶機的用戶家目錄裏~/.ssh/known_hosts 文件中,下次再訪問就直接通過密碼登錄,不需要再確認公鑰。

  • SSH工具指定用戶名訪問
[stu1@client ~]$ ssh [email protected]              //方式一 用@
root@192.168.10.171's password: 
Last login: Mon Apr 16 15:12:45 2018 from 192.168.10.171
[root@client ~]# exit
logout
Connection to 192.168.10.171 closed.

[stu1@client ~]$ ssh -l root 192.168.10.171           //方式二 用-l
root@192.168.10.171's password: 
Last login: Mon Apr 16 15:18:59 2018 from 192.168.10.171
[root@client ~]# exit
logout
Connection to 192.168.10.171 closed.

[stu1@client ~]$ ssh -lstu2 192.168.10.171            //方式三 -l用戶名
stu2@192.168.10.171's password: 
  • 基於祕鑰對的認證(免密碼登錄)

重點:公鑰和私鑰在客戶端,服務端得到客戶端的公鑰後生成隨機數給客戶端,客戶端驗證後建立連接。不用賬號、密碼驗證。

  • 相關文件解讀:

    1. id_rsa:保存私鑰
    2. id_rsa.pub:保存公鑰
    3. authorized_keys:保存已授權的客戶端公鑰
    4. known_hosts:保存已認證的遠程主機公鑰

2.4 SSH的基本配置

  • client端生成一對祕鑰
  • 將生成的公鑰遠程拷貝到server端

步驟:

  1. client端的user01用戶生成一對祕鑰對
[root@client ~]# useradd user01
[root@client ~]# su - user01
[user01@client ~]$ ls -a
.  ..  .bash_logout  .bash_profile  .bashrc  .emacs  .gnome2  .mozilla

[user01@client ~]$ ssh-keygen

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user01/.ssh/id_rsa): 
Created directory '/home/user01/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/user01/.ssh/id_rsa.
Your public key has been saved in /home/user01/.ssh/id_rsa.pub.
The key fingerprint is:
df:5b:4f:f8:26:38:0f:5f:f0:df:4c:78:54:bd:94:9e user01@client
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                o|
|               oo|
|              o +|
|        S     .E.|
|         . .   * |
|          . o.+ *|
|            o=.O+|
|            .ooo*|
+-----------------+

[user01@client ~]$ 
[user01@client ~]$ ls .ssh/
id_rsa(私鑰)  id_rsa.pub(公鑰)

2 . 將剛剛生成的公鑰遠程拷貝到server端的root家目錄裏指定位置

[user01@client ~]$ scp .ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys
或者
[user01@client ~]$ ssh-copy-id -i .ssh/id_rsa.pub [email protected] (推薦)//會自動幫助拷貝到目的地並且重命名,所以推薦

The authenticity of host '192.168.10.171(192.168.10.171)' can't be established.
RSA key fingerprint is 9f:71:de:3c:86:25:dd:f0:06:78:ab:ba:96:5a:e4:95.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.10.171' (RSA) to the list of known hosts.
[email protected]'s password: 
Now try logging into the machine, with "ssh '[email protected]'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

補充:如果拷貝出錯可以關閉selinux
[root@server ~]# getenforce 
Enforcing   //強制模式
[root@server ~]# setenforce 0
[root@server ~]# getenforce 
Permissive  //警告模式

server端查看:
[root@server .ssh]# ls
authorized_keys
[root@server .ssh]# cat authorized_keys 

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAssRLeKnKiLRZ2NbGi/uIZD1IpTnvMqFdKXEUlLH+Eli2PkxamDAszQVf7dsn2FHxCptzL04tDEdqWJ1Nr3zTDyjha9gfHWu6AuXAzaX9gWVIt8qza+yJSxpuoam3OwC6y88HMxvTuYy3jkL/6aCk6b5wzhKUYXwvTKwRctb/dO/9GC22CsmPvLHyFH+CpzmdcG2BzlOkg05CVshDIJSJ2Xmaj7G6m+N2cN4m/NV61rXPHn93wwdFcdNQLlRjDvZ6s7UIgmD04497PKUxJ/hTgkm6p3kAGxESEc0JxYHTGnhVE5D6byfRd0Aa/ydBiSov1x5a6vniGQeUh2+NP6omUQ== user01@client

3.測試驗證

[user01@client ~]$ ssh root@192.168.10.171
Last login: Mon Apr 16 16:00:55 2018 from 192.168.10.171
[root@server ~]# 

注意:是客戶端將祕鑰複製給服務端,然後客戶端登錄服務端。

2.5 用戶登錄控制

1. 禁止遠程登錄

  • 瞭解軟件相關知識
[root@server ~]# rpm -ql openssh-server
/etc/rc.d/init.d/sshd       //啓動腳本
/etc/ssh/sshd_config        //配置文件
/usr/sbin/sshd              //二進制命令

[root@server ~]# rpm -ql openssh-clients
/etc/ssh/ssh_config
/usr/bin/scp
/usr/bin/sftp
/usr/bin/slogin
/usr/bin/ssh
/usr/bin/ssh-add
/usr/bin/ssh-agent
/usr/bin/ssh-copy-id
/usr/bin/ssh-keyscan

[root@server ~]# rpm -qf /usr/bin/ssh-keygen 
openssh-5.3p1-94.el6.x86_64
  • 步驟:
[root@server ~]# vim /etc/ssh/sshd_config

。。。

PermitRootLogin no

重啓服務:

[root@server ~]# service sshd restart

Stopping sshd:                                             [  OK  ]

Starting sshd:                                             [  OK  ]


測試驗證:

  [root@client ~]# ssh 192.168.10.171

  root@192.168.10.171's password: 

  Permission denied, please try again.

  [email protected]'s password: 

2. 修改默認端口號

[root@server ~]# vim /etc/ssh/sshd_config
。。。
Port 10022

測試驗證:
[root@client Desktop]# ssh -p10022 [email protected]
ssh: connect to host 192.168.10.171 port 10022: No route to host        //路由無法到達
原因:
1、 網絡問題
2、 防火牆
解決:
關閉防火牆

注意: /etc/services 中也記錄了一些協議的端口信息,可能會與配置文件中信息衝突,但是以配置文件爲主,如果端口信息更改失效,可以嘗試修改此文件,或刪除此文件中衝突信息。

3. ssh服務的遠程訪問控制

  • 可以使用tcp_wrappers工具做網絡控制

    /etc/hosts.allow/etc/hosts.deny

  • 如何判斷一個服務支持TCP_wrappers功能

    rpm包安裝的服務:

    [root@server ~]# ldd /usr/sbin/sshd |grep libwrap    
    libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fbb65b57000)
    //有以上模塊說明支持

    源碼包:

    ./configuer --enable-libxxxx //配置的時候開啓功能

    需求:

    不允許192.168.10.170服務器來遠程訪問

    vim /etc/hosts.deny
    
    sshd:192.168.10.170
    
    //該文件寫法如下:更多參考man文檔
    sshd:192.168.10.0/255.255.255.0 EXCEPT 192.168.10.170
    
    sshd,vsftpd:.yu.net EXCEPT review.yu.net
    
    測試驗證:
    [root@client ~]# ssh [email protected] -p 10022
    ssh_exchange_identification: Connection closed by remote host

三、DHCP

3.1 DHCP服務介紹

  • DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)是一個局域網的網絡協議,UDP協議,67號端口
  • 主要用於動態管理分配IP地址

過程分析:

  • dhcpdiscover(發現):該過程中客戶端開始建立請求,以0.0.0.0作爲自己的ip地址而以255.255.255.255(廣播地址)作爲服務器的地址,等待DHCP服務器響應。
  • dhcpoffer(提供):當網絡中的dhcp服務器收到dhcpdiscover信息後,對自身進行檢查,併發送相應的地址。服務器發送給請求客戶機的信息中主要包含了ip地址、子網掩碼、租約和提供dhcp服務的服務器的ip。
  • dhcprequset(請求):當dhcp客戶收到服務器的返回信息後,就以廣播的方式發送一個dhcp請求信息給本網絡中的存在或不存在的其他的dhcp服務器,該信息中包含了已選擇的dhcp服務器的ip地址。
  • dhcpack(確認):一旦被選中的dhcp收到客戶端的請求信息後,就將以保留的這個ip標識爲以租用,然後廣播的方式發送一個dhcpack信息給dhcp客戶端,當客戶端收到了確認信息後就完成了整個的獲取ip的過程。

3.2 DHCP服務器配置

  • 安裝軟件
[root@review1 ~]# yum -y install dhcp
[root@review1 ~]# rpm -ql dhcp
/etc/dhcp
/etc/dhcp/dhcpd.conf    //主配置文件
/etc/rc.d/init.d/dhcpd  //啓動腳本
/usr/sbin/dhcpd         //二進制命令
  • 修改配置文件
vim /etc/dhcp/dhcpd.conf
option domain-name "yu.net";            //域名
option domain-name-servers 192.168.10.11, 8.8.8.8;  //DNS(可以寫多個)
default-lease-time 3600;        //缺省租約
max-lease-time 7200;            //客戶端最大租約
log-facility local7;            //定義日誌設備載體 (/var/log/boot.log輸出)

subnet 192.168.10.0 netmask 255.255.255.0 {   //子網<網段>
  range 192.168.10.20 192.168.10.50;            //地址範圍<地址池>
  option routers 192.168.10.11;             //網關
  option broadcast-address 192.168.10.255   //廣播地址
}
//注意:地址池中的IP要與DHCP服務器的IP在同一個網段,不然客戶機在求取IP時找不到DHCP服務器

[root@review1 ~]# service dhcpd start
Starting dhcpd:                                            [OK]

四、Telnet服務

4.1 Telnet服務介紹

  • telnet遠程管理服務,TCP協議 23號端口
  • telnet服務是依賴服務,由xinetd服務管理
  • 通過明文的帳號與密碼傳輸,不安全,不適用於類unix系統
  • Linux系統默認不使用telnet,使用ssh

4.2 Telnet服務搭建

[root@review1 xinetd.d]# yum -y install telnet-server  xinetd  //安裝telnet-server(注意這是服務端,客戶端安裝telnet) 和xinetd 

# cat /etc/xinetd.conf                //主配置文件,輕易不修改,改變後會影響所有託管於xinetd的服務。

defaults
{
    log_type    = SYSLOG daemon info   //--日誌類型,表示使用syslog進行服務登記。
    log_on_failure  = HOST                 //--失敗日誌,失敗後記錄客戶機的IP地址。
    log_on_success  = PID HOST DURATION EXIT  //--成功日誌,記錄客戶機的IP地址和進程ID
    cps     = 50 10  //表示每秒50個連接,如果超過限制,則等待10秒。主要用於對付拒絕服務攻擊。
    instances   = 50  //最大連接數
    per_source  = 10  //每個IP地址最大連接數
    v6only      = no  //不使用ipv6
    groups      = yes  //確定該服務的進程組ID,/etc/group
    umask       = 002  //文件生成碼反掩碼   666(664) 777(775)
}
includedir /etc/xinetd.d  //外部調用的目錄


# cat /etc/xinetd.d/telnet   //子配置文件

# default: on
# description: The telnet server serves telnet sessions; it uses \
#       unencrypted username/password pairs for authentication.
service telnet
{
        disable = no                    //默認開啓服務,=yes表示關閉
        flags           = REUSE         //標記
        socket_type     = stream        //tcp協議
        wait            = no            //表示不需等待,即服務將以多線程的方式運行,併發連接;yes表示單線程
        user            = root          //以root身份啓動該進程
        server          = /usr/sbin/in.telnetd   //二進制命令
        log_on_failure  += USERID       //表示設置失敗時,UID添加到系統登記表
}

注:不能用root登錄,telnet連接不加密,telnet服務自己拒絕root連接

[root@review2 ~]# telnet 192.168.10.11
Trying 192.168.10.11...
Connected to 192.168.10.11.
Escape character is '^]'.
CentOS release 6.5 (Final)
Kernel 2.6.32-431.el6.x86_64 on an x86_64
login: root
Password: 
Login incorrect

login: test1     
Password: 
[test1@review1 ~]$ 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章