介绍
当你第一次登录到一个新的Fedora 22,它不准备用作生产系统。 有许多推荐的步骤,以便定制和保护它,例如启用防火墙。
本教程将向您展示如何为Fedora 22服务器全新安装更好的安全配置文件,并准备好使用。
先决条件
要遵循本教程,您需要:
- 一个Fedora 22 Droplet与根SSH密钥。
您可以按照本节 SSH密钥教程创建密钥,如果你没有他们, 这部分当你创建Droplet相同教程的自动嵌入到你的服务器的根帐户的SSH密钥。
第1步 - 创建标准用户帐户
首先,登录到你的服务器根目录 。
ssh root@your_server_ip
以root身份操作是一种安全风险,因此在此步骤中,我们将设置sudo非root用户帐户以用于系统和其他计算任务。 在本教程中使用的用户名是森美 ,但你可以使用任何你喜欢的名字。
要添加用户,请键入:
adduser sammy
使用以下命令为用户指定强密码。 系统将提示您输入密码两次。
passwd sammy
然后将用户添加到wheel组,这给它sudo权限。
gpasswd -a sammy wheel
注销服务器并通过在本地计算机上运行以下命令将SSH密钥添加到新用户帐户。
ssh-copy-id sammy@your_server_ip
有关如何将SSH密钥从本地计算机复制到服务器的更多信息,你可以阅读本节的SSH教程。
最后,以新的sudo非root用户身份登录。 系统不会提示您输入密码,因为此帐户现在具有SSH密钥。
ssh sammy@your_server_ip
第2步 - 禁止root登录和密码验证
在此步骤中,我们将禁用root登录和密码身份验证,以使SSH登录更安全。
要编辑配置文件,您需要安装文本编辑器。 我们将使用nano
但你可以使用任何你喜欢的。
首先,应用任何可用的更新:
sudo dnf update
然后,安装nano
,键入:
sudo dnf install -y nano
现在,打开SSH守护程序的配置文件进行编辑。
sudo nano /etc/ssh/sshd_config
在这个文件中,查找PermitRootLogin
指令。 取消注释(这意味着除去首发#
字符),并将其设置为no。
PermitRootLogin no
同样,认准PasswordAuthentication
指令并将其设置为不为好。
PasswordAuthentication no
保存并退出文件,然后重新加载配置以将更改放置到位。
sudo systemctl reload sshd
如果有人试图现在以root身份登录,响应应Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
。
第3步 - 配置时区
在此步骤中,您将了解如何将系统时钟更改为您当地的时区。 默认时钟设置为UTC。
所有已知的时区是下/usr/share/zoneinfo/
目录中。 看看这些文件和目录/usr/share/zoneinfo/
。
ls /usr/share/zoneinfo/
若要将时钟设置为使用本地时区,找到您所在的国家或地区在该目录中,找到其下的区域文件,然后创建它的一个符号软链接/etc/localtime
目录。 例如,如果你在美国,那里的时区为中心 ,或CST的核心部分是,区域文件将/usr/share/zoneinfo/US/Central
。
创建从区域文件一个符号软链接/etc/localtime
。
sudo ln -sf /usr/share/zoneinfo/your_zone_file /etc/localtime
验证通过查看输出时钟现在设置为本地时间date
命令。
date
输出将如下所示:
Wed Mar 25 14:41:20 CST 2015
该基金在这输出证实它的中部时间。
第4步 - 启用防火墙
一个新的Fedora 22服务器没有活动的防火墙应用程序。 在此步骤中,我们将学习如何启用IPTables防火墙应用程序,并确保运行时规则在重新启动后保留。
iptables包已经安装,但被启用,启用它,你需要安装iptables-services
包。
sudo dnf install -y iptables-services
然后,您可以启用IPTables,以便它在启动时自动启动。
sudo systemctl enable iptables
接下来,启动IPTables。
sudo systemctl start iptables
Fedora 22上的IPTables附带了一组默认的规则。 其中一个规则允许SSH流量。 要查看默认规则,请键入:
sudo iptables -L
输出应为:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
这些规则是运行时规则,并且如果系统重新启动将丢失。 要将当前运行时规则保存到文件以使它们在重新启动后保持,请键入:
sudo /usr/libexec/iptables/iptables.init save
规则现在保存到一个名为iptables
中/etc/sysconfig
目录。
第5步(可选) - 允许HTTP和HTTPS流量
在本节中,我们将介绍如何编辑防火墙规则,以允许端口80(HTTP)和443(HTTPS)的服务。
默认IPTables规则默认允许SSH流量,但HTTP和其相对更安全的表单HTTPS是许多应用程序使用的服务,因此您可能希望允许这些服务通过防火墙。
要继续,请键入以下命令打开防火墙规则文件:
sudo nano /etc/sysconfig/iptables
您需要做的是在SSH(端口22)流量的规则之后添加两个规则,一个用于端口80,另一个用于端口443。 下面的红线是你要添加的; 之前和之后的行被包括为上下文以帮助您找到在哪里添加新规则。
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
要激活新规则集,请重新启动IPTables。
sudo systemctl restart iptables
第6步(可选) - 安装Mlocate
该locate
命令是在系统中查找文件的位置一个非常有用的工具。 例如,要找到一个名为示例文件,您可以键入:
locate example
这将扫描文件系统,并在屏幕上打印文件的位置或位置。 还有采用更先进的方式locate
了。
为了使您的服务器上可用的命令,首先你需要安装mlocate
软件包。
sudo dnf install -y mlocate
然后,运行updatedb
命令来更新搜索数据库。
sudo updatedb
在这之后,你应该能够使用locate
来找到名称的任何文件。
结论
完成最后一步后,您的Fedora 22服务器应该配置,相当安全,并可以使用!