1、SSH端口轉(zhuǎn)發(fā)
- 遠程端口轉(zhuǎn)發(fā)
實驗過程
準備三個主機厂镇,并檢查三個主機的防火墻是否關閉纤壁,selinux是否禁用,然后將郵件服務器的主機的配置文件更改為下圖所示
打開郵件服務器的配置文件/etc/postfix/main.cf
在郵件服務器上拒絕來自107機器的連接捺信,模擬現(xiàn)實中的防火墻
[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)連接到遠程的ssh服務器
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客戶端和服務器已經(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 ---連接本機的9527端口酌媒,就可以和遠程的郵件服務器相連
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客戶端連接到了郵件服務器
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
可以給郵件服務器發(fā)一封郵件如下圖
在郵件服務器切換到zhang用戶,然后輸入mail就可以看到郵件了。
- 動態(tài)端口轉(zhuǎn)發(fā)
實驗
在c機器上搭建一個http服務秒咨,并且防火墻拒絕a去訪問
在A上執(zhí)行如下命令
[root@centos7 app]#ssh -D 1080 172.18.21.6 ----172.18.21.6為B
的ip地址喇辽,1080端口是在A上打開的
Last login: Tue Sep 12 19:58:26 2017 from 172.18.252.32
然后在a的圖形界面上對filefox(火狐瀏覽器)進行如下圖設置
這樣就可以穿過防火墻去連接C了,也可以在字符界面下執(zhí)行如下命令去訪問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>
當用firefox訪問internet時雨席,本機的1080端口做為代理服務器菩咨,firefox的訪問請求被轉(zhuǎn)發(fā)到sshserver上,由sshserver替之訪問internet陡厘。
2抽米、ssh服務器的配置文件
[root@centos7 app]#cd /etc/ssh
[root@centos7 ssh]#ls ---這個目錄下存放的是服務器各種算法的公
鑰和私鑰,以及客戶端和服務器端的配置文件雏亚,公鑰和私鑰用于連接
時缨硝,客戶端對服務器端進行身份驗證,連接時輸入yes罢低,客戶端會得到
服務器端的公鑰查辩,保存到當前用戶的家目錄.ssh/known_hosts
文件中,下次連接時先用公鑰加密數(shù)據(jù)傳給服務器网持,如果服務器能夠
解開宜岛,證明是想要連接的服務器
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服務器端的配置文件為/etc/ssh/sshd_config
?Port
為了避免被攻擊建議把端口號改掉,默認是22端口
?ListenAddress ip
本機的哪個ip地址允許監(jiān)聽22端口功舀,建議這一項改一下萍倡。不要所有的地址
?LoginGraceTime 2m
連接時兩分鐘一直不輸入密碼就退出
?PermitRootLogin yes
允許root賬號直接連接,建議改為no辟汰,改為no后只有普通用戶可以連接列敲,但可以su切換為root
?StrictModes yes
檢查文件的各種屬性,權限等
?MaxAuthTries 6
如果密碼輸錯3次就退出帖汞,是6的一半
?MaxSessions 10 同一個連接最大會話
比如用xshell連接后戴而,用復制的方式打開十個終端,就不能再打開了翩蘸。
?PubkeyAuthentication yes
允許基于key驗證
?PermitEmptyPasswords no
允許空口令驗證
?PasswordAuthentication yes
基于密碼驗證所意,如果關掉只能基于key的驗證
?GatewayPorts no
啟用網(wǎng)關,啟用之后就相當于自己是網(wǎng)關催首,跟自己同一個網(wǎng)段的主機都可以連到本主機扶踊,也可以通過本主機去連接到外面的網(wǎng)絡
?ClientAliveInterval(單位:秒)
連上去之后什么也不干,多長時間斷開
?ClientAliveCountMax(默認3)
探測次數(shù)郎任。連上什么也不干秧耗,次數(shù)乘以上面的時間,才是真正斷開的時間舶治。
?UseDNS yes
啟用DNS分井。建議改為no胶台,提高連接速度,不然會把地址方向解析杂抽,但由于沒有配置dns,解析半天解析不出來才讓連接
?GSSAPIAuthentication yes 提高速度可改為no
GSSAPI認證韩脏,建議改為no缩麸,提高連接速度
?MaxStartups未認證連接最大值,默認值10
用戶個數(shù)到達10個就開始拒絕30%赡矢,按比例拒絕杭朱,到達60個就全拒絕,控制用戶連接吹散,最大只能連接60個用戶
?Banner /path/file
連接時候的提示信息弧械,可以后面跟一個文件,然后編輯這個文件中的內(nèi)容空民,就可做為連接提示信息
限制用戶登錄的辦法
AllowUsers user1 user2 user3 --表示允許遠程主機以本機的哪個用戶的身份登錄本主機
DenyUsers ---表示不允許遠程主機用本機的哪個用戶的身份登錄本主機
AllowGroups ---表示允許遠程主機以本機哪個組里的用戶的身份登錄本主機
DenyGroups
具體的解釋可以查看幫助man /etc/ssh/sshd_config
135 #Match User anoncvs
136 # X11Forwarding no
137 # AllowTcpForwarding no
138 # ForceCommand cvs server
139 AllowUsers zhang ---在配置文件的最后加上一行就可以了刃唐,
表示只允許遠程主機以zhang的身份登錄本主機,所以遠程主機在連
接的時候要知道zhang的密碼才能連接到本主機
-ssh服務的最佳實踐
?禁止使用默認端口
?禁止使用protocol version 1
?限制可登錄用戶
?設定空閑會話超時時長
?利用防火墻設置ssh訪問策略
?僅監(jiān)聽特定的IP地址
?基于口令認證時界轩,使用強密碼策略
tr-dc A-Za-z0-9_ < /dev/urandom| head -c 30| xargs
?使用基于密鑰的認證
?禁止使用空密碼
?禁止root用戶直接登錄
?限制ssh的訪問頻度和并發(fā)在線數(shù)
?做好日志画饥,經(jīng)常分析
ssh的日志文件是/var/log/secure,每一次連接日志文件都會有記錄浊猾。
3抖甘、編譯安裝dropbear示例
ssh協(xié)議的另一個實現(xiàn):dropbear
1、查看是否安裝開發(fā)包組葫慎,如果沒有安裝就安裝
2衔彻、解壓縮dropbear-2017.75.tar.bz2文件
3、進入dropbear-2017.75
4偷办、cat README cat INSTALL 查看一下服務的信息和安裝信息
5艰额、 ./configure --help 查看一下如何執(zhí)行這個腳本
6、 ./configure --prefix=/app 執(zhí)行configure腳本
7爽篷、 yum install zlib-devel ---執(zhí)行過程報錯悴晰,需要安裝這個包文件
8 、./configure --prefix=/app ---繼續(xù)執(zhí)行configure腳本
9逐工、make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"
10铡溪、 make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install
到此安裝過程就結束了,下面就是安裝私鑰和驗證服務
11泪喊、cd /app/bin ./dropbearkey -t rsa -f dropbear_rsa_host_key---安
裝私鑰和公鑰棕硫,這個和sshd服務一樣,在/etc/ssh/目錄一下也有公鑰
和私鑰袒啼。
12哈扮、cd /app/sbin ./dropbear -E -p 2222 ---開啟這個服務纬纪,并指定
端口為2222,-E選項是執(zhí)行的時候如果報錯會在屏幕上顯示
13滑肉、發(fā)現(xiàn)出錯包各,F(xiàn)ailed loading /etc/dropbear/dropbear_rsa_host_key ---找不到鑰匙
14、 mkdir /etc/dropbear ---創(chuàng)建一個目錄
ln -s /app/bin/dropbear_rsa_host_key /etc/dropbear/dropbear_rsa_host_key ---創(chuàng)建一個軟連接指向指向
存放鑰匙的文件
15靶庙、./dropbear -E -p 2222 ---再次執(zhí)行就可以了问畅,在遠程用ssh 172.18.21.107 -p 2222就可以連接到本主機了
16、cd/app bin/ ./dbclient 172.18.21.106 ----驗證一下客戶端的命
令六荒,發(fā)現(xiàn)也可以連接到遠程主機
4护姆、AIDE
?AIDE(Adevanced Intrusion Detection Environment)
(高級入侵檢測環(huán)境)是一個入侵檢測工具,主要用途是檢查文件的完整性掏击,審計計算機上的那些文件被更改過了卵皂。
?AIDE能夠構造一個指定文件的數(shù)據(jù)庫,它使用aide.conf作為其配置文件砚亭。AIDE數(shù)據(jù)庫能夠保存文件的各種屬性灯变,包括:權限(permission)、索引節(jié)點序號(inode number)捅膘、所屬用戶(user)柒凉、所屬用戶組(group)、文件大小篓跛、最后修改時間(mtime)膝捞、創(chuàng)建時間(ctime)、最后訪問時間(atime)愧沟、增加的大小以及連接數(shù)蔬咬。AIDE還能夠使用下列算法:sha1、md5沐寺、rmd160林艘、tiger,以密文形式建立每個文件的校驗碼或散列號,也就是哈希運算混坞,用來判斷文件的內(nèi)容是否被更改狐援。
?這個數(shù)據(jù)庫不應該保存那些經(jīng)常變動的文件信息,例如:日志文件究孕、郵件啥酱、/proc文件系統(tǒng)、用戶起始目錄以及臨時目錄厨诸。
示例
[root@centos7 app]#rpm -q aide
package aide is not installed
[root@centos7 app]#yum install aide
[root@centos7 app]#rpm -ql aide ---查看一下這個軟件包都生成了
哪些文件
/etc/aide.conf ---配置文件
/usr/sbin/aide ---主程序文件
/var/lib/aide ----數(shù)據(jù)庫文件
/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 ---復制三個文件镶殷,下步實驗時只監(jiān)控f1和f2文件,f3文件不監(jiān)控
f1 f2 f3
[root@centos7 app]#vim /etc/aide.conf ---進入這個文件會發(fā)現(xiàn)有很
多默認的設置微酬,這里為了實驗方便绘趋,把默認的都刪除了颤陶,自己寫了一
個設置,指定監(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ù)庫滓走,也就是生成數(shù)據(jù)庫
[root@centos7 app]#cd /var/lib/aide/
[root@centos7 aide]#ls ---發(fā)現(xiàn)數(shù)據(jù)庫文件已經(jīng)生成
aide.db.new.gz
[root@centos7 aide]#mv aide.db.new.gz aide.db.gz ---要把數(shù)據(jù)庫文件名改成aide.db.gz,才能使用
[root@centos7 aide]#aide -C ---檢查文件是否監(jiān)控的文件是否發(fā)生
變化和數(shù)據(jù)庫進行對比
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ù)庫
[root@centos7 app]#cd /var/lib/aide/
[root@centos7 aide]#ls ---發(fā)現(xiàn)又新生成了一個數(shù)據(jù)庫文件帽馋,把原
來的刪除闲坎,把新生成的文件改名后就可以使用了
aide.db.gz aide.db.new.gz
對于沒有監(jiān)控的f3文件,確檢查不出來茬斧。
aide是檢查文件完整性的一個很好的工具,對于那些不改動的文件或目錄都可以用aide去監(jiān)控梗逮,比如/usr/bin和/usr/sbin下的二進制程序
5项秉、sudo 授權指定用戶在指定主機上運行某些命令
1、 簡介
su切換身份:su–l username –c ‘command‘ 切換到某個用戶執(zhí)行命令再切換回原來用戶
?sudo
?來自sudo包
?man 5 sudoers
?sudo能夠授權指定用戶在指定主機上運行某些命令慷彤。如果未授權用戶嘗試使用sudo娄蔼,會提示聯(lián)系管理員
?sudo可以提供日志,記錄每個用戶使用sudo操作
?sudo為系統(tǒng)管理員提供配置文件底哗,允許系統(tǒng)管理員集中地管理用戶的使用權限和使用的主機
?sudo使用時間戳文件來完成類似“檢票”的系統(tǒng)岁诉,默認存活期為5分鐘的“入場券”,也就是過五分鐘再執(zhí)行sudo跋选,授權某個用戶執(zhí)行哪個命令的的時候又要輸密碼驗證涕癣,5分鐘之內(nèi)如果輸過一次就不需要再輸入了。
?通過visudo命令編輯配置文件前标,具有語法檢查功能坠韩,但默認是用vi打開的,沒有顏色炼列,可以使用export EDITOR=vim來讓其使用vim編輯只搁。如果要長期有效保存到/etc/profile.d目錄下的一個文件中。
visudo–c 檢查語法
2俭尖、配置文件
?配置文件:/etc/sudoers, /etc/sudoers.d/氢惋,可以把設置放到/etc/sudoers.d/目錄下,自己創(chuàng)建一個文件稽犁,格式和/etc/sudoers的相同就可以焰望,和/etc/crontab用法類似。
?時間戳文件:/var/db/sudo
?日志文件:/var/log/secure
?配置文件支持使用通配符glob:
已亥?:任意單一字符
*:匹配任意長度字符
[wxc]:匹配其中一個字符
[!wxc]:除了這三個字符的其它字符
\x : 轉(zhuǎn)義
[[alpha]] :字母示例:/bin/ls [[alpha]]*
3柿估、授權規(guī)則格式
用戶 登入主機=(代表用戶) 命令
?示例:
wang ALL=(ALL) ALL 表示授權wang用戶在所有主機,代表所有人可以執(zhí)行任何操作
?格式說明:
user: 運行命令者的身份
host: 通過哪些主機
(runas):以哪個用戶的身份
command: 運行哪些命令
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 ---授權用戶去更改sudo策略秫舌,也就是可以改sudo的配置文件的妖,用戶在用的時候執(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]_)* ---必須是大寫字母開頭足陨,后面是大寫字母嫂粟、數(shù)字或者下劃線
?別名定義:
Alias_Type NAME1 = item1, item2, item3 : NAME2 = item4, item5
示例1
student ALL=(root) /sbin/pidof,/sbin/ifconfig
%wheel ALL=(ALL) NOPASSWD: ALL ---收錢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 主機名后面=沒有寫表示代表所有人
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í)行前者操作時不用輸入口令,執(zhí)行后者操作時要輸入口令
示例5
Defaults:wang runas_default=tom ---表示不寫-u代替誰時墨缘,網(wǎng)用戶默認代替的是tom用戶執(zhí)行什么操作
wang ALL=(tom,jerry) ALL ---授權wang用戶可以代替兩個人執(zhí)行所有操作星虹,但不寫-u時默認代替的是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*
這種寫法有個問題,就是wang用戶可以用sudo cat /var/log/messages /etc/shadow镊讼,為了出現(xiàn)這種情況宽涌。可以寫成如下格式
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 默認為root
-l,ll列出用戶在主機上可用的和被禁止的命令
-v 再延長密碼有效期限5分鐘,更新時間戳
-k 清除時間戳(1970-01-01)卸亮,下次需要重新輸密碼
-K 與-k類似,還要刪除時間戳文件
-b在后臺執(zhí)行指令
-p 改變詢問密碼的提示符號
示例:-p”password on %h for user %p:"
[zhang@centos7 ~]$sudo -p "password on %h for user %p:" cat /etc/shadow
password on centos7 for user zhang:
注意:這些命令都是在切換身份之后玩裙,被授權的用戶執(zhí)行的命令兼贸。
實驗
[root@centos7 sbin]#su - zhang
Last login: Wed Sep 13 09:44:09 CST 2017 on pts/0
[zhang@centos7 ~]$su -l root -c 'cat /etc/shadow'
[root@centos7 profile.d]#visudo ---執(zhí)行這個命令,默認就會打
開/etc/sudoers文件吃溅,并且如果編寫的時候有語法錯誤溶诞,在保存的時
候會有提示,進行如下編輯
zhang ALL=(ALL) /bin/mount /dev/sr0/ /mnt/cdrom, /usr/bin/unmout
[root@centos7 profile.d]#visudo -c ---檢查一下語法沒有錯誤决侈,用
vim打開這個配置文件時是只讀的螺垢,可以用wq!強制保存赖歌,也可以用
這條命令檢查語法錯誤
/etc/sudoers: parsed OK
[zhang@centos7 ~]$sudo mount /dev/sr0 /mnt/cdrom/ ---發(fā)現(xiàn)授權
的時候是嚴格匹配的甩苛,多一個/都執(zhí)行不了
[sudo] password for zhang:
Sorry, user zhang is not allowed to execute '/bin/mount /dev/sr0 /mnt/cdrom' as root on centos7.magedu.com.
[zhang@centos7 ~]$sudo mount /dev/sr0/ /mnt/cdrom
[sudo] password for zhang:
mount: /dev/sr0 is write-protected, mounting read-only
[root@centos7 bin]#ll /usr/bin/ /bin -d ---這個兩個文件是軟連接的關系
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/ ---進入這個目錄下,創(chuàng)
建一個自己的文件俏站,也可以授權用戶讯蒲,但格式要和/etc/sudoers相同
[root@centos7 sudoers.d]#ls ---默認是個空目錄
[root@centos7 sudoers.d]#vim test ---創(chuàng)建test文件,并編輯如下
zhang 172.18.21.107=(tom) /bin/cat /etc/shadow
[root@centos7 sudoers.d]#visudo -f test ---編輯完也可以用visudo
命令打開進行編輯肄扎,但要加上-f
zhang 172.18.21.107=(tom) /bin/cat /etc/shadow
[root@centos7 bin]#setfacl -m u:tom:r /etc/shadow ---給tom用戶設置一個acl權限墨林,使其可以訪問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-- ---設置成功
group::---
mask::r--
other::---
[root@centos7 bin]#su - zhang
Last login: Wed Sep 13 14:34:09 CST 2017 on pts/1
[zhang@centos7 ~]$sudo -u tom cat /etc/shadow ---可以看這個文件了
[root@centos7 sudoers.d]#visudo -f test ---設置如下授權
User_Alias NETADMIN = zhang, tom : DBA = zhang
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 ---檢查一下,要求更改權限犯祠,
因為前面創(chuàng)建的時候使用vim創(chuàng)建的旭等,所以權限不是要求的權限,如
果用visudo test衡载,權限就不用改了
/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:zhang runas_default=tom ---表示不用指定搔耕,默認zhang用戶代表的就是tom去執(zhí)行操作
zhang ALL=(ALL) /bin/cat /var/log/messages*,!/bin/cat /var/log/messages* *
[zhang@centos7 ~]$sudo cat /var/log/messages /etc/shadow
Sorry, user zhang is not allowed to execute '/bin/cat /var/log/messages /etc/shadow' as tom on centos7.magedu.com.
這樣就可以避免看shadow文件了
[root@centos7 zhang]#visudo -f /etc/sudoers.d/test
zhang ALL=(ALL) sudoedit ---授權zhang用戶能夠編輯/etc/sudoers文件和/etc/sudoers.d/test文件
[zhang@centos7 ~]$sudoedit /etc/sudoers.d/test
zhang ALL=(ALL) sudoedit
6、TCP_Wrappers介紹
1、介紹
?工作在第四層(傳輸層)的TCP協(xié)議
?對有狀態(tài)連接的特定服務進行安全檢測并實現(xiàn)訪問控制
?以庫文件形式實現(xiàn)
?某進程是否接受libwrap的控制取決于發(fā)起此進程的程序在編譯時是否針對libwrap進行編譯的
?判斷服務程序是否能夠由tcp_wrapper進行訪問控制的方法:
[root@centos7 zhang]#which sshd ---二進制程序名弃榨,而不是
服務名
/usr/sbin/sshd
[root@centos7 zhang]#ldd /usr/sbin/sshd |grep "libwrap.so"
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f2a8273e000)
[root@centos7 zhang]#strings /usr/sbin/sshd |grep "libwrap.so"
libwrap.so.0
[root@centos7 zhang]#ldd `which vsftpd`|grep "libwrap.so" ---受控制
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fc7f941a000)
[root@centos7 zhang]#ldd `which httpd`|grep "libwrap.so" ---不受控制
總結:有些服務是受tcp_ wrappers控制菩收,有些不受控制,比如http服務就不受控制鲸睛。
2娜饵、TCP_Wrappers的使用
?配置文件:/etc/hosts.allow, /etc/hosts.deny
?幫助參考:man 5 hosts_access,man 5 hosts_options
?檢查順序:hosts.allow官辈,hosts.deny(默認允許)
注意:一旦hosts.allow規(guī)則匹配箱舞,直接生效,將不再繼續(xù)拳亿,如果不匹配就看hosts.deny晴股,如果都不匹配,默認是允許的肺魁。
?基本語法:
?daemon_list@hostIP: client_list[ :options:option… ]
sshd@172.18.21.107: 172.18.21.106
如果放到hosts.deny文件里电湘,表示拒絕IP地址為172.18.21.106的主機去訪問ip地址為172.18.21.107的主機的sshd服務
的107的ip地址
?Daemon_list格式
?單個應用程序的二進制文件名,而非服務名万搔,例如vsftpd,intelnetd
[root@centos7 zhang]#rpm -ql telnet-server ---比如telnet服務來自
于telnet-server軟件包
/usr/lib/systemd/system/telnet.socket ---服務名官帘,開啟或者關閉服
務的時候可以用systemctl start telnet.socket
/usr/lib/systemd/system/telnet@.service
/usr/sbin/in.telnetd ---應用程序的二進制文件名瞬雹,開啟或者關閉服
務時也可直接運行這個文件,其實用systemctl可以管理這個服務是因
為在/usr/lib/systemd/system目錄或者在/etc/systemd/system/目錄下
有對應的服務unit文件刽虹,而centos6中是在/etc/init.d目錄下有很多服務
腳本酗捌,使服務受service管理。
/usr/share/man/man5/issue.net.5.gz
/usr/share/man/man8/in.telnetd.8.gz
/usr/share/man/man8/telnetd.8.gz
?以逗號或空格分隔的應用程序文件名列表涌哲,如:sshd,vsftpd
sshd@172.18.0.107,vsftpd: ALL
如果放到hosts.deny文件里胖缤,表示拒絕所有外部主機去訪問我的ssh
服務的172.18.0.107的地址,訪問我的vsftpd服務的所有ip地址阀圾。
?ALL表示所有接受tcp_wrapper控制的服務程序
?主機有多個IP哪廓,可用@hostIP來實現(xiàn)控制
如:in.telnetd@192.168.0.254
?客戶端Client_list格式
?以逗號或空格分隔的客戶端列表
?基于IP地址:192.168.10.1 192.168.1.
?基于主機名:www.magedu.com .magedu.com 較少用
?基于網(wǎng)絡/掩碼:192.168.0.0/255.255.255.0
?基于net/prefixlen: 192.168.1.0/24(CentOS7)
---注意CIDR表示法只能centos7中使用
?基于網(wǎng)絡組(NIS 域):@mynetwork
?內(nèi)置ACL:ALL,LOCAL初烘,KNOWN涡真,UNKNOWN,PARANOID
ALL:表示所有的
LOCAL:主機名不帶點的就匹配
KNOWN:名字可以解析成ip地址的就匹配
UNKNOWN:名字不可以解析成ip地址的就匹配
PARANOID:正向解析和反向解析不對應的就匹配肾筐,正向解析把名字解析成ip地址后反向解析把ip地址解析成名字后哆料,跟前面的名字不對應的就匹配
?EXCEPT用法:
示例
vsftpd: 172.16. EXCEPT 172.16.100.0/24 EXCEPT 172.16.100.1
如果放到hosts.deny文件里,表示拒絕172.16這個網(wǎng)段的主機連接到
我的vsftpd服務吗铐,除了172.16.100.0/24這個網(wǎng)段不拒絕东亦,但
172.16.100.1這個ip地址又拒絕
示例:只允許192.168.1.0/24的網(wǎng)段主機訪問sshd服務
/etc/hosts.allow
sshd: 192.168.1.
/etc/hosts.deny
sshd:ALL
示例:只允許192.168.1.0/24的網(wǎng)段主機訪問telnet和vsftpd服務
/etc/hosts.allow
vsftpd,in.telnetd: 192.168.1.
/etc/host.deny
vsftpd,in.telnetd: ALL
示例:拒絕172.18.21這個網(wǎng)段的主機去訪問我主機的sshd服務,但如果一個主機有兩個IP地址唬渗,一個是192.168.25.0/24網(wǎng)段典阵,一個是172.18.0.0/16網(wǎng)段奋渔,那這個主機還是會連接到我的主機。
/etc/host.deny
sshd: 172.18.21.
3萄喳、[:options]選項:
?幫助:man 5 hosts_options
deny 主要用在/etc/hosts.allow定義“拒絕”規(guī)則
如:vsftpd: 172.16. :deny
allow 主要用在/etc/hosts.deny定義“允許”規(guī)則
如:vsftpd:172.16. :allow
spawn 啟動一個外部程序完成執(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 服務器端信息
?%d 服務名
?%p 守護進程的PID
需要注意的是這里date后要加兩個百分號,并且用冒號也要轉(zhuǎn)義
twist 實際動作是拒絕訪問,使用指定的操作替換當前服務,標準I/O和ERROR發(fā)送到客戶端,默認至/dev/null
vsftpd: 172.16. :twist /bin/echo “"connection prohibited"
只要加選項twist無論放到哪個文件里都表示拒絕的意思染突,拒絕的同時會給客戶端發(fā)送消息