PROOF:20160516 Securing Your Server

@geekpi 可以参照中文排版指北,注意一下排版,注意是中文和英文中间的空格。
This commit is contained in:
wxy 2016-12-30 00:12:56 +08:00
parent ced30616cc
commit 884ee9c304

View File

@ -1,241 +1,235 @@
保护你的服务器
Linux 服务器安全简明指南
============================================================
现在让我们强化你的服务器以防止未授权访问。
### 经常升级系统
保持最新的软件是任何操作系统可以采取的最大的安全预防措施。软件更新的范围从关键漏洞补丁到小bug的修复许多软件漏洞实际上是在它们公开的时候修补的。
保持最新的软件是你可以在任何操作系统上采取的最大的安全预防措施。软件更新的范围从关键漏洞补丁到小 bug 的修复,许多软件漏洞实际上是在它们公开的时候得到修补的。
### 自动安全更新
服务器上有自动更新的参数。[Fedora的Wiki][15]上有一篇很棒的关于故障的正反两方的文章,但是如果你把它限制到安全更新,自动更新的风险将是最小的。
有一些用于服务器上自动更新的参数。[Fedora 的 Wiki][15] 上有一篇很棒的剖析自动更新的利弊的文章,但是如果你把它限制到安全更新,自动更新的风险将是最小的。
自动更新的可行性必须你自己判断,因为它归结为_你_在你的Linode上做什么。请记住,自动更新仅适用于来自仓库的包,而不是自编译的程序。你可能会发现一个复制了生产服务器的测试环境是很值得的。可以在测试环境更新并在部署到生产环境之前检查问题。
自动更新的可行性必须你自己判断,因为它归结为**你**在你的服务器上做什么。请记住,自动更新仅适用于来自仓库的包,而不是自编译的程序。你可能会发现一个复制了生产服务器的测试环境是很有必要的。可以在部署到生产环境之前,在测试环境里面更新来检查问题。
* CentOS使用_[yum-cron][2]_进行自动更新。
* Debian和Ubuntu使用_[无人值守升级][3]_。
* Fedora使用_[dnf-automatic][4]_。
* CentOS 使用 [yum-cron][2] 进行自动更新。
* Debian 和 Ubuntu 使用 [无人值守升级][3]。
* Fedora 使用 [dnf-automatic][4]。
### 添加一个受限用户账户
到目前为止,你已经作为`root`用户访问了你的Linode它有无限的权限可以执行_任何_命令 - 甚至可能意外中断你的服务器。 我们建议创建有限权限的用户帐户,并始终使用它。 管理任务使用`sudo`来完成,它可以临时提升用户的权限,以便管理你的服务器。
到目前为止,你已经作为 `root` 用户访问了你的服务器,它有无限制的权限,可以执行**任何**命令 - 甚至可能意外中断你的服务器。 我们建议创建一个受限用户帐户,并始终使用它。 管理任务应该使用 `sudo` 来完成,它可以临时提升受限用户的权限,以便管理你的服务器。
>不是所有的Linux发行版都在系统上默认包含`sudo`但Linode提供的所有镜像都在其软件包仓库中有sudo。 如果得到输出`sudocommand not found`请在继续之前安装sudo
> 不是所有的 Linux 发行版都在系统上默认包含 `sudo`,但大多数都在其软件包仓库中有 `sudo`。 如果得到这样的输出 `sudocommand not found`,请在继续之前安装 `sudo`
要添加新用户,首先通过SSH[登录到你的Linode][16]。
要添加新用户,首先通过 SSH [登录到你的服务器][16]。
### CentOS / Fedora
#### CentOS / Fedora
1. 创建用户,用你想要的名字替换`example_user`,并分配一个密码:
1、 创建用户,用你想要的名字替换 `example_user`,并分配一个密码:
```
useradd example_user && passwd example_user
useradd example_user && passwd example_user
```
2. 将用户添加到具有sudo权限的`wheel`组:
2、 将用户添加到具有 sudo 权限的 `wheel` 组:
```
usermod -aG wheel example_user
usermod -aG wheel example_user
```
### Ubuntu
#### Ubuntu
1. 创建用户,用你想要的名字替换`example_user`。你将被要求输入用户密码:
1、 创建用户,用你想要的名字替换 `example_user`。你将被要求输入用户密码:
```
adduser example_user
adduser example_user
```
2. 添加用户到`sudo`组,这样你就有管理员权限了:
2、 添加用户到 `sudo` 组,这样你就有管理员权限了:
```
adduser example_user sudo
adduser example_user sudo
```
### Debian
1. Debian默认的包中没有`sudo` 使用`apt-get`来安装:
#### Debian
1、 Debian 默认的包中没有 `sudo` 使用 `apt-get` 来安装:
```
apt-get install sudo
apt-get install sudo
```
2. 创建用户,用你想要的名字替换`example_user`。你将被要求输入用户密码:
2、 创建用户,用你想要的名字替换 `example_user`。你将被要求输入用户密码:
```
adduser example_user
adduser example_user
```
3. 添加用户到`sudo`组,这样你就有管理员权限了:
3、 添加用户到 `sudo` 组,这样你就有管理员权限了:
```
adduser example_user sudo
adduser example_user sudo
```
创建完有限权限的用户后,断开你的Linode
创建完有限权限的用户后,断开你的服务器连接
```
exit
```
重新用你的新用户登录。用你的用户名代替`example_user`用你的IP地址代替例子中的IP地址
重新用你的新用户登录。用你的用户名代替 `example_user`,用你的服务器 IP 地址代替例子中的 IP 地址:
```
ssh example_user@203.0.113.10
```
现在你可以用你的新用户帐户管理你的Linode而不是`root`。 几乎所有超级用户命令都可以用`sudo`(例如:`sudo iptables -L -nv`)来执行,这些命令将被记录到/var/log/auth.log中。
现在你可以用你的新用户帐户管理你的服务器,而不是 `root`。 几乎所有超级用户命令都可以用 `sudo`(例如:`sudo iptables -L -nv`)来执行,这些命令将被记录到 `/var/log/auth.log` 中。
### 加固SSH访问
### 加固 SSH 访问
默认情况下,密码认证用于通过SSH连接到您的Linode。加密密钥对更安全因为用私钥代替了密码,这通常更难以暴力破解。在本节中,我们将创建一个密钥对,并将Linode配置为不接受SSH密码登录。
默认情况下,密码认证用于通过 SSH 连接到您的服务器。加密密钥对更加安全,因为它用私钥代替了密码,这通常更难以暴力破解。在本节中,我们将创建一个密钥对,并将服务器配置为不接受 SSH 密码登录。
###创建验证密钥对
#### 创建验证密钥对
1.这是在你本机上完成的,**不是**你的Linode这里将创建一个4096位的RSA密钥对。在创建过程中,您可以选择使用密码加密私钥。这意味着它不能在没有输入密码的情况下使用,除非将保存到本机桌面的密钥管理器中。我们建议您使用带有密码的密钥对,但如果你不想使用密码,则可以将此字段留空。
1、这是在你本机上完成的,**不是**在你的服务器上,这里将创建一个 4096 位的 RSA 密钥对。在创建过程中,您可以选择使用密码加密私钥。这意味着它不能在没有输入密码的情况下使用,除非将密码保存到本机桌面的密钥管理器中。我们建议您使用带有密码的密钥对,但如果你不想使用密码,则可以将此字段留空。
    ** Linux / OS X **
