CentOS下的sudo相关配置的总结归纳1 基础部分1.1 常用的命令行| 123456 | man sudoers visudo sudo -l sudo -u user1 /bin/ls sudo -g gp1 /bin/ls sudo -u user1 -g gp1 /bin/ls |
1.2 配置文件路径1.3 sudoers的规则分类sudoers的规则分为以下两类:1)别名定义(可选)2)授权规则(必选)
1.4 特殊符号的用法| 1234567 | "#" 用于注释 "x" 转义字符 "" 使用到物理行行尾则把下行的物理行连接成一个逻辑行 "*" 匹配零个或多个字符 "?" 匹配单个字符 "[...]" 匹配指定范围的字符 "[!...]" 匹配非指定范围的字符 |
2 Alias(别名)2.1 别名的类型包含以下四种别名:User_Alias,Runas_Alias,Host_Alias,Cmnd_Alias注:以上别名类型的书写大小写敏感
| 1234 | Alias ::= "User_Alias" User_Alias (":" User_Alias)* | "Runas_Alias" Runas_Alias (":" Runas_Alias)* | "Host_Alias" Host_Alias (":" Host_Alias)* | "Cmnd_Alias" Cmnd_Alias (":" Cmnd_Alias)* |
2.2 别名的定义格式2.2.1 单个别名的书写方式| 1 | Alias_Type NAME = item1, item2, ... |
注:别名成员以“,”号分隔
2.2.2 多个别名的书写方式| 1 | Alias_Type NAME = item1, item2, item3 : NAME = item4, item5 |
注:以“:”号分隔
2.2.3 四种书写简式| 1234567 | User_Alias ::= NAME "=" User_List Runas_Alias ::= NAME "=" Runas_List Host_Alias ::= NAME "=" Host_List Cmnd_Alias ::= NAME "=" Cmnd_List |
2.3 别名定义NAME的有效字符| 1 | NAME ::= [A-Z]([A-Z][0-9]_)* |
2.4 常见的定义范例 2.4.1 命令行别名的定义范例作用:定义用户别名和别名中包含能否运行的命令范例:
| 12 | Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool |
2.4.2 用户别名的定义范例作用:定义用户别名和别名中包含的用户
| 12 | User_Alias NETWORKINGADMINS = user1, user2, %gp1 |
注:1)组前面加“%”号2)用户名必须是系统有效的用户
2.4.3 主机别名的定义范例作用:定义主机别名和别名中包含的主机范例:
| 12 | Host_Alias FILESERVERS = fs1, fs2 |
注:1)服务器fs1和fs2属于FILESERVERS组2)主机可以是主机名称、IP(192.168.0.8)、或网段(192.168.0.0/24)、子网掩码(255.255.255.0)
3 授权规则3.1 授权规则的格式其实就这个意思:
注:以上都可以使用别名代替
3.2 授权规则的范例3.2.1 不使用别名的定义方式基于系统用户名的定义
| 1 | user1 fs1=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom |
基于系统组的定义
| 1 | %gp1 fs1=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom |
使用ALL关键字的定义
3.2.2 使用别名的定义方式| 1 | NETWORKINGADMINS FILESERVERS=(NETWORKADMINS) |
注:1)NETWORKINGADMINS代表定义过的用户或组:user1, user2, %gp12)FILESERVERS代表定义过的服务器:fs1, fs23)NETWORKADMINS代表定义过的命令:/sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
3.2.3 关闭密码验证提示在命令列前加入关键字“NOPASSWD: ”,详细如下:
| 1 | %wheel ALL=(ALL) NOPASSWD: ALL |
或
| 1 | %wheel ALL=(ALL) NOPASSWD: /sbin/route |
4 其他指令4.1 导入子规则| 1 | includedir /etc/sudoers.d |
使定义于/etc/sudoers.d目录下的子规则生效
4.2 关闭sudo命令的提示此选项适用于使用shell中调用sudo执行命令时候屏蔽以下提示:
| 1 | sudo: sorry, you must have a tty to run sudo |
4.2.1 方法一注释掉以下行:
4.2.2 方法二添加以下行:
| 1 | Defaults:user1 !requiretty |
4.3 指定安全的执行路径| 1 | Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin |
5 开启监视日志5.1 创建日志文件5.2 开启sudo的日志功能加入如下行:
| 123 | Defaults logfile=/var/log/sudo.log Defaults loglinelen=0 Defaults !syslog |
5.3 配置系统日志5.3.1 修改日志配置文件“local7.*”行后加入如下行:
| 1 | local2.debug /var/log/sudo.log |
5.3.2 重启系统日志服务5.4 测试日志5.4.1 命令行监视日志| 1 | tail -f /var/log/sudo.log |
5.4.2 执行指令测试| 1 | sudo /usr/bin/ssh root@127.0.0.1 |
6 应用场景6.1 排除部分使用的情景6.1.2 配置要求| 12 | 禁止某用户使用:su命令 允许某用户使用:su除外命令 |
注:禁止的原因是因为用户可以使用此命令提权
6.1.2 解决方案1) 查询用户的所属组
显示如下:
| 1 | uid=8(mail) gid=12(mail) groups=12(mail) |
2) 定义方法
| 12 | %mail ALL=(root) NOPASSWD: ALL mail ALL=(root) NOPASSWD: !/bin/su |
注:定义所属组允许执行所有命令,但拒绝用户执行su命令3) 相对好的定义方法
| 12 | %mail ALL=(root) NOPASSWD: /sbin/*,/bin/*,/usr/sbin/*,/usr/bin/* mail ALL=(root) NOPASSWD: !/bin/su |
可防止用户使用如下方法破解:
| 12 | sudo cp /bin/su assu sudo ./assu - root |
4) 相对更好的定义方法
| 123 | %mail ALL=(root) NOPASSWD: /sbin/*,/bin/*,/usr/sbin/*,/usr/bin/* mail ALL=(root) NOPASSWD: !/*/* /sbin/*,!/*/* /bin/*,!/*/* /usr/sbin/*,!/*/* /usr/bin/*, !/bin/su |
注:禁止用户使用允许的命令操作运行命令的目录的文件可防止用户使用如下方法破解:
| 12345 | sudo mv /bin/su /bin/assu sudo cp /bin/su /bin/assu sudo assu - root |
5)实际上,我建议做如下配置
| 123 | %mail ALL=(root) NOPASSWD: /sbin/*,/bin/*,/usr/sbin/*,/usr/bin/* mail ALL=(root) NOPASSWD: !/*/* /sbin/*,!/*/* /bin/*,!/*/* /usr/sbin/*,!/*/* /usr/bin/*, !/bin/su,!/usr/bin/passwd *root*,!/*/* */root/* |
可防止用户使用passwd命令操作root用户:
| 123 | sudo su - root sudo passwd -l root sudo passwd -u root |
或使用其他命令去操作root的家目录
| 12 | sudo ls /root/ sudo ls -l /root/ |
怎样?脑洞大开吧?sudo是相对安全的对吧?O(∩_∩)O哈哈~注:以上个人总结,如有错漏欢迎指正,在下感激不尽。 本文永久更新链接地址