1. 程式人生 > >linux服務安全與監控二

linux服務安全與監控二

資料加密的最大特點是不可逆性
確保資料的機密性:
–對稱加密:加密/解密用同一個金鑰
–非對稱加密:加密/解密用不同的金鑰(公鑰,私鑰)

保護資訊的完整性:
–資訊摘要:基於輸入的資訊生成長度較端,位數固定的雜湊值

常見的加密演算法:
對稱加密:
–DES ,Data Encryption Standard
–AES , Advanced Encryption Standard

非對稱加密:
–RSA,Rivest Shamish Adleman
–DSA,Digita Signature Algorithm

一 : 檢查檔案的MD5校驗和

1 將etc目錄下的配置檔案加密後寫入新的檔案 a.md5

for i in `ls /etc/*.conf`
do
md5sum $i >>/a.md5
done

2 任意改動/etc/my.conf的內容:修改追加重定向的檔案b.md5

for i in `ls /etc/*.conf`
do
md5sum $i >> /b.md5
done

3 利用diff檢視檔案的的md5校驗碼的區別

[[email protected] ~]# diff /a.md5 /b.md5
1,2d0
< b244e3b37f10a5e9275303908d27d712  my.cnf

二 使用GPG對稱加密方式保護檔案,自身加密,自身解密


1 檢視版本

[[email protected] ~]# gpg  --version
gpg (GnuPG) 2.0.22
libgcrypt 1.5.3
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: ~/.gnupg

支援的演算法:
公鑰:RSA, ?, ?, ELG, DSA
對稱加密:IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256,
     TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256
雜湊:MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
壓縮:不壓縮, ZIP, ZLIB, BZIP2

2 定義一個文字檔案

[[email protected] ~]# echo 123456 > w.txt

3 使用gpg對稱加密

[[email protected] ~]# gpg -c w.txt       //在當前目錄下生成w.txt.gpg檔案

4 對gpg檔案解密

[[email protected] ~]# gpg -d w.txt.gpg > w1.txt
gpg: 鑰匙環‘/root/.gnupg/secring.gpg’已建立
gpg: CAST5 加密過的資料
gpg: 以 1 個密碼加密
gpg: 警告:報文未受到完整的保護
[[email protected] ~]# cat w1.txt
123456

三 非對稱金鑰:私鑰解密 公鑰加密
步驟:
–UserA(生成一對金鑰)
–UerA把公鑰傳給UserB
–UserB使用公鑰加密資料,並把資料傳給UserA
–UserA使用公鑰解密

1 主機web33 192.168.4.33生成非對稱金鑰對

[[email protected] ~]# gpg --gen-key                           //建立金鑰對
… …
請選擇您要使用的金鑰種類:

   (1) RSA and RSA (default)                            //預設演算法為RSA
   (2) DSA and Elgamal
   (3) DSA (僅用於簽名)
   (4) RSA (僅用於簽名)
您的選擇?                                              //直接回車預設(1)
RSA 金鑰長度應在 1024 位與 4096 位之間。
您想要用多大的金鑰尺寸?(2048)                              //接受預設2048位
您所要求的金鑰尺寸是 2048 位
請設定這把金鑰的有效期限。
         0 = 金鑰永不過期
      <n>  = 金鑰在 n 天后過期
      <n>w = 金鑰在 n 周後過期
      <n>m = 金鑰在 n 月後過期
      <n>y = 金鑰在 n 年後過期
金鑰的有效期限是?(0)                                          //接受預設永不過期
金鑰永遠不會過期
以上正確嗎?(y/n)y                                          //輸入y確

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <[email protected]>"
真實姓名:liuqi
電子郵件地址:[email protected]
註釋:this is key
您選定了這個使用者標識:
    “liuqi (this is key) <[email protected]>”
    
 更改姓名(N)、註釋(C)、電子郵件地址(E)或確定(O)/退出(Q)?O
您需要一個密碼來保護您的私鑰。

