服务器|云|数据中心

服务器|云主机|vps|站群

分类目录服务器教程

运维老司机总结:最常用的150个命令

说到运维大家总是想到的是修网络的,其实就修网络的学问也是很大的,现在来听听一位老运维总结下在运维工程中,常用的150个命令汇总。

运维/命令/网络

线上查询及帮助命令(2个)

  • man:查看命令帮助,命令的词典,更复杂的还有info,但不常用。
  • help:查看Linux内置命令的帮助,比如cd命令。

文件和目录操作命令(18个)

  • ls:全拼list,功能是列出目录的内容及其内容属性信息。
  • cd:全拼change directory,功能是从当前工作目录切换到指定的工作目录。
  • cp:全拼copy,其功能为复制文件或目录。
  • find:查找的意思,用于查找目录及目录下的文件。
  • mkdir:全拼make directories,其功能是创建目录。
  • mv:全拼move,其功能是移动或重命名文件。
  • pwd:全拼print working directory,其功能是显示当前工作目录的绝对路径。
  • rename:用于重命名文件。
  • rm:全拼remove,其功能是删除一个或多个文件或目录。
  • rmdir:全拼remove empty directories,功能是删除空目录。
  • touch:创建新的空文件,改变已有文件的时间戳属性。
  • tree:功能是以树形结构显示目录下的内容。
  • basename:显示文件名或目录名。
  • dirname:显示文件或目录路径。
  • chattr:改变文件的扩展属性。
  • lsattr:查看文件扩展属性。
  • file:显示文件的类型。
  • md5sum:计算和校验文件的MD5值。

查看文件及内容处理命令(21个)

  • cat:全拼concatenate,功能是用于连接多个文件并且打印到屏幕输出或重定向到指定文件中。
  • tactac:是cat的反向拼写,因此命令的功能为反向显示文件内容。
  • more:分页显示文件内容。
  • less:分页显示文件内容,more命令的相反用法。
  • head:显示文件内容的头部。
  • tail:显示文件内容的尾部。
  • cut:将文件的每一行按指定分隔符分割并输出。
  • split:分割文件为不同的小片段。
  • paste:按行合并文件内容。
  • sort:对文件的文本内容排序。
  • uniq:去除重复行。oldboy
  • wc:统计文件的行数、单词数或字节数。
  • iconv:转换文件的编码格式。
  • dos2unix:将DOS格式文件转换成UNIX格式。
  • diff:全拼difference,比较文件的差异,常用于文本文件。
  • vimdiff:命令行可视化文件比较工具,常用于文本文件。
  • rev:反向输出文件内容。
  • grep/egrep:过滤字符串,三剑客老三。
  • join:按两个文件的相同字段合并。
  • tr:替换或删除字符。
  • vi/vim:命令行文本编辑器。

文件压缩及解压缩命令(4个)

  • tar:打包压缩。oldboy
  • unzip:解压文件。
  • gzipgzip:压缩工具。
  • zip:压缩工具。

信息显示命令(11个)

  • uname:显示操作系统相关信息的命令。
  • hostname:显示或者设置当前系统的主机名。
  • dmesg:显示开机信息,用于诊断系统故障。
  • uptime:显示系统运行时间及负载。
  • stat:显示文件或文件系统的状态。
  • du:计算磁盘空间使用情况。
  • df:报告文件系统磁盘空间的使用情况。
  • top:实时显示系统资源使用情况。
  • free:查看系统内存。
  • date:显示与设置系统时间。
  • cal:查看日历等时间信息。

搜索文件命令(4个)

  • which:查找二进制命令,按环境变量PATH路径查找。
  • find:从磁盘遍历查找文件或目录。
  • whereis:查找二进制命令,按环境变量PATH路径查找。
  • locate:从数据库 (/var/lib/mlocate/mlocate.db) 查找命令,使用updatedb更新库。

用户管理命令(10个)老男孩

  • useradd:添加用户。
  • usermod:修改系统已经存在的用户属性。
  • userdel:删除用户。
  • groupadd:添加用户组。
  • passwd:修改用户密码。
  • chage:修改用户密码有效期限。
  • id:查看用户的uid,gid及归属的用户组。
  • su:切换用户身份。
  • visudo:编辑/etc/sudoers文件的专属命令。
  • sudo:以另外一个用户身份(默认root用户)执行事先在sudoers文件允许的命令。

基础网络操作命令(11个)老男孩

  • telnet:使用TELNET协议远程登录。
  • ssh:使用SSH加密协议远程登录。
  • scp:全拼secure copy,用于不同主机之间复制文件。
  • wget:命令行下载文件。
  • ping:测试主机之间网络的连通性。
  • route:显示和设置linux系统的路由表。
  • ifconfig:查看、配置、启用或禁用网络接口的命令。
  • ifup:启动网卡。
  • ifdown:关闭网卡。
  • netstat:查看网络状态。
  • ss:查看网络状态。

