Linux Service and Security(Part 1)

一、知識整理

1、不安全的傳統協議:

telnetFTP、POP3等:不安全的密碼;

http、smtpNFS等:不安全信息;

Ldap、NIS、rsh等:不安全驗證。

設計基本原則:

使用成熟的安全系統;

以小人之心度輸入數據;

外部系統是不安全的;

最小授權;

減少外部接口;

缺省使用安全模式;

在入口處檢查;

安全不是似是而非;

從管理上保護好系統。

2、對稱加密算法:加密和解密使用同一個密鑰:

非對稱加密算法:密鑰成對出現,公鑰和私鑰;

功能:數字簽名:主要用于讓接收方確認發送方身份;

對稱密鑰交換:發送方用對方公鑰加密一個對稱密鑰后發送給對方;

數據加密:適合加密較小數據。

單向加密:即提出數據指紋;只能加密不能解密。

常見算式:md5:128位;sha1:160位;sha224;sha256;sha384;sha512。

3、PKIpublic key infrastructure公鑰基礎設施;

簽證機構:CA

注冊機構:RA

證書吊銷列表:CRL

證書存取庫

X.509:定義了證書的機構以及認證協議標準;

版本號;序列號;簽名算法;頒發者;有效期限;主體名稱;主體公鑰;CRL分發點;擴展信息;發行者簽名。

4、TCP/IP模型中的SSL/TLS協議:

blob.png

Handshake協議:包括協商安全參數和密碼套件、服務器身份認證(客戶端身份認證可選)、密鑰交換。

ChangeCipherSpec協議:一條消息表明握手協議已經完成。

Alert協議:對握手協議中一些異常的錯誤提醒,分為fatalwarning兩個級別,fatal類型錯誤會直接中斷SSL鏈接,而warning級別的錯誤SSL鏈接仍可繼續,只是會給出錯誤警告。

Record協議:包括對消息的分段、壓縮、消息認證和完整性保護、加密等。

HTTPS協議:就是HTTP協議和SSL/TLS協議的組合。HTTP over SSLHTTP over TLS,對http協議的文本數據進行加密處理后,成為二進制形式傳輸。

5、命令行中~再按兩下tab鍵可以列出當前系統所有用戶。

[root@centos68 CA]# ~
~abrt/   ~bin/  ~games/  ~halt/   ~nfsnobody/  ~oprofile   ~rpcuser/   ~adm  ~daemon/  ~gejingyi/ 
~lp/  ~nobody/   ~apache/ ~dbus/   ~gopher  ~mail/   ~ntp/ ~avahi-autoipd ~ftp  ~haldaemon/  ~mysql/

6、ssh連接:基于非對稱加密算法認證:

[root@localhost ~]# cd .ssh/
[root@localhost .ssh]# cat known_hosts 
10.1.252.134 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtFw7wor7A6UqsfoOnfbsbyQ9ibKAz8IHkloNYkFmPiQCFFVcic461vPyu5S5rPDIgZIhEsox7jr21WH3TvPblnBtJby4FZ4QptCt/+rdQrN2Z/fvAyrVgxbvgFe/sa/xLsPhcm/IYJYa1d4pBq3nzKb2oac9ZWMEJL9sHD3kmlTl5ff3AUG+5e8E1PQ+8Bf3e/mLsEreory6ZBuOgz/OA1uzXn+xzATD3XIE3cN5kBzvHLVK7haBhDIBspP1aGWwf3PZDydLNepLsnhZITFyCH9GxX86IXdsmI9XwJpOSYoyRTWTf3ucReEt9+g9kXG3Tv9+MBDtD850QXkKvXgPMw==

若此IP的主機更改,便警告并無法連接。當將文件中之前保留的ssh連接公鑰記錄刪除,便可繼續連接。

[root@localhost .ssh]# ssh  10.1.252.134
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
e4:17:b3:40:d1:75:78:27:2b:d5:51:eb:2a:5a:f4:0e.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending RSA key in /root/.ssh/known_hosts:1
RSA host key for 10.1.252.134 has changed and you have requested strict checking.
Host key verification failed.

當有人將服務器端的/etc/ssh/ssh_host_rsa_key的私鑰竊取并放入相同目錄,再更改IP后,便可冒充客戶端。

7、gpg實現對稱加密:

對稱加密file文件:gpg  -c file

[root@centos68 ~]# ls f1.gpg 
f1.gpg

在另一臺主機上解密filegpg  -o file -d file.gpg,然后輸入密碼解密

