不要让你的服务器被黑客攻击而失去你所有的努力工作。这里有一个循序渐进的方法来加固和保护你的Linux服务器--从网络,到权限。对于简单的部署和测试,请查看数字海洋,我最喜欢的平台。5美元/月的服务器可以在一分钟内部署完毕,这是无可厚非的。通过我的链接注册,你可以帮助延长我的服务器的寿命。谢谢你。
设置你的域名服务器
首先,从你的注册商(Godaddy、Namecheap等)检查你的域名设置,看看域名服务器选项是否正确。如果不是,就把它改成指向你的服务器。例如,如果你的服务器在数字海洋,将域名服务器改为:ns1.digitalocean.com, ns2.digitalocean.com, ns3.digitalocean.com。请注意,你仍然需要在你的服务器提供商中配置网络设置,以便连接将直接到你的服务器IP。
一旦你完成了,运行whois example.com ,看看 "名称服务器 "的密钥是否与你输入的匹配。如果不是,请等待一两个小时,让这些变化得以传播。但是,现在不要担心这个问题--我们可以在没有这个问题的情况下进行其余的程序。
配置你的域名
请注意,这些选项必须通过你的服务器提供商完成。首先,通过输入一个你拥有的有效的完全合格域名来添加一个域名,例如:example.com 。然后,添加A记录来设置一个主机名,添加CNAME记录来添加别名,比如你想在前面加上 "www"。如果你需要设置一个邮件服务器,添加MX记录。你的服务器供应商应该有这方面的详细文件。
从你的本地机器登录到你的服务器
让我们来看看好东西。如果你是通过你的服务器提供商提供的网络终端访问你的服务器,你不需要这样做。如果你要从你的本地机器上访问你的服务器,就做这个步骤。
ssh root@your_server_ip
让我们更新Apt-Get
一旦你进入了,更新apt-get。
apt-get update
安装Fail2Ban以防止主动攻击
让我们安装fail2ban 。默认配置足以覆盖你,所以我们直接安装它。如果你想定制服务,请阅读更多关于它的信息。
apt-get install fail2ban
安装它应该自动使它运行。如果没有,请运行sudo service fail2ban start
创建一个新的用户
永远不要在根用户下工作。这样做是不安全的,你可能会造成比你想要的更多的损害--如果不是现在,很可能是以后。所以,让我们创建一个具有普通权限的新用户。请确保你输入了一个强密码。
adduser jancarloviray
添加根权限
让我们为我们的普通账户添加根权限,或 "超级用户 "的权限。这将使我们能够通过在每个命令前加上sudo ,来运行管理权限。
我们需要将jancarloviray 添加到sudo组中。属于sudo组的用户被允许使用sudo 命令。
usermod -aG sudo jancarloviray
另一个这样做的命令是gpasswd -a jancarloviray sudo 。它们都是为了完成同样的事情。
如果你不能立即将用户添加到组中,你可能需要编辑/etc/sudoers 文件以取消对组名的注释。通过运行sudo visudo 来完成这个工作。
添加公钥认证
为你的新用户设置公钥认证。这允许我们通过要求一个私人SSH密钥来限制访问。要做到这一点,你必须在你的本地机器上输入这些命令
ssh-keygen
运行该命令会生成以下文件。
~/.ssh/id_rsa
~/.ssh/id_rsa.pub
不要分享私钥!现在,把公钥复制到你的新服务器。
ssh-copy-id -i ~/.ssh/id_rsa.pub jancarloviray@your_server_ip
如果你有一台Mac,而你没有安装该命令,请运行brew install ssh-copy-id 。如果这不起作用,那么你必须手动操作。这要多花点功夫,但你会很感激的。让我们手动安装密钥(不推荐!)。
# in your local computer, print the contents of your public key
cat ~/.ssh/id_rsa.pub
# copy that in your clipboard
# on your server, switch to the new user
# this will bring your to your new user's home directory
su - jancarloviray
# create .ssh directory and restrict its permission
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# open the authorized_keys file and insert your public key there
vim ~/.ssh/authorized_keys
# restricts the permission of the authorized_keys
chmod 600 ~/.ssh/authorized_keys
# exit and go back to the root user
exit
禁用密码认证
让我们确保没有人能够真正进入你的服务器--当然除了你自己好吧,从技术上讲,只对那些有机会进入你的本地计算机的人。在这里,我们将禁止通过密码登录。这意味着,进入你的服务器的唯一途径是你拥有与你在authorized_keys中复制的公钥配对的私钥。我们在上一个步骤中创建了这个密钥。
需要注意的是,只有在你完成了上一步之后才可以这样做,否则你将永远被锁定在服务器之外,这一点非常重要。
现在我们来编辑ssh配置。
sudo vim /etc/ssh/sshd_config
将# PasswordAuthentication yes 行改为PasswordAuthentication no 。注意,现在它是 "no",而且是未加注释的。
重新加载SSH守护进程。
sudo systemctl reload sshd
现在你应该可以不用输入密码就能登录了,只要你有密钥。
如果你需要排除故障。
在服务器上运行这个tail -f /var/log/auth.log ,并在客户端连接时运行这个ssh -vvv -i .ssh/id_rsa user@server_ip_or_hostname
设置一个基本的防火墙
安装ufw 与sudo apt-get install ufw
设置一些默认值。这些是开箱即用的设置,但我们还是要确认一下。
sudo ufw default deny incoming
sudo ufw default allow outgoing
检查你当前的服务。
sudo ufw app list
启用你需要有连接的服务。
sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
如果你需要明确启用某些端口。
# if you want to allow mail, for example:
sudo ufw allow 25 #smtp
sudo ufw allow 143 #imap
sudo ufw allow 993 #imaps
sudo ufw allow 110 #incoming pop3
sudo ufw allow 995 #incoming pop3s
启用速率限制
sudo ufw limit ssh/tcp
启用防火墙。
sudo ufw enable
检查你的防火墙的当前状态。
sudo ufw status
这就是所有的基础知识!如果你想了解更多的步骤,请在下面的评论中告诉我。总会有另一个步骤来保护和加固你的服务器的!