sshd服務安裝-ssh命令使用方法
文章目錄
SSHD服務
介紹:
SSH 協(xié)議:
作用:
需要安裝OpenSSH 四個安裝包:
安裝方法有兩種:
配置yum源,通過
設置開機自動掛載系統(tǒng)鏡像文件
本地直接安裝rpm包文件:
查看軟件安裝生產的文件:
OpenSSH配置文件
如何使用ssh來遠程連接主機:
SSHD服務防止暴力破解
方法一、
方法二:通過開源的防護軟件來防護安全
SSHD服務
介紹:
SSH 協(xié)議:
安全外殼協(xié)議。為 Secure Shell 的縮寫。SSH 為建立在應用層和傳輸層基礎上的安全協(xié)議。
作用:
sshd服務使用SSH協(xié)議可以用來進行遠程控制, 或在計算機之間傳送文件
相比較之前用telnet方式來傳輸文件要安全很多,因為telnet使用明文傳輸,是加密傳輸。
服務安裝:
需要安裝OpenSSH 四個安裝包:
OpenSSH軟件包,提供了服務端后臺程序和客戶端工具,用來加密遠程控件和文件傳輸過程中的數據,并由此來代替原來的類似服務。
安裝包:
OpenSSH服務需要4 個軟件包 openssh-5.3p1-114.el6_7.x86_64:包含OpenSSH服務器及客戶端需要的核心文件 openssh-clients-5.3p1-114.el6_7.x86_64:OpenSSH客戶端軟件包 openssh-server-5.3p1-114.el6_7.x86_64:OpenSSH服務器軟件包 openssh-askpass-5.3p1-114.el6_7.x86_64:支持對話框窗口的顯示,是一個基于X 系統(tǒng)的密碼
1
2
3
4
5
這四個軟件包在我們的RHEL鏡像軟件安裝包里有。
[root@localhost ~]# ls /mnt/cdrom/Packages/openssh* #自己的光盤掛載目錄 /mnt/cdrom/Packages/openssh-7.4p1-11.el7.x86_64.rpm /mnt/cdrom/Packages/openssh-askpass-7.4p1-11.el7.x86_64.rpm /mnt/cdrom/Packages/openssh-clients-7.4p1-11.el7.x86_64.rpm /mnt/cdrom/Packages/openssh-keycat-7.4p1-11.el7.x86_64.rpm /mnt/cdrom/Packages/openssh-server-7.4p1-11.el7.x86_64.rpm [root@localhost ~]#
1
2
3
4
5
6
7
8
找到軟件包存放位置之后,下面我們來安裝軟件包:
安裝方法有兩種:
yum install openssh openssh-clients openssh-server -y 來安裝 前提:系統(tǒng)以及配置好yum源,(本地源or網絡源) 推薦用yum來安裝
1
2
3
4
echo“/dev/cdrom /media/cdrom iso9660 defaults 0 0”>>/etc/fstab
你的光驅設備 掛載點 掛載格式 默認 默認
rpm –ivh /media/cdrom/Packages/openssh*.rpm 可能需要解決依賴關系
1
2
3
rpm –ql openssh /etc/ssh /etc/ssh/moduli /usr/bin/ssh-keygen /usr/libexec/openssh /usr/libexec/openssh/ssh-keysign /usr/share/doc/openssh-5.3p1
1
2
3
4
5
6
7
8
OpenSSH配置文件
OpenSSH常用配置文件有兩個/etc/ssh/ssh_config和/etc/sshd_config。 ssh_config為客戶端配置文件 sshd_config為服務器端配置文件
1
2
3
4
服務啟動關閉腳本:
[root@localhost ~]# systemctl stop|restart|start sshd
1
2
開機啟動服務:
[root@localhost ~]# chkconfig sshd on # 6版本 [root@localhost ~]# systemctl enable sshd # 7 版本 [root@localhost ~]#
1
2
3
如何使用ssh來遠程連接主機:
方法一、
ssh [遠程主機用戶名] @[遠程服務器主機名或IP地址]:
[root@localhost ~]# ssh root@192.168.170.14 The authenticity of host '192.168.170.14 (192.168.170.14)' can't be established. ECDSA key fingerprint is SHA256:nnfwBTJ/q92m4MGlb6HOdwbx0dJXCMAX1llYmqEADJI. ECDSA key fingerprint is MD5:31:00:86:ea:c5:b8:9b:86:93:58:33:90:3f:50:9a:58. Are you sure you want to continue connecting (yes/no)? yes #這里輸入yes Warning: Permanently added '192.168.170.14' (ECDSA) to the list of known hosts. root@192.168.170.14's password: #這里輸入你的密碼 Last login: Fri Sep 6 22:07:09 2019 from 192.168.170.1 [root@localhost ~]#
1
2
3
4
5
6
7
8
9
10
11
第一次登錄服務器時系統(tǒng)沒有保存遠程主機的信息,為了確認該主機身份會提示用戶是否繼續(xù)連
接,輸入yes 后登錄,這時系統(tǒng)會將遠程服務器信息寫入用戶主目錄下的$HOME/.ssh/known_hosts文件中,下次再進行登錄時因為保存有該主機信息就不會再提示了
RSA算法基于一個十分簡單的數論事實:將兩個大素數相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。
方法二、
ssh -l [遠程主機用戶名] [遠程服務器主機名或IP 地址] [root@localhost ~]# ssh -l root 192.168.170.14 The authenticity of host '192.168.170.14 (192.168.170.14)' can't be established. ECDSA key fingerprint is SHA256:nnfwBTJ/q92m4MGlb6HOdwbx0dJXCMAX1llYmqEADJI. ECDSA key fingerprint is MD5:31:00:86:ea:c5:b8:9b:86:93:58:33:90:3f:50:9a:58. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.170.14' (ECDSA) to the list of known hosts. root@192.168.170.14's password: Last login: Fri Sep 6 22:41:59 2019 from 192.168.170.13 [root@localhost ~]#
1
2
3
4
5
6
7
8
9
10
11
12
13
1.3、sshd服務配置和管理
介紹下配置文件,以及需要安全調優(yōu)的地方
注:參數前面有#,表示是默認值。 當然#號也表示注示。
/etc/ssh/sshd_config配置文件
設置sshd監(jiān)聽端口號 選擇的 SSH 協(xié)議版本,可以是 1 也可以是 2 安全考慮,設置為最新的協(xié)議版本 #LogLevel INFO # 登錄記錄的等級!INFO級別以上 LoginGraceTime 2m #grace 優(yōu)雅 登錄超時時間 PermitRootLogin yes #是否允許 root 登入!預設是允許的,但是建議設定成 no ! 真實的生產環(huán)境服務器,是不允許root賬號直接登陸的!!! PasswordAuthentication yes # 密碼驗證當然是需要的!所以這里寫 yes,也可以設置為no PrintMotd yes # 登錄提示,警告等 PrintLastLog yes # 顯示上次登入的信息!預設也是 yes ! UseDNS yes #一般來說,為了要判斷客戶端來源是正常合法的,因此會使用 DNS 去反查客戶端的主機名 PermitEmptyPasswords no # 若上面那一項如果設定為 yes 的話,這一項就最好設定為 no
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
SSH 預設使用 22 這個port,也可以使用多個port,即重復使用 port 這個設定項目!
例如想要開放sshd端口為 22和222,則多加一行內容為: Port 222 即可
然后重新啟動sshd這樣就好了。 建議大家修改 port number 為其它端口。防止別人暴力破解。
修改完端口默認端口后,登錄方法:
root@localhost ~]# ssh -p 222 192.168.14 ListenAddress 0.0.0.0 設置sshd服務器綁定的IP 地址,0.0.0.0 表示偵聽所有地址 這個值可以寫成本地IP地址也可以寫成所有地址 #HostKey /etc/ssh/ssh_host_key 設置包含計算機私人密匙的文件 SyslogFacility AUTHPRIV
1
2
3
4
5
6
7
8
9
當有人使用 SSH 登入系統(tǒng)的時候,SSH 會記錄信息,這個信息要記錄的類型為AUTHPRIV。
sshd服務日志存放在: /var/log/secure 。
SSHD服務防止暴力破解
防止暴力破解的方法有三種:
方法一、
配置安全的sshd服務 1、 密碼足夠的復雜,密碼的長度要大于8位最好大于20位。密碼的復雜度是密碼要盡可能有數字、大小寫字母和特殊符號混合組成, 2、修改默認端口號 3 、不允許root賬號直接登陸,添加普通賬號,授予root的權限 互動:是否可以禁止root身份登錄? 不行,因為有些程序需要使用root身份登錄并運行。另外判斷一個用戶是不是超級管理員,看的是用戶的ID是否為0。 4、不允許密碼登陸,只能通過認證的秘鑰來登陸系統(tǒng)
1
2
3
4
5
6
通過密鑰認證實現(xiàn)sshd認證
實驗環(huán)境:
客戶端生成密鑰對,然后把公鑰傳輸到服務端
[root@client_13 ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): #提示輸入保存路徑,一般默認 Enter passphrase (empty for no passphrase): 求輸入密碼,這里的passphrase 密碼是對生成的私匙文件,下面要(/root/.ssh/id_dsa) Enter same passphrase again: 在輸入一次 Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:nmDdBbg/oR6hgAXuND4+fGup/pa7IDwPZzDJLf4flEQ root@client_13 The key's randomart image is: +---[RSA 2048]----+ | .. E .. | | . o . . | | +o . . . | |.++.o ..o... | | *+. +o.S+.. | |oo+....oo.o | |.==o.+ .o. . | | .B+=.. . | | .oB*+ | +----[SHA256]-----+ [root@client_13 ~]# [root@client_13 ~]# cd /root/.ssh/ #查看生成的秘鑰 [root@client_13 .ssh]# ls id_rsa id_rsa.pub known_hosts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
發(fā)布公鑰到服務端:
使用ssh-copy-id 命令將客戶端生成的公鑰發(fā)布到遠程服務器192.168.170.14
[root@client_13 .ssh]# ssh-copy-id -i 192.168.170.14 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@192.168.170.14's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh '192.168.170.14'" and check to make sure that only the key(s) you wanted were added. [root@client_13 .ssh]#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#這個時候可以通過ssh 無密鑰直接登陸主機
[root@client_13 .ssh]# ssh -l root 192.168.170.14 Last login: Fri Sep 6 22:47:01 2019 from 192.168.170.14 [root@client_13 ~]#
1
2
3
4
5
注意:如果服務器不是監(jiān)聽22端口,則需要這樣傳輸密鑰:
ssh-copy-id -i ~/.ssh/id_rsa.pub “-p 222 root@192.168.0.63”
方法二:通過開源的防護軟件來防護安全
簡單、靈活、功能強大
實戰(zhàn)背景:
最近公網網站一直被別人暴力破解sshd服務密碼。雖然沒有成功,但會導致系統(tǒng)負載很高,原因是在暴力破解的時候,系統(tǒng)會不斷地認證用戶,從而增加了系統(tǒng)資源額外開銷,導致訪問公司網站速度很慢。
fail2ban可以監(jiān)視你的系統(tǒng)日志,然后匹配日志的錯誤信息(正則式匹配)執(zhí)行相應的屏蔽動作(一般情況下是防火墻),而且可以發(fā)送e-mail通知系統(tǒng)管理員,很好、很實用、很強大!
#ban (b?n)禁令
簡單來說其功能就是防止暴力破解。工作的原理是通過分析一定時間內的相關服務日志,將滿足動作的相關IP利用iptables加入到dorp列表一定時間。
注:重啟iptables服務的話,所有DORP將重置。
下載軟件包: 官方地址: http://www.fail2ban.org http://www.fail2ban.org/wiki/index.php/Downloads
1
2
3
4
HostKey /etc/ssh/ssh_host_rsa_key # SSH version 2 使用的 RSA 私鑰
HostKey /etc/ssh/ssh_host_dsa_key # SSH version 2 使用的 DSA 私鑰
注:
RSA 是一種非對稱加解密算法。
RSA 與 DSA 都是非對稱加密算法。其中RSA的安全性是基于極其困難的大整數的分解(兩個素數的乘積);
DSA 的安全性是基于整數有限域離散對數難題。基本上可以認為相同密鑰長度的 RSA 算法與 DSA 算法安全性相當。
公鑰用于加密,它是向所有人公開的;私鑰用于解密,只有密文的接收者持有。
ServerKeyBits 1024 #定義服務器密匙長度
安裝:
互動這個陌生的軟件包如何安裝?
解壓查看readme文件
[root@localhost ~]#tar -zxvf fail2ban-0.8.14.tar.gz [ root@localhost fail2ban-0.8.14]# vim README.md #查看以下內容
1
2
3
需要安裝python開發(fā)環(huán)境,并且版本要大于2.4
查看當前系統(tǒng)中python的版本:
[root@localhost fail2ban-0.8.14]# python -V Python 2.6.6 安裝: [root@server_14 ~]#cd fail2ban-0.8.14 [root@loaclhost fail2ban-0.8.14]#python setup.py install
1
2
3
4
5
6
相關主要文件說明:
/etc/fail2ban/action.d #動作文件夾,內含默認文件。iptables以及mail等動作配置
/etc/fail2ban/fail2ban.conf #定義了fai2ban日志級別、日志位置及sock文件位置
/etc/fail2ban/filter.d #條件文件夾,內含默認文件。過濾日志關鍵內容設置
/etc/fail2ban/jail.conf #主要配置文件,模塊化。主要設置啟用ban動作的服務及動作閥值
jail [d?e?l]監(jiān)獄
生成服務啟動腳本: [root@localhost fail2ban-0.8.14]# pwd /root/fail2ban-0.8.14 [root@localhost fail2ban-0.8.14]# cp files/redhat-initd /etc/rc.d/init.d/fail2ban [root@localhost fail2ban-0.8.14]#chkconfig --add fail2ban #開機自動啟動
1
2
3
4
5
6
7
互動: 你怎么知道要復制這個文件? 一個新的軟件包,后期怎么可以知道哪個文件是啟動腳本文件?
這就要找服務器啟動腳本文件中有什么特點,然后過濾出來對應的文件名。
[root@localhost fail2ban-0.8.14]# grep chkconfig ./* -R --color ./files/redhat-initd:# chkconfig: - 92 08
1
2
3
啟動腳本里都包含chkconfig 字段
應用實例
設置條件:ssh遠程登錄5分鐘內3次密碼驗證失敗,禁止用戶IP訪問主機1小時,1小時該限制自動解除,用戶可重新登錄。
因為動作文件(action.d/iptables.conf)以及日志匹配條件文件(filter.d/sshd.conf )安裝后是默認存在的。基本不用做任何修改。所有主要需要設置的就只有jail.conf文件。啟用sshd服務的日志分析,指定動作閥值即可。
實例文件/etc/fail2ban/jail.conf及說明如下:
[DEFAULT] #全局設置 ignoreip = 127.0.0.1/8 #忽略的IP列表,不受設置限制 bantime = 600 #屏蔽時間,單位:秒 findtime = 600 #這個時間段內超過規(guī)定次數會被ban掉 maxretry = 3 #最大嘗試次數 backend = auto #日志修改檢測機制(gamin、polling和auto這三種) [ssh-iptables] #單個服務檢查設置,如設置bantime、findtime、maxretry和全局沖突,服務優(yōu)先級大于全局設置。 enabled = true #是否激活此項(true/false)修改成 true filter = sshd #過濾規(guī)則filter的名字,對應filter.d目錄下的sshd.conf action = iptables[name=SSH, port=ssh, protocol=tcp] #動作的相關參數,對應action.d/iptables.conf文件 sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.c om, sendername="Fail2Ban"]#觸發(fā)報警的收件人 logpath = /var/log/secure #檢測的系統(tǒng)的登陸日志文件。這里要寫sshd服務日志文件。 默認為logpath = /var/log/sshd.log #5分鐘內3次密碼驗證失敗,禁止用戶IP訪問主機1小時。 配置如下 bantime = 3600 #禁止用戶IP訪問主機1小時 findtime = 300 #在5分鐘內內出現(xiàn)規(guī)定次數就開始工作 maxretry = 3 #3次密碼驗證失敗
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
啟動服務:
[root@localhost fail2ban-0.8.14]# systemctl start fail2ban [root@localhost fail2ban-0.8.14]# systemctl enable fail2ban
1
2
測試:
[root@localhost fail2ban]# > /var/log/secure #清日志。 從現(xiàn)在開始 [root@loaclhost fail2ban]# systemctl restart fail2ban Stopping fail2ban: [ OK ] Starting fail2ban: [ OK ] [root@localhost fail2ban]# iptables -L -n 會多生成一個規(guī)則鏈。 測試:故意輸入錯誤密碼3次,再進行登錄時,會拒絕登錄 [root@localhost ~]# ssh 192.168.170.14 root@192.168.170.14's password: Permission denied, please try again. root@192.168.170.14's password: Permission denied, please try again. root@192.168.170.14's password: Permission denied (publickey,password). [root@xuegod64 ~]# ssh 192.168.170.14 ssh: connect to host 192.168.170.14 port 22: Connection refused [root@www.linuxidc.com ~]# iptables -L |tail -4 Chain fail2ban-SSH (1 references) target prot opt source destination DROP all -- 192.168.7.142 anywhere RETURN all -- anywhere anywhere
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
需要注意的四點:
1、如果做錯了,想清空一下記錄,還原:
只需要把 > /var/log/secure 清空就可以了。
service fail2ban restart
2、另外如果后期需要把iptables清空后或iptables重啟后,也需要把fail2ban重啟一下。
3、如果修改ssh默認端口22為2015后 。 配置fail2ban來監(jiān)控sshd服務
需要修改配置文件:
[root@xuegod63 fail2ban]# vim jail.conf
#修改iptables動作中的端口號。 默認為ssh。
改:port=ssh 為 port=2015
[root@xuegod63 fail2ban]# vim /etc/fail2ban/action.d/iptables.conf #修改動作文件中默認端口號。 改: port=ssh 為port=2015
重啟服務即可
4、如果想要使用fail2ban發(fā)送告警郵件,請確保系統(tǒng)的郵件服務能夠正常發(fā)送郵件!
可以發(fā)一封測試郵件到指定郵箱來測試下:
echo “test mail”|mail -s test wyh@qq.com
補充:
1、通過shell腳本來防止暴力破解ssh
通過自定義的shell腳本來防護安全
2、通過pam 模塊來防止暴力破解ssh
[root@xuegod63 ~]# vim /etc/pam.d/sshd 在第一行下面添加一行: auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root root_unlock_time=1200
1
2
3
說明:嘗試登陸失敗超過3次,普通用戶600秒解鎖,root用戶1200秒解鎖
手動解除鎖定:
查看某一用戶錯誤登陸次數:
pam_tally –-user
例如,查看work用戶的錯誤登陸次數:
pam_tally –-user work
清空某一用戶錯誤登陸次數:
pam_tally –-user –-reset
例如,清空 work 用戶的錯誤登陸次數,
pam_tally –-user work –-reset
3、denyhosts 軟件防護
當我們的服務器對外提供服務的時候,難免的會受到其他用戶的掃描和試圖登錄的操作,以侵入服務器,這樣不僅會浪費系統(tǒng)的資源,有可能還會被其他用戶進行N多次嘗試后登錄系統(tǒng),對系統(tǒng)造成破壞影響業(yè)務系統(tǒng)的正常運行。DenyHosts是一個使用python編寫的腳本文件,通過運行這個腳本(可以通過命令行運行、計劃任務或者是作為服務運行)可以有效的阻止對SSH服務器的攻擊。DenyHosts具有如下特性:
對/var/log/secure日志文件進行分析,查找所有的登錄嘗試,并且過濾出失敗和成功的嘗試。
2.記錄下所有失敗的登錄嘗試的用戶名和主機,如果超過閥值,則記錄主機。
3.保持對每一個登錄失敗的用戶(存在系統(tǒng)中或不存在系統(tǒng)中的用戶)的跟蹤
4.對每一個可疑的登錄進行跟蹤。(雖然登錄成功,但是有很多次登錄失敗的記錄)
5.將可疑地址的主機加入到/etc/hosts.deny文件中。
總結:
1.1、學習Linux服務前期環(huán)境準備、搭建一個RHEL7環(huán)境
1.2、sshd服務安裝-ssh命令使用方法
1.3、sshd服務配置和管理
1.4、防止SSHD服務暴力破解的幾種方式
ssh 云主機防暴力破解
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。