深入网络操作命令(9个)

  • nmap:网络扫描命令。
  • lsof:全名list open files,也就是列举系统中已经被打开的文件。
  • mail:发送和接收邮件。
  • mutt:邮件管理命令。
  • nslookup:交互式查询互联网DNS服务器的命令。
  • dig:查找DNS解析过程。
  • host:查询DNS的命令。
  • traceroute:追踪数据传输路由状况。
  • tcpdump:命令行的抓包工具。

有关磁盘与文件系统的命令(16个)

  • mount:挂载文件系统。
  • umount:卸载文件系统。
  • fsck:检查并修复Linux文件系统。
  • dd:转换或复制文件。
  • dumpe2fs:导出ext2/ext3/ext4文件系统信息。
  • dumpe:xt2/3/4文件系统备份工具。
  • fdisk:磁盘分区命令,适用于2TB以下磁盘分区。
  • parted:磁盘分区命令,没有磁盘大小限制,常用于2TB以下磁盘分区。
  • mkfs:格式化创建Linux文件系统。
  • partprobe:更新内核的硬盘分区表信息。
  • e2fsck:检查ext2/ext3/ext4类型文件系统。
  • mkswap:创建Linux交换分区。
  • swapon:启用交换分区。
  • swapoff:关闭交换分区。
  • sync:将内存缓冲区内的数据写入磁盘。
  • resize2fs:调整ext2/ext3/ext4文件系统大小。

系统权限及用户授权相关命令(4个)

  • chmod:改变文件或目录权限。
  • chown:改变文件或目录的属主和属组。
  • chgrp:更改文件用户组。
  • umask:显示或设置权限掩码。

查看系统用户登陆信息的命令(7个)

  • whoami:显示当前有效的用户名称,相当于执行id -un命令。
  • who:显示目前登录系统的用户信息。
  • w:显示已经登陆系统的用户列表,并显示用户正在执行的指令。
  • last:显示登入系统的用户。
  • lastlog:显示系统中所有用户最近一次登录信息。
  • users:显示当前登录系统的所有用户的用户列表。
  • finger:查找并显示用户信息。

内置命令及其它(19个)

  • echo:打印变量,或直接输出指定的字符串
  • printf:将结果格式化输出到标准输出。
  • rpm:管理rpm包的命令。
  • yum:自动化简单化地管理rpm包的命令。
  • watch:周期性的执行给定的命令,并将命令的输出以全屏方式显示。
  • alias:设置系统别名。
  • unalias:取消系统别名。
  • date:查看或设置系统时间。
  • clear:清除屏幕,简称清屏。
  • history:查看命令执行的历史纪录。
  • eject:弹出光驱。
  • time:计算命令执行时间。
  • nc:功能强大的网络工具。
  • xargs:将标准输入转换成命令行参数。
  • exec:调用并执行指令的命令。
  • export:设置或者显示环境变量。
  • unset:删除变量或函数。
  • type:用于判断另外一个命令是否是内置命令。
  • bc:命令行科学计算器

系统管理与性能监视命令(9个)

  • chkconfig:管理Linux系统开机启动项。
  • vmstat:虚拟内存统计。
  • mpstat:显示各个可用CPU的状态统计。
  • iostat:统计系统IO。
  • sar:全面地获取系统的CPU、运行队列、磁盘 I/O、分页(交换区)、内存、 CPU中断和网络等性能数据。
  • ipcs:用于报告Linux中进程间通信设施的状态,显示的信息包括消息列表、共享内存和信号量的信息。
  • ipcrm:用来删除一个或更多的消息队列、信号量集或者共享内存标识。
  • strace:用于诊断、调试Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。
  • ltrace:命令会跟踪进程的库函数调用,它会显现出哪个库函数被调用。

关机/重启/注销和查看系统信息的命令(6个)

  • shutdown:关机。
  • halt:关机。
  • poweroff:关闭电源。
  • logout:退出当前登录的Shell。
  • exit:退出当前登录的Shell。
  • Ctrl+d:退出当前登录的Shell的快捷键。

进程管理相关命令(15个)

  • bg:将一个在后台暂停的命令,变成继续执行 (在后台执行)。
  • fg:将后台中的命令调至前台继续运行。
  • jobs:查看当前有多少在后台运行的命令。
  • kill:终止进程。
  • killall:通过进程名终止进程。
  • pkill:通过进程名终止进程。
  • crontab:定时任务命令。
  • ps:显示进程的快照。
  • pstree:树形显示进程。
  • nice/renice:调整程序运行的优先级。
  • nohup:忽略挂起信号运行指定的命令。
  • pgrep:查找匹配条件的进程。
  • runlevel:查看系统当前运行级别。
  • init:切换运行级别。
  • service:启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。

Linux防各类攻击包的优化

购买了LINUX服务器后,需要做一些安全优化保障服务器安全。

防止同步包洪水(Sync Flood)

# iptables -A FORWARD -p tcp –syn -m limit –limit 1/s -j ACCEPT

也可以这么写:

#iptables -A INPUT -p tcp –syn -m limit –limit 1/s -j ACCEPT

–limit 1/s 限制syn并发数每秒1次,可以根据自己的需要修改

防止各种端口扫描

