-
Notifications
You must be signed in to change notification settings - Fork 18
harden server remove unnecessary things
下列针对使用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
对服务启动/禁用进行配置
这一步骤禁止了服务的启动,已经达成我们的目的。但是从不启动的服务就是无用的磁盘文件。可以考虑将服务彻底卸载
下面所有的操作,多少会涉及安装包的卸载删除过程。因为安装包之间复杂的依赖关系,卸载一个包很可能会连带
删除其它关键的包,我就曾经因为删除了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服务可以禁止