PUB:20150610 How to secure your Linux server

@KayGuoWhu
This commit is contained in:
wxy 2015-07-03 10:06:11 +08:00
parent 23975d2cba
commit 5a6690c3a6

View File

@ -1,15 +1,14 @@
Linux服务器安全攻略
Linux 服务器安全技巧
================================================================================
> 一台服务器由大量功能各异的部件组成,这一点使得很难根据每个人的需求去提供定制的解决方案。这篇文章尽可能涵盖一些有所裨益的小技巧来帮助管理员保证服务器和用户安全。
毋庸置疑,对于系统管理员,提高服务器的安全性是最重要的事情之一。因此,也就有了许多针对这个话题而生的文章、博客和论坛帖子。
一台服务器由大量功能各异的部件组成,这一点使得很难根据每个人的需求去提供定制的解决方案。这篇文章尽可能涵盖一些有所裨益的小技巧来帮助管理员保证服务器和用户安全。
有一些常识是每个系统管理员都应该烂熟于心的,所以下面的几点在文将不会提及:
有一些常识是每个系统管理员都应该烂熟于心的,所以下面的几点在文将不会提及:
- 务必保证系统是**最新的**
- 经常更换密码 - 使用数字、阿拉伯字母和非阿拉伯字母的符号组合
- 经常更换密码 - 使用数字、字母和非字母的符号组合
- 给予用户**最小**的权限,满足他们日常使用所需即可
- 只安装那些真正需要的软件包
@ -17,7 +16,7 @@ Linux服务器安全攻略
### 更改SSH默认端口 ###
在搭建好一台全新的服务器后要做的第一件事情就是更改SSH的默认端口。这个小小的改动能够使你的服务器避免受到成千上万的暴力攻击(译注:不更改默认端口相当于黑客们知道你家的门牌号,这样他们只需要一把一把的试钥匙就可能打开你家的锁)。
在搭建好一台全新的服务器后要做的第一件事情就是更改SSH的默认端口。这个小小的改动能够使你的服务器避免受到成千上万的暴力攻击LCTT 译注:不更改默认端口相当于黑客们知道你家的门牌号,这样他们只需要一把一把的试钥匙就可能打开你家的锁)。
要更改默认的SSH端口先打开sshd_config文件
@ -35,7 +34,7 @@ Linux服务器安全攻略
接下来的一步是:
### 使用SSH密钥 ###
### 使用SSH密钥认证 ###
在通过SSH访问服务器时使用SSH密钥进行认证是尤其重要的。这样做为服务器增加了额外的保护确保只有那些拥有密钥的人才能访问服务器。
@ -43,7 +42,7 @@ Linux服务器安全攻略
ssh-keygen -t rsa
你会看到下面的输出,询问要将密钥写到哪一个文件,并且设置一个密码:
你会看到下面的输出,询问要将密钥写到哪一个文件,并且设置一个密码:
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): my_key
@ -60,7 +59,7 @@ my_key
my_key.pub
接下来把my_key.pub拷贝到~/.ssh/authorized_key中
接下来把my\_key.pub拷贝到~/.ssh/authorized\_key中
cp my_key.pub ~/.ssh/authorized_keys
@ -72,7 +71,7 @@ my_key.pub
### 关闭SSH的密码认证 ###
既然已经有了SSH密钥那么关闭SSH的密码认证就安全了。再次打开并编辑sshd_config按如下设置
既然已经有了SSH密钥那么关闭SSH的密码认证就会更安全了。再次打开并编辑sshd_config按如下设置
ChallengeResponseAuthentication no
PasswordAuthentication no
@ -84,7 +83,7 @@ my_key.pub
/etc/sudoers/
可以使用如**visudo**这样的命令编辑文件,推荐使用这个命令,因为它会在关闭文件之前检查任何可能出现的语法错误。当你在编辑文件时出错了,这就很有用了。
推荐使用如**visudo**这样的命令编辑该文件,因为它会在关闭文件之前检查任何可能出现的语法错误。当你在编辑文件时出错了,这就很有用了。
接下来赋予某个用户root权限。在本文中使用用户**sysadmin**。确保在编辑后这个文件时使用的用户是系统已有的用户。找到下面这行:
@ -107,6 +106,8 @@ my_key.pub
(4) 这个用户可以使用的命令
LCTT 译注所以上面的配置是意思是root 用户可以在任何终端担任任何用户,执行任何命令。)
使用这个配置可以给用户访问一些系统工具的权限。
这时,可以放心保存文件了。
@ -135,7 +136,7 @@ my_key.pub
wget https://download.configserver.com/csf.tgz
tar -xzf csf.tgz
csf
cd csf
sh install.sh
只需等待安装程序完成然后编辑CSF的配置文件
@ -148,25 +149,25 @@ my_key.pub
下面要设置的就是服务器上允许通过的端口。在csf.conf中定位到下面的部分根据需要修改端口
# Allow incoming TCP ports
# 允许入站的 TCP 端口
TCP_IN = "20,21,25,53,80,110,143,443,465,587,993,995,16543"
# Allow outgoing TCP ports
# 允许出站的 TCP 端口
TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995,16543"
# Allow incoming UDP ports
# 允许入站的 UDP 端口
UDP_IN = "20,21,53"
# Allow outgoing UDP ports
# To allow outgoing traceroute add 33434:33523 to this list
# 允许出站的 UDP 端口
# 要允许发出 traceroute 请求,请加 33434:33523 端口范围到该列表
UDP_OUT = "20,21,53,113,123"
请根据需要逐一设置推荐只使用那些需要的端口避免设置对端口进行大范围设置。此外也要避免使用不安全服务的不安全端口。比如只允许端口465和587来发送电子邮件取代默认的SMTP端口25.
请根据需要逐一设置推荐只使用那些需要的端口避免设置对端口进行大范围设置。此外也要避免使用不安全服务的不安全端口。比如只允许端口465和587来发送电子邮件取代默认的SMTP端口25LCTT 译注:前提是你的邮件服务器支持 SMTPS
**重要**:千万不要忘记允许自定义SHH端口。
**重要**:千万不要忘记允许自定义的 ssh 端口。
允许防火墙通过你的IP地址使其不被屏蔽这一点很重要。IP地址定义在下面的文件中
允许你的IP地址通过防火墙而绝不被屏蔽这一点很重要。IP地址定义在下面的文件中
/etc/csf/csf.ignore
被屏蔽的IP地址会出现在这个文件中
被屏蔽的IP地址会出现在这个文件中
/etc/csf/csf.deny
@ -184,13 +185,13 @@ my_key.pub
可以看到尝试通过暴力法登录的IP地址都被屏蔽了真是眼不见心不烦啊
#### 锁住账户 ####
### 锁住账户 ###
如果某个账户在很长一段时间内都不会被使用了,那么可以将其锁住以防止其它人访问。使用如下命令:
passwd -l accountName
当然这个账户依然可以被root用户使用。
当然这个账户依然可以被root用户使用LCTT 译注:可用 su 切换为该账号)
### 了解服务器上的服务 ###
@ -207,16 +208,18 @@ my_key.pub
然后使用下面的命令关闭服务:
chkconfig service off
systemctl disable service
在上面的例子中把“service”替换成真正想要停止的服务名称。实例如下
chkconfig httpd off
systemctl disable httpd
### 小结 ###
### 小结 ###
这篇文章的目的是涵盖一些通用的安全步骤以便帮助你保护服务器。你可以采取额外的方式去增强对服务器的保护。请记住保证服务器安全是你的责任,在维护服务器安全时尽量做出明智的选择,尽管并没有什么容易的方式去完成这件事情,而建立“完善的”安全需要花费大量的时间和测试直到达到想要的结果。
这篇文章的目的是涵盖一些通用的安全步骤以便帮助你保护服务器。你可以采取更多方式去增强对服务器的保护。请记住保证服务器安全是你的责任,在维护服务器安全时尽量做出明智的选择,尽管并没有什么容易的方式去完成这件事情,而建立“完善的”安全需要花费大量的时间和测试直到达到想要的结果。
--------------------------------------------------------------------------------
@ -224,7 +227,7 @@ via: http://www.linuxveda.com/2015/06/03/secure-linux-server/
作者:[Marin Todorow][a]
译者:[KayGuoWhu](https://github.com/KayGuoWhu)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出