# iptables -A FORWARD -p tcp –tcp-flags SYN,ACK,FIN,RST RST -m limit –limit 1/s -j ACCEPT

Ping洪水攻击(Ping of Death)

# iptables -A FORWARD -p icmp –icmp-type echo-request -m limit –limit 1/s -j ACCEPT

修改内核参数优化网络处理能力

vi /etc/sysctl.conf

net.ipv4.tcp_tw_reuse = 1

该文件表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接。

net.ipv4.tcp_tw_recycle = 1

recyse是加速TIME-WAIT sockets回收

对tcp_tw_reuse和tcp_tw_recycle的修改,可能会出现.warning, got duplicate tcp line warning, got BOGUS tcp line.上面这二个参数指的是存在这两个完全一样的TCP连接,这会发生在一个连接被迅速的断开并且重新连接的情况,而且使用的端口和地址相同。但基本上这样的事情不会发生,无论如何,使能上述设置会增加重现机会。这个提示不会有人和危害,而且也不会降低系统性能,目前正在进行工作

net.ipv4.tcp_syncookies = 1

表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;

net.ipv4.tcp_synack_retries = 1

net.ipv4.tcp_keepalive_time = 1200

表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时

net.ipv4.tcp_fin_timeout = 30

fin_wait1状态是在发起端主动要求关闭tcp连接,并且主动发送fin以后,等待接收端回复ack时候的状态。对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。

net.ipv4.ip_local_port_range = 1024 65000

net.ipv4.tcp_max_syn_backlog = 8192

该文件指定了,在接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_timestamps = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_synack_retries = 1

net.ipv4.tcp_keepalive_time = 1200

net.ipv4.tcp_fin_timeout = 30

net.ipv4.ip_local_port_range = 1024 65000

net.ipv4.tcp_max_syn_backlog = 8192

net.ipv4.tcp_max_tw_buckets = 5000

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_sack = 1

net.ipv4.icmp_echo_ignore_broadcasts = 1

# 避免放大攻击

net.inet.udp.checksum=1

#防止不正确的udp包的攻击

net.ipv4.tcp_window_scaling = 1

修改完以上参数后保存退出并执行:sysctl -p 使得修改的参数生效。

香港和世界各地区机房比较

1. 香港机房:国内访问速度快,国内和海外用户访问速度稳定性最好。缺点:总宽度小,价格和其他地区稍贵
2. 新加坡机房:基本和香港机房差不多,稳定性稍差
3. 韩国机房:和上面两个相比,带宽比较大,网络环境好,缺点:海外延时和稳定性比香港大一些,较多用于私服,视频,聊天室对网络带宽要求比较大。
4. 美国机房:和上面的相比,带宽超大,内容无限制,只要没投诉一切OK! 缺点:延时稍大,国内访问慢一点。

理解NVMe的内部实现原理,这一篇就够了

任何新技术的出现都是为了解决当前情况存在的问题。NVMe的出现也是为了解决当前存在的问题。这个问题就是日益快速增长的存储介质性能与传输通道性能太差之间的矛盾。基于SSD的存储设备性能都要上天了,但SAS和SATA接口的性能却没有本质的提升。

目前基于SCSI协议的SAS和SATA只能是单个队列而且每个队列的深度也比较低,分别是254和32的队列深度。而NVMe协议设计之初就考虑了该问题,它的最大队列数量可以是64K(65535个命令队列和1个管理队列),而每个队列的深度可以高达64K。与SCSI协议相比,就好比一个乡村的羊肠小路和一个双向八车道的高速公路的差别。

理解NVMe的内部实现原理,这一篇就够了
图1 美丽的乡村下路和京港澳高速
NVMe基本原理

为了便于理解主机和NVMe设备的关系,我们这里简化NVMe设备的内部结构。如图2所示为NVMe白皮书中的配图,这里主机称为Host,而NVMe设备称为Controller(控制器)。主机和控制器之间通过共享内存的队列实现交互。

理解NVMe的内部实现原理,这一篇就够了

图2 NVMe多队列示意图

NVMe的队列分为2种,其中一种是用于管理的队列,称为Admin Queue(管理队列),仅有一个,另外一种是命令队列(Command Queue),最多可以有65535个。其中命令队列的数量和模式都是通过管理队列来设置的。其中每一个队列实际上是一个队列对,也就是包括两个队列,分别是提交队列(Submission Queue)和完成队列(Completion Queue)。提交队列用于主机端向NVMe设备发送NVMe命令,而完成队列则用于NVMe设备向主机反馈命令执行情况。实际上NVMe还有另外一种模式,就是多个提交队列共享同一个完成队列的情况,本文暂时不做介绍。

NVMe队列及命令的处理流程

上文我们知道NVMe是通过队列传递控制命令和命令等内容的,那么这里的队列实体到底是什么呢?其实这里提交队列和完成队列就是内存的一个区域。在数据结构原理上这里的队列其实是一个环形缓冲区,如图3所示。

理解NVMe的内部实现原理,这一篇就够了

图3 环形缓冲区

