安装所需的服务
如果你打算运行一台服务器,可能会想“我有来自Linode的40GB固态硬盘(SSD)存储系统,于是我可以安装想要安装的任何服务。”没错,你的地盘你作主:可以在服务器上安装任意软件。不过,别犯想当然的毛病。连最固若金汤的服务器也会因有人钻了在该服务器上运行的任何未打补丁或易受攻击的软件组件的空子而被劫持。
所以,头一条规则就是让你的服务器尽量精简。只安装你确实需要的那些程序包。要是有不需要的程序包,那就清除。程序包数量越少,代码没打上补丁的可能性就越小。在安装任何软件和依赖程序包(比如ownCloud)之前,你应该读一下ownCloud的说明文档,只安装它需要的那些程序包。(it外包服务公司)
运行所需的服务
第二条规则就是只运行需要的那些服务。许多发行版或程序包可能会开启某些服务,在不同的端口上运行。这可能会带来安全风险。于是,打开终端,运行下列命令:
netstat -npl
输出结果会显示哪些服务在哪些端口上运行。如果你发现任何不应该运行的服务,停止它。你还应该密切关注已被启用、系统启动时运行的服务。只要在运行systemd的系统上运行下列命令,就可以来检查这方面:
systemctl list-unit-files --type=service | grep enabled
视系统而定,你会获得如上图1中所示的输出结果。要是你发现任何不需要的服务,可以使用强大的systemct1命令来禁用它:
systemctl disable service_name
限制对服务器的访问
就好比你不会把自家钥匙随随便便交给认识的人,也不会将访问服务器的权限交随随便便授予认识的人。一旦明确了这个规则,就可以限制对服务器的访问。要牢记这点:这一切打消不了决意要破坏你服务器的坏人的念头。不过,其作用在于为你的服务器增添了多一层的安全,防范只是捡漏的不法分子。
千万不要以根用户的身份登录
以超级用户的身份通过ssh进入到服务器不是一个好做法。我们后面会禁止以根用户身份通过ssh进入到服务器,不过在这么做之前,不妨创建一个拥有sudo权限的用户,那样你就能通过ssh进入到服务器,执行管理员任务了。一旦你登录进入到服务器,总是可以将用户切换成根用户,如果需要的话。如果你已经在系统上有了用户,就跳过几步;不然,跟着我走。
不同的发行版使用不同的方法来添加新用户;Red Hat/CentOS使用useradd,Ubuntu/Debian使用user adduser。(it外包)
在Fedora/CentOS上创建新用户:
useradd swapnil
然后,为该用户创建密码:
passwd swapnil
安装所需的服务
如果你打算运行一台服务器,可能会想“我有来自Linode的40GB固态硬盘(SSD)存储系统,于是我可以安装想要安装的任何服务。”没错,你的地盘你作主:可以在服务器上安装任意软件。不过,别犯想当然的毛病。连最固若金汤的服务器也会因有人钻了在该服务器上运行的任何未打补丁或易受攻击的软件组件的空子而被劫持。
所以,头一条规则就是让你的服务器尽量精简。只安装你确实需要的那些程序包。要是有不需要的程序包,那就清除。程序包数量越少,代码没打上补丁的可能性就越小。在安装任何软件和依赖程序包(比如ownCloud)之前,你应该读一下ownCloud的说明文档,只安装它需要的那些程序包。
运行所需的服务
第二条规则就是只运行需要的那些服务。许多发行版或程序包可能会开启某些服务,在不同的端口上运行。这可能会带来安全风险。于是,打开终端,运行下列命令:
netstat -npl
输出结果会显示哪些服务在哪些端口上运行。如果你发现任何不应该运行的服务,停止它。你还应该密切关注已被启用、系统启动时运行的服务。只要在运行systemd的系统上运行下列命令,就可以来检查这方面:
systemctl list-unit-files --type=service | grep enabled
视系统而定,你会获得如上图1中所示的输出结果。要是你发现任何不需要的服务,可以使用强大的systemct1命令来禁用它:
systemctl disable service_name
限制对服务器的访问
就好比你不会把自家钥匙随随便便交给认识的人,也不会将访问服务器的权限交随随便便授予认识的人。一旦明确了这个规则,就可以限制对服务器的访问。要牢记这点:这一切打消不了决意要破坏你服务器的坏人的念头。不过,其作用在于为你的服务器增添了多一层的安全,防范只是捡漏的不法分子。
千万不要以根用户的身份登录
以超级用户的身份通过ssh进入到服务器不是一个好做法。我们后面会禁止以根用户身份通过ssh进入到服务器,不过在这么做之前,不妨创建一个拥有sudo权限的用户,那样你就能通过ssh进入到服务器,执行管理员任务了。一旦你登录进入到服务器,总是可以将用户切换成根用户,如果需要的话。如果你已经在系统上有了用户,就跳过几步;不然,跟着我走。
不同的发行版使用不同的方法来添加新用户;Red Hat/CentOS使用useradd,Ubuntu/Debian使用user adduser。
在Fedora/CentOS上创建新用户:
useradd swapnil
然后,为该用户创建密码:
passwd swapnil
它会要求你为它提供用户的新密码。现在,你需要为该用户授予sudo权限。运行下列命令:
EDITOR=nano visudo
寻找下面这一行(见图2):
# %wheel ALL=(ALL) ALL
它会要求你为它提供用户的新密码。现在,你需要为该用户授予sudo权限。运行下列命令:
EDITOR=nano visudo
寻找下面这一行(见图2):
# %wheel ALL=(ALL) ALL
它会提出一些问题;你不用更改密钥位置,保留其默认值,为它提供一个难以猜中的通行码。下一步,你需要将这些密钥拷贝到服务器上,那样两台机器就能使用密钥与对方进行联系了。
cat ~/.ssh/id_rsa.pub | ssh -p 1977 swapnil@remote-server ";mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
现在,试着从另一个终端通过ssh进入到服务器;要是一切正常,它不会要求你输入密码。
这一步主要是为了方便,而不是增添一些实实在在的安全。不过你也可以增添一点安全,只要禁用服务器的密码验证。只需打开sshd配置文件,寻找这注释的一行:
#PasswordAuthentication yes
去掉该行注释,将它从yes改成no。保存并关闭文件。然后,重启sshd服务。再一次,切莫从当前窗口关闭服务器连接。打开另一个窗口,登录进入到服务器(确保它没有要求输入密码)。(电脑维护外包)
这个设置的另一个方面在于,你现在只能从创建ssh密钥的那一台机器通过ssh进入到服务器。如果你经常从不同的机器登录进入到服务器,千万不要使用这一方法。
这些是试图自行运行服务器的新用户需要考虑的一些基本方面。牢记一点:黑客总是先行一步;他们不断寻找进而闯入你服务器的任何漏洞。因而,最佳实践就是对你的服务器做一套始终最新的备份。我建议你在对站点做任何变化前后都应该进行备份。那样一来,万一你的服务器中了招,总是能够从上一套备份恢复过来。
艾锑无限是中国领先IT外包服务商,专业为企业提供IT运维外包、电脑维护、网络维护、网络布线、办公设备维护、服务器维护、数据备份恢复、门禁监控、网站建设等多项IT服务外包,服务热线:400-650-7820 联系电话:010-62684652 咨询QQ1548853602 地址:北京市海淀区北京科技会展2号楼16D,用心服务每一天,为企业的发展提升更高的效率,创造更大的价值。
更多的IT外包信息尽在艾锑无限http://www.itbmw.com
相关文章