1痹届、SSH端口轉(zhuǎn)發(fā)
-
遠(yuǎn)程端口轉(zhuǎn)發(fā)
image.png
實(shí)驗(yàn)過(guò)程
準(zhǔn)備三個(gè)主機(jī)呻待,并檢查三個(gè)主機(jī)的防火墻是否關(guān)閉,selinux是否禁用队腐,然后將郵件服務(wù)器的主機(jī)的配置文件更改為下圖所示
打開(kāi)郵件服務(wù)器的配置文件/etc/postfix/main.cf
image.png
在郵件服務(wù)器上拒絕來(lái)自107機(jī)器的連接蚕捉,模擬現(xiàn)實(shí)中的防火墻
[root@centos6 ~]#iptables -A INPUT -s 172.18.21.107 -j REJECT
[root@centos6 app]#ssh -R 9527:172.18.21.106:25 -Nf 172.18.21.107
[root@centos6 app]#ss -nt ---發(fā)現(xiàn)ssh客戶端已經(jīng)連接到遠(yuǎn)程的ssh服務(wù)器
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 172.18.21.6:58720 172.18.21.107:22
ESTAB 0 64 172.18.21.6:22 172.18.252.32:57431
[root@centos7 app]#ss -nt ---發(fā)現(xiàn)ssh客戶端和服務(wù)器已經(jīng)建立好隧
道
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 52 172.18.21.107:22 172.18.252.32:56505
ESTAB 0 0 172.18.21.107:22 172.18.21.6:58720
[root@centos7 app]#telnet 127.0.0.1 9527 ---連接本機(jī)的9527端口,就可以和遠(yuǎn)程的郵件服務(wù)器相連
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 centos6.magedu.com ESMTP Postfix
[root@centos6 ~]#ss -nt ---發(fā)現(xiàn)是中間的ssh客戶端連接到了郵件服務(wù)器
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 172.18.21.106:25 172.18.21.6:48522
ESTAB 0 64 172.18.21.106:22 172.18.252.32:56112
可以給郵件服務(wù)器發(fā)一封郵件如下圖
在郵件服務(wù)器切換到zhang用戶柴淘,然后輸入mail就可以看到郵件了迫淹。
-
動(dòng)態(tài)端口轉(zhuǎn)發(fā)
image.png
實(shí)驗(yàn)
在c機(jī)器上搭建一個(gè)http服務(wù),并且防火墻拒絕a去訪問(wèn)
在A上執(zhí)行如下命令
[root@centos7 app]#ssh -D 1080 172.18.21.6 ----172.18.21.6為B的ip地址为严,1080端口是在A上打開(kāi)的
Last login: Tue Sep 12 19:58:26 2017 from 172.18.252.32
然后在a的圖形界面上對(duì)filefox(火狐瀏覽器)進(jìn)行如下圖設(shè)置
這樣就可以穿過(guò)防火墻去連接C了敛熬,也可以在字符界面下執(zhí)行如下命令去訪問(wèn)C
[root@centos7 app]#ssh -D 1080 172.18.21.6 -Nf
[root@centos7 app]#ss -nt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 52 172.18.21.107:22 172.18.252.32:56505
ESTAB 0 0 172.18.21.107:54478 172.18.21.6:22
ESTAB 0 0 172.18.21.107:22 172.18.21.6:58720
[root@centos7 app]#curl --socks5 127.0.0.1:1080 http://172.18.21.106
<h1>welcome to haerbing </h1>
當(dāng)用firefox訪問(wèn)internet時(shí),本機(jī)的1080端口做為代理服務(wù)器第股,firefox的訪問(wèn)請(qǐng)求被轉(zhuǎn)發(fā)到sshserver上荸型,由sshserver替之訪問(wèn)internet。
2炸茧、ssh服務(wù)器的配置文件
[root@centos7 app]#cd /etc/ssh
[root@centos7 ssh]#ls ---這個(gè)目錄下存放的是服務(wù)器各種算法的公
鑰和私鑰瑞妇,以及客戶端和服務(wù)器端的配置文件,公鑰和私鑰用于連接
時(shí)梭冠,客戶端對(duì)服務(wù)器端進(jìn)行身份驗(yàn)證辕狰,連接時(shí)輸入yes,客戶端會(huì)得到
服務(wù)器端的公鑰控漠,保存到當(dāng)前用戶的家目錄.ssh/known_hosts
文件中苏携,下次連接時(shí)先用公鑰加密數(shù)據(jù)傳給服務(wù)器,如果服務(wù)器能夠
解開(kāi)侧蘸,證明是想要連接的服務(wù)器
moduli ssh_host_ecdsa_key ssh_host_ed25519_key.pub
ssh_config ssh_host_ecdsa_key.pub ssh_host_rsa_key
sshd_config ssh_host_ed25519_key ssh_host_rsa_key.pub
ssh服務(wù)器端的配置文件為/etc/ssh/sshd_config
Port
為了避免被攻擊建議把端口號(hào)改掉隐圾,默認(rèn)是22端口
ListenAddress ip
本機(jī)的哪個(gè)ip地址允許監(jiān)聽(tīng)22端口,建議這一項(xiàng)改一下棘幸。不要所有的地址
LoginGraceTime 2m
連接時(shí)兩分鐘一直不輸入密碼就退出
PermitRootLogin yes
允許root賬號(hào)直接連接,建議改為no,改為no后只有普通用戶可以連接母剥,但可以su切換為root
StrictModes yes
檢查文件的各種屬性,權(quán)限等
MaxAuthTries 6
如果密碼輸錯(cuò)3次就退出形导,是6的一半
MaxSessions 10 同一個(gè)連接最大會(huì)話
比如用xshell連接后环疼,用復(fù)制的方式打開(kāi)十個(gè)終端,就不能再打開(kāi)了朵耕。
PubkeyAuthentication yes
允許基于key驗(yàn)證
PermitEmptyPasswords no
允許空口令驗(yàn)證
PasswordAuthentication yes
基于密碼驗(yàn)證炫隶,如果關(guān)掉只能基于key的驗(yàn)證
GatewayPorts no
啟用網(wǎng)關(guān),啟用之后就相當(dāng)于自己是網(wǎng)關(guān)阎曹,跟自己同一個(gè)網(wǎng)段的主機(jī)都可以連到本主機(jī)伪阶,也可以通過(guò)本主機(jī)去連接到外面的網(wǎng)絡(luò)
ClientAliveInterval(單位:秒)
連上去之后什么也不干,多長(zhǎng)時(shí)間斷開(kāi)
ClientAliveCountMax(默認(rèn)3)
探測(cè)次數(shù)处嫌。連上什么也不干望门,次數(shù)乘以上面的時(shí)間,才是真正斷開(kāi)的時(shí)間锰霜。
UseDNS yes
啟用DNS筹误。建議改為no,提高連接速度癣缅,不然會(huì)把地址方向解析厨剪,但由于沒(méi)有配置dns,解析半天解析不出來(lái)才讓連接
GSSAPIAuthentication yes 提高速度可改為no
GSSAPI認(rèn)證友存,建議改為no祷膳,提高連接速度
MaxStartups未認(rèn)證連接最大值,默認(rèn)值10
用戶個(gè)數(shù)到達(dá)10個(gè)就開(kāi)始拒絕30%屡立,按比例拒絕直晨,到達(dá)60個(gè)就全拒絕,控制用戶連接膨俐,最大只能連接60個(gè)用戶
Banner /path/file
連接時(shí)候的提示信息勇皇,可以后面跟一個(gè)文件,然后編輯這個(gè)文件中的內(nèi)容焚刺,就可做為連接提示信息
限制用戶登錄的辦法
AllowUsers user1 user2 user3 --表示允許遠(yuǎn)程主機(jī)以本機(jī)的哪個(gè)用戶的身份登錄本主機(jī)
DenyUsers ---表示不允許遠(yuǎn)程主機(jī)用本機(jī)的哪個(gè)用戶的身份登錄本主機(jī)
AllowGroups ---表示允許遠(yuǎn)程主機(jī)以本機(jī)哪個(gè)組里的用戶的身份登錄本主機(jī)
DenyGroups
具體的解釋可以查看幫助man /etc/ssh/sshd_config
135 #Match User anoncvs
136 # X11Forwarding no
137 # AllowTcpForwarding no
138 # ForceCommand cvs server
139 AllowUsers zheng ---在配置文件的最后加上一行就可以了敛摘,
表示只允許遠(yuǎn)程主機(jī)以zheng的身份登錄本主機(jī),所以遠(yuǎn)程主機(jī)在連
接的時(shí)候要知道zheng的密碼才能連接到本主機(jī)
- ssh服務(wù)的最佳實(shí)踐
禁止使用默認(rèn)端口
禁止使用protocol version 1
限制可登錄用戶
設(shè)定空閑會(huì)話超時(shí)時(shí)長(zhǎng)
利用防火墻設(shè)置ssh訪問(wèn)策略
僅監(jiān)聽(tīng)特定的IP地址
基于口令認(rèn)證時(shí)乳愉,使用強(qiáng)密碼策略
tr -dc A-Za-z0-9_ < /dev/urandom| head -c 30| xargs
使用基于密鑰的認(rèn)證
禁止使用空密碼
禁止root用戶直接登錄
限制ssh的訪問(wèn)頻度和并發(fā)在線數(shù)
做好日志兄淫,經(jīng)常分析
ssh的日志文件是/var/log/secure屯远,每一次連接日志文件都會(huì)有記錄。
3捕虽、編譯安裝dropbear示例
ssh協(xié)議的另一個(gè)實(shí)現(xiàn):dropbear
1慨丐、查看是否安裝開(kāi)發(fā)包組,如果沒(méi)有安裝就安裝
2泄私、解壓縮dropbear-2017.75.tar.bz2文件
3房揭、進(jìn)入dropbear-2017.75
4、cat README cat INSTALL 查看一下服務(wù)的信息和安裝信息
5挖滤、 ./configure --help 查看一下如何執(zhí)行這個(gè)腳本
6崩溪、 ./configure --prefix=/app 執(zhí)行configure腳本
7浅役、 yum install zlib-devel ---執(zhí)行過(guò)程報(bào)錯(cuò)斩松,需要安裝這個(gè)包文件
8、./configure --prefix=/app ---繼續(xù)執(zhí)行configure腳本
9觉既、make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"
10惧盹、 make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install
到此安裝過(guò)程就結(jié)束了瞪讼,下面就是安裝私鑰和驗(yàn)證服務(wù)
11、cd /app/bin ./dropbearkey -t rsa -f dropbear_rsa_host_key---安
裝私鑰和公鑰嫡霞,這個(gè)和sshd服務(wù)一樣,在/etc/ssh/目錄一下也有公鑰和私鑰希柿。
12、cd /app/sbin ./dropbear -E -p 2222 ---開(kāi)啟這個(gè)服務(wù)曾撤,并指定
端口為2222,-E選項(xiàng)是執(zhí)行的時(shí)候如果報(bào)錯(cuò)會(huì)在屏幕上顯示
13挤悉、發(fā)現(xiàn)出錯(cuò)渐裸,F(xiàn)ailed loading /etc/dropbear/dropbear_rsa_host_key ---找不到鑰匙
14、 mkdir /etc/dropbear ---創(chuàng)建一個(gè)目錄
ln -s /app/bin/dropbear_rsa_host_key /etc/dropbear/dropbear_rsa_host_key ---創(chuàng)建一個(gè)軟連接指向指向
存放鑰匙的文件
15昏鹃、./dropbear -E -p 2222 ---再次執(zhí)行就可以了诀诊,在遠(yuǎn)程用ssh 172.18.21.107 -p 2222就可以連接到本主機(jī)了
16、cd/app bin/ ./dbclient 172.18.21.106 ----驗(yàn)證一下客戶端的命
令您宪,發(fā)現(xiàn)也可以連接到遠(yuǎn)程主機(jī)
4、AIDE
?AIDE(Adevanced Intrusion Detection Environment)
(高級(jí)入侵檢測(cè)環(huán)境)是一個(gè)入侵檢測(cè)工具宪巨,主要用途是檢查文件的完整性捏卓,審計(jì)計(jì)算機(jī)上的那些文件被更改過(guò)了。
?AIDE能夠構(gòu)造一個(gè)指定文件的數(shù)據(jù)庫(kù)怠晴,它使用aide.conf作為其配置文件蒜田。AIDE數(shù)據(jù)庫(kù)能夠保存文件的各種屬性,包括:權(quán)限(permission)冲粤、索引節(jié)點(diǎn)序號(hào)(inode number)梯捕、所屬用戶(user)、所屬用戶組(group)傀顾、文件大小短曾、最后修改時(shí)間(mtime)、創(chuàng)建時(shí)間(ctime)错英、最后訪問(wèn)時(shí)間(atime)椭岩、增加的大小以及連接數(shù)。AIDE還能夠使用下列算法:sha1判哥、md5、rmd160挺身、tiger锌仅,以密文形式建立每個(gè)文件的校驗(yàn)碼或散列號(hào),也就是哈希運(yùn)算墙贱,用來(lái)判斷文件的內(nèi)容是否被更改贱傀。
?這個(gè)數(shù)據(jù)庫(kù)不應(yīng)該保存那些經(jīng)常變動(dòng)的文件信息惨撇,例如:日志文件、郵件府寒、/proc文件系統(tǒng)魁衙、用戶起始目錄以及臨時(shí)目錄剖淀。
示例
[root@centos7 app]#rpm -q aide
package aide is not installed
[root@centos7 app]#yum install aide
[root@centos7 app]#rpm -ql aide ---查看一下這個(gè)軟件包都生成了哪些文件
/etc/aide.conf ---配置文件
/usr/sbin/aide ---主程序文件
/var/lib/aide ----數(shù)據(jù)庫(kù)文件
/var/log/aide ---日志文件
[root@centos7 app]#cp /etc/fstab f1
[root@centos7 app]#cp /etc/fstab f2
[root@centos7 app]#cp /etc/fstab f3
[root@centos7 app]#ls ---復(fù)制三個(gè)文件纤房,下步實(shí)驗(yàn)時(shí)只監(jiān)控f1和f2文件帆卓,f3文件不監(jiān)控
f1 f2 f3
[root@centos7 app]#vim /etc/aide.conf ---進(jìn)入這個(gè)文件會(huì)發(fā)現(xiàn)有很
多默認(rèn)的設(shè)置米丘,這里為了實(shí)驗(yàn)方便,把默認(rèn)的都刪除了吁津,自己寫(xiě)了一
個(gè)設(shè)置堕扶,指定監(jiān)控/app目錄的mon這些特性稍算,但不監(jiān)控f3文件
mon = p+u+g+sha512+m+s+b
/app mon
!/app/f3
[root@centos7 app]#aide --help ---查看一下用法
[root@centos7 app]#aide -i ---初始化數(shù)據(jù)庫(kù),也就是生成數(shù)據(jù)庫(kù)
[root@centos7 app]#cd /var/lib/aide/
[root@centos7 aide]#ls ---發(fā)現(xiàn)數(shù)據(jù)庫(kù)文件已經(jīng)生成
aide.db.new.gz
[root@centos7 aide]#mv aide.db.new.gz aide.db.gz ---要把數(shù)據(jù)庫(kù)文件名改成aide.db.gz钾埂,才能使用
[root@centos7 aide]#aide -C ---檢查文件是否監(jiān)控的文件是否發(fā)生變化和數(shù)據(jù)庫(kù)進(jìn)行對(duì)比
AIDE, version 0.15.1
### All files match AIDE database. Looks okay!
[root@centos7 app]#chown zhang f1
[root@centos7 app]#echo 1 > f2
[root@centos7 app]#aide -C
AIDE 0.15.1 found differences between database and filesystem!!
Start timestamp: 2017-09-13 11:13:19
Summary:
Total number of files: 4
Added files: 0
Removed files: 0
Changed files: 2
---------------------------------------------------
Changed files:
---------------------------------------------------
changed: /app/f1
changed: /app/f2
---------------------------------------------------
Detailed information about changes:
---------------------------------------------------
File: /app/f1
Uid : 0 , 1000
File: /app/f2
Size : 595 , 2
Mtime : 2017-09-13 10:55:20 , 2017-09-13 11:13:16
SHA512 : spFcC7zJqC72A03MBygd2sAHLu6W82le , Ortmd680rFfAylgo/ZT52IbCbOWajOYO
[root@centos7 app]#aide -u --更新數(shù)據(jù)庫(kù)
[root@centos7 app]#cd /var/lib/aide/
[root@centos7 aide]#ls ---發(fā)現(xiàn)又新生成了一個(gè)數(shù)據(jù)庫(kù)文件褥紫,把原
來(lái)的刪除瞪慧,把新生成的文件改名后就可以使用了
aide.db.gz aide.db.new.gz
對(duì)于沒(méi)有監(jiān)控的f3文件,確檢查不出來(lái)氨菇。
aide是檢查文件完整性的一個(gè)很好的工具,對(duì)于那些不改動(dòng)的文件或目錄都可以用aide去監(jiān)控查蓉,比如/usr/bin和/usr/sbin下的二進(jìn)制程序
5奶是、sudo 授權(quán)指定用戶在指定主機(jī)上運(yùn)行某些命令
1、 簡(jiǎn)介
su切換身份:su –l username –c 'command' 切換到某個(gè)用戶執(zhí)行命令再切換回原來(lái)用戶
sudo
?來(lái)自sudo包
?man 5 sudoers
?sudo能夠授權(quán)指定用戶在指定主機(jī)上運(yùn)行某些命令秆麸。如果未授權(quán)用戶嘗試使用sudo及汉,會(huì)提示聯(lián)系管理員
?sudo可以提供日志,記錄每個(gè)用戶使用sudo操作
?sudo為系統(tǒng)管理員提供配置文件房铭,允許系統(tǒng)管理員集中地管理用戶的使用權(quán)限和使用的主機(jī)
?sudo使用時(shí)間戳文件來(lái)完成類似“檢票”的系統(tǒng)缸匪,默認(rèn)存活期為5分鐘的“入場(chǎng)券”类溢,也就是過(guò)五分鐘再執(zhí)行sudo,授權(quán)某個(gè)用戶執(zhí)行哪個(gè)命令的的時(shí)候又要輸密碼驗(yàn)證砂心,5分鐘之內(nèi)如果輸過(guò)一次就不需要再輸入了蛇耀。
?通過(guò)visudo命令編輯配置文件纺涤,具有語(yǔ)法檢查功能,但默認(rèn)是用vi打開(kāi)的秧秉,沒(méi)有顏色衰抑,可以使用export EDITOR=vim來(lái)讓其使用vim編輯。如果要長(zhǎng)期有效保存到/etc/profile.d目錄下的一個(gè)文件中。
visudo –c 檢查語(yǔ)法
2啦撮、配置文件
配置文件:/etc/sudoers, /etc/sudoers.d/汪厨,可以把設(shè)置放到/etc/sudoers.d/目錄下劫乱,自己創(chuàng)建一個(gè)文件,格式和/etc/sudoers的相同就可以狭吼,和/etc/crontab用法類似殖妇。
時(shí)間戳文件:/var/db/sudo
日志文件:/var/log/secure
配置文件支持使用通配符glob:
?:任意單一字符
*:匹配任意長(zhǎng)度字符
[wxc]:匹配其中一個(gè)字符
[!wxc]:除了這三個(gè)字符的其它字符
\x : 轉(zhuǎn)義
[[alpha]] :字母示例:/bin/ls [[alpha]]*
3疲吸、授權(quán)規(guī)則格式
用戶 登入主機(jī)=(代表用戶) 命令
示例:
wang ALL=(ALL) ALL 表示授權(quán)wang用戶在所有主機(jī)摘悴,代表所有人可以執(zhí)行任何操作
格式說(shuō)明:
user: 運(yùn)行命令者的身份
host: 通過(guò)哪些主機(jī)
(runas):以哪個(gè)用戶的身份
command: 運(yùn)行哪些命令
4嫡纠、別名
Users和runas:
username ----wang zhang root
#uid ---0uid表示root用戶
%group_name
%#gid ---%1000gid表示gid為1000的用戶
user_alias|runas_alias ---別名
host:
ip或hostname
network(/netmask)
host_alias
command:
command name
directory ---只能指執(zhí)行特定文件夾下的所有程序
sudoedit ---授權(quán)用戶去更改sudo策略除盏,也就是可以改sudo的配置文件挫以,用戶在用的時(shí)候執(zhí)行的命令是sudoedit /etc/sudoers或者sudoedit /etc/sudoers.d/test
Cmnd_Alias
別名有四種類型:User_Alias, Runas_Alias, Host_Alias ,Cmnd_Alias
別名格式:[A-Z]([A-Z][0-9]_)* ---必須是大寫(xiě)字母開(kāi)頭踱侣,后面是大寫(xiě)字母抡句、數(shù)字或者下劃線
別名定義:
Alias_Type NAME1 = item1, item2, item3 : NAME2 = item4, item5
示例1
student ALL=(root) /sbin/pidof,/sbin/ifconfig
%wheel ALL=(ALL) NOPASSWD: ALL ---授權(quán)wheel組里的用戶能夠代表任何人在不輸入口令的前提下執(zhí)行所有操作
示例2
User_Alias NETADMIN= netuser1,netuser2
Cmnd_Alias NETCMD = /usr/sbin/ip
NETADMIN ALL=(root)NETCMD
示例3
User_Alias SYSADER=wang,mage,%admins
User_Alias DISKADER=tom
Host_Alias SERS=www.magedu.com,172.16.0.0/24
Runas_Alias OP=root
Cmnd_Alias SYDCMD=/bin/chown,/bin/chmod
Cmnd_Alias DSKCMD=/sbin/parted,/sbin/fdisk
SYSADER SERS= SYDCMD,DSKCMD 主機(jī)名后面=沒(méi)有寫(xiě)表示代表所有人
DISKADER ALL=(OP) DSKCMD
示例4
User_Alias ADMINUSER = adminuser1,adminuser2
Cmnd_Alias ADMINCMD = /usr/sbin/useradd, /usr/sbin/usermod, /usr/bin/passwd[a-zA-Z]*,!/usr/bin/passwdroot
ADMINUSER ALL=(root) NOPASSWD:ADMINCMD,PASSWD:/usr/sbin/userdel ---表示執(zhí)行前者操作時(shí)不用輸入口令杠愧,執(zhí)行后者操作時(shí)要輸入口令
示例5
Defaults:wang runas_default=tom ---表示不寫(xiě)-u代替誰(shuí)時(shí),wang用戶默認(rèn)代替的是tom用戶執(zhí)行什么操作
wang ALL=(tom,jerry) ALL ---授權(quán)wang用戶可以代替兩個(gè)人執(zhí)行所有操作腌闯,但不寫(xiě)-u時(shí)默認(rèn)代替的是tom
示例6
wang 192.168.175.136,192.168.175.138=(root) /usr/sbin/,!/usr/sbin/useradd
示例7
wang ALL=(ALL) /bin/cat /var/log/messages*
這種寫(xiě)法有個(gè)問(wèn)題雕憔,就是wang用戶可以用sudo cat /var/log/messages /etc/shadow,為了出現(xiàn)這種情況分瘦∩醚可以寫(xiě)成如下格式
wang ALL=(ALL) /bin/cat /var/log/messages*,!/bin/cat /var/log/messages *
5翁潘、sudo命令
ls -l /usr/bin/sudo
sudo –i –u wang切換身份
sudo[-u user] COMMAND
-V 顯示版本信息等配置信息
-u user 默認(rèn)為root
-l,ll列出用戶在主機(jī)上可用的和被禁止的命令
-v 再延長(zhǎng)密碼有效期限5分鐘,更新時(shí)間戳
-k 清除時(shí)間戳(1970-01-01),下次需要重新輸密碼
-K 與-k類似渗勘,還要?jiǎng)h除時(shí)間戳文件
-b 在后臺(tái)執(zhí)行指令
-p 改變?cè)儐?wèn)密碼的提示符號(hào)
示例:-p "password on %h for user %p:"
[zheng@centos7 ~]$sudo -p "password on %h for user %p:" cat /etc/shadow
password on centos7 for user zheng:
注意:這些命令都是在切換身份之后旺坠,被授權(quán)的用戶執(zhí)行的命令扮超。
實(shí)驗(yàn)
[root@centos7 sbin]#su - zheng
Last login: Wed Sep 13 09:44:09 CST 2017 on pts/0
[zheng@centos7 ~]$su -l root -c 'cat /etc/shadow'
[root@centos7 profile.d]#visudo ---執(zhí)行這個(gè)命令出刷,默認(rèn)就會(huì)打
開(kāi)/etc/sudoers文件,并且如果編寫(xiě)的時(shí)候有語(yǔ)法錯(cuò)誤崩侠,在保存的時(shí)
候會(huì)有提示坷檩,進(jìn)行如下編輯
zheng ALL=(ALL) /bin/mount /dev/sr0/ /mnt/cdrom, /usr/bin/unmout
[root@centos7 profile.d]#visudo -c ---檢查一下語(yǔ)法沒(méi)有錯(cuò)誤,用
vim打開(kāi)這個(gè)配置文件時(shí)是只讀的系瓢,可以用wq句灌!強(qiáng)制保存,也可以用
這條命令檢查語(yǔ)法錯(cuò)誤
/etc/sudoers: parsed OK
[zheng@centos7 ~]$sudo mount /dev/sr0 /mnt/cdrom/ ---發(fā)現(xiàn)授權(quán)
的時(shí)候是嚴(yán)格匹配的清蚀,多一個(gè)/都執(zhí)行不了
[sudo] password for zheng:
Sorry, user zheng is not allowed to execute '/bin/mount /dev/sr0 /mnt/cdrom' as root on centos7.magedu.com.
[zheng@centos7 ~]$sudo mount /dev/sr0/ /mnt/cdrom
[sudo] password for zheng:
mount: /dev/sr0 is write-protected, mounting read-only
[root@centos7 bin]#ll /usr/bin/ /bin -d ---這個(gè)兩個(gè)文件是軟連接的關(guān)系
lrwxrwxrwx. 1 root root 7 Jul 14 11:16 /bin -> usr/bin
dr-xr-xr-x. 2 root root 49152 Sep 11 16:36 /usr/bin/
[root@centos7 profile.d]#cd /etc/sudoers.d/ ---進(jìn)入這個(gè)目錄下爹谭,創(chuàng)
建一個(gè)自己的文件诺凡,也可以授權(quán)用戶,但格式要和/etc/sudoers相同
[root@centos7 sudoers.d]#ls ---默認(rèn)是個(gè)空目錄
[root@centos7 sudoers.d]#vim test ---創(chuàng)建test文件嘶卧,并編輯如下
zheng 172.18.21.107=(tom) /bin/cat /etc/shadow
[root@centos7 sudoers.d]#visudo -f test ---編輯完也可以用visudo
命令打開(kāi)進(jìn)行編輯凉袱,但要加上-f
zheng 172.18.21.107=(tom) /bin/cat /etc/shadow
[root@centos7 bin]#setfacl -m u:tom:r /etc/shadow ---給tom用戶設(shè)置一個(gè)acl權(quán)限专甩,使其可以訪問(wèn)shadow文件
[root@centos7 bin]#getfacl /etc/shadow
getfacl: Removing leading '/' from absolute path names
# file: etc/shadow
# owner: root
# group: root
user::r--
user:tom:r-- ---設(shè)置成功
group::---
mask::r--
other::---
[root@centos7 bin]#su - zheng
Last login: Wed Sep 13 14:34:09 CST 2017 on pts/1
[zheng@centos7 ~]$sudo -u tom cat /etc/shadow ---可以看這個(gè)文件了
[root@centos7 sudoers.d]#visudo -f test ---設(shè)置如下授權(quán)
User_Alias NETADMIN = zheng, tom : DBA = zheng
Cmnd_Alias NETCMD = /usr/sbin/ip, /usr/sbin/ifconfig
NETADMIN ALL=(ALL) NOPASSWD:NETCMD
DBA ALL=(ALL) NOPASSWD:/bin/cat /etc/shadow
[root@centos7 sudoers.d]#visudo -c ---檢查一下涤躲,要求更改權(quán)限,
因?yàn)榍懊鎰?chuàng)建的時(shí)候使用vim創(chuàng)建的蒙袍,所以權(quán)限不是要求的權(quán)限嫩挤,如
果用visudo test,權(quán)限就不用改了
/etc/sudoers: parsed OK
/etc/sudoers.d/test: bad permissions, should be mode 0440
[root@centos7 sudoers.d]#chmod 0440 test
[root@centos7 sudoers.d]#visudo -c
/etc/sudoers: parsed OK
/etc/sudoers.d/test: parsed OK
執(zhí)行都是成功的
[root@centos7 sudoers.d]#visudo -f test
Defaults:zheng runas_default=tom ---表示不用指定矫限,默認(rèn)zheng用戶代表的就是tom去執(zhí)行操作
zheng ALL=(ALL) /bin/cat /var/log/messages*,!/bin/cat /var/log/messages* *
[zheng@centos7 ~]$sudo cat /var/log/messages /etc/shadow
Sorry, user zheng is not allowed to execute '/bin/cat /var/log/messages /etc/shadow' as tom on centos7.magedu.com.
這樣就可以避免看shadow文件了
[root@centos7 zheng]#visudo -f /etc/sudoers.d/test
zheng ALL=(ALL) sudoedit ---授權(quán)zheng用戶能夠編輯/etc/sudoers文件和/etc/sudoers.d/test文件
[zheng@centos7 ~]$sudoedit /etc/sudoers.d/test
zheng ALL=(ALL) sudoedit
6、TCP_Wrappers介紹
1棍苹、介紹
工作在第四層(傳輸層)的TCP協(xié)議
對(duì)有狀態(tài)連接的特定服務(wù)進(jìn)行安全檢測(cè)并實(shí)現(xiàn)訪問(wèn)控制
以庫(kù)文件形式實(shí)現(xiàn)
某進(jìn)程是否接受libwrap的控制取決于發(fā)起此進(jìn)程的程序在編譯時(shí)是否針對(duì)libwrap進(jìn)行編譯的
判斷服務(wù)程序是否能夠由tcp_wrapper進(jìn)行訪問(wèn)控制的方法:
[root@centos7 zheng]#which sshd ---二進(jìn)制程序名茵汰,而不是
服務(wù)名
/usr/sbin/sshd
[root@centos7 zheng]#ldd /usr/sbin/sshd |grep "libwrap.so"
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f2a8273e000)
[root@centos7 zheng]#strings /usr/sbin/sshd |grep "libwrap.so"
libwrap.so.0
[root@centos7 zheng]#ldd `which vsftpd`|grep "libwrap.so" ---受控制
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fc7f941a000)
[root@centos7 zheng]#ldd `which httpd`|grep "libwrap.so" ---不受控制
總結(jié):有些服務(wù)是受tcp_ wrappers控制,有些不受控制彬碱,比如http服務(wù)就不受控制奥洼。
2、TCP_Wrappers的使用
配置文件:/etc/hosts.allow, /etc/hosts.deny
幫助參考:man 5 hosts_access嚼沿,man 5 hosts_options
檢查順序:hosts.allow瓷患,hosts.deny(默認(rèn)允許)
注意:一旦hosts.allow規(guī)則匹配擅编,直接生效,將不再繼續(xù)辨图,如果不匹配就看hosts.deny肢藐,如果都不匹配吆豹,默認(rèn)是允許的。
基本語(yǔ)法:
daemon_list@hostIP: client_list[ :options:option… ]
sshd@172.18.21.107: 172.18.21.106
如果放到hosts.deny文件里凑阶,表示拒絕IP地址為172.18.21.106的主機(jī)去訪問(wèn)ip地址為172.18.21.107的主機(jī)的sshd服務(wù)
的107的ip地址
Daemon_list格式
單個(gè)應(yīng)用程序的二進(jìn)制文件名衷快,而非服務(wù)名蘸拔,例如vsftpd,intelnetd
[root@centos7 zheng]#rpm -ql telnet-server ---比如telnet服務(wù)來(lái)自
于telnet-server軟件包
/usr/lib/systemd/system/telnet.socket ---服務(wù)名宝冕,開(kāi)啟或者關(guān)閉服
務(wù)的時(shí)候可以用systemctl start telnet.socket
/usr/lib/systemd/system/telnet@.service
/usr/sbin/in.telnetd ---應(yīng)用程序的二進(jìn)制文件名邓萨,開(kāi)啟或者關(guān)閉服
務(wù)時(shí)也可直接運(yùn)行這個(gè)文件,其實(shí)用systemctl可以管理這個(gè)服務(wù)是因
為在/usr/lib/systemd/system目錄或者在/etc/systemd/system/目錄下
有對(duì)應(yīng)的服務(wù)unit文件宝剖,而centos6中是在/etc/init.d目錄下有很多服務(wù)
腳本万细,使服務(wù)受service管理。
/usr/share/man/man5/issue.net.5.gz
/usr/share/man/man8/in.telnetd.8.gz
/usr/share/man/man8/telnetd.8.gz
以逗號(hào)或空格分隔的應(yīng)用程序文件名列表襟雷,如:sshd,vsftpd
sshd@172.18.0.107,vsftpd: ALL
如果放到hosts.deny文件里仁烹,表示拒絕所有外部主機(jī)去訪問(wèn)我的ssh
服務(wù)的172.18.0.107的地址卓缰,訪問(wèn)我的vsftpd服務(wù)的所有ip地址。
ALL表示所有接受tcp_wrapper控制的服務(wù)程序
主機(jī)有多個(gè)IP捌显,可用@hostIP來(lái)實(shí)現(xiàn)控制
如:in.telnetd@192.168.0.254
客戶端Client_list格式
以逗號(hào)或空格分隔的客戶端列表
基于IP地址:192.168.10.1 192.168.1.
基于主機(jī)名:www.magedu.com .magedu.com 較少用
基于網(wǎng)絡(luò)/掩碼:192.168.0.0/255.255.255.0
基于net/prefixlen: 192.168.1.0/24(CentOS7)
---注意CIDR表示法只能centos7中使用
基于網(wǎng)絡(luò)組(NIS 域):@mynetwork
內(nèi)置ACL:ALL扶歪,LOCAL摄闸,KNOWN,UNKNOWN炫欺,PARANOID
ALL:表示所有的
LOCAL:主機(jī)名不帶點(diǎn)的就匹配
KNOWN:名字可以解析成ip地址的就匹配
UNKNOWN:名字不可以解析成ip地址的就匹配
PARANOID:正向解析和反向解析不對(duì)應(yīng)的就匹配品洛,正向解析把名字解析成ip地址后反向解析把ip地址解析成名字后摩桶,跟前面的名字不對(duì)應(yīng)的就匹配
EXCEPT用法:
示例
vsftpd: 172.16. EXCEPT 172.16.100.0/24 EXCEPT 172.16.100.1
如果放到hosts.deny文件里,表示拒絕172.16這個(gè)網(wǎng)段的主機(jī)連接到
我的vsftpd服務(wù)岛宦,除了172.16.100.0/24這個(gè)網(wǎng)段不拒絕砾肺,但
172.16.100.1這個(gè)ip地址又拒絕
示例:只允許192.168.1.0/24的網(wǎng)段主機(jī)訪問(wèn)sshd服務(wù)
/etc/hosts.allow
sshd: 192.168.1.
/etc/hosts.deny
sshd:ALL
示例:只允許192.168.1.0/24的網(wǎng)段主機(jī)訪問(wèn)telnet和vsftpd服務(wù)
/etc/hosts.allow
vsftpd,in.telnetd: 192.168.1.
/etc/host.deny
vsftpd,in.telnetd: ALL
示例:拒絕172.18.21這個(gè)網(wǎng)段的主機(jī)去訪問(wèn)我主機(jī)的sshd服務(wù)防嗡,但如果一個(gè)主機(jī)有兩個(gè)IP地址蚁趁,一個(gè)是192.168.25.0/24網(wǎng)段,一個(gè)是172.18.0.0/16網(wǎng)段番官,那這個(gè)主機(jī)還是會(huì)連接到我的主機(jī)钢属。
/etc/host.deny
sshd: 172.18.21.
3淆党、[:options]選項(xiàng):
幫助:man 5 hosts_options
deny 主要用在/etc/hosts.allow定義“拒絕”規(guī)則
如:vsftpd: 172.16. :deny
allow 主要用在/etc/hosts.deny定義“允許”規(guī)則
如:vsftpd:172.16. :allow
spawn 啟動(dòng)一個(gè)外部程序完成執(zhí)行的操作
sshd: ALL :spawn echo "$(date +%%F) login attempt\: from %c to %s,%d" >>/var/log/sshd.log
在/etc/hosts.allow中添加,允許登錄山孔,并記錄日志
在/etc/hosts.deny中添加荷憋,拒絕登錄勒庄,并記錄日志
%c 客戶端信息
%s 服務(wù)器端信息
%d 服務(wù)名
%p 守護(hù)進(jìn)程的PID
需要注意的是這里date后要加兩個(gè)百分號(hào),并且用冒號(hào)也要轉(zhuǎn)義
twist 實(shí)際動(dòng)作是拒絕訪問(wèn),使用指定的操作替換當(dāng)前服務(wù),標(biāo)準(zhǔn)I/O和ERROR發(fā)送到客戶端,默認(rèn)至/dev/null
vsftpd: 172.16. :twist /bin/echo “"connection prohibited"
只要加選項(xiàng)twist無(wú)論放到哪個(gè)文件里都表示拒絕的意思酪呻,拒絕的同時(shí)會(huì)給客戶端發(fā)送消息