NVMe通过一种门铃机制(Doorbell)来告知控制器命令队列是否有新数请求/命令。也就是说每个队列都有一个门铃指针。对于发送队列来说,这个指针表示的是发送队列的尾指针。主机端将数据写入到发送队列后,更新映射到位于设备寄存器空间中的门铃的尾指针。此时,在控制器端就知道有新的请求/命令到来,接下来就可以进行对其进行处理。

当控制器完成一个NVMe请求时,通过完成队列来把完成的结果告知主机端。与发送队列不同,完成队列是通过中断机制(可以是INTx,MSI或MSIx)告诉主机端。如图4是一个命令的完整处理流程。

理解NVMe的内部实现原理,这一篇就够了

图4 命令处理完整流程

NVMe的命令格式

前面我们介绍了命令的发送和处理流程,接下来我们看看NVMe的命令长什么样。如图5是NMVe命令的具体格式,如果大家了解TCP/IP协议或者SCSI协议,那么理解本图将相当容易。在图4中每一行为8个字节,命令大小总共为64字节。

理解NVMe的内部实现原理,这一篇就够了

图5 NVMe的命令格式

在这个命令格式中有几个字段本身是比较复杂的,限于篇幅,且不打算让大家看完本文后头疼,本文不打算介绍所有细节。本文简单的介绍一下该命令格式的几个关键字段。其中Command Identifier标识一个具体的命令。Namespace Identifier则表示命令发送到那个命名空间。Data Pointer 1 和Data Pointer 2则用于标识数据的具体位置。

这里有两点需要说明:

  • NVMe的一个控制器下面可以有多个命名空间(Namespace),通过Namespace ID来标识的。
  • 命令与数据是分离的,并不像TCP那样数据在命令后面。

我们这里重点介绍一下Command Identifier,该字段占用4个字节的空间。虽然仅有4个字节,但有分为3大部分,6小部分,具体如图6所示。

图6 命令标识格式

我们以从低位到高位的顺序分别介绍一下各个字段的含义:

  • OPC: 全称为Opcode,也就是被执行命令的操作码。具体来说就是想让控制器干什么,比如读数据、写数据或者刷写等。

理解NVMe的内部实现原理,这一篇就够了

图7 OPC定义

  • FUSE: 全称为Fused Operation, 用于标识该命令是普通命令还是复合命令。如图8是白皮书对该字段的说明。

理解NVMe的内部实现原理,这一篇就够了

图8 FUSE的定义

  • PSDT: 全称为PRP or SGL for Data Transfer,这个用于说明存储数据的内存的组织形式。

NVMe的性能

最后我们看一下NVMe与SAS和SATA存储设备的性能对比。为了避免广告嫌疑,本文就布局图说明设备的厂商和类型了。

理解NVMe的内部实现原理,这一篇就够了

图9 性能对比

通过上图可以清楚的看到SAS和SATA设备与NVMe设备的性能差异,特别是对于读操作,NVMe有绝对的性能优势

相比 Windows 为什么越来越多人选择Linux?

在使用 Linux 之前,我想大家最先接触的都应该是 Windows 吧,但是一般接触过 Linux 之后,在回过头来使用 windows 是内心是十分拒绝的,大多数人产生这个原因到底是为什么呢?

Linux 是一个很神奇的系统,有很多值得我们,需要我们去探索的地方,对于服务器运维的人来说,在为服务器选择操作系统系统的时候,是选择 Linux 还是 Windows 是让人困惑的事?

当然,在你成为一个 Linux 重度爱好者的时候,你就会发现,对于 Linux 真是欲罢不能!

从用户群来说 Linux 是一个以开发者为中心的操作系统,而 Windows 是以消费者为中心的操作系统,这也是两个操作系统作为根本的区别。简单来讲,两个系统的选择就是看你是开发用还是作为消费者使用。

不管是 Windows 操作系统、Linux 系统还是苹果操作系统,甚至包括操作系统的鼻祖 Unix 操作系统,最早都是用 C 语言编写的。

那么为什么那么多人选择学习 Linux,我们来看看 Linux 的众多优点:

提到 linux 的优点,首先就是他的开源;任何人都是可以查看他的源代码的,而 windows 则不开源,所以你要经常的打补丁,修补漏洞之类的。

其次 Linux 的安全性非常高,漏洞修补快速 ;

丰富的软件支持;与其他的操作系统不同的是,安装了 Linux 系统后,用户常用的一些办公软件、图形处理工具、多媒体播放软件和网络工具等都已无需安装。而对于程序开发人员来说,Linux 更是一个很好的操作平台,在 Linux 的软件包中,包含了多种程序语言与开发工具,如 gcc、cc、C++、Tcl/Tk、Perl、Fortran77 等。

第四,多任务,多用户;与 Unix 系统一样,Linux 系统是一个真正的多用户多任务操作系统。多个用户可以在不相互影响的情况下拥有和使用系统资源,同时多个用户可以网络在线的方式使用计算机系统。多任务处理是现代计算机最重要的特点之一。由于 Linux 系统以同等的权限调度每个进程,它可以同时执行多个程序,并且每个程序的运行是相互独立的。您可以在 Linux 主机上规划不同级别的用户,每个用户都可以在不同的环境中登录到系统。此外,还可以允许不同的用户同时登录到主机,以使用主机的资源!

