sudo詳解
sudo COMMAND
某個(gè)用戶能夠以另外哪一個(gè)用戶的身份通過(guò)哪些主機(jī)執(zhí)行什么命令
sudo的配置文件:/etc/sudoers
一個(gè)sudo條目:
who which_hosts=(runas) TAG:command
NOPASSWD
who : User_Alias
which_hosts:Host_Alias
runas:Runas_Alias
command:Cmnd_Alias
別名必須全部而且只能使用大寫英文字母的組合
visudo命令編輯配置文件
用戶別名:
User_Alias USERADMIN=
用戶的用戶名
組名,使用%引導(dǎo)
還可以包含其它已經(jīng)定義的用戶別名
Host_Alias
主機(jī)名
IP
網(wǎng)絡(luò)地址
其它主機(jī)別名
Runas_Alias:
用戶名
%組名
其它的Runas別名
Cmnd_Alias:
命令路徑
目錄(此目錄內(nèi)的所有命令)
其它事先定義過(guò)的命令別名
列:
User_Alias USERADMIN = hadoop, $hadoop, $useradmin
Cmnd_Alias USERADMINCMND = /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel , /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
USERADMIN ALL=(root) NOPASSWD: USERADMINCMND
sudo命令:
-l:列出當(dāng)前用戶可以使用的所有sudo類命令
-k:讓認(rèn)證信息失敗
TCP/IP 安全:
A-->B
機(jī)密性:明文傳輸(ftp , http , smtp ,telnet)
完整性:10 (100)
身份驗(yàn)證:
機(jī)密性:plaintext --> 轉(zhuǎn)換規(guī)則 --> ciphertext
ciphertext --> 轉(zhuǎn)換規(guī)則 --> plaintext
轉(zhuǎn)換算法:密鑰
對(duì)稱加密:算法
數(shù)據(jù)完整性:A-->B
單向加密算法:提取數(shù)據(jù)特征碼
輸入一樣:輸出必然相同
雪崩效應(yīng):輸入的微小改變,將會(huì)引起結(jié)果的巨大改變
定長(zhǎng)輸出:無(wú)論原始數(shù)據(jù)是多大,結(jié)果大小都是相同的
不可逆:無(wú)法根據(jù)特征碼還原原來(lái)的數(shù)據(jù)
協(xié)商生成密碼:密鑰交換(Internet Key Exchange , IKE)
Diffie-Hellman協(xié)議
A --> B
p ,g ( 大素?cái)?shù) ,生成數(shù) )
A : x
B : y
A : g^x%p -- >B
B : g^y%p -->A
g , p g^x%p ,g^y%p
A : (g^y%p)^x=g^yx%p
B : (G^X%p)^y=g^xy%p
公鑰加密算法:非對(duì)稱加密算法
密鑰對(duì):
公鑰:p
私鑰:s
發(fā)送方用自己的私鑰加密數(shù)據(jù),可以實(shí)現(xiàn)身份驗(yàn)證
發(fā)送方用對(duì)方的公鑰加密數(shù)據(jù),可以保證數(shù)據(jù)的機(jī)密性
公鑰加密算法很少用來(lái)加密數(shù)據(jù):速度太慢
Linux openSSH
telnet:遠(yuǎn)程登錄協(xié)議,23/tcp
c/s
s:telnet服務(wù)器
c:telnet客戶端
ssh:secure Shell ,應(yīng)用層協(xié)議,22/tcp
通信過(guò)程及認(rèn)證過(guò)程是加密的,主機(jī)認(rèn)證
用戶認(rèn)證過(guò)程加密
數(shù)據(jù)傳輸過(guò)程加密ssh v1 ,v2
man-in-middle
ssh2
認(rèn)證過(guò)程:
基于口令認(rèn)證
基于密鑰認(rèn)證協(xié)議:規(guī)范
實(shí)現(xiàn):服務(wù)器端、客戶端
Linux:openSSH
C/S
服務(wù)器端:sshd,配置文件/etc/ssh/ssh_config
客戶端:ssh ,配置文件/etc/ssh/ssh_config
windows遠(yuǎn)程工具:putty , SecureCRT() , SSHSecureShellClient , Xmanger
ssh-keygen:密鑰生成器
ssh-copy-id:將公鑰傳輸至遠(yuǎn)程服務(wù)器
scp:跨主機(jī)安全復(fù)制工具ssh:
基于口令認(rèn)證
ssh USERNAME@HOST
ssh -l USERNAME HOST
ssh USERNAME@HOST 'COMMAND'-p 指定端口
scp:基于ssh的遠(yuǎn)程復(fù)制命令,可以實(shí)現(xiàn)在主機(jī)之間傳輸數(shù)據(jù)
scp SRC DEST
-r 復(fù)制目錄
-ascp USERNAME@HOST:/path/to/somefile /path/to/local
scp /path/to/local USERNAME@HOST:/apth/to/somefile基于密鑰的認(rèn)證
ssh-keygen
-t {}rsa|dsa} #指定加密算法
~/.ssh/id_rsa
~/.ssh/id_rsa.pub-f /path/to/KEY_FILE
-N '' :指定加密私鑰的密碼
公鑰追加保存到遠(yuǎn)程主機(jī)某用戶的家目錄下的.ssh/authorized_keys文件.ssh/authorized_key2文件中ssh-copy-id
-i ~/.ssh/id_rsa.pub
ssh-copy-id -i ~/.ssh/id_rsa.pub USERNAME@HOSTsftp命令:
dropbear:嵌入式系統(tǒng)專用的ssh服務(wù)器端和客戶端工具
服務(wù)器端:
dropbear
dropbearkey客戶端:dbclient
drobear默認(rèn)使用nsswitch實(shí)現(xiàn)名稱解析
/etc/nsswitch.conf
/lib/libnss_files*
/usr/lib/libnss3.so
/usr/lib/libnss_filesdropbear會(huì)在用戶登錄檢查默認(rèn)shell是否當(dāng)前系統(tǒng)的安全shell
/etc/shells
主機(jī)密鑰默認(rèn)位置:
/etc/dropbear/
RSA:dropbear_rsa_host_key
長(zhǎng)度可變,只要是8的整數(shù)倍,默認(rèn)為1024
DSS:dropbear_dss_hots_key
長(zhǎng)度固定,默認(rèn)為1024
dropbearkey:
-t rsa|dsa
-f /path/to/KEY_FILE
-s SIZEPKI:public Key Infrastructure
CA : Certificate Authority
x509 ,pkcs12
x509:
公鑰及其有效期限
證書的合法擁有者
證書該如何被使用
CA的信息
CA前面的校驗(yàn)碼
PKI : TLS/SSL: x509
PKI : OpenGPG
TLS/SSL Handshake
對(duì)稱加密:
DES:Date Encrption Standard , 56bit
3DES :
AES : 高級(jí)加密標(biāo)準(zhǔn) 128bit
AES192 , AES256 , AES512
單向加密:
MD4
MD5
SHA1
SHA192,SHA256,SHA384
CRC-32
公鑰加密:(加密/簽名)
身份認(rèn)證(數(shù)字簽名)
數(shù)據(jù)加密
秘鑰交換
RSA : 加密、簽名
DSA : 簽名
ElGamal
OpenSSL : SSL的開(kāi)源實(shí)現(xiàn)
libcrypto:加密庫(kù)
libssl : TLS/SSL的實(shí)現(xiàn)
基于會(huì)話的、實(shí)現(xiàn)了身份認(rèn)證、數(shù)據(jù)機(jī)密性和會(huì)話完整性的TLS/SSL庫(kù)
openssl:多用途命令行工具
實(shí)現(xiàn)私有證書頒發(fā)機(jī)構(gòu)
子命令:
openssl實(shí)現(xiàn)私有CA:
1、生成一對(duì)密鑰
私鑰:openssl genrsa -out server1024.key(保存的文件名稱) 2014(長(zhǎng)度)
公鑰:openssl rsa -in server1024.key -pubout
2、生成自簽署證書
生成證書:openssl req -new -x509 -key server2014.key -out server.crt(保存的文件名稱) -days 365(保存時(shí)間)
查看證書:openssl x509 -text -in server.crt
配置文件:/etc/pki/tls/openssl.cnf
私有CA認(rèn)證機(jī)構(gòu)
1、cd /etc/pki/CA
2、(umask 077; openssl genrsa -out private/cakey.pem) #創(chuàng)建CA,自己生成一對(duì)密鑰
3、openssl req -new -x509 -key private/cakey.pem -out cacert.pem #生成自簽證書
認(rèn)證證書
1、cd /etc/httpd/ssl
2、(umask 077; openssl genrsa -out httpd.key 1024) #客戶端生成一對(duì)密鑰
3、openssl req -new -key httpd.key -out httpd.csr #生成證書頒發(fā)請(qǐng)求(然后將請(qǐng)求發(fā)給CA)
4、openssl ca -in httpd.csr -out httpd.crt -days 365 #CA端 簽署此證書,然后傳送給客戶端
總結(jié):
1、密碼應(yīng)該經(jīng)常換
2、使用非默認(rèn)端口登錄
3、限制登錄客戶地址
4、禁止管理員直接登錄
5、僅允許有限用戶登錄
6、使用基于秘鑰的認(rèn)證
7、禁止使用版本1