**Linux / OS X**
    >如果你已经创建了RSA密钥对则用这个命令将覆盖它这可能会不能访问其他系统。如果你已创建密钥对,请跳过此步骤。要检查现有的密钥,请运行`ls〜/ .ssh / id_rsa *`。
> 如果你已经创建了 RSA 密钥对,则这个命令将会覆盖它,这可能会导致你不能访问其它的操作系统。如果你已创建过密钥对,请跳过此步骤。要检查现有的密钥,请运行 `ls〜/ .ssh / id_rsa *`
```
ssh-keygen -b 4096
ssh-keygen -b 4096
```
在输入密码之前,按下** 回车 **在`/home/your_username/.ssh`中使用默认名称`id_rsa`和`id_rsa.pub`
在输入密码之前,按下 **回车**使用 `/home/your_username/.ssh` 中的默认名称 `id_rsa``id_rsa.pub`
**Windows**
**Windows**
这可以使用PuTTY完成在我们指南中已有描述[使用SSH公钥验证][6]。
这可以使用 PuTTY 完成,在我们指南中已有描述:[使用 SSH 公钥验证][6]。
2.将公钥上传到您的Linode上。 将`example_user`替换为管理服务器的用户的名称,将`203.0.113.10`替换为你的Linode的IP地址。
2、将公钥上传到您的服务器上。 将 `example_user` 替换为你用来管理服务器的用户名称,将 `203.0.113.10` 替换为你的服务器的 IP 地址。
**Linux**
**Linux**
在本机上:
在本机上:
```
ssh-copy-id example_user@203.0.113.10
ssh-copy-id example_user@203.0.113.10
```
**OS X**
**OS X**
在你的Linode上用你的有限权限用户登录):
在你的服务器上(用你的权限受限用户登录):
```
mkdir -p ~/.ssh && sudo chmod -R 700 ~/.ssh/
mkdir -p ~/.ssh && sudo chmod -R 700 ~/.ssh/
```
在本机上:
在本机上:
```
scp ~/.ssh/id_rsa.pub example_user@203.0.113.10:~/.ssh/authorized_keys
scp ~/.ssh/id_rsa.pub example_user@203.0.113.10:~/.ssh/authorized_keys
```
> 如果对于scp你更喜欢`ssh-copy-id`,那么它可以在[Homebrew][5]中找到。使用`brew install ssh-copy-id`安装。
> 如果对于 `scp` 你更喜欢 `ssh-copy-id` 的话,那么它可以在 [Homebrew][5] 中找到。使用 `brew install ssh-copy-id` 安装。
**Windows**
**Windows**
* **选择1 **:使用[WinSCP][1]来完成。 在登录窗口中输入你的Linode的IP地址作为主机名以及非root的用户名和密码。单击_登录_连接。
* **选择 1**:使用 [WinSCP][1] 来完成。 在登录窗口中,输入你的服务器的 IP 地址作为主机名,以及非 root 的用户名和密码。单击“登录”连接。
         一旦WinSCP连接后你会看到两个主要部分。 左边显示本机上的文件右边显示Linode上的文件。 使用左侧的文件浏览器,导航到你已保存公钥的文件,选择公钥文件,然后点击上面工具栏中的_上传_