第五,相对较少的系统资源占用 :这是最吸引眼球的地方,目前市面上任何一款个人计算机都可以达到使用 Linux 搭建一个服务上百人以上的主机

在阅读了这篇文章之后,你应该对 Linux 和 Windows 有了新的理解,所以当你把操作系统作为开发人员而不是消费者时,你会更喜欢 Linux,而今天的 Linux 操作和维护已经成为比较流行的职业。如果你想在服务器的操作和维护中开发,选择 Linux 仍然是很好的选择。

Linux类Tcping端口连接检测工具

1. nc命令简介

NetCat,在网络工具中有“瑞士军刀”美誉,其有Windows和Linux的版本。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具,可通过TCP或UDP协议传输读写数据。同时,它还是一个网络应用Debug分析器,因为它可以根据需要创建各种不同类型的网络连接。

netcat简介

以CentOS7.5最小安装版为例,默认情况下系统并没有集成nc工具集,需要手动安装它:

  1. [root@zcwyou ~]# yum install -y nmap-ncat

2. 测试192.168.1.1的TCP80端口是否可以正常连接

  1. [root@zcwyou ~]# nc -v -w 1 192.168.1.1 -z 80
    • Ncat: Version 7.50
    • Ncat: Connected to 192.168.1.1:80.
    • Connected表示连接成功。

linux使用netcat命令检测TCP80端口是否可以正常连接

试试连接81端口

  1. [root@zcwyou ~]# nc -v -w 1 192.168.1.1 -z 81
  • Ncat: Version 7.50
  • Ncat: Connection refused.
  • Connection refused.连接拒绝,表示对方没有打开81端口或者中间防火墙不允许81端口。

3. 使用nc传输文件

大部分时间中,我们都在试图通过网络或者其他工具传输文件。有很多种方法,比如FTP,SCP,SMB等等,但是当你只是需要临时或者一次传输文件,真的值得浪费时间来安装配置一个软件到你的机器上嘛。假设,你想要传一个文件zcwyou.txt 从A到B。A或者B都可以作为服务器或者客户端,以下,让A作为服务器,B为客户端。

Server端配置

  1. [root@zcwyou ~]# nc -l 1567 < zcwyou.txt

Client

  1. [root@zcwyou ~]# nc -n 172.31.100.7 1567 > zcwyou.txt

原理:Server端把zcwyou.txt输入到nc,由nc发送,Client端通过nc接收消息,把它保存到zcwyou.txt。

4. 克隆硬盘或分区

server2上进行类似的监听动作,即把接收的数据重定向给dd:

  1. [root@zcwyou ~]# nc -l -p 1234 | dd of=/dev/sda

server1上把dd后的数据重定向给nc,即发送数据

  1. [root@zcwyou ~]# dd if=/dev/sda | nc 192.168.200.27 1234

注意:克隆硬盘或分区的操作,不应在已经mount的的系统上进行。

5. 指定源端口

假设你的防火墙过滤除25端口外其它所有端口,你需要使用-p选项指定源端口。

服务器端打开监听:

  1. [root@zcwyou ~]# nc -l 1567

客户端发送数据,目标端口1567,源端口25

  1. [root@zcwyou ~]# nc 172.31.100.7 1567 -p 25

使用1024以内的端口需要root权限。

该命令将在客户端开启25端口用于通讯,否则将使用随机端口。

6. 指定源地址

使用-s选项指定源ip地址。

服务器端打开监听,把zcwyou.txt重定向给nc。

  1. [root@zcwyou ~]# nc -u -l 1567 < zcwyou.txt

客户端

  1. [root@zcwyou ~]# nc -u 192.168.100.1 1567 -s 192.168.88.20 > file.txt

当服务器有多个IP时,指定使用192.168.88.20作为源IP。

7. 目录传输

发送一个文件很简单,但是如果我们想要发送多个文件,或者整个目录,一样很简单,只需要使用压缩工具tar,压缩后发送压缩包。

如果你想要通过网络传输一个目录从A到B。

Server端,打包abc目录,并重定向到nc

  1. [root@zcwyou ~]# tar -cvf – abc | nc -l 1567

Client端,通过nc接收数据并由tar解包

  1. [root@zcwyou ~]# nc -n 172.31.100.7 1567 | tar -xvf –

如果想要节省带宽传输压缩包,我们可以使用bzip2或者其他工具压缩。

Server端通过bzip2压缩目录abc并重定向到nc,监听端口1567

  1. [root@zcwyou ~]# tar -cvf – abc | bzip2 -z | nc -l 1567

Client端把接收到的数据通过交给bzip2和tar处理

  1. [root@zcwyou ~]# nc -n 172.16.26.88 1567 | bzip2 -d |tar -xvf –

8. 加密你通过网络发送的数据