您不想要有密碼――這個想法實在是遭透了!
不過,我仍然會照您想的去做。您任何時候都可以變更您的密碼,僅需要
再次執行這個程式,並且使用“--edit-key”選項即可。

我們需要生成大量的隨機位元組。這個時候您可以多做些瑣事(像是敲打鍵盤、移動
滑鼠、讀寫硬碟之類的),這會讓隨機數字發生器有更好的機會獲得足夠的熵數。
我們需要生成大量的隨機位元組。這個時候您可以多做些瑣事(像是敲打鍵盤、移動
滑鼠、讀寫硬碟之類的),這會讓隨機數字發生器有更好的機會獲得足夠的熵數。
gpg: /root/.gnupg/trustdb.gpg:建立了信任度資料庫
gpg: 金鑰 FA75B8F6 被標記為絕對信任
公鑰和私鑰已經生成並經簽名。

gpg: 正在檢查信任度資料庫
gpg: 需要 3 份勉強信任和 1 份完全信任,PGP 信任模型
gpg: 深度:0 有效性:  1 已簽名:  0 信任度:0-,0q,0n,0m,0f,1u
pub   2048R/FA75B8F6 2018-12-08
金鑰指紋 = F3D3 39C9 0CF7 DD37 3CD0  78C6 B906 71C1 FA75 B8F6
uid                  liuqi (this is key) <[email protected]>
sub   2048R/336316F2 2018-12-08

檢視公鑰環

[[email protected] ~]# gpg --list-keys   //檢視公鑰環
 /root/.gnupg/pubring.gpg
 pub   2048R/FA75B8F6 2018-12-08
 uid                  liuqi (this is key) <[email protected]>
 sub   2048R/336316F2 2018-12-08

//注意:這個公鑰的物件可以用這些來表示:FA75B8F6 liuqi [email protected] 336316F2
//需要用的時候隨意選擇一個即可,只要不與其他公鑰環的資訊衝突

2 web33匯出自己的公鑰檔案

[[email protected] ~]# gpg -a --export liuqi>liuqi.pub   

–匯出到當前目錄下,檔名自定義
–可以用之前定義金鑰對的真實姓名或者郵箱作為匯出物件
–當不加選項a時看到的liuqi.pub內容為亂碼

3 傳遞金鑰檔案給web44 :192.168.4.44

[[email protected] ~]# scp liuqi.pub 192.168.4.44:/tmp/

4 web44匯入接收的公鑰資訊

[[email protected] ~]# gpg --import /tmp/liuqi.pub 
gpg: 已建立目錄‘/root/.gnupg’
gpg: 新的配置檔案‘/root/.gnupg/gpg.conf’已建立
gpg: 警告:在‘/root/.gnupg/gpg.conf’裡的選項於此次執行期間未被使用
gpg: 鑰匙環‘/root/.gnupg/secring.gpg’已建立
gpg: 鑰匙環‘/root/.gnupg/pubring.gpg’已建立
gpg: /root/.gnupg/trustdb.gpg:建立了信任度資料庫
gpg: 金鑰 FA75B8F6:公鑰“liuqi (this is key) <[email protected]>”已匯入
gpg: 合計被處理的數量:1
gpg:           已匯入:1  (RSA: 1)

[[email protected] ~]# gpg --list-key         //檢視公鑰資訊
/root/.gnupg/pubring.gpg
pub   2048R/FA75B8F6 2018-12-08
uid                  liuqi (this is key) <[email protected]>
sub   2048R/336316F2 2018-12-08

5 在web44上利用公鑰將檔案加密後傳給web33

[[email protected] ~]# gpg -e -r [email protected] hello.txt    //-e選項是使用金鑰加密資料 , -r選項後面跟的是金鑰,說明使用哪個金鑰對檔案加密
gpg: 336316F2:沒有證據表明這把金鑰真的屬於它所聲稱的持有者

