Back

记第一台服务器的基础配置

能不能一直当学生啊

刚放假时就想搞一台自己的服务器,平时用来反弹shell,做个xss测试,跑个环境之类的,但无奈实在太忙,hvv期间甚至做了几次渗透测试,中途还被拉去搭建了个CTF靶场,累的够呛,现在终于有时间来折腾服务器了。

毕竟是第一台服务器,在这里留个记录

选购

本想购买阿里云的ECS,99元一年,2H2G,怎么看都很心动的,可惜只支持国内,因此只好选择了288一年的轻量应用 服务器,2H1G,虽然内存与流量都小了些,但考虑到我的需求只是做些测试,也没有博客搬家的打算,也可以接受,毕竟都是白嫖的(学生优惠券300元)

事实上,这个价格令我很犹豫,但回想起这一年来无数次由于网络问题而栽的跟头,还是选择了看起来不实惠,但位于海外的服务器。我真要感谢当时的我做出了这个决定。

配置如下:

操作系统选择了Ubuntu22.04,地域为新加坡。本想选择位于香港的,但香港的服务器每日限购,想也正常,毕竟香港位于国内,访问延迟小,还不被墙所限制,自然是抢手货。但我没那精力去抢购,就选择了位于新加坡的

安全组修改

服务器一开始分配给我们一个公网ip与一个内网ip,而且在SSH登陆后,ifconfig看到的是内网ip,若想通过外部网络访问服务器,需要配置安全组,将服务器的外网ip的端口映射到内网ip。
在控制台查看防火墙,可以看到默认映射的几个端口

我这边的选择是将全端口映射,毕竟以后需要反弹shell,安全在服务器内部做好即可

SSH配置

首先肯定是修改默认端口

修改SSH配置文件:vim /etc/ssh/sshd_config
Port 22修改为想使用的端口即可

保存,随后使用ufw开放该端口

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 启动ufw
systemctl start ufw

# 开放使用的SSH端口
ufw allow [端口]

# 关闭原先的22端口
ufw delete allow 22

# 查看端口开放状态
ufw status

除此之外,我顺带开放了端口8000用于监听,方便用python跑http服务或反弹shell

我购入的这台服务器默认不允许使用SSH密码登陆,但我需要配置本地的公私钥登陆,因此先在sshd_config中将PasswordAuthentication设置为yes,在控制台设置了root密码后,就可以在本地进行SSH密码登陆

但无论密码有多复杂,只要开放了密码登陆,就会有被暴破的风险

在本地生成密钥,并指定算法

1
ssh-keygen -t ed25519

之后会请我们设置passphrase,用于在我们使用私钥登陆时再进行一次检验,也就是密码,防止他人拿到我们的私钥后直接登陆服务器

将其命名为key,之后就可在.ssh文件夹下找到key(私钥)与key.pub(公钥)
接着就是将公钥内容写入服务器指定用户的~/.ssh/authorized_keys

之后就可以通过ssh -p [端口] -i ~/.ssh/key root@[ip]来登陆了
为了之后不用每次输入那么长的语句,可以在本地的.ssh目录下写一个config,内容如下

1
2
3
4
Host Server
    HostName [服务器ip]
    IdentityFile ~/.ssh/key
    User root

如此一来,以后就可以通过ssh -p [端口] Server来登陆

同样的方法配置了XShell的公私钥,再将服务器的SSH配置中将密码登陆选项关闭

Docker安装

我还想偶尔用服务器跑一些环境,因此还需要装个Docker
这是我装那么多次Docker以来最舒服的一次,直接跟着官方文档一步步下来即可,没有被墙的感觉真好

自然,墙维护了国内网络环境,也有其存在的意义,这是无可否认的

首先设置Docker的apt存储库

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 添加Docker的官方GPG密钥
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# 将存储库添加到apt中
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

安装Docker包

1
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

不用换源,good

接着安装docker compose

1
apt-get install docker-compose-plugin

拉个vulhub测试一下

1
2
3
git clone https://github.com/vulhub/vulhub.git
cd vulhub/thinkphp/lang-rce
docker compose up -d

这里有个问题,ufw明明只开放了监听端口与SSH端口,我们该怎么访问容器映射的端口呢,毕竟每个漏洞环境的映射端口不可能都是同一个。

这个问题在官方文档中得到了解释

当您使用 Docker 发布容器的端口时,该容器的往返流量在通过 ufw 防火墙设置之前会被转移。Docker 在表中路由容器流量nat,这意味着数据包在到达ufw 使用的INPUT和OUTPUT链之前会被转移。数据包在应用防火墙规则之前被路由,从而有效地忽略了您的防火墙配置。

闲话

目前服务器能满足我的大部分需求了,后续看我有了什么需求再配置吧。本来想配个代理池方便我做渗透测试的,但缺少相关知识,近期又很忙,只能搁置了。

上周靶机没打,这周打算打两台补上,很好,事多起来了 :D

Licensed under CC BY-NC-SA 4.0