如果你担心你在网络上发送数据的安全,你可以在发送你的数据之前用如mcrypt的工具加密。

服务端,使用mcrypt工具加密数据。

  1. [root@zcwyou ~]# nc localhost 1567 | mcrypt –flush –bare -F -q -d -m ecb > zcwyou.txt

客户端,使用mcrypt工具解密数据。

  1. mcrypt -flush -bare -F -q -m ecb < zcwyou.txt | nc -l 1567

以上两个命令会提示需要密码,确保两端使用相同的密码。

这里我们是使用mcrypt用来加密,使用其它任意加密工具都可以。

9. 传输流视频

虽然不是生成流视频的最好方法,但如果服务器上没有特定的工具,使用netcat,我们仍然有希望做成这件事。

服务端读取一个视频文件重定向输出到netcat客户端

  1. [root@zcwyou ~]# cat video.avi | nc -l 1567

客户端通过nc读取内容交给mplayer播放器

  1. [root@zcwyou ~]# nc 172.31.100.7 1567 | mplayer -vo x11 -cache 3000 –

10. 使用UDP协议

默认情况下,nc创建连接时只会连接TCP端口。 不过我们可以使用-u选项来连接到 UDP 端口

  1. [root@zcwyou ~]# ncat -l -u 8888

udp 8888端口已经打开,然后用netstat验证一下端口是否打开。

  1. [root@zcwyou ~]# netstat -tunlp | grep 1234

udp 0 0 0.0.0.0:1234 0.0.0.0:* 17341/nc

udp6 0 0 :::1234 :::* 17341/nc

测试某服务器的UDP端口,比如检查本地是否可以使用阿里DNS服务器223.5.5.5

  1. [root@zcwyou ~]# nc -v -u 223.5.5.5 53

Ncat: Version 7.50

Ncat: Connected to 223.5.5.5:53.

显示Connected即表明成功连接到远程DNS端口,DNS工作正常。

linux使用netcat测试服务器的UDP端口

11. 其它用途

使用-t选项模拟Telnet客户端:

HTTP客户端用于下载文件

连接到邮件服务器,使用SMTP协议检查邮件

使用ffmpeg截取屏幕并通过流式传输分享,等等。其它更多用途。

简单来说,只要你了解协议就可以使用netcat作为网络通讯媒介,实现各种客户端。

Windows server 2008R2远程桌面3389端口修改方法技巧

Windows server 2008R2远程桌面3389端口修改方法技巧

windows server的服务器远程桌面默认端口号是3389,在工作中经常使用远程桌面连接服务器,但是这也是常常被黑客利用的端口号,但是如何修改掉默认端口,预防被黑客利用呢?

可以如下操作配置:
很多人在使用windows操作系统的时候,由于修改端口的方法错误,导致自己不能远程操作服务器,给自己带来了麻烦,在这里,我给大家简单的演示一下正确修改远程端口的方法。

服务器ip:192.168.0.103

客户机ip:192.168.0.105

———————————————————————————————————

ctrl+r(快捷键)-输入regedit,进入注册表编辑,按下面的路径进入修改端口的地方

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp

找到下面的 “PortNumber“,用十进制方式显示,默认为3389,改为任意可用端口。演示:(7788)

请注意:

在这里修改过了以后,若还没有修改成功,注册表文件的另外一个位置也必须做相应的修改,路径如下 :

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp

找到下面的 “PortNumber“,用十进制方式显示,并做出相应的修改。

到这里,你已经成功修改完注册表,重新启动计算机,你就可以通过新的远程端口号连接了。

windows server 2008 R2 系统安全配置

window 安全配置规则

一、开启防火墙

二、允许远程网络进行远程桌面连接

如果使用默认的远程端口的话,按照下图,允许远程桌面通过防火墙就行了;

如果你的远程端口号不是默认的,则需要按照(四)中新建入站规则

三、修改远程端口号

运行中输入regedit(打开注册表编辑器)

  1. 在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp目录下,修改PortNumber数值,这边将其端口修改为33899(十进制)
  2. 在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Tenninal Server\WinStations\RDP-Tcp目录下,修改PortNumber数值,将其端口修改为33899(十进制)

重启服务器生效,使用IP + 端口,远程访问

四、只允许固定源IP访问远程端口

  1. 进入控制面板
  2. 找到Windows 防火墙
  3. 左边高级设置
  4. 点击入站规则
  5. 右上角新建规则
  6. 打开新建入站规则向导界面,规则类型:选择自定义,点击下一步,程序选择默认,点击下一步
  7. 协议和端口:协议类型选择TCP,本地端口选择特定端口下方输入11650远程端口选择所有端口,点击下一步
  8. 作用域:在 此规则应用于哪些远程ip地址 选择下列ip地址,点击添加输入您的指定ip,点击下一步,操作和配置文件选择默认,点击下一步
  9. 名称:命名为11650,描述写上特定IP访问指定端口至此设置完成

