• 在Linux中网络性能审计,安全以及排错


    什么服务正在运行以及为什么?

     

    系统管理员需要了解每个系统的第一件事是什么服务正在运行以及为什么。有了那些信息,禁用所有不是严格必需的那些服务并且避免在相同物理机上托管太多服务器是明智的决定。

    例如,如果你的网络不需要FTP服务器,你需要禁用你的FTP服务器(顺便说一下,有通过网络共享文件的更多安全方法)。此外,你应该避免在相同系统上按照web服务程序和数据库服务程序。如果一个组件暴露了,其余也冒着暴露的风险。

    用ss查看套接字连接

    ss用于输出套接字统计数据并且显示类似netstat的信息,虽然她可以显示比其它工具更多TCP和状态信息。此外,它作为netstat的替代。

    我们在这里只强调与网络安全相关的信息。

    示例:显示在我们服务器上开放的所有TCP端口(套接字)

    所有服务运行在它们的默认端口(即是:http在80上,mysql在3306上)由它们各自名称表示。其它端口用它们的数值格式显示。

    1. [blctrl@rockygu ~]$ ss -t -a
    2. [blctrl@rockygu ~]$ ss -t -a
    3. State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
    4. LISTEN 0 128 127.0.0.1:x11-ssh-offset 0.0.0.0:*
    5. LISTEN 0 128 0.0.0.0:sunrpc 0.0.0.0:*
    6. LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
    7. TIME-WAIT 0 0 172.28.133.248:34536 100.100.36.108:https
    8. ESTAB 0 0 172.28.133.248:38194 100.100.30.26:http
    9. ESTAB 0 0 172.28.133.248:ssh 61.87.239.94:55179
    10. ESTAB 0 48 172.28.133.248:ssh 61.87.239.94:55177
    11. LISTEN 0 128 [::]:sunrpc [::]:*
    12. LISTEN 0 128 *:telnet *:*

    第一列显示TCP状态,而第二列和第三列显示当前排队等待接收和发送的数据量。第三和第四列显示每个连接的源和目的套接字。

    示例:用它们的计时器显示所有活动的TCP连接。

    1. [blctrl@rockygu ~]$ ss -t -o
    2. State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
    3. ESTAB 0 0 172.28.133.248:38194 100.100.30.26:http
    4. ESTAB 0 0 172.28.133.248:ssh 61.87.239.94:55179 timer:(keepalive,64min,0)
    5. ESTAB 0 48 172.28.133.248:ssh 61.87.239.94:55177 timer:(on,268ms,0)

    在以上输出中,你看到了2个建立的SSH连接。如果你注意到timer:的第二个字段的值,你将注意到在第一个连接中一个64min的值。那是在下次keepalive探测被发送前时间量。

    由于它是一个被保持存活的连接你可以安全地认为那是一个不活跃连接,因而可以在找到其PID后杀死它。

    而对于第二个连接,由on表明,你可以看到它是当前被使用地。

    示例:通过套接字过滤连接

    假如你想要通过套接字过滤TCP连接:从服务器视角,你需要检查源端口是80的连接。

    1. [root@rockygu blctrl]# ss -tn sport = :80
    2. State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
    3. ESTAB 0 0 [::ffff:172.28.133.248]:80 [::ffff:61.87.239.94]:58815

    防止用NMAP端口扫描

    端口扫描时黑客识别网络上活动主机和开放端口的常见技术。一旦发现弱点,为了获取对系统的访问利用这个弱点。

    一个聪明的系统管理员需要检查其系统如何被外人看到,并且通过经常审计它们确定没有留下机会。那被称为"防御的端口扫描"。

    示例:显示开放端口的信息

    你可以使用以下命令在你系统或者在远程主机中扫描哪些端口是开放的:

    # nmap -A -sS [IP address or hostname]

    以上命令将为OS和版本探测,端口信息和路由追踪(-A)扫描主机。最终,-sS发送一个TCP SYN扫描,防止nmap完成3次TCP握手并且因而一般在目标机上不留日志。

    在继续下一个示例前,请记住端口扫描不是一项非法活动。非法的事情是为恶意目的使用这些结果。

    例如,对一台远程主机运行以上命令的输出结果如下:

    1. [root@localhost blctrl]# nmap -A -sS 192.168.3.3
    2. Starting Nmap 6.40 ( http://nmap.org ) at 2022-07-27 23:24 EDT
    3. Nmap scan report for 192.168.3.3
    4. Host is up (0.00034s latency).
    5. Not shown: 991 closed ports
    6. PORT STATE SERVICE VERSION
    7. 21/tcp open ftp vsftpd 3.0.2
    8. | ftp-anon: Anonymous FTP login allowed (FTP code 230)
    9. |_drwxr-xr-x 2 0 0 6 Jun 09 2021 pub
    10. 22/tcp open ssh OpenSSH 7.4 (protocol 2.0)
    11. | ssh-hostkey: 2048 89:78:57:c5:88:1f:f0:7a:af:0a:88:84:bb:8b:c0:49 (RSA)
    12. |_256 49:c2:49:ad:e9:05:a8:28:f0:3b:75:de:30:dc:c6:b0 (ECDSA)
    13. 80/tcp open http Apache httpd 2.4.6 ((CentOS))
    14. | http-methods: Potentially risky methods: TRACE
    15. |_See http://nmap.org/nsedoc/scripts/http-methods.html
    16. |_http-title: Apache HTTP Server Test Page powered by CentOS
    17. 111/tcp open rpcbind 2-4 (RPC #100000)
    18. | rpcinfo:
    19. | program version port/proto service
    20. | 100000 2,3,4 111/tcp rpcbind
    21. |_ 100000 2,3,4 111/udp rpcbind
    22. 5901/tcp open vnc VNC (protocol 3.8)
    23. | vnc-info:
    24. |_ ERROR: Too many security failures
    25. 5902/tcp open vnc VNC (protocol 3.8)
    26. | vnc-info:
    27. |_ ERROR: Too many security failures
    28. 6001/tcp open X11 (access denied)
    29. 6002/tcp open X11 (access denied)
    30. 9999/tcp open abyss?
    31. MAC Address: 52:54:00:52:8B:A9 (QEMU Virtual NIC)
    32. No exact OS matches for host (If you know what OS is running on it, see http://nmap.org/submit/ ).
    33. TCP/IP fingerprint:
    34. OS:SCAN(V=6.40%E=4%D=7/27%OT=21%CT=1%CU=30894%PV=Y%DS=1%DC=D%G=Y%M=525400%T
    35. OS:M=62E2018A%P=x86_64-redhat-linux-gnu)SEQ(SP=107%GCD=1%ISR=107%TI=Z%TS=A)
    36. OS:SEQ(SP=107%GCD=1%ISR=107%TI=Z%CI=RD%TS=A)OPS(O1=M5B4ST11NW7%O2=M5B4ST11N
    37. OS:W7%O3=M5B4NNT11NW7%O4=M5B4ST11NW7%O5=M5B4ST11NW7%O6=M5B4ST11)WIN(W1=7120
    38. OS:%W2=7120%W3=7120%W4=7120%W5=7120%W6=7120)ECN(R=Y%DF=Y%T=40%W=7210%O=M5B4
    39. OS:NNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R
    40. OS:=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=
    41. OS:AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=
    42. OS:40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID
    43. OS:=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)
    44. Network Distance: 1 hop
    45. Service Info: OS: Unix
    46. TRACEROUTE
    47. HOP RTT ADDRESS
    48. 1 0.34 ms 192.168.3.3
    49. OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
    50. Nmap done: 1 IP address (1 host up) scanned in 26.24 seconds

    这个端口扫描操作提供了可以由其它命令也能获取的所有信息:

    示例:显示在本地或远程系统中有关特定端口的信息。

    # nmap -p [port] [hostname or address]
    1. [root@localhost blctrl]# nmap -p 80 192.168.3.3
    2. Starting Nmap 6.40 ( http://nmap.org ) at 2022-07-27 23:32 EDT
    3. Nmap scan report for 192.168.3.3
    4. Host is up (0.00039s latency).
    5. PORT STATE SERVICE
    6. 80/tcp open http
    7. MAC Address: 52:54:00:52:8B:A9 (QEMU Virtual NIC)
    8. Nmap done: 1 IP address (1 host up) scanned in 0.47 seconds

    示例:显示路由跟踪,并且找出服务版本,OS类型,主机名: 

     

    1. [root@localhost blctrl]# nmap -A 192.168.3.2
    2. Starting Nmap 6.40 ( http://nmap.org ) at 2022-07-27 23:34 EDT
    3. Nmap scan report for 192.168.3.2
    4. Host is up (0.000026s latency).
    5. Not shown: 998 closed ports
    6. PORT STATE SERVICE VERSION
    7. 22/tcp open ssh OpenSSH 7.4 (protocol 2.0)
    8. | ssh-hostkey: 2048 57:3c:be:c8:e5:7c:5a:25:e9:89:63:4b:ec:0b:9a:59 (RSA)
    9. |_256 7d:e7:0a:7b:c0:75:1c:42:0f:fd:01:6f:d7:a5:62:d5 (ECDSA)
    10. 80/tcp open http Apache httpd 2.4.6 ((CentOS))
    11. | http-methods: Potentially risky methods: TRACE
    12. |_See http://nmap.org/nsedoc/scripts/http-methods.html
    13. |_http-title: Apache HTTP Server Test Page powered by CentOS
    14. Device type: general purpose
    15. Running: Linux 3.X
    16. OS CPE: cpe:/o:linux:linux_kernel:3
    17. OS details: Linux 3.7 - 3.9
    18. Network Distance: 0 hops
    19. OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
    20. Nmap done: 1 IP address (1 host up) scanned in 10.65 seconds

    示例:同时扫描若干端口或者主机

    你也可以扫描若干那端口(返回)或者子网,如下:

    注意:以上命令扫描在网络段内所有主机的端口21,22,80 

    1. [root@localhost blctrl]# nmap -p 21,22,80 192.168.3.0/24
    2. Starting Nmap 6.40 ( http://nmap.org ) at 2022-07-27 23:36 EDT
    3. Nmap scan report for 192.168.3.3
    4. Host is up (0.00040s latency).
    5. PORT STATE SERVICE
    6. 21/tcp open ftp
    7. 22/tcp open ssh
    8. 80/tcp open http
    9. MAC Address: 52:54:00:52:8B:A9 (QEMU Virtual NIC)
    10. Nmap scan report for 192.168.3.50
    11. Host is up (0.0034s latency).
    12. PORT STATE SERVICE
    13. 21/tcp filtered ftp
    14. 22/tcp filtered ssh
    15. 80/tcp filtered http
    16. MAC Address: 00:0E:C6:82:57:72 (Asix Electronics)
    17. Nmap scan report for 192.168.3.254
    18. Host is up (-0.067s latency).
    19. PORT STATE SERVICE
    20. 21/tcp filtered ftp
    21. 22/tcp open ssh
    22. 80/tcp filtered http
    23. MAC Address: FC:4D:D4:37:A2:11 (Universal Global Scientific Industrial Co.)
    24. Nmap scan report for 192.168.3.2
    25. Host is up (0.000083s latency).
    26. PORT STATE SERVICE
    27. 21/tcp closed ftp
    28. 22/tcp open ssh
    29. 80/tcp open http
    30. Nmap done: 256 IP addresses (4 hosts up) scanned in 3.37 seconds

    报告在你网络上使用和性能

    虽然有若干可用工具来分析和排错网络性能,其中两个工具非常容易学习并且用户友好。

    要在CentOS上安装它们,我们需要首先启用EPEL仓库。

    1、nmon工具

    nmon是一个系统调节器和基准工具。它能够显示CPU,内存,网络,磁盘,文件系统,NFS,top进程和资源(Linux版本和处理器)。当然,我们主要对网络性能特性感兴趣。

    要按照nmon,在你选择的发行版上运行以下命令:
     

    1. #CentOS
    2. [root@localhost blctrl]# yum install nmon
    3. # Ubuntu
    4. blctrl@blctrl-KVM:~$ sudo apt install nmon

    运行nmon,在命令行终端中输入:nmon

    [root@localhost blctrl]# nmon

    养成习惯实时地查看网络流量确保你地系统能够支持正常负载并且监视非必要地流量或者可疑活动。

    2、vnstat工具

    vnstat是一个基于console地网络流量监视器,它为所选的接口保存每小时网络流量日志。

    1. # CentOS
    2. [root@localhost blctrl]# yum install vnstat
    3. # Ubuntu
    4. blctrl@blctrl-KVM:~$ sudo apt install vnstat

    在按照这个软件包后,你需要启用进行监视的守护程序:

    1. [root@localhost blctrl]# systemctl start vnstat
    2. [root@localhost blctrl]# systemctl status vnstat
    3. ● vnstat.service - vnStat network traffic monitor
    4. Loaded: loaded (/usr/lib/systemd/system/vnstat.service; disabled; vendor preset: disabled)
    5. Active: active (running) since Tue 2022-07-26 08:50:16 CST; 5s ago
    6. Docs: man:vnstatd(1)
    7. man:vnstat(1)
    8. man:vnstat.conf(5)
    9. Main PID: 20438 (vnstatd)
    10. Tasks: 1
    11. CGroup: /system.slice/vnstat.service
    12. └─20438 /usr/sbin/vnstatd -n

    一旦你按照并且使能了vnstat,你可以初始化数据库记录eth0(或其它NIC)的流量:

    [root@localhost blctrl]# vnstat -u -i eth0

    由于我才在机器中安装vnstat,还未收集足够数据来显示使用的统计数据:

    1. [root@localhost blctrl]# vnstat
    2. rx / tx / total / estimated
    3. eth0:
    4. Jul '22 47 KiB / 4 KiB / 51 KiB / 0 KiB
    5. today 47 KiB / 4 KiB / 51 KiB / --
    6. virbr0-nic: Not enough data available yet.
    7. virbr0: Not enough data available yet.

    vnstatd守护进程在后台继续运行并且收集流量数据。直到它采集了足够数据产生输出,请参考vnstat项目来看流量分析看起来像什么。

    3、在网上安全地传输文件

    如果你需要在通过网络传输或接收文件时确保安全,并且尤其如果你需要通过Internet执行这个操作时,你将想要求助用于文件传输地2个安全方法(不要通过普通地FTP做这件事)。

    示例:用scp传输文件(安全复制)

    如果远程主机上地SSH正在监听除默认22外的端口,使用-P标记。-p选项将在传输后保留local_file的权限,这个权限由在远程主机上远程用户的身份确定。你将需要确保/abolute/path/to/remote/directory是这个用户可写的。

    # scp -P XXXX -p local_file remote_user@remote_host:/absolute/path/to/remote/directory

    示例:用scp接收文件(安全复制)

    你页可以用scp从远程主机下载文件:

    # scp remote_user@remote_host:myFile.txt /absolute/path/to/local/directory

    甚至在两台远程主机之间传输文件(在这里,从remote_host1复制文件myFile.txt到remote_host2):

    # scp remote_user1@remote_host1:/absolute/path/to/remote/directory1/myFile.txt remote_user1@remote_host2:/absolute/path/to/remote/directory2/

    如果SSH监听除了默认22外的端口,不要忘记使用-P选项。

    示例:用sftp发送和接收文件

    不同于SCP,SFTP不需要提前知道你想要下载或发送文件的位置。

    这是使用SFTP连接远程主机的基本语法:

    # sftp -oPort=XXXX username@host

    此处XXXX表示在主机上SSH监听的端口,这台主机可以是主机名或她的对应IP地址。如果SSH在其默认端口(22)上监听,你可以忽略-oPort标记。

    一旦丽娜姐成功了,你可以发出以下命令来发送或接收文件:

    1. get -Pr [remote file or directory] # Receive files
    2. put -r [local file or directory] # Send files

    在两种情况中,-r选项用于递归接收或发送文件。在第一种情况中,-P选项也将保留原先文件权限。

    在Linux中查找连接网络的所有活动的IP地址

    nmap是一个用于探索网络,执行安全扫描,网络审计以及查找远程主机上开放端口的强大灵活的开源命令行工具。

    nmap的使用语法:

    $ nmap  [scan type...]  options  {target specification}

    此处参数{target specification}可以被hostnames, IP地址,networks等替代。因而要列出连接了指定网络所有主机的IP地址,首先使用ifconfig命令或ip命令识别网络以及子网掩码:

    1. $ ifconfig
    2. OR
    3. $ ip addr show
    1. [root@localhost blctrl]# ip addr show
    2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    3. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    4. inet 127.0.0.1/8 scope host lo
    5. valid_lft forever preferred_lft forever
    6. inet6 ::1/128 scope host
    7. valid_lft forever preferred_lft forever
    8. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    9. link/ether 52:54:00:ec:ec:28 brd ff:ff:ff:ff:ff:ff
    10. inet 192.168.3.2/24 brd 192.168.3.255 scope global noprefixroute eth0
    11. valid_lft forever preferred_lft forever
    12. inet6 fe80::e5b6:b14:38ae:6d52/64 scope link noprefixroute
    13. valid_lft forever preferred_lft forever

    接着运行以下nmap命令:

    1. [root@localhost blctrl]# nmap -sn 192.168.3.0/24
    2. Starting Nmap 6.40 ( http://nmap.org ) at 2022-07-27 23:48 EDT
    3. Nmap scan report for 192.168.3.3
    4. Host is up (0.00056s latency).
    5. MAC Address: 52:54:00:52:8B:A9 (QEMU Virtual NIC)
    6. Nmap scan report for 192.168.3.50
    7. Host is up (0.0034s latency).
    8. MAC Address: 00:0E:C6:82:57:72 (Asix Electronics)
    9. Nmap scan report for 192.168.3.254
    10. Host is up (-0.100s latency).
    11. MAC Address: FC:4D:D4:37:A2:11 (Universal Global Scientific Industrial Co.)
    12. Nmap scan report for 192.168.3.2
    13. Host is up.
    14. Nmap done: 256 IP addresses (4 hosts up) scanned in 1.93 seconds

    在以上命令中:

    • -sn:是扫描类型,它表示一个ping扫描。默认,nmap执行端口扫描,但这个扫描将禁用端口扫描。
    • -192.168.3.0/24:是目标网络,用你的实际网络替代它。
  • 相关阅读:
    C++ 炼气期之基本结构语法中的底层逻辑
    手把手教你驱动墨水屏
    SSM+老年人活动信息管理系统 毕业设计-附源码121730
    主从模式与AI大模型结合:开启AI新时代
    基于PLC的机械手控制系统设计
    读书笔记:Effective C++ 2.0 版,条款9(避免隐藏标准形式的new)、条款10(new、delete对称定义)
    从哪里下载 Oracle database 11g 软件
    计算机毕业设计(附源码)python学生宿舍管理系统
    (十五) 共享模型之工具【线程池】
    面试:OkHttp相关
  • 原文地址:https://blog.csdn.net/yuyuyuliang00/article/details/125986851