pub  2048R/336316F2 2018-12-08 liuqi (this is key) <[email protected]>
 主鑰指紋: F3D3 39C9 0CF7 DD37 3CD0  78C6 B906 71C1 FA75 B8F6
 子鑰指紋: 682E 2A70 BBD5 E982 4D5C  0FF1 B8E9 0CC2 3363 16F2

這把金鑰並不一定屬於使用者標識聲稱的那個人。如果您真的知道自
己在做什麼,您可以在下一個問題回答 yes。

無論如何還是使用這把金鑰嗎?(y/N)y

[[email protected] ~]# ls
anaconda-ks.cfg  hello.txt.gpg 

[[email protected] ~]# scp hello.txt.gpg 192.168.4.33:/root            //加密的資料傳給web33

6 web33以自己的私鑰解密檔案

[[email protected] ~]# gpg -d hello.txt.gpg > web33.txt
gpg: 由 2048 位的 RSA 金鑰加密,鑰匙號為 336316F2、生成於 2018-12-08
      “liuqi (this is key) <[email protected]>”

[[email protected] ~]# cat web33.txt 
hello world

四 非對稱金鑰 : 私鑰(簽名) 公鑰(驗證簽名) //驗證資料的來源與私鑰簽名
–使用私鑰簽名的檔案,是可以使用對應的公鑰驗證簽名的,只要驗證成功,則說明這個檔案一定是出自對應的私鑰簽名,除非私鑰被盜,否則一定能證明這個檔案來自於某個人!
1 建立測試軟體包

[[email protected] ~]# tar -zcf log.tar /var/log

2 為軟體包建立分離式簽名

[[email protected] ~]# gpg -b log.tar
[[email protected] ~]# ls            //注意建立簽名後生成的log.tar.sig為檔案簽名
anaconda-ks.cfg       liuqi.pub             log.tar      公共  圖片  音樂
hello.txt.gpg         lnmp_soft             log.tar.sig

3 將檔案和簽名傳送給web44 192.168.4.44

[[email protected] ~]# scp log.tar* 192.168.4.44:/root
[email protected]'s password: 
log.tar                                       100%  568KB  11.4MB/s   00:00    
log.tar.sig   

4 web44驗證資料的來源

[[email protected] ~]# gpg --verify log.tar.sig log.tar
gpg: 於 2018年12月08日 星期六 11時40分47秒 CST 建立的簽名,使用 RSA,鑰匙號 FA75B8F6
gpg: 完好的簽名,來自於“liuqi (this is key) <[email protected]>”
gpg: 警告:這把金鑰未經受信任的簽名認證!
gpg:       沒有證據表明這個簽名屬於它所聲稱的持有者。
主鑰指紋: F3D3 39C9 0CF7 DD37 3CD0  78C6 B906 71C1 FA75 B8F

// 注意log.tar.sig log.tar兩個檔案的順序 如果寫反了會驗證失敗,如下

[[email protected] ~]# gpg --verify log.tar log.tar.sig

gpg: 找不到有效的 OpenPGP 資料。
gpg: 簽名無法被驗證。
請記住簽名檔案(.sig或.asc)
應該是在命令列中給定的第一個檔案

五 使用AIDE做入侵檢測
–Aide通過檢查資料檔案的許可權、時間、大小、雜湊值等,校驗資料的完整性。
–使用Aide需要在資料沒有被破壞前,對資料完成初始化校驗,生成校驗資料庫檔案,在被攻擊後,可以使用資料庫檔案,快速定位被人篡改的檔案。
1 安裝軟體包

[[email protected] ~]# yum -y install aide

2 修改配置檔案:

[[email protected] ~]# vim /etc/aide.conf
@@define DBDIR /var/lib/aide                            //資料庫目錄
@@define LOGDIR /var/log/aide                            //日誌目錄
database_out=file:@@{DBDIR}/aide.db.new.gz                //資料庫檔名