五、更改管理员密码

  1. 进入开始面板,点击管理工具
  2. 双击打开计算机管理
  3. 依次打开系统工具->本地用户和组->用户,找到administrator管理员用户
  4. 右键administrator管理员用户,选择 设置密码,弹出的提示框,点击
  5. 进入设置密码提示框,输入您想要设置的密码,点击确定即可。 注意:系统会强制密码复杂性,密码最好由大小写字母+数字组成
  6. 设置成功之后会提示成功,下次登录时就可以用新的密码登陆了

六、密码错误几次后锁定该用户

  1. 依次打开管理工具->本地安全策略->账户策略->账户锁定策略
  2. 双击账户锁定阈值,这里,我们设置5次失败后,锁定账户30分钟

七、禁用Guest帐号

默认情况下,新安装的windows操作系统,都是禁用该帐号的。为了安全起见,可以按照以下步骤检查系统是否禁用了该帐号

  1. 进入开始面板,点击管理工具
  2. 双击打开计算机管理
  3. 依次打开系统工具->本地用户和组->用户 ,找到Guest帐号

    如果帐号名称左下角有个向下的箭头,说明已经禁用了

    如果帐号名称左下角没有箭头,

  4. 右键Guest管理员用户,选择 属性,选中下图中的位置

  5. 设置拒绝远程访问

八、删除不必要的用户

  1. 进入开始面板,点击管理工具
  2. 双击打开计算机管理
  3. 依次打开系统工具->本地用户和组->用户
  4. 左键单机,选中不必要的用户,点击红叉进行删除操作

九、创建新用户作为管理员进行远程登录,加入Administrator用户组,禁止Administrator远程登录服务器

考虑到有些服务需要作为administrator用户运行,所以不建议对administrator用户进行改名,我们选择新建用户并加入管理员组

  1. 进入开始面板,点击管理工具
  2. 双击打开计算机管理
  3. 依次打开系统工具->本地用户和组->用户
  4. 创建新用户,用户名xiaomi,密码自己设置

  5. 把新用户xiaomi加入管理员组

    Administrators属性对话框中,选择确定

  6. 禁止Administrator远程登录服务器

    控制面板->管理工具->本地安全策略->本地策略->用户权限分配->
    双击拒绝通过远程桌面服务登录

    这样设置之后,administrator用户依然可以弹出远程桌面连接,并让输入密码,但是无法进入远程桌面

十、更改文件共享的默认权限

将共享文件的权限从“Everyone”更改为”授权用户”,”Everyone”意味着任何有权进入网络的用户都能够访问这些共享文件。

十一、安全密码

安全密码的定义是:安全期内无法破解出来的密码就是安全密码,也就是说,就算获取到了密码文档,必须花费42天或者更长的时间才能破解出来(Windows安全策略默认42天更改一次密码)。

十二、屏幕保护 / 屏幕锁定 密码

防止内部人员破坏服务器的一道屏障。在管理员离开时,自动加载。

十三、安装防病毒软件

Windows操作系统没有附带杀毒软件,一个好的杀毒软件不仅能够杀除一些病毒程序,还可以查杀大量的木马和黑客工具。设置了杀毒软件,黑客使用那些著名的木马程序就毫无用武之地了。同时一定要注意经常升级病毒库 !

这里我们用安全狗这个第三方安全软件,安装之后,会提示让体检,检查结果如下:

我们来看下帐号风险里有什么需要修复的,提示xiaomi这个帐号没必要启用,但是,我们认为xiaomi这个必须是要启用的,所以这项选择忽略

其它风险项可以查看一下,必要修复就修复,像系统漏洞这些,强烈建议修复,虽然系统会很卡

前面我们设置了只允许固定的源IP地址访问远程桌面端口号

这里我们通过安全狗,再增加设置,只允许固定的主机名可以访问远程桌面端口号,截图如下:

十四、定时备份服务器上的重要文件到本地或其它服务器

备份到本服务器是没有多大意义的,所以建议备份到别的机器

备份的方式,建议选择对目标文件或目录进行压缩后拷贝出来

十五、系统防火墙和安全狗的防火墙关系

安全狗的防火墙是在系统防火墙之上的

也就是说外界想要访问你服务器上某个端口,先经过安全狗的防火墙,再经过系统防火墙

实验过程:

在服务器上开启80端口的web服务后

  1. 安全狗的防火墙设置允许通过,系统防火墙设置不允许通过,结果:不允许通过
  2. 安全狗的防火墙设置允许通过,系统防火墙设置允许通过,结果:允许通过
  3. 安全狗的防火墙设置不允许通过,系统防火墙设置允许通过,结果:不允许通过
  4. 安全狗的防火墙设置不允许通过,系统防火墙设置不允许通过,结果:不允许通过

所以,当服务器上某个端口外网无法访问时,需要排查这2个防火墙,是不是很烦。建议用系统自带的防火墙,安全狗的防火墙保持默认就行

十六、堡垒机

堡垒机作为服务器的最后一道屏障,其安全方面需要做到以上十五点,更需要开启审计功能。

十七、特别提醒

我们在第点和第十三点分别提到了限制源IP访问远程桌面端口和限制源主机名访问远程桌面端口