一旦 WinSCP 连接后,你会看到两个主要部分。 左边显示本机上的文件,右边显示服务区上的文件。 使用左侧的文件浏览器,导航到你已保存公钥的文件,选择公钥文件,然后点击上面工具栏中的“上传”
         系统会提示你输入要将文件放在Linode上的路径。 将文件上传到`/home/example_user/.ssh /authorized_keys`,用你的用户名替换`example_user`
系统会提示你输入要将文件放在服务器上的路径。 将文件上传到 `/home/example_user/.ssh /authorized_keys`,用你的用户名替换 `example_user`
     * **选择2**将公钥直接从PuTTY键生成器复制到连接到你的Linode中作为非root用户):
* **选择 2**:将公钥直接从 PuTTY 键生成器复制到连接到你的服务器中(作为非 root 用户):
```
mkdir ~/.ssh; nano ~/.ssh/authorized_keys
mkdir ~/.ssh; nano ~/.ssh/authorized_keys
```
上面命令将在文本编辑器中打开一个名为“authorized_keys”的空白文件。 将公钥复制到文本文件中确保复制的与PuTTY生成的完全一样。 按下** CTRL + X **,然后按下** Y **,然后**回车**保存文件。
上面命令将在文本编辑器中打开一个名为 `authorized_keys` 的空文件。 将公钥复制到文本文件中,确保复制为一行,与 PuTTY 所生成的完全一样。 按下 `CTRL + X`,然后按下 `Y`,然后回车保存文件。
最后,你需要为公钥目录和密钥文件本身设置权限:
最后,你需要为公钥目录和密钥文件本身设置权限:
```
sudo chmod 700 -R ~/.ssh && chmod 600 ~/.ssh/authorized_keys
sudo chmod 700 -R ~/.ssh && chmod 600 ~/.ssh/authorized_keys
```
这些命令通过阻止其他用户访问公钥目录以及文件本身来提供额外的安全性。有关它如何工作的更多信息,请参阅我们的指南[如何修改文件权限][7]。
这些命令通过阻止其他用户访问公钥目录以及文件本身来提供额外的安全性。有关它如何工作的更多信息,请参阅我们的指南[如何修改文件权限][7]。
3. 现在退出并重新登录你的Linode。如果你为私钥指定了密码,则需要输入密码。
3、 现在退出并重新登录你的服务器。如果你为私钥指定了密码,则需要输入密码。
### SSH守护进程选项
#### SSH 守护进程选项
1. **不允许通过SSH登录。** 这需要所有SSH连接都是非root用户。一旦连接了有限权限的用户帐户可以通过使用`sudo`或使用`su -`改为root shell来使用管理员权限。
1**不允许 root 用户通过 SSH 登录。** 这要求所有的 SSH 连接都是通过非 root 用户进行。当以受限用户帐户连接后,可以通过使用 `sudo` 或使用 `su -` 切换为 root shell 来使用管理员权限。
```
# Authentication:
...
PermitRootLogin no
# Authentication:
...
PermitRootLogin no
```
2. **禁用SSH密码认证。** 这要求所有通过SSH连接的用户使用密钥认证。根据Linux发行版它可能需要添加`PasswordAuthentication`这行,或者删除前面的“#”来取消注释。
2、 **禁用 SSH 密码认证。** 这要求所有通过 SSH 连接的用户使用密钥认证。根据 Linux 发行版的不同,它可能需要添加 `PasswordAuthentication` 这行,或者删除前面的 `#` 来取消注释。
```
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no
```
> 如果你从许多不同的计算机连接到Linode你可能想要启用密码验证。这将允许你使用密码进行身份验证,而不是为每个设备生成和上传密钥对。
> 如果你从许多不同的计算机连接到服务器,你可能想要继续启用密码验证。这将允许你使用密码进行身份验证,而不是为每个设备生成和上传密钥对。
3. **只监听一个互联网协议。** 在默认情况下SSH守护进程同时监听IPv4和IPv6上的传入连接。除非你需要使用这两种协议进入你的Linode,否则就禁用你不需要的。 _这不会禁用系统范围的协议它只用于SSH守护进程。_
3 **只监听一个互联网协议。** 在默认情况下SSH 守护进程同时监听 IPv4 IPv6 上的传入连接。除非你需要使用这两种协议进入你的服务器,否则就禁用你不需要的。 _这不会禁用系统范围的协议它只用于 SSH 守护进程。_
使用选项:
使用选项:
* `AddressFamily inet` 只监听IPv4。
* `AddressFamily inet6` 只监听IPv6。
* `AddressFamily inet` 只监听 IPv4。
* `AddressFamily inet6` 只监听 IPv6。
默认情况下,`AddressFamily`选项通常不在`sshd_config`文件中。将它添加到文件的末尾:
默认情况下,`AddressFamily` 选项通常不在 `sshd_config` 文件中。将它添加到文件的末尾:
```
echo 'AddressFamily inet' | sudo tee -a /etc/ssh/sshd_config
```
4. 重新启动SSH服务以加载新配置。
如果你使用的Linux发行版使用systemdCentOS 7、Debian 8、Fedora、Ubuntu 15.10+
```
sudo systemctl restart sshd
echo 'AddressFamily inet' | sudo tee -a /etc/ssh/sshd_config
```
如果您的init系统是SystemV或UpstartCentOS 6、Debian 7、Ubuntu 14.04
4、 重新启动 SSH 服务以加载新配置。
如果你使用的 Linux 发行版使用 systemdCentOS 7、Debian 8、Fedora、Ubuntu 15.10+
```
sudo service ssh restart
sudo systemctl restart sshd
```
### 使用Fail2Ban保护SSH登录
如果您的 init 系统是 SystemV 或 UpstartCentOS 6、Debian 7、Ubuntu 14.04
[_Fail2Ban _][17]是一个应用程序它会在太多的失败登录尝试后禁止IP地址登录到你的服务器。由于合法登录通常只需要三次尝试成功如果使用SSH密钥那不会不超过一个因此如果服务器充满了登录失败的请求那就表示有恶意访问。
```
sudo service ssh restart
```
Fail2Ban可以监视各种协议包括SSH、HTTP和SMTP。默认情况下Fail2Ban仅监视SSH并且对任何服务器都是有帮助的安全威慑因为SSH守护程序通常配置为持续运行并监听来自任何远程IP地址的连接。
#### 使用 Fail2Ban 保护 SSH 登录
有关安装和配置Fail2Ban的完整说明请参阅我们的指南[使用Fail2ban保护服务器][18]。
[Fail2Ban][17] 是一个应用程序,它会在太多的失败登录尝试后禁止 IP 地址登录到你的服务器。由于合法登录通常不会超过三次尝试(如果使用 SSH 密钥,那不会超过一个),因此如果服务器充满了登录失败的请求那就表示有恶意访问。
Fail2Ban 可以监视各种协议,包括 SSH、HTTP 和 SMTP。默认情况下Fail2Ban 仅监视 SSH并且因为 SSH 守护程序通常配置为持续运行并监听来自任何远程 IP 地址的连接,所以对于任何服务器都是一种安全威慑。
有关安装和配置 Fail2Ban 的完整说明,请参阅我们的指南:[使用 Fail2ban 保护服务器][18]。
### 删除未使用的面向网络的服务
大多数Linux发行版都安装并运行了网络服务监听来自互联网回环接口或两者的组合的传入连接。 将不需要的面向网络的服务从系统中删除,以减少运行进程和对已安装软件包攻击的概率。
大多数 Linux 发行版都安装并运行了网络服务,监听来自互联网、回环接口或两者兼有的传入连接。 将不需要的面向网络的服务从系统中删除,以减少运行进程和对已安装软件包攻击的概率。
### 查明运行的服务
#### 查明运行的服务
要查看Linode中运行的服务:
要查看服务器中运行的服务:
```
sudo netstat -tulpn
```
> 如果默认情况下 `netstat` 没有包含在你的 Linux 发行版中,请安装软件包 `net-tools` 或使用 `ss -tulpn` 命令。
> 如果默认情况下netstat不包含在你的Linux发行版中请安装软件包`net-tools`或使用`ss -tulpn`命令。
以下是netstat的输出示例。 请注意,因为默认情况下不同发行版会运行不同的服务,你的输出将有所不同:
以下是 `netstat` 的输出示例。 请注意,因为默认情况下不同发行版会运行不同的服务,你的输出将有所不同:
```
@ -264,31 +258,29 @@ udp6 0 0 :::705 :::*
udp6 0 0 :::60671 :::* 2845/rpc.statd
```
netstat告诉我们服务正在运行[远程过程调用][19]rpc.statd和rpcbind、SSHsshd、[NTPdate][20]ntpd和[Exim][21]exim4)。
`netstat` 告诉我们服务正在运行 [RPC][19]`rpc.statd` 和 `rpcbind`、SSH`sshd`)、[NTPdate][20]`ntpd`)和[Exim][21]`exim4`)。
#### TCP
##### TCP
请参阅netstat输出的** Local Address **哪列。进程`rpcbind`正在侦听`0.0.0.0:111`和`:::111`,外部地址是 `0.0.0.0:*`或者`:::*`。这意味着它从任何端口和任何网络接口接受来自任何外部地址IPv4和IPv6上的其他RPC客户端的传入TCP连接。 我们看到类似的SSHExim正在侦听来自回环接口的流量,如所示的`127.0.0.1`地址。
请参阅 `netstat` 输出的 `Local Address` 那一列。进程 `rpcbind` 正在侦听 `0.0.0.0:111``:::111`,外部地址是 `0.0.0.0:*` 或者 `:::*` 。这意味着它从任何端口和任何网络接口接受来自任何外部地址IPv4 和 IPv6上的其它 RPC 客户端的传入 TCP 连接。 我们看到类似的 SSHExim 正在侦听来自回环接口的流量,如所示的 `127.0.0.1` 地址。
#### UDP
##### UDP
UDP套接字是_[无状态][14]_的,这意味着它们只有打开或关闭,并且每个进程的连接独立于前后发生的连接。这与TCP的连接状态例如_LISTEN__ESTABLISHED_和_CLOSE_WAIT_)形成对比。
UDP 套接字是[无状态][14]的,这意味着它们只有打开或关闭,并且每个进程的连接是独立于前后发生的连接。这与 TCP 的连接状态(例如 `LISTEN`、`ESTABLISHED`和 `CLOSE_WAIT`)形成对比。
我们的netstat输出说明NTPdate1接受Linode的公共IP地址的传入连接; 2通过本地主机进行通信; 3接受来自外部的连接。这些是通过端口123同时支持IPv4和IPv6。我们还看到了更多的RPC套接字。
我们的 `netstat`输出说明 NTPdate 1接受服务器的公网 IP 地址的传入连接2通过本地主机进行通信3接受来自外部的连接。这些连接是通过端口 123 进行的,同时支持 IPv4 和 IPv6。我们还看到了 RPC 打开的更多的套接字。
### 查明该移除哪个服务
#### 查明该移除哪个服务
如果你在没有启用防火墙的情况下对Linode进行基本的TCP和UDP的[nmap][22]扫描那么在打开端口的结果中将出现SSH、RPC和NTPdate。通过[配置防火墙][23]你可以过滤掉这些端口但SSH除外因为它必须允许你的传入连接。但是理想情况下应该禁用未使用的服务。
如果你在没有启用防火墙的情况下对服务器进行基本的 TCP 和 UDP 的 [nmap][22] 扫描,那么在打开端口的结果中将出现 SSH、RPC NTPdate 。通过[配置防火墙][23],你可以过滤掉这些端口,但 SSH 除外,因为它必须允许你的传入连接。但是,理想情况下,应该禁用未使用的服务。
* 你可能主要通过SSH连接管理你的服务器所以让这个服务需要保留。如上所述[RSA密钥][8]和[Fail2Ban][9]可以帮助保护SSH。
* 你可能主要通过 SSH 连接管理你的服务器,所以让这个服务需要保留。如上所述,[RSA 密钥][8]和 [Fail2Ban][9] 可以帮助你保护 SSH。
* NTP 是服务器计时所必需的,但有个替代 NTPdate 的方法。如果你喜欢不开放网络端口的时间同步方法,并且你不需要纳秒精度,那么你可能有兴趣用 [OpenNTPD][10] 来代替 NTPdate。
* 然而Exim 和 RPC 是不必要的,除非你有特定的用途,否则应该删除它们。
* NTP是服务器计时所必需的但有NTPdate的替代方法。如果你喜欢不开放网络端口的时间同步方法并且你不需要纳秒精度那么你可能有兴趣用[OpenNTPD][10]来代替NTPdate。
> 本节针对 Debian 8。默认情况下不同的 Linux 发行版具有不同的服务。如果你不确定某项服务的功能,请尝试搜索互联网以了解该功能是什么,然后再尝试删除或禁用它
* 然而Exim和RPC是不必要的除非你有特定的用途否则应该删除它们。
> 本节重点介绍Debian 8。默认情况下不同的Linux发行版具有不同的服务。如果你不确定某项服务的功能请尝试搜索互联网以了解该功能是什么然后再尝试删除或禁用它。
### 卸载监听的服务
#### 卸载监听的服务
如何移除包取决于发行版的包管理器:
@ -300,12 +292,10 @@ sudo pacman -Rs package_name
**CentOS**
```
sudo yum remove package_name
```
**Debian / Ubuntu**
```
@ -314,36 +304,33 @@ sudo apt-get purge package_name
**Fedora**
```
sudo dnf remove package_name
```
再次运行`sudo netstat -tulpn`你看到监听的服务就只会有SSHsshd和NTPntpdate网络时间协议
再次运行 `sudo netstat -tulpn`,你看到监听的服务就只会有 SSH`sshd`)和 NTP`ntpdate`,网络时间协议)
### 配置防火墙
使用_防火墙_阻止不需要的入站流量能为你的Linode提供一个高效的安全层。 通过指定入站流量,你可以阻止入侵和网络映射。 最佳做法是只允许你需要的流量,并拒绝一切其他流量。请参阅我们的一些关于最常见的防火墙程序的文档:
使用防火墙阻止不需要的入站流量能为你的服务器提供一个高效的安全层。 通过指定入站流量,你可以阻止入侵和网络测绘。 最佳做法是只允许你需要的流量,并拒绝一切其他流量。请参阅我们的一些关于最常见的防火墙程序的文档:
* [iptables][11]是netfilter的控制器它是Linux内核的包过滤框架。 默认情况下iptables包含在大多数Linux发行版中。
* [firewallD][12]是可用于CentOS/Fedora系列发行版的iptables控制器。
* [UFW][13]为Debian和Ubuntu提供了一个iptables前端。
* [iptables][11] 是 netfilter 的控制器,它是 Linux 内核的包过滤框架。 默认情况下iptables 包含在大多数 Linux 发行版中。
* [firewallD][12] 是可用于 CentOS/Fedora 系列发行版的 iptables 控制器。
* [UFW][13] 为 Debian 和 Ubuntu 提供了一个 iptables 前端。
### 接下来
这些是加固Linux服务器的最基本步骤但是进一步的安全层将取决于其预期用途。 其他技术可以包括应用程序配置,使用[入侵检测][24]或者安装某个形式的[访问控制][25]。
这些是加固 Linux 服务器的最基本步骤,但是进一步的安全层将取决于其预期用途。 其他技术可以包括应用程序配置,使用[入侵检测][24]或者安装某个形式的[访问控制][25]。
现在你可以按你的需求开始设置你的Linode了。 我们有一个文档库来以帮助你从[从共享主机迁移][26]到[启用两步验证][27]到[托管网站] [28]等各种主题。
现在你可以按你的需求开始设置你的服务器了。 我们有一个文档库来以帮助你从[从共享主机迁移][26]到[启用两步验证][27]到[托管网站] [28]等各种主题。
--------------------------------------------------------------------------------
via: https://www.linode.com/docs/security/securing-your-server/
作者:[Phil Zona ][a]
作者:[Phil Zona][a]
译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出