//以下內容為可以檢查的專案(許可權,使用者,組,大小,雜湊值等)
#p:      permissions
#i:      inode:
#n:      number of links
#u:      user
#g:      group
#s:      size
#md5:    md5 checksum
#sha1:   sha1 checksum
#sha256:        sha256 checksum
DATAONLY =  p+n+u+g+s+acl+selinux+xattrs+sha256
//以下內容設定需要對哪些資料進行入侵校驗檢查
//注意:為了校驗的效率,這裡將所有預設的校驗目錄與檔案都註釋
//僅保留/root目錄,其他目錄都註釋掉
/root   DATAONLY
#/boot   NORMAL                                    //對哪些目錄進行什麼校驗
#/bin    NORMAL
#/sbin   NORMAL
#/lib    NORMAL
#/lib64  NORMAL
#/opt    NORMAL
#/usr    NORMAL
#!/usr/src                                        //使用[!],設定不校驗的目錄
#!/usr/tmp

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
注意:一般在檔案內容不做修改的情況下對其進行檢測,校驗

3 侵前對資料進行校驗,生成初始化資料庫

[[email protected] ~]# aide --init
AIDE, version 0.15.1
AIDE database at /var/lib/aide/aide.db.new.gz initialized.
//生成校驗資料庫,資料儲存在/var/lib/aide/aide.db.new.g

4 備份資料庫,將資料庫檔案拷貝到U盤(非必須的操作)

[[email protected] ~]# cp /var/lib/aide/aide.db.new.gz   /media/

5 對root目錄進行改動,再進行對比檢測

[[email protected] ~]# aide --check
   AIDE 0.15.1 found differences between database and filesystem!!
   Start timestamp: 2018-12-08 14:28:46
        



Summary:
   Total number of files:	932
   Added files:			1
   Removed files:		1
   Changed files:		1
    
---------------------------------------------------
Added files:
---------------------------------------------------

added: /root/er.txt

---------------------------------------------------
Removed files:
---------------------------------------------------

removed: /root/hello.txt

---------------------------------------------------
Changed files:
---------------------------------------------------

changed: /root/a.txt

---------------------------------------------------
Detailed information about changes:
---------------------------------------------------


File: /root/a.txt
 Size     : 0                                , 4
 SHA256   : 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NM , GBIQ+PnHecJtodmyB1veAScwLuDj/K

六 掃描與抓包分析
1 使用NMAP掃描來獲取指定主機/網段的相關資訊

[[email protected] ~]# yum -y install nmap

//基本用法:
 nmap  [掃描型別]  [選項]  <掃描目標 ...>
//常用的掃描型別
// -sS,TCP SYN掃描(半開)
// -sT,TCP 連線掃描(全開)
// -sU,UDP掃描
// -sP,ICMP掃描
// -A,目標系統全面分析

2 檢查192.168.4.100主機是否可以ping通

[[email protected] ~]# nmap -n -sP 192.168.4.100          //-n代表不進行DNS解析
[[email protected] ~]# nmap -n -sP 192.168.4.0/24        

3 檢查目標主機所開啟的TCP服務

