我希望删除非关键软件包以限制潜在的安全漏洞的暴露。
我从不使用 Ruby。
删除 Ruby 是否会增加安全性或破坏系统的其他部分?
答案1
如果您的包管理器首先安装了 Ruby,那么您的系统中就有需要它的东西。
最简单的方法什么需要测试删除包的尝试。例如:
# yum remove ruby
...
================================================================================
Package Arch Version Repository Size
================================================================================
Removing:
ruby x86_64 1.8.7.352-12.el6_4 @updates 1.8 M
Removing for dependencies:
facter x86_64 1:1.7.3-1.el6 @puppetlabs-products 235 k
hiera noarch 1.2.1-1.el6 @puppetlabs-products 46 k
puppet noarch 3.3.0-1.el6 @puppetlabs-products 3.5 M
ruby-irb x86_64 1.8.7.352-12.el6_4 @updates 1.0 M
ruby-rdoc x86_64 1.8.7.352-12.el6_4 @updates 1.3 M
ruby-rgen noarch 0.6.5-1.el6 @puppetlabs-deps 315 k
rubygem-json x86_64 1.5.5-1.el6 @puppetlabs-deps 989 k
rubygems noarch 1.3.7-1.el6 @base 711 k
Transaction Summary
================================================================================
Remove 9 Package(s)
Installed size: 9.9 M
Is this ok [y/N]: n
Exiting on user Command
因此在我的系统上,我看到 puppet 需要它。由于我确实需要 puppet,因此我不会删除 ruby。
在基于 Debian 的系统上同样如此:
# apt-get remove ruby
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
libshadow-ruby1.8 irb1.8 libaugeas0 rdoc libruby ruby1.8 rdoc1.8
libaugeas-ruby1.8 puppet-common libruby1.8 libopenssl-ruby1.8
libreadline-ruby1.8 libreadline5 libopenssl-ruby augeas-lenses
libxmlrpc-ruby
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
facter puppet ruby
0 upgraded, 0 newly installed, 3 to remove and 48 not upgraded.
After this operation, 983kB disk space will be freed.
Do you want to continue [Y/n]? n
Abort.
答案2
删除 ruby 本身不会对安全性产生太大影响。如果您不使用它,攻击者如何利用其中的某些东西?他们必须有一个 shell 并能够调用 ruby 解释器,如果他们有一个 shell,那么他们有比运行 ruby 更好的十亿种方法来使用它(为了什么,为了获得他们已经拥有的 shell?)。
如果您碰巧拥有任何以 ruby 作为解释器的 SUID 可执行文件,这可能会给您带来安全问题(视情况而定),或者如果 ruby 在 sudoers 中,并且假设的攻击者可以以这种方式运行它(除非您愿意授予他们 root 权限,否则不要让任何人 sudo 解释器;永远不要让服务帐户 sudo 解释器),这将是一个安全问题。但是,安全漏洞不是由安装 ruby 造成的,而是由系统配置错误造成的。
你的做法是错误的。删除不必要的服务,而不是不必要的包。
答案3
在基于 RHEL 的系统上,你可以使用 yum-utils 包
# rpm -q --whatrequires ruby
同样有用的命令
# yum install yum-utils
# package-cleanup --leaves
在基于 Debian 的系统上
# apt-cache showpkg ruby**