所以:

  1. 如果你的办公网的出网IP是变动的公网IP
  2. 如果你需要用不同的终端主机访问服务器的远程桌面端口

这两种情况,根据实际情况选择使用系统自带的策略或是选择安全狗的策略,但是个人建议使用系统自带的策略安全狗的策略保持默认即可。

CentOS 与 Ubuntu ,谁才是Web服务器最佳之选?

       在这个CentOS与Ubuntu的比较中,我将旨在概述两个Linux发行版的主要功能,这将帮助您为您的VPS选择正确的操作系统。为您的服务器选择操作系统可能是一个非常令人困惑的任务,因为有大量可用选项;特别是如果你想使用Linux发行版。有很多选择,但没有一个像Ubuntu或CentOS一样出名。

无论您是专业人士还是初学者,通常都可以选择两种选择。可以肯定地说,没有直截了当的决定。在本文中,我们打算比较CentOS与Ubuntu,以便在设置服务器时找出哪一个最适合。

在我们开始阐述两个匹配良好的对手之间的差异之前,让我们首先看一下简短的概述。

CentOS

CentOS是一个开源的Linux发行版。许多人将其称为红帽企业Linux(RHEL)的副本,它被认为是企业IT世界中使用最广泛的。CentOS是社区支持的企业级操作系统,于2004年发布。

与RHEL非常相似,这使您可以在一个占主导地位且最好的Linux发行版之一中进行开发。有人可能会说这已经让CentOS领先于Ubuntu。

它具有高度可定制性,安全性和稳定性,这也是值得欣赏的。与RHEL的密切联系使CentOS能够拥有相当多的企业级安全更新,从而使其成为每个用户的安全选择。

Ubuntu

基于Debian架构,自2004年首次发布以来,Ubuntu一直是个人和专业用户的热门人选。它是开源的,并且经常更新以删除任何已识别的错误。它拥有丰富的软件包组和功能,能够满足任何项目的要求。

Ubuntu附带了大量的应用程序。Ubuntu软件中心拥有超过40,000个应用程序!此外,操作系统具有高度可定制性,并具有一流的安全功能。

CentOS与Ubuntu的主要差异

现在,让我们来看看Ubuntu和CentOS之间的区别:

两个Linux发行版之间的最大区别是Ubuntu基于Debian架构,而CentOS则来自Red Hat Enterprise Linux。

在Ubuntu中,您可以使用apt-get 包管理器下载DEB包。同时,在CentOS中,您必须使用yum 命令从中央存储库下载和安装RPM软件包。

与Ubuntu相比,CentOS被认为是更稳定的发行版。主要是因为包更新频率较低。这也可能证明是CentOS的缺点。如果您需要某个应用程序或软件的最新版本,则必须手动安装它们。

不过这并不意味着Ubuntu不稳定或不安全;与同类产品相比,它的稳定性稍差。

从教程上、在线社区和书籍方面,Ubuntu当然占据上风。寻找Ubuntu问题的解决方案比CentOS容易得多,因为它的社区规模相对较小,文档较少。

Ubuntu服务器对容器和云部署提供了大量支持,这使得它在这个领域优于CentOS。

如果您是初学者,在您的服务器上运行CentOS可能会有点困难,因为基于RHEL的桌面发行版没有被广泛使用。另一方面,Ubuntu桌面非常有名,如果你以前使用它,那么熟悉Ubuntu VPS服务器不会花费很长时间。

如果您想使用控制面板提供Web托管服务,那么您应该选择CentOS,因为它提供了您想要的兼容性。像cPanel这样的虚拟主机控制面板一直专注于CentOS和其他RHEL衍生产品。另一方面,Ubuntu不支持cPanel,但有很多替代方案,例如Webmin / Virtualmin或VestaCP。

前面提到的是两个最好的Linux发行版之间的主要区别,选择一个作为每个用户的终极是不安全的。选择正确的操作系统需要仔细评估两者的优缺点,并分析用户的要求和愿望。话虽如此,这是我们的建议:

如果你是初学者:Ubuntu是不错的,因为它有一个更大的社区,更大的免费教程和更频繁的更新,以帮助你保持最新。此外,如果您以前使用过Ubuntu桌面,那么在使用Ubuntu VPS服务器时,您将找不到任何真正的学习曲线。CentOS也是一个可行的选择,但如果您是新手,它可能会在一开始就存在一些学习障碍。

如果您是企业主:如果您经营一家企业,CentOS是两者之间的理想选择,因为它(可以说)比Ubuntu更安全,更稳定,因为它的更新频率较低。Ubuntu也有它的优点,但是由于新的错误更新,你可能需要恢复到旧版本。此外,CentOS还支持cPanel,这是Ubuntu所缺乏的。

CentOS vs Ubuntu – 比较表

最后的话

总结CentOS与Ubuntu的比较,两者都是着名的,并且是最好的Linux发行版之一,它们有各自的优缺点。如果您考虑您的要求并准备做出某些权衡,那么选择一个是一件容易的事。本文的目的是全面概述这两个Linux发行版之间的差异,以简化决策过程。