十一、TCP_Wrappers及sudo

一、TCP_Wrappers介紹

  • 工作在第四層(傳輸層)的TCP協(xié)議

  • 對有狀態(tài)連接的特定服務(wù)進(jìn)行安全檢測并實(shí)現(xiàn)訪問控制

  • 以庫文件形式實(shí)現(xiàn)

  • 某進(jìn)程是否接受libwrap的控制,取決于發(fā)起此進(jìn)程的程序在編譯時(shí)是否調(diào)用libwrap

  • 判斷服務(wù)程序是否能夠由tcp_wrapper進(jìn)行訪問控制的方法:
    ldd /PATH/TO/PROGRAM|grep libwrap.so
    strings PATH/TO/PROGRAM|grep libwrap.so

1.1 TCP_Wrappers使用

配置文件:/etc/hosts.allow, /etc/hosts.deny
幫助參考:man 5 hosts_access,man 5 hosts_options
檢查順序:hosts.allow,hosts.deny(如無內(nèi)容則表示默認(rèn)允許)
注:一旦前面規(guī)則匹配,直接生效,將不再繼續(xù)
基本語法:
daemon_list@host: client_list [ :options :option… ]

daemon_list@host格式:

  • 單個(gè)應(yīng)用程序的二進(jìn)制文件名,而非服務(wù)名,例如vsftpd
  • 以逗號(hào)或空格分隔的應(yīng)用程序文件名列表,如:sshd,vsftpd
  • ALL表示所有接受tcp_wrapper控制的服務(wù)程序
  • 主機(jī)有多個(gè)IP,可用@hostIP來實(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)
  • 基于網(wǎng)絡(luò)組(NIS 域):@mynetwork
  • 內(nèi)置ACL:ALL,LOCAL,KNOWN,UNKNOWN,PARANOID

EXCEPT用法:
示例:拒絕172.16.0.0/16網(wǎng)段連接vsftpd進(jìn)程,除了172.16.100.0/24,但172.16.100.1例外
vsftpd: 172.16. EXCEPT 172.16.100.0/24 EXCEPT 172.16.100.1

常見用法示例:編寫腳本/root/bin/checkip.sh,每5分鐘檢查一次,如果發(fā)現(xiàn)通過ssh登錄失敗次數(shù)超過10次,自動(dòng)將此遠(yuǎn)程IP放入Tcp Wrapper的黑名單中予以禁止防問

cat checkip.sh 
#!/bin/bash
lastb|awk '!/^btmp|^$/{ip[$3]++}END{for(i in ip){if(ip[i]>=10){system("echo sshd: "i" >> /etc/hosts.deny")}}}'

crontab -l
*/5 * * * * /root/checkip.sh


cat /etc/hosts.deny
#
# hosts.deny    This file contains access rules which are used to
#               deny connections to network services that either use
#               the tcp_wrappers library or that have been
#               started through a tcp_wrappers-enabled xinetd.
#
#               The rules in this file can also be set up in
#               /etc/hosts.allow with a 'deny' option instead.
#
#               See 'man 5 hosts_options' and 'man 5 hosts_access'
#               for information on rule syntax.
#               See 'man tcpd' for information on tcp_wrappers
#
sshd: 192.168.75.131

二、sudo權(quán)限

等價(jià)于:su 切換身份 su -l username -c ‘command’

  • 來自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í)間戳文件來完成類似“檢票”的系統(tǒng),默認(rèn)存活期為5分鐘的“入場券”
  • 通過visudo命令編輯配置文件,具有語法檢查功能
    visudo -c 檢查語法
    visudo -f /etc/sudoers.d/test

2.1 sudo使用

配置文件:/etc/sudoers, /etc/sudoers.d/
時(shí)間戳文件:/var/db/sudo
日志文件:/var/log/secure
配置文件支持使用通配符glob:
? 任意單一字符
* 匹配任意長度字符
[wxc] 匹配其中一個(gè)字符
[!wxc] 除了這三個(gè)字符的其它字符
\x 轉(zhuǎn)義
[[alpha]] 字母 示例: /bin/ls [[alpha]]*

配置文件規(guī)則
1、別名定義:不是必須的
2、授權(quán)規(guī)則:必須的
授權(quán)規(guī)則格式:
用戶 登入主機(jī)=(代表用戶) 命令
user host=(runas) command
示例:
root ALL=(ALL) ALL

  • 格式說明:
    user: 運(yùn)行命令者的身份
    host: 通過哪些主機(jī)
    (runas):以哪個(gè)用戶的身份
    command: 運(yùn)行哪些命令

配置示例:配置magedu用戶的sudo權(quán)限,允許magedu用戶擁有root權(quán)限

visudo  ##在第100行下方添加如下內(nèi)容:
magedu  ALL=(ALL)       ALL

保存退出:wq

驗(yàn)證結(jié)果:

su - magedu
cat /etc/shadow
cat: /etc/shadow: Permission denied

sudo cat /etc/shadow

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for magedu: 
root:$6$xYGbjjf5gHfWfU74$evxYxJ0LdnpmAH0mXY7RbYGo7W4ngrmZRZJe85wuH4u.xthGn/jNz6l3ievX3Hp8CCEnxBvvqjELBI5jvvpqz.::0:99999:7:::
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容