[root@localhost tmp]# gpg -o f1 -d f1.gpg 
gpg: 已創建目錄‘/root/.gnupg’
gpg: 新的配置文件‘/root/.gnupg/gpg.conf’已建立
gpg: 警告:在‘/root/.gnupg/gpg.conf’里的選項于此次運行期間未被使用
gpg: 鑰匙環‘/root/.gnupg/secring.gpg’已建立
gpg: 鑰匙環‘/root/.gnupg/pubring.gpg’已建立
gpg: 3DES 加密過的數據
Passphrase ****************
[root@localhost tmp]# cat f1
123654789987745321

gpg實現公鑰加密:在B主機上用公鑰加密,在A主機上解密:

A主機上生成密鑰對:

[root@localhost tmp]# gpg --gen-key
gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

A主機上查看公鑰:

[root@localhost tmp]# gpg --list-keys
/root/.gnupg/pubring.gpg
------------------------
pub   1024R/EBC6624E 2016-09-22 [有效至:2017-09-21]
uid                  gejinigyi (ge)
sub   1024R/83B9FD09 2016-09-22 [有效至:2017-09-21]

A主機上導出公鑰ge.pubkey

[root@localhost tmp]# gpg -a --export -o ge.pubkey
[root@localhost tmp]# ls
ge.pubkey

A主機上復制到B主機:

B主機上生成密鑰對(不生成也可以):

[root@localhost tmp]# gpg --gen-key
[root@localhost tmp]# gpg --list-keys
/root/.gnupg/pubring.gpg
------------------------
pub   2048R/689BEA48 2016-09-21 [expires: 2017-09-21]
uid                  gejingyi (ge)
sub   2048R/589D02E0 2016-09-21 [expires: 2017-09-21]

B主機上導入公鑰(注意:時間必須同步,否則報錯):

[root@localhost tmp]# gpg --import ge.pubkey 
gpg: key EBC6624E: public key "gejinigyi (ge)" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
[root@localhost tmp]# gpg --list-key
/root/.gnupg/pubring.gpg
------------------------
pub   2048R/689BEA48 2016-09-21 [expires: 2017-09-21]
uid                  gejingyi (ge)
sub   2048R/589D02E0 2016-09-21 [expires: 2017-09-21]
pub   1024R/EBC6624E 2016-09-22 [expires: 2017-09-21]
uid                  gejinigyi (ge)
sub   1024R/83B9FD09 2016-09-22 [expires: 2017-09-21]

加密文件,命令選項中-r之后使用公鑰名稱:

[root@localhost tmp]# gpg -e -r gejinigyi f1
gpg: 83B9FD09: There is no assurance this key belongs to the named user
pub  1024R/83B9FD09 2016-09-22 gejinigyi (ge)
 Primary key fingerprint: 61AC 5A47 FF21 D5DE 02D6  6DAD 2381 6C42 EBC6 624E
      Subkey fingerprint: BEE9 31F4 9001 184E 6CE2  F573 BD9E 9681 83B9 FD09
It is NOT certain that the key belongs to the person named
in the user ID.  If you *really* know what you are doing,
you may answer the next question with yes.
Use this key anyway? (y/N) y
[root@localhost tmp]# ls
f1  f1.gpg  ge.pubkey 
[root@localhost tmp]# file f1.gpg 
f1.gpg: data

解密文件:復制文件到A主機:

[root@localhost tmp]# gpg -d f1.gpg

輸入密碼;

[root@localhost tmp]# gpg -o f1 -d f1.gpg 
[root@localhost tmp]# ls
f1  f1.gpg  ge.pubkey

刪除公鑰和私鑰:先刪除私鑰再刪除公鑰

[root@localhost tmp]# gpg --delete-secret-keys gejinigyi
[root@localhost tmp]# gpg --delete-keys gejinigyi

8、scp命令:會覆蓋同名文件,可雙向傳輸。兩種方式:

scp [] [user@]host:/sourcefile /destpath

scp [] /sourcefile [user@]host:/destpath

-C 壓縮數據流

-r 遞歸復制

-p 保持原文件屬性信息

-q 靜默模式

-p PORT 指明remote host的監聽的端口

9、rsync命令:基于sshrsh服務實現高效率的遠程系統之間復制文件;使用安全的shell作為傳輸方式。比scp更快,只復制不同的文件。

rsync -av /etc server1:/tmp 復制目錄和目錄下的文件

rsync -av /etc/ server1:/tmp 復制目錄下的所有文件。

-n 模擬復制過程

-v 顯示詳細過程

-r 遞歸復制目錄樹

-p 保留權限

-t 保留時間戳

-g 保留組信息

-o 保留所有者信息

-l 把符號鏈接文件作為符號文件進行復制,也就是只復制鏈接文件

-L 把軟鏈接文件指向文件復制

-a 存檔模式,相當于-rlptgoD,但不保留ACL(-A)SELinux(-X)屬性。

etc目錄復制到250主機的tmp目錄下:

[root@centos68 tmp]# rsync -av /etc 10.1.54.250:/tmp

10、軟件包文件:GPG公鑰簽名:

[root@centos68 serts]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[root@centos68 serts]# rpm -K /media/cdrom/Packages/httpd-2.2.15-53.el6.centos.x86_64.rpm 
/media/cdrom/Packages/httpd-2.2.15-53.el6.centos.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

11DMZdemilitarized zone的縮寫:隔離區;非軍事化區;是為了解決安裝防火墻后外部網絡的訪問用戶不能訪問內部網絡服務器的問題,而設立的一個非安全系統與安全系統之間的緩沖區。該緩沖區位于企業內部網絡和外部網絡之間的小網絡區域內。在這個小網絡區域可以放置一些必須公開的服務器設施,如web服務器、ftp服務器等,另一方面,通過這樣一個DMZ區域,更加有效地保護了內部網絡。

二、命令詳解及事例

1、沒有CA情況下基本的非對稱加密過程:

發送:用單向加密的算法,計算數據的特征碼;并用自己的私鑰加密特征碼生成數字簽名附加在數據后面;用對稱加密算法生成密鑰加密以上所有數據,用對方的公鑰,加密對稱加密后的數據,附加在最后(加密密碼)。

收到:先用私鑰解密附加數據得到對稱密鑰(密鑰交換);用對稱密鑰解密整段數據;用對方的公鑰解密簽名(特征碼);將同樣的(對稱加密算法)算法提取特征碼,與解密的相對比,若相同則數據沒有變化。

2、加密和解密工具:

對稱加密:openssl encgpg

支持的算法:3des,aes,blowfish,towfish

[root@centos68 ~]# echo 123654789987745321 > f1
[root@centos68 ~]# ls
anaconda-ks.cfg  boot.iso  f1  f1.awk  f2.awk  fstab  fstab.ciphertext  fun.awk  myks.cfg
[root@centos68 ~]# openssl enc -e -des3 -a -salt -in f1 -out f1.cipher
enter des-ede3-cbc encryption password:
Verifying - enter des-ede3-cbc encryption password:
[root@centos68 ~]# cat f1.cipher 
U2FsdGVkX1+46zCVv8Q9TJd5/BuWQHjRQhOlSkRPY00gMZMxpfYBzg==
[root@centos68 ~]# openssl enc -d -des3 -a -salt -in f1.cipher -out f1
enter des-ede3-cbc decryption password:
[root@centos68 ~]# cat f1
123654789987745321

單向加密:工具:md5sum,sha1sumsha224sum,sha256sum… ,openssl dgst

[root@centos68 ~]# openssl dgst -md5 f1
MD5(f1)= c0d4f5b14dda7b6fe892b09211db9310
[root@centos68 ~]# md5sum f1
c0d4f5b14dda7b6fe892b09211db9310  f1

MACMessage Authentication Code,單向加密的一種延伸應用,用于實現網絡通信中保證所傳輸數據的完整性機制。HMAC:使用md5或者sha1算法。

[root@centos68 ~]# openssl passwd -1 -salt centos
Password: 
$1$centos$PRRHdg1EjQzR2loDJwcsq/

生成隨機數:openssl rand -base64|-hex NUM

NUM表示字節數;-hex時,每個字符4位,出現的字符數為NUM*2.

[root@centos68 ~]# openssl rand -base64 10
cBMD2C9vkcmaRA==
[root@centos68 ~]# openssl rand -base64 5
2VL8/V8=

3、openssl命令:公鑰加密:算法:RSAELGamal;工具:gpg,openssl rsautl

數字簽名:算法:RSA,DSA,ELGamal

密鑰交換:算法:DHDSA,DSS,RSA

生成密鑰對:genrsa;

生成私鑰:openssl genrsa -out /PATH/PRIVATEKEY.FILE NUM_BITS

