Linux下VDS服务器管理的某些方面

VDS(虚拟专用服务器)是一项服务,用户可以在其中获得具有最大特权虚拟专用服务器这是对真实物理服务器的模拟,它具有root用户访问权限,可以安装任意操作系统和任何软件。同时,这比租用容量相当的物理服务器便宜得多。



您可以从映像将OS放置在服务器上,也可以使用控制面板中的现成映像。







假设我们安装了Debian 10和Nginx Web服务器,它们位于标准存储库(apt install nginx)中。让我们看看哪些有用的实用程序和命令将帮助您管理Linux服务器。让我们分别考虑Nginx和VDS服务器本身。



内容





首先,建议您了解Web服务器本身。Nginx在安装完成后启动。我们检查以下事实:



systemctl status nginx


发行:



● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2020-08-17 08:52:54 UTC; 4min 23s ago
Docs: man:nginx(8)
Main PID: 3942 (nginx)
Tasks: 3 (limit: 4719)
Memory: 6.1M
CGroup: /system.slice/nginx.service
├─3942 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─3943 nginx: worker process
└─3944 nginx: worker process


或者只是在浏览器中输入服务器的IP地址:



http://your_server_ip


如果我们还没有将站点文件复制到服务器,则将显示标准的Nginx标头页面。







管理Nginx的基本命令



注意。如果用户没有root特权,则要执行每个命令,他必须使用command获得root特权sudo



停止Web服务器:



sudo systemctl stop nginx


如果以超级用户身份运行,则命令为:



systemctl stop nginx


停止后开始:



systemctl start nginx


停止并重新启动(重新启动):



systemctl restart nginx


如果您刚刚进行了一些配置更改,Nginx可以重新启动而不会丢失当前连接。这是通过以下命令完成的:



systemctl reload nginx


默认情况下,Nginx配置为在服务器启动时自动启动。可以使用以下命令更改此行为:



systemctl disable nginx


在服务器启动时重新启用Nginx自动启动:



systemctl enable nginx


默认情况下,Nginx具有为一个域配置的一组服务器阻止规则假定您仅在服务器上托管一个站点。默认情况下,它应该位于目录中/var/www/html



假设您要为Nginx中的多个站点创建多组服务器块或将当前站点的文件移动到其他目录/var/www/your_domain



这是通过以下命令完成的。



首先,我们在服务器上创建所需的目录。



mkdir -p /var/www/your_domain/html


然后,我们使用$USER应该对应于当前用户的变量分配此目录的所有者



chown -R $USER:$USER /var/www/your_domain/html


我们将主页放置在指定目录中index.html



然后,您需要为Nginx创建一组适当的规则。在任何文本编辑器中,创建一个文件/etc/nginx/sites-available/your_domain并从那里的默认文件复制配置,仅使用更改的地址和域:



server {
listen 80;
listen [::]:80;

root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;

server_name your_domain www.your_domain;

location / {
try_files $uri $uri/ =404;
}
}


最后,我们通过将符号链接写入sites-enabledNginx在启动时读取的目录的新配置文件来激活此配置



ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/


重启后,Nginx的将显示请求相应的网页your_domainwww.your_domain



服务器管理



用户在管理Linux服务器时最常遇到哪些问题?您甚至可以为没有经验的管理员推荐哪些工具?



安装主管



Supervisor是一个客户端/服务器系统,管理员可以通过该系统控制服务器上的进程。该工具代表自己将流程创建为子流程。



在Debian或Ubuntu上安装超级用户非常简单:



apt-get install supervisor


之后,supervisor守护程序已经在运行,并且将在每次系统引导时启动。



新程序通过目录中的配置文件传递给主管/etc/supervisor/conf.d例如,对于脚本,long.sh配置文件可能如下所示:



[program:long_script]
command=/usr/local/bin/long.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/long.err.log
stdout_logfile=/var/log/long.out.log


因此,该脚本将在每次系统引导时自动启动,并在退出时自动重新启动。该值可以是“ false”(未重新启动)或“ unexpected”(仅当以意外错误代码退出时才重新启动,默认情况下为0或2以外的任何代码)。



最后两行是杂志的地址。这是主管程序的最低配置模板。



为特定程序创建配置文件后,我们运行两个命令,以便主管重新读取并应用新配置:



supervisorctl reread


supervisorctl update


在此阶段,我们的程序或脚本应该已经在运行,可以通过日志进行检查。



该实用程序supervisorctl具有交互模式,在该模式下,它无需参数即可运行:



$ supervisorctl
long_script RUNNING pid 12614, uptime 1:49:37
supervisor>


在此模式下,supervisorctl首先显示在其监视下的所有程序的状态和运行时间,然后显示其命令行。您可以在此处输入help-并查看可用命令列表:



supervisor> help

default commands (type help ):
=====================================
add clear fg open quit remove restart start stop update
avail exit maintail pid reload reread shutdown status tail version


如您所见,您可以使用start,stop和restart命令从命令行启动,停止和重新启动程序。



要退出主管,请使用Ctrl-C或quit命令:



supervisor> quit


可用磁盘空间分析



查看有关已安装分区的信息的标准实用程序是df它显示已连接设备的列表以及有关已占用空间的信息。



df  


-h选项启用人类可读的输出(即以兆字节或千兆字节为单位):



$ df -h
     % C 
devtmpfs 925M 0 925M 0% /dev
tmpfs 936M 56K 936M 1% /dev/shm
tmpfs 936M 1,9M 934M 1% /run
tmpfs 936M 0 936M 0% /sys/fs/cgroup
/dev/sda3 15G 11G 4,2G 71% /
tmpfs 936M 192K 936M 1% /tmp
/dev/sdb4 133G 126G 974M 100% /home
tmpfs 188M 20K 188M 1% /run/user/42
tmpfs 188M 7,1M 181M 4% /run/user/1000


有关特定目录的信息(例如/ home):



df -h /home


有关具有给定文件系统的分区的信息:



df -h -t ext4


使用命令搜索文件 find



按文件名搜索:



find -name "query"


按名称搜索,不区分大小写:



find -iname "query"


“反向”搜索与指定模式不匹配的文件:



find -not -name "query_to_avoid"


要么



find \! -name "query_to_avoid"


按文件类型搜索



find -type _ 


一些常见的描述符是:



  • f-常规文件

  • d-目录

  • l-符号链接

  • c-字符I / O设备文件

  • b-阻止I / O设备文件


例如,以下命令将列出系统上安装的所有字符I / O设备:



find / -type c
/dev/parport0
/dev/snd/seq
/dev/snd/timer
/dev/autofs
/dev/cpu/microcode
/dev/vcsa7
/dev/vcs7
/dev/vcsa6
/dev/vcs6
/dev/vcsa5
/dev/vcs5
/dev/vcsa4
. . .


根据大小和访问/更改时间有一个过滤器。例如,以下命令可查找所有小于50个字节的文件:



find / -size -50c


搜索所有700 MB以上的文件:



find / -size +700M


为了按访问时间,文件元信息的修改或更改进行搜索,参数“ -atime”,“-mtime”和“ -ctime”与加号和减号一起使用,分别表示大于或小于指定范围的范围。



搜索不到一天前修改的文件:



find / -mtime -1


访问时间超过三天的文件:



find / -atime +3


在最后一分钟更改的文件:



find / -mmin -1


比指定文件新的文件:



find / -newer myfile


可以按所有者(“ -user”,“-group”)和具有特定权限(“ -perm”)的文件进行搜索。在找到的所有文件上,您可以立即执行某些操作(“ -exec”)。



测试TCP和UDP连接



Linux附带了大量有用的实用程序。一些系统管理员仅使用内置工具即可执行大多数任务,而无需安装其他软件。嵌入式Linux工具真正的瑞士刀就是网络实用程序netcat通用语法:



netcat [options] host port


此命令在指定端口上启动到指定主机的TCP连接。如果您需要测试UDP连接而不是TCP,请指定以下选项-u



netcat -u host port


端口范围:



netcat host startport-endport


在大多数系统中,您可以同时编写netcatnc



端口扫描



netcat的典型用途之一是端口扫描,该选项-z意味着扫描而不是建立连接。我们将其与选项一起使用,-v以在扫描1到1000的端口时显示更多详细信息:



netcat -z -v domain.com 1-1000


输出将如下所示:



nc:连接到domain.com端口1(tcp)失败:连接被拒绝
nc:连接到domain.com端口2(tcp)失败:连接被拒绝
nc:连接到domain.com端口3(tcp)失败:连接被拒绝
nc:连接到domain.com端口4(tcp)失败:连接被拒绝
nc:连接到domain.com端口5(tcp)失败:连接被拒绝
nc:连接到domain.com端口6(tcp)失败:连接被拒绝
nc:连接到domain.com端口7(tcp)失败:连接被拒绝
... ... ...
连接到domain.com 22端口[tcp / ssh]成功!
... ... ...


但是,有一个用于此任务的更高级的专用程序nmap安装它:



apt-get update
apt-get install nmap


该实用程序提供有关端口的更多详细信息。已知端口的寄存器/usr/share/nmap/nmap-services包含2万多行,其中包括其他字段,例如在Internet上的服务器上打开特定端口的平均频率(第三列):



... ... ...
tcpmux 1 / tcp 0.001995#TCP端口服务多路复用器[rfc-1078]
tcpmux 1 / udp 0.001236#TCP端口服务多路复用器
compressnet 2 / tcp 0.000013#管理实用程序
compressnet 2 / udp 0.001845#管理实用程序
compressnet 3 / tcp 0.001242#压缩过程
compressnet 3 / udp 0.001532#压缩过程
未知4 / tcp 0.000477
rje 5 / udp 0.000593#远程作业输入
未知6 / tcp 0.000502
回声7 / TCP 0.004855
回声7 / udp 0.024679
回声7 / sctp 0.000000
... ... ...


不建议在外部服务器上运行端口扫描,因为系统管理员可能会混淆敌对等操作。Nmap旨在探索自己的服务器,您可以在专用服务器上进行实验以进行测试scanme.nmap.org



一些命令需要很长时间才能执行。



扫描主机上的操作系统:



nmap -O 


扫描主机范围从xxx.xxx.xxx.xxx到yyy.yyy.yyy.yyy:



nmap -PN xxx.xxx.xxx.xxx-yyy.yyy.yyy.yyy


扫描网络范围以查找可用服务:



nmap -sP _


扫描特定端口:



nmap -p _ 


扫描所有打开的TCP和UDP端口:



nmap -n -PN -sT -sU -p- 


研究主机上运行的软件版本:



nmap -PN -p _ 


nmap还有许多其他命令,参数和用例。扫描VDS服务器的端口可以使您识别潜在的攻击媒介和漏洞,因为攻击者将开始进行扫描。



转发消息和文件



使用密钥,-l您可以侦听服务器上的特定端口:



netcat -l 5438


在另一台机器上,我们指定在此端口上连接到该机器:



netcat domain.com 5438


现在已经在两个系统之间建立了通信通道。它可以用来发送短信。



您甚至可以通过这种方式传输文件。为此,请将侦听命令直接发送到文件:



netcat -l 5438 > _


在另一台计算机上,我们将原始文件而不是文本消息提交到输入:



netcat domain.com 5438 < _


同样,您可以传输各种内容,例如,在以下位置动态存档的目录内容tarball



tar -czf - * | netcat domain.com 4444


以相同的方式,您可以在一侧(dd创建磁盘映像,通过创建的TCP连接将其发送到指定的端口-并在另一系统上接收它。



添加和删​​除用户



要添加,删除用户并授予他们特权,sudo必须首先以root用户身份连接到服务器:



ssh root@ip__


之后,添加用户:



adduser newuser


最初,他没有特权。但是,如果这是系统的主要用户,则我们可以为其分配管理权限,以便他可以执行维护和维护服务器的例行任务。



要分配管理特权,您需要将用户添加到sudo组。允许该组中的用户以sudo特权提升为管理身份运行命令



usermod -aG sudo user1


而是,我们user1指示之前添加的用户的名称。现在,他将能够通过sudo以下命令运行任何命令



sudo 


拥有这些权限,该用户可以删除其他用户:



sudo deluser --remove-home username


此选项--remove-home还删除用户的主目录。



Root本身有权执行命令deluser而无需执行sudo



当然,这不是用于管理VDS服务器的有用工具的完整列表。但是对于新手系统管理员来说,这些问题通常会出现,他们需要设置第一台服务器,安装操作系统并开始了解Linux管理领域。









All Articles