[[email protected] ~]# nmap -sT 192.168.4.30             //sT 和 sS 的區別 : sT 為tcp三次握手  sS為tcp前兩次握手(速度相對要塊,半開)
 Starting Nmap 6.40 ( http://nmap.org ) at 2018-12-08 15:12 CST
mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers
Nmap scan report for 192.168.4.30
Host is up (0.00050s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
111/tcp  open  rpcbind
2049/tcp open  nfs
MAC Address: 52:54:00:73:86:D9 (QEMU Virtual NIC)

4 檢查目標主機所開啟的UDP服務(注意 ,檢測UDP的速度非常的慢,10分鐘以上)

[[email protected] ~]#  nmap   -sU  192.168.4.0/24

5 全面分析目標主機192.168.4.100和192.168.4.5的作業系統資訊

    [[email protected] ~]# nmap -A 192.168.4.254  //
    Starting Nmap 6.40 ( http://nmap.org ) at 2018-12-08 15:24 CST
    mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers
    Nmap done: 2 IP addresses (0 hosts up) scanned in 0.87 seconds
    [[email protected] ~]# nmap -A 192.168.4.254

Starting Nmap 6.40 ( http://nmap.org ) at 2018-12-08 15:24 CST
mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers
Nmap scan report for 192.168.4.254
Host is up (0.00032s latency).
Not shown: 993 closed ports
PORT     STATE SERVICE VERSION
21/tcp   open  ftp     vsftpd 3.0.2
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| drwxr-xr-x    2 0        0            4096 Oct 23 13:59 centos
| drwxr-xr-x    2 0        0            4096 Nov 13 02:17 ceph
| -rw-r--r--    1 0        0           74692 Nov 21 08:57 libev-4.15-1.el6.rf.x86_64.rpm
| -rw-r--r--    1 0        0           86564 Nov 21 08:57 libevent-devel-2.0.21-4.el7.x86_64.rpm
| -rw-r--r--    1 0        0         7688608 Nov 21 00:59 percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
| drwxr-xr-x    3 0        0            4096 Dec 06 00:28 pub
| dr-xr-xr-x    9 0        0            4096 Jul 11  2017 rhel7
|_drwxrwxrwx    2 0        0            4096 Apr 26  2018 share [NSE: writeable]
22/tcp   open  ssh     OpenSSH 7.4 (protocol 2.0)
| ssh-hostkey: 2048 37:af:35:48:2a:ed:f7:b9:c2:6b:d8:fe:fa:6c:7b:02 (RSA)
|_256 dc:95:db:de:7e:c3:7d:34:ff:41:d4:e5:bb:97:5f:e9 (ECDSA)
53/tcp   open  domain  dnsmasq 2.76
| dns-nsid: 
|_  bind.version: dnsmasq-2.76
80/tcp   open  http    Apache httpd 2.4.6 ((CentOS))
| http-methods: Potentially risky methods: TRACE
|_See http://nmap.org/nsedoc/scripts/http-methods.html

TRACEROUTE
HOP RTT     ADDRESS
1   0.31 ms 192.168.4.254

OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 20.41 seconds

6 檢查192.168.4.0/24網段內哪些主機開啟了FTP、SSH服務

[[email protected] ~]#  nmap -p 21-22 192.168.4.0/24
PORT   STATE  SERVICE
21/tcp closed ftp
22/tcp open   ssh
MAC Address: 52:54:00:29:CA:6E (QEMU Virtual NIC)

七 使用tcpdump分析FTP訪問中的明文交換資訊
nmap是掃描工具
tcpdump抓包工具+其他(IP地址欺騙/DHCP欺騙)
1 環境準備web44做ftp服務端

[[email protected] ~]# yum -y install vsftpd
[[email protected] ~]# useradd tom
[[email protected] ~]# echo 123456 | passwd --stdin tom

更改使用者 tom 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。

[[email protected] ~]# echo wwwwwwww > /home/tom/nb.txt
[[email protected] ~]# systemctl restart vsftpd
[[email protected] ~]# systemctl enable vsftpd

2 環境準備web33做ftp客戶端

[[email protected] ~]# yum -y install ftp
[[email protected] ~]# ftp 192.168.4.44
Connected to 192.168.4.44 (192.168.4.44).
220 (vsFTPd 3.0.2)
Name (192.168.4.44:root): tom             //輸入使用者名稱
331 Please specify the password.
Password:                                 //輸入密碼
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,4,44,193,174).
150 Here comes the directory listing.
-rw-r--r--    1 0        0               9 Dec 08 08:15 nb.txt         //服務端共享的檔案
226 Directory send OK.
ftp> 

3 啟用tcpdump命令列抓包
執行tcpdump命令列,新增適當的過濾條件,只抓取訪問主機192.168.4.5的21埠的資料通訊 ,並轉換為ASCII碼格式的易讀文字。
這裡假設,192.168.4.5主機有vsftpd服務,如果沒有需要提前安裝並啟動服務!!!

[[email protected] ~]# tcpdump -A host 192.168.4.5 and tcp port 21
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
.. ..                                            //進入等待捕獲資料包的狀態

//監控選項如下:
// -i,指定監控的網路介面(預設監聽第一個網絡卡)
// -A,轉換為 ACSII 碼,以方便閱讀
// -w,將資料包資訊儲存到指定檔案
// -r,從指定檔案讀取資料包資訊
//tcpdump的過濾條件:
// 型別:host、net、port、portrange 主機/ net/埠/埠範圍
// 方向:src、dst 源/目標
// 協議:tcp、udp、ip、wlan、arp、……
// 多個條件組合:and、or、not

4 web33執行ftp訪問,在21埠產生資料

[[email protected] ~]# ftp 192.168.4.44
Connected to 192.168.4.44 (192.168.4.44).
220 (vsFTPd 3.0.2)
Name (192.168.4.44:root): tom
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

5 觀察抓包的結果(回到web44主機觀察tcpdump抓包的結果)

[[email protected] ~]# tcpdump -A tcp port 21 and host 192.168.4.33
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes

16:36:56.824253 IP 192.168.4.33.60104 > web44.ftp: Flags [P.], seq 1:11, ack 21, win 229, options [nop,nop,TS val 196470329 ecr 196460149], length 10: FTP: USER tom
E..>[email protected]@......!...,.........g.!...........
...9...uUSER tom

16:37:00.200125 IP 192.168.4.33.60104 > web44.ftp: Flags [P.], seq 11:24, ack 55, win 229, options [nop,nop,TS val 196473705 ecr 196462879], length 13: FTP: PASS 123456
E..A.	@[email protected]!...,.........g.C...........

...i....PASS 123456
……………………

6 再次使用tcpdump抓包,使用-w選項可以將抓取的資料包另存為檔案,方便後期慢慢分析

[[email protected] ~]# tcpdump -A tcp port 21 and host 192.168.4.33 -w ftp.txt

7 tcpdump命令的-r選項,可以去讀之前抓取的歷史資料檔案

[[email protected] ~]# tcpdump -A -r ftp.txt | egrep '(USER|PASS)'

八 使用tcpdump分析Nginx的明文賬戶認證資訊資訊
1 在主機(192.168.4.33)準備一臺需要使用者認證的Nginx伺服器

[[email protected] ~]# cd /usr/local/nginx/conf/
[[email protected] ~]# cp nginx.conf.default  nginx.conf      //還原配置檔案
[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf
server {



 listen 80;
  server_name localhost;
auth_basic "xx";
auth_basic_user_file "/usr/local/nignx/pass";
… …



[[email protected] ~]# htpasswd -c /usr/local/nginx/pass jerry   //建立賬戶檔案
New password:123456                  //輸入密碼
Re-type new password:123456         //確認密碼
[[email protected] ~]# nginx -s reload

2 在33主機使用tcpdump命令抓包

[[email protected] ~]# tcpdump  -A  host 192.168.4.5  and  tcp  port  80

3 在客戶端192.168.4.254使用火狐瀏覽器訪問192.168.4.33

[[email protected] ~]# firefox  http://192.168.4.33       //根據提示輸入使用者名稱與密碼

4 回到33主機檢視抓包的資料結果

[[email protected] ~]# tcpdump -A host 192.168.4.33 and tcp port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
… …
Authorization: Basic dG9tOjEyMzQ1Ng==
… …

5 檢視base64編碼內容

[[email protected] ~]# echo "dG9tOjEyMzQ1Ng==" | base64 -d
tom:123456
[[email protected] ~]# printf "tom:123456" | base64                    //注意,因為echo有回車功能,在這裡如果還是用echo就會出錯。
dG9tOjEyMzQ1Ng==