Skip to content

harden server remove unnecessary things

DreamAndDead edited this page Aug 23, 2017 · 7 revisions

服务最小化

下列针对使用apt包管理系linux

关闭/删除不必要的服务,减小对外暴露的端口,同时减小系统资源的占用

禁止服务

根据操作25x服务器的经验,很多时候服务器在提供服务的同时,也在运行着和业务不相关的服务。 尤其是使用了docker之后,运行在容器中的服务才是我们需要关心的。目标就是要削减宿主机上的无关进程,将资源 留予docker

占用端口的服务

这一系列的服务是危险的,对外暴露了连接,应该及时禁止

列出所有在监听端口的程序

netstat -plunt
# or
lsof -i

最好的情况是,只保留sshd与业务服务,其它的服务全部禁止

停止当前服务

1 upstart

service <name> stop

2 systemd

systemctl stop <name>

这一步骤只是对服务进行了临时的禁止,如果再次开机运行,作为自启动项的服务还会再次启动。我们还需要对服务进行更彻底的禁止

禁止服务自启

目前ubuntu使用upstart和systemd两种管理工具来管理服务的启动,对服务的查看修改要结合 一起使用才完善

1 upstart

工具

apt-get install sysv-rc-conf

列举出当前所有启动服务的情况

sysv-rc-conf --list
# or
service --status-all

对服务启动/禁用进行配置(进入交互式界面,对相应的服务启动/禁止进行配置)

sudo sysv-rc-conf

2 systemd

列举出当前所有启动服务的情况

systemctl -r --type service --all

对服务启动/禁用进行配置

这一步骤禁止了服务的启动,已经达成我们的目的。但是从不启动的服务就是无用的磁盘文件。可以考虑将服务彻底卸载

卸载服务

注意remove

下面所有的操作,多少会涉及安装包的卸载删除过程。因为安装包之间复杂的依赖关系,卸载一个包很可能会连带 删除其它关键的包,我就曾经因为删除了procps包导致启动内核一起被删除了...reboot机器都启动不了了

  • apt-get remove时不要盲目直接确认,先审查即将被删除的软件包列表
  • apt-get remove -s,使用-s参数,模拟删除的流程,dry-run

常见冗余服务

1 mysql

我们使用TableDB作为数据库,mysql根本是不需要的。不管其开机启动情况如何,直接卸载就行

sudo apt-get remove mysql-server mysql-client

mysql-common有时作为其它上层软件的依赖,可以保留

2 hudson

目前的CI使用jenkins并且运行于docker中,宿主机上安装的hudson没有必要而且还占用端口8080,直接卸载

sudo apt-get remove hudson

3 postfix

通常一些程序会使用邮件服务来进行log的通知,这里往往postfix会被作为依赖一起被安装并作为自启动服务。而这种邮件服务是可 有可无的,所以最好还是直接停止服务并禁止自启动

4 rpc

我们并没有使用NFS,直接禁止rpc.bind,rpc.statd

5 rsync

rsync在服务器间同步传递文件,它以两种模式运行,使用不同的参数,它就可以作为server或client来使用。如果自己的服务器主动向 外部连接进行文件同步,我们的服务器端就是作为client来运行的。相应的,rsync服务可以禁止

Clone this wiki locally