如何设置 Ubuntu 服务器以便(安全地)通过互联网访问?

如何设置 Ubuntu 服务器以便(安全地)通过互联网访问?

我想构建一个可以持续连接到互联网的 Ubuntu 服务器。我只有一个 IP 地址。该服务器的主要用途是作为源代码控制器(可能是 git 或 svn... 尚未选择),但偶尔也用于其他用途(与家人或客户共享文件、个人备份、托管我可能编写的 Web 应用程序等)。我还希望能够随时访问计算机进行管理,即使在某些仅允许 http 或 https 的客户代理之后

实现该目标的标准步骤是什么?

  • 我的第一个想法是设置 openssh 服务器。是否可以(并且非常安全)在标准端口(即客户防火墙/代理兼容)上将其打开到互联网?
  • 是否可以设置一个从网页插件(也由服务器托管)运行的 VPN 服务器?
  • 因为我只有一个 IP 地址(实际上是 IP V4 和 IPV 6,但我认为现在客户网络还无法访问 IP V6 地址),我可以让 apache 和其他服务器软件在相同的标准端口上共存吗?

提前致谢 ;)

答案1

如果设置正确,OpenSSH 即使在标准端口上也是安全的。将其移出标准端口可防止您的日志文件被未经授权的登录尝试填满。更多详细信息请参见末尾。

如果您无法控制连接到服务器的计算机,那么访问您的服务器是非常危险的(我认为这就是您需要使用浏览器插件的原因)

OpenVPN 可以设置为与 HTTP/HTTPS 服务器共享 TCP 端口,从其手册页

--port-share host port  
    When run in TCP server mode, share the OpenVPN port with another
    application, such as an HTTPS server.
    If OpenVPN senses a connection to its port which is using a non-OpenVPN
    protocol, it will proxy the connection to the server at host:port.  
    Currently only designed to work with HTTP/HTTPS, though it would 
    be theoretically possible to extend to other protocols such as ssh.

由于 TCP 连接开销较大(TCP 三次握手),不建议使用 OpenVPN。如果您别无选择,可以尝试一下。

使用 OpenVPN,您可以避免任何端口限制并确保连接安全。请参阅如何设置 OpenVPN 以便可以从不安全的热点安全地使用互联网?有关设置 OpenVPN 的指南。

除非应用程序支持(如 OpenVPN),否则您无法共享端口,所以我必须让您失望。

SSH 服务器

基于密码的身份验证不限制连接尝试次数会带来麻烦。因此,最好使用基于密钥的身份验证,并完全禁用基于密码的身份验证。

  1. 安装openssh-服务器安装 openssh-server通过运行sudo apt-get install openssh-server

  2. 通过编辑配置文件来禁用基于密码的身份验证/etc/ssh/sshd_config。要开始编辑,请运行sudo nano /etc/ssh/sshd_config。找到该行#PasswordAuthentication yes并将其更改为PasswordAuthentication no。默认情况下,SSH 监听端口 22。如果要更改它,出于安全原因,请使用低于 1024 的端口。(用 更改该行Port 22

  3. 为了提高安全性,您可以配置允许登录的用户列表。添加一行:

    AllowUsers someuser
    

    替换someuser为允许登录的账户的用户名。多个用户名之间用空格分隔。

  4. 生成密钥在你的电脑使用命令ssh-keygen -t rsa。输入您想要的任何值并选择一个安全密码。

  5. ~/.ssh/id_rsa.pub将文件内容复制到/home/someuser/.ssh/authorized_keys服务器上的文件中。someuser是应该允许登录的用户。(这是应该复制的一行,绝不复制以以下开头的文件的内容-----BEGIN RSA PRIVATE KEY

  6. 重新加载 SSH 服务器的配置:

    sudo reload ssh
    
  7. 如果您通过 SSH 远程访问您的服务器,请验证您可以建立新的 SSH 连接以避免将自己锁定。

相关内容