[root@centos68 ~]# (umask 077;openssl genrsa -out key.pri -des 1024)
Generating RSA private key, 1024 bit long modulus
...........................++++++
.....++++++
e is 65537 (0x10001)
Enter pass phrase for key.pri:
Verifying - Enter pass phrase for key.pri:
[root@centos68 ~]# cat key.pri 
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-CBC,8D2FB0013606D166
a/oUvxzROvOoKtbKJ9XWUDv1ILw1lEYxdbevlwMbkKys3Y0G79KID+uunb4slTpX
hQBwvQLDctxSNoa50AG0EAMfQPa8hJCwn/GvGQ4C1EKW0kzH9CBOx9exAm2qnQE/
n6Q5RM3vmZ7tx1s7ESbxZND9d65xSAXXg8lY4yPbM9iCV4sUdwPyrpR5nm7PgkwP
HdEyHmNGmljP3gpMcMtFB6CZmBeICKs65dCtF44S+l10Uw0GteQG6Pfh1j6rFbJm
5LPMnfHcMzzkIk3oQfQVXEokFIXJUK0dr8tqqIkASazMwAQaqhyFrnPKG3a+pwgc
0pZMtCoQvqGVrvklIu69MYQt0SUmQK7ZUfgfaRnw0BAViOF61hXxscLuhFVQyB19
+j5a3ZZPZw41G2SN5qyRtFjwIxS5XXwiBUEsxBW1rNA0cMuk5c8S2ECQD9UI7pT1
CTWtC4cBtYnphC55xRI0ah0ChiONyd6gt8zKEqlnDH/oaXIeORyKg6cz4g6As/VZ
FenubpJNeGpWEKsNctEQw4hzJyquDa46y6QhWPZ1O+MyiTDLul4HwaaYCF3bCoUf
+h58JRay55R2macrWdzHvdXg78L2nEnYqlvnHW4SZCyGf9SWycrriZJDY4DJMY63
vNvyRJHr2Vlzv524VGjTx9Wp0tEzJPdZ/d27//vNYpnBqp46wGqh3+Mb13XOUi+H
QQCHz7V737hscLy3EovLFOx7lYp7crx5d0Jcx0mkdy+jna5CawVqt27wq3DyBfiF
Xt/C1O/m65dRI7Q3zA3dh54w3WxVRwFwYtqUHmncFGQ=
-----END RSA PRIVATE KEY-----

從私鑰中提取公鑰:

[root@centos68 ~]# openssl rsa -in key.pri -pubout -out key.pub
Enter pass phrase for key.pri:
writing RSA key
[root@centos68 ~]# cat key.pub 
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCsq3OZlydFcnpVYswYSzW3a2Fq
o3CXfzm75ulDLBYMGJBWa0qLYy5Ch9osjCSt4W8eR+HFUVWyWHnCtyZVwbA9Xpwp
2JRq82rznUBOnI2CuMD7GA7UG4CDe+4dqMEeLIQE2kWLWUDki+0vmqe4S91yMOsN
YF2G2DZ/p++5Mvl6MQIDAQAB
-----END PUBLIC KEY-----

后續見第二部分

原創文章,作者:SilencePavilion,如若轉載,請注明出處:http://www.www58058.com/49811

(0)
SilencePavilionSilencePavilion
上一篇 2016-10-09
下一篇 2016-10-09

相關推薦

  • Centos網卡bond

    Centos6_Bonding配置: 1.禁用NetworkManager服務  2.創建bonding設備的配置文件 3.添加從屬接口1 4.添加從屬接口2 5.重啟網卡服務 6.查看bond0狀態 7.刪除bond配置 Centos7_Bonding配置: 1.添加bonding接口 2.添加從屬接口1 3.添加從屬接口2 4.修改bondin…

    2017-05-17
  • 馬哥教育網絡班22期+第2周課程練習

    1、Linux上文件管理命令有哪些,其常用的相關示例演示。 常見文件管理命令有:touch/stat/file/rm/cp/mv/nano 示例如下: [root@localhost week2_test]# touch newfile [root@localhost week2_test]# ls&nbsp…

    Linux干貨 2016-08-22
  • lvs基礎知識

    簡介  Cluster是什么?    Cluster其實就是組織多個主機構建高實現性能、高可靠、多并發、大容量的同一功能的系統。  常見的集群類型:   (1) Load Balancing: 負載均衡集群   (2) High Avaiability: 高可用集群   (3) …

    Linux干貨 2015-06-23
  • Linux基礎知識之WMware Tools的安裝

    該博文以CentOS6.8_x86_64系統為基礎,tty終端登錄CentOS6.8系統,以root身份登錄系統。 為什么要安裝WMware Tools?                    VMware Tools是VMware虛擬機中自帶的一種增強工具,…

    Linux干貨 2016-07-29
  • 網絡21期第十周博客作業

    網絡21期第十周博客作業 1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) Centos6啟動流程:       POST加電自檢 —> BOOT Sequence —> 加載內核啟動系統  &…

    Linux干貨 2016-09-15
  • VIM編輯器入門

    VIM簡介 VIM是一個類似于Vi的著名的功能強大、高度可定制的文本編輯器,在Vi的基礎上改進和增加了很多特性。VIM是純粹的自由軟件。 VIM的使用 在介紹基本使用前,先了解下VIM的基本模式 基本模式可分為三種:命令模式、輸入模式、末行模式 命令模式:Vim啟動后的默認模式,通過輸入指令完成對應的編輯操作。輸入模式和末行模式從命令模式進入&nb…

    Linux干貨 2016-04-05
欧美性久久久久