Linux 介绍_9 网络

网络

我的博客
将以如下几个部分进行讨论:

  • 支持的网络协议
  • 网络配置文件
  • 配置、探测网络的命令
  • 守护进程与客户程序开启不同的网络应用
  • 文件共享与打印
  • 命令与应用的远程执行
  • 基础网络交互连接
  • 远程应用的安全执行
  • 防火墙与入侵诊断

网络概览

OSI 模型

一个协议是用作沟通的的一组规则。

为了从网络上获取数据,比如为了从一台设备上发送一封邮件到另一台设备上,需要经过不同的硬件、软件的通力合作。

所有的这些不同的协议被分成七层,即我们熟知的 OSI: Open System Interconnection Reference Model 模型。为了便于理解,这个模式可以简化为四层模型,如下描述:

各层 协议
应用层 HTTP, DNS, SMTP, POP, ...
传输层 TCP, UDP
网络层 IP, IPv6
网络访问层 PPP, PPPoE, 以太网

每一层只能使用下一层的功能;每一层只能向上一层导入数据。换言之,模型的各层只能与相邻层沟通。以发送邮件为例,你在应用层输入,在你的电脑上,它向下层的传输层与网络层传输。你的电脑将数据放到网络访问层。在这一层,数据在互联网上传输。在目标设备上,接收方设备将会向网络层逐层向上传递到应用层。

一些常用的网络协议

Linux 支持很多不同的网络协议,下面会列出。

TCP/IP

TCP: Transport Control Protocol 传输控制协议与 IP: Internet Protocol 互联网协议,是互联网上两个主要的通讯方式。很多应用,比如你的浏览器与邮件程序,就是基于这个协议组件上构建的。

IP 用来确保数据包能够从一台设备发送到另一台设备上。TCP 确保数据包是以流的形式组织的,这样不同的应用的数据包不会混淆,同时确保应用的数据包是以正确的顺序发送、接收的。

下面的两个手册,可以帮助了解 TCP/IP 的详细内容:

  • man 7 ip: 描述在 Linux 上应用的 IPv4 协议
  • man 7 tcp: 应用的 TCP 协议
  • 描述 TCPRFC793 RFC1122 RFC2001,描述 IPRFC791 RFC1122 RFC1112

TCP/IPv6

网络刚刚起步时,没有人预料到它会发展地如此迅猛。以至于预留的 IP 不能满足每一台设备有一个唯一地标识。因此 IPv6 应运而生。

现今,并不是所有的应用、服务都支持 IPv6。可以在如下查看关于 IPv6 的信息:

  • man 7 ipv6: LinuxIPv6 应用
  • RFC1883 描述了 IPv6 协议

PPP, SLIP, PLIP, PPPOE

Linux 内核内建支持 PPP: Point-to-Point-Protocol 点对点协议,SLIP: Serial Line IP 串行线路 IP,PLIP: Parallel Line IP 并行线 IP,以及 PPPP Over EThernetPPP 协议最长用在个人用户访问网络服务供应商提供的服务,在访问用户较多时,通常会被 PPPOE 代替。

大部分 Linux 提供变羽使用的工具来设置网络连接。

ISDN

Linux 内核具有内建的 ISDNisdn4linux (isdn for linux) 控制 ISDN PC 卡,可以使 Hayes 指令集(AT 命令) 模拟调制解调器,提供从简单使用终端程序到完全连接到互联网的可能。

SMB/NMB

为了兼容微软环境,包括对 NMB 以及 SMB 的支持,Samba 组件可以安装到任何类 UNIX 系统上。SMB: Server Message Block 协议可以用来共享硬盘与打印机。

Samba 组件的基础功能是,与 Windows 设备共享 Linux 盘,访问 Linux 设备提供的 SMB,与 Windows 共享打印机。

大部分 Linux 发布版本提供 samba 包,实现服务器配置,启动 smbdsamba 服务器,启动 nmbdnetbios 名服务器。Samba 可以以图形化方式配置,也可以通过 web 界面或命令行以及文本配置文件配置。守护进程会将 Linux 设备作为 Windows 下的网上邻居出现。

更多的相关信息查看:


网络配置与网络信息

配置网络接口

所有大型、对用户友好的 Linux 发布版本都具有不同的图形化工具,来方便用户配置电脑的本地网络,比如配置它来连接到互联网服务供应商或实现无线访问。这些工具可以从菜单启动或通过命令行启动:

  • Ubuntu 配置选择 System->Administration->Networking 完成配置
  • RedHatredhat-config-network 配置,它具有图形与文本双界面
  • Gnome 系统上: gnome->network->preferences
  • KDE 系统: knetworkconf

你的系统文档提供了各种工具的能力与用法建议。

  • 连接到局域网: 主机名,域名与 IP 地址
  • 连接到互联网: 提供互联网服务供应商给你的用户名与密码等。你的 ISP 通常自动为你分配 IP地址以及其他需要的配置内容

网络配置文件

图形化界面会帮助配置一系列的网络配置文件。这些配置文件在文件系统中的位置以及文件名则根据使用的系统版本不同而不同。但是,一些网络配置文件在所有的 UNIX 系统中是通用的。

/etc/hosts

这个文件总是包含 localhost IP 地址,127.0.0.1,这个地址用作进程间通讯。不要移除这行内容!有时候会包含附加主机的地址,可以不适用外部的域名服务器比如 DNS 来实现连接。

一个样例 /etc/hosts 文件如下:

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain   localhost
192.168.52.10   tux.mylan.com           tux
192.168.52.11   winxp.mylan.com         winxp

通过 man hosts 获取更多信息。

/etc/resolv.conf

这个文件配置 DNS 服务器:

# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients directly to
# all known uplink DNS servers. This file lists all configured search domains.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 8.8.8.8
nameserver 114.114.114.114
nameserver 8.8.4.4

阅读 resolv.conf 文件的 man 页面,获取更多信息。

/etc/nsswitch.conf

这个文件定义了访问不同域名服务的顺序。对于互联网访问,重要的 dnshosts 行:

arv@arv:~$ grep hosts /etc/nsswitch.conf
hosts:          files mdns4_minimal [NOTFOUND=return] dns mymachines

更多信息查看 man nsswitch.conf

网络配置命令

ip

各发布版本特定的图形化工具是 ip (在老版本中是 ifconfig 以及 `route) 的前端,用作展示、配置内核的网络配置。

ip 命令用来为接口分配 IP 地址、设置路由以及展示 TCP/IP 配置展示。

如下命令展示 IP 地址以及路由信息:

benny@home benny> ip addr show
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
    inet6 ::1/128 scope host 
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100
    link/ether 00:50:bf:7e:54:9a brd ff:ff:ff:ff:ff:ff
    inet 192.168.42.15/24 brd 192.168.42.255 scope global eth0
    inet6 fe80::250:bfff:fe7e:549a/10 scope link 
benny@home benny> ip route show
192.168.42.0/24 dev eth0  scope link 
127.0.0.0/8 dev lo  scope link 
default via 192.168.42.1 dev eth0 

需要注意:

  • 即使只有一个网卡的系统,也至少具有两个网络接口: lo 是本地回环,用来进行内部网络通讯,eth0 是常用的真实网络接口的名称。不要修改本地回环的配置,否则你的设备将会开启故障处理。无线接口名称通常定义为 wlan0,调制解调器接口名称通常定义为 ppp0,当然起名字看开发者心情
  • IP 地址,以 inet 标识,本地回环通常是 127.0.0.1,物理接口则依据实际情况配置
  • 接口硬件地址,这是连接到网络认证的另一部分,标识为 ether。本地回环为全零,物理接口为 6 对十六进制数组成的穿,前 3 对为供应商提供的组合

ifconfig

ip 是比较新颖的配置方法,ifconfig 依然十分流行,直接使用 ifconfig 来展示网络配置信息:

arv@arv:~$ ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 115  bytes 9277 (9.2 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 115  bytes 9277 (9.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp0s20f3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.102  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe10::1134:6688:622:4422  prefixlen 64  scopeid 0x20<link>
        ether 24:12:22:20:20:20  txqueuelen 1000  (Ethernet)
        RX packets 5134  bytes 3530781 (3.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2295  bytes 251146 (251.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • IP 地址以 inet 标识
  • 硬件地址通过 HWaddr 标识

ifconfig 以及 ip 命令都会展示更加细节的配置信息以及关于接口的系列的静态信息,还有重要的接口是否 UPRUNNING 的信息。

PCMCIA

网络接口名

Linux 设备上,设备名 lolocal loop 连接到接口 127.0.0.1 地址。它总是存在,即便设备根本没有网络。

第一个以太网设备 eth0 指向你的本地 LAN IP 地址。常规的客户设备只有一个网卡。路由,将网段组织到一起,它为每一个服务的网段提供一个网络设备。

如果你具有一个调制解调器连接到互联网,你的网络设备可能是 ppp0

当然还有许多其他的名字,比如虚拟私有网络接口 (VPNs)。多个接口可以是同时活跃的,这样 ifconfig 以及 ip 在没有选项时的输出就会十分丰富。相同类型的多个网络接口可以同时激活,在这个情况下,他们是具有顺序编号的,第一个会以 0 开始,第二个会为 1,以此类推。

使用 netstat 主机配置

除了 ip 命令用作网络配置的展示,还有命令 netstat 命令在 UNIX 系统上十分好用。

通过 netstat-nr 选项,可以查看网络的路由信息:

bob:~> netstat -nr
Kernel IP routing table
Destination  Gateway      Genmask       Flags MSS Window irtt Iface
192.168.42.0 0.0.0.0      255.255.255.0 U      40 0         0 eth0
127.0.0.0    0.0.0.0      255.0.0.0     U      40 0         0 lo
0.0.0.0      192.168.42.1 0.0.0.0       UG     40 0         0 eth0

这通常是客户端设备的 IP 网络配置,只有一个网络接口 eth0

当然使用 rote 以及 ip 命令的 route show 也会显示类似信息。

当这台设备尝试联系另一个网段的设备时,会使用 eth0 发送连接请求到路由设备 IP 地址 192.168.42.1

在相同网段的主机,无需路由就能够连接,数据会直接放到网络上。

设备可能会具有很复杂的路由表。

其他主机

host 命令

展示主机或域名的信息,使用 host 命令:

Arvin@XDD:~$ host www.eunet.be
www.eunet.be has address 109.68.162.48
Arvin@XDD:~$ host -t any eunet.be
eunet.be has SOA record ns1.drieghe.net. dns.e-vis.be. 2021101402 3600 3600 1209600 86400
eunet.be name server ns2.drieghe.net.
eunet.be name server ns1.drieghe.net.
eunet.be has address 109.68.162.48
eunet.be mail is handled by 0 axigen.eunet.be.
eunet.be descriptive text "v=spf1 a mx ip4:109.68.162.48 ~all"

使用 dig 命令可以查看相似的信息。还提供了记录在域名服务器中的附加信息。

ping

检测一个主机是否活跃,可以使用 ping 命令,使用 Ctrl+C 命令打断过程:

Arvin@XDD:~$ ping www.bing.com
PING a-0001.a-msedge.net (204.79.197.200) 56(84) bytes of data.
64 比特,来自 a-0001.a-msedge.net (204.79.197.200): icmp_seq=1 ttl=113 时间=33.2 毫秒
64 比特,来自 a-0001.a-msedge.net (204.79.197.200): icmp_seq=2 ttl=113 时间=33.2 毫秒
64 比特,来自 a-0001.a-msedge.net (204.79.197.200): icmp_seq=3 ttl=113 时间=33.4 毫秒
^C
--- a-0001.a-msedge.net ping 统计 ---
已发送 3 个包, 已接收 3 个包, 0% 包丢失, 耗时 2003 毫秒
rtt min/avg/max/mdev = 33.188/33.284/33.419/0.098 ms

traceroute

检查数据包到网络主机的路由,使用 traceroute 命令,在一些设备上,这个命令被 tracepath 命令替代:

 1:  117.49.36.170                                         1.507 毫秒 asymm  1
 2:  140.205.50.241                                        2.968 毫秒
 3:  .                                                     3.431 毫秒
 4:  无应答
 5:  111.24.4.105                                         11.679 毫秒 asymm  5
 6:  111.24.3.90                                           7.849 毫秒 asymm  6
 7:  221.183.89.70                                        11.284 毫秒 asymm  7
 8:  221.183.25.194                                       10.220 毫秒 asymm  8
 9:  221.183.55.45                                        34.842 毫秒 asymm  9

互联网/内部网 应用

Linux 系统是一个网络服务的强大平台。

服务器类

独立服务器

为用户提供服务,可以由两种方式实现。一个守护进程或服务可以运行在独立模式,或者可以依赖于另一个服务。

重度使用或连续使用的网络服务,通常运行于独立模式: 它们具有独立的守护进程,总是持续运行中。它们通常在系统启动时开始运行,并等待它们监听的指定连接点或端口的请求。当请求到来时,会处理这个请求,接下来继续监听等待下一个请求。一个 web 服务器是一个典型的例子: 你需要让它能够全天候访问,如果它很繁忙,它会创建更多的监听实例,来同时服务多个用户。

对于家用电脑的独立网络服务的例子是 named (name 守护进程),即域名缓存服务器,你可以通过 ps 命令查看这一内容:

bob:~> ps auxw | grep named
named   908  0.0  1.0 14876 5108 ?   S  Mar14  0:07 named -u named

(x)inetd

在你的家用电脑上,你可能会有一个小规模网络,比如你可能运行不同设备之间的文件传输服务,如 FTPSamba 服务。这种情况下,启动你只需要偶尔使用的服务,并让它们持续运行十分浪费资源。因此,你会发现需要的守护进程依赖于中心程序,监听所有它需要响应的服务端口。

这个超级服务器,互联网服务守护进程,在系统初始化时启动。有两个常用的应用: inetd 以及 xinetdLinux 系统上通常会运行其中的一个:

bob:~> ps -ef | grep inet
root  926   1 0 Mar14 ?   00:00:00 xinetd-ipv6 -stayalive -reuse \
-pidfile /var/run/xinetd.pid

这个守护进程需要响应的服务,在配置文件中列出,比如 inetd/etc/inetd.confxinetd/etc/xinetd.d。这个管理文件共享服务以及打印服务,SSHFTPtelnetSamba 等服务。

只要接收到连接请求,中央服务器会启动响应服务器的实例。这样,下面的例子中,FTP 守护进程就会被激活:

bob:~> ps auxw | grep ftp
bob     793  0.1  0.2  3960 1076 pts/6    S    16:44   0:00 ncftp localhost
ftp     794  0.7  0.5  5588 2608 ?        SN   16:44   0:00 ftpd: 
localhost.localdomain: anonymous/bob@his.server.com: IDLE

Web

Apache Web 服务器

Apache 是最常见的 web 服务器。大部分 Linux 发行版本都包括 Apache,它最大的优点是它的模块化设计,支持 SSL,稳定且高效。给它合适的硬件并正确配置,可以支持极高的负载。

Linux 系统上,服务器配置通常在 /etc/httpd 目录下,最重要的配置文件是 httpd.conf 文件,它是自我解释的。如果需要帮助,可以访问 Apache官网

Web 浏览器

Linux 支持很多 web 浏览器,无论是免费的还是收费的。

Proxy 服务器

什么是 Proxy 服务器

很多公司或组织希望它们的用户使用代理服务器。尤其是具有很多用户的环境,使用代理服务器,可以实现对 web 页面的快速下载。代理服务器存储 web 页面,当一个用户请求之前已经请求过的 web 页面,代理服务器将会直接将该页面发送给用户,因此用户不需要从互联网上再获取这一数据,这一重新获取过程可能会比较漫长。
当然,通过某些方法,可以让代理总是提供最新版本的页面。

proxy 配置

如果你具有代理服务器名与端口,那么显然需要将这些信息提供给浏览器。一些应用依赖于 http_proxy 以及 ftp_proxy 变量来实现正确的功能。为了便于使用,你可能需要再你的 ~/.bashrc 文件中添加如下的配置:

export http_proxy=http://username:password@proxy_server_name:port_number

比如:

export http_proxy=http://willy:Appelsi3ntj3@proxy:80

如果你不需要给出用户名、密码,那么只需要保留 @ 及其后续的内容。

文件传输协议

FTP 服务器

Linux 系统上,虽然 FTP 服务器可以以独立的服务器形式运行,也会配置 FTP 服务器从 xinetd 上运行,使用 WU-ftpd 服务器。

其他的 FTP 服务器还有 vsftpdNcftpd 以及 Proftpd 等。

FTP 客户端

大部分 Linux 发布版本包括 ftpftp 程序提供额外的特性,比如更便于理解的用户界面、文件名补全、追加恢复功能、数千、会话管理等:

Arvin@XDD:~$ ftp
ftp> help
Commands may be abbreviated.  Commands are:

!               dir             mdelete         qc              site
$               disconnect      mdir            sendport        size
account         exit            mget            put             status
append          form            mkdir           pwd             struct
ascii           get             mls             quit            system
bell            glob            mode            quote           sunique
binary          hash            modtime         recv            tenex
bye             help            mput            reget           tick
case            idle            newer           rstatus         trace
cd              image           nmap            rhelp           type
cdup            ipany           nlist           rename          user
chmod           ipv4            ntrans          reset           umask
close           ipv6            open            restart         verbose
cr              lcd             prompt          rmdir           ?
delete          ls              passive         runique
debug           macdef          proxy           send
ftp>

man 页面有很多的帮助例子。

注意: FTP 并不安全,如果你不完全了解自己的行为,不要进行非匿名操作。否则你的用户名与密码会被别人捕获。如果要进行非匿名登录操作,请在 SSH 中使用 sftp: secure FTP

域名系统

我们在访问某个主机名时,需要通过域名服务系统解析它的 IP 地址。域名服务系统并不知道世界上所有主机的 IP 地址,但是它可以访问其他的 DNS 来获取到它不知道的主机名的 IP

DHCP

DHCP: Dynamic Host Configuration Protocol,可以为新的设备动态分配没被使用的 IP

认证服务

传统

传统上,用户在本地认证,使用存储在系统的 /etc/passwd 以及 /etc/shadow 中的数据。这些文件通常是黑客的首选攻击目标,因此确保它的安全性:

Arvin@XDD:~$ ls -l /etc/passwd /etc/shadow
-rw-r--r-- 1 root root   2680 6月  23  2021 /etc/passwd
-r--r----- 1 root root   2096 8月   4 22:24 /etc/shadow

PAM

Linux 可以使用 PAMPluggable Authentication Module,可插入认证模组,一个灵活的 UNIX 认证方法。PAM 的优点:

  • 一个通用的认证策略,可以被用在很多应用上
  • PAM 可以被应用在不同的应用上,而不需要重新编译应用来特别支持 PAM
  • 为管理员和应用开发者提供了高度灵活性与身份认证的控制
  • 应用开发者不需要不需要开发它们的程序来使用特定的认证策略,这样可以专注于程序细节的开发

目录 /etc/pam.d 包含 PAM 配置文件 (曾经是 /etc/pam.conf),每一个应用或服务都具有它自己的文件。文件中的每一行具有四个元素:

  • 模块:
    • 认证: 提供真正的认证 (也许是询问并检查密码) 并设置证书,比如组成员
    • 账户: 检查来确保允许用户访问 (账户没有过期,用户现在尚允许登录等)
    • 密码: 用来设置密码
    • 会话: 在用户认证之后使用。这个模块执行允许访问的额外任务 (比如,挂载用户的家目录)
      模块栈的顺势十分重要。
  • 控制标识: 告知 PAM 在成果/失败之后需要执行的动作。值可以是 requiredrequisitesufficientoptional
  • 模块路径: 卡插入模组使用的路径,通常是 /lib/security
  • 参数: 模块的信息

LDAP

LDAP: Lightweight Directory Access Protocol,轻量级目录访问协议是一个在网络上进行全局或部分目录服务的客户端-服务器系统。在 Linux 上,应用了 OpenLDAP。它包括 slapd,一个独立的服务器,slurpd,一个独立的 LDAP 复制服务器。

使用 LDAP 的一个优点是,它能够通过你的组织,合并某特定类型的信息。比如,在你组织中的所有的用户列表可以合并到一个 LDAP 目录中。这个目录可以被任何 LDAP 使能的应用请求需要的信息。它也可以被需要目录信息的用户访问。


远程执行应用

介绍

有很多不同的方法在远程设备上执行命令或运行程序,并进行输出,可以是通过文本模式也可以通过图形模式。链接方式可以是加密的也可以是不加密的。

SSH 套件

介绍

大部分 UNIX 以及 Linux 都运行 Secure SHell 来进行加密的通讯。大部分 Linux 系统运行某个版本的 OpenSSH,一个开源的 SSH 协议应用,提供在网上与主机的加密通讯。在标准配置下,X 会自动链接,而且任何的 TCP/IP 端口也会被加密转发。

SSH 客户链接并登录到指定的主机,用户必须向远程设备提供在 sshd_config 文件中的身份认证,它通常可以在 /etc/ssh 目录中找到。这个配置文件是自我解释的,并默认使能了大部分的特性。如果需要帮助,可以查看 sshdman 帮助页面。

当用户的身份被服务器认证,服务器会执行给定的命令,给到用户一个 shell 环境。所有的过程都是加密的。

当命令或 shell 退出时,会话终止,所有的 X11 以及 TCP/IP 链接会被关闭。

在第一次连接到主机时,使用任何在 SSH 连接中包括的程序,你需要建立对主机的认证,并确认你希望连接。

X11 与 TCP 转发

服务器认证

安全远程复制

SSH 组件提供 scp 来实现加密的远程复制。scp 使用 ssh 来进行数据传输,使用与 ssh 相同的认证方法与加密手段。scp 在认证时,将会询问密码:

lenny /var/tmp> scp Schedule.sdc.gz blob:/var/tmp/
lenny@blob's password:
Schedule.sdc.gz  100% |*****************************| 100 KB 00:00
lenny /var/tmp>

如果你想要使用 FTP 样的接口,使用 sftp:

lenny /var/tmp> sftp blob
Connecting to blob...
lenny@blob's password:
sftp> cd /var/tmp
sftp> get Sch*
Fetching /var/tmp/Schedule.sdc.gz to Schedule.sdc.gz
sftp> bye
lenny /var/tmp>

认证密钥

略,本文档源文档比较老旧,后续补充。

VNC

rdesktop 协议

Cygwin


安全

介绍

随着计算机组成网络,所有的滥用都有可能。

  • 你是否希望掌控你的系统
  • 你是否希望无疑涉嫌犯罪
  • 你是否希望你的设备被别人使用
  • 你是否希望承担网络断接的风险
  • 你是否希望在每次被黑之后重新构建你的系统
  • 你是否希望自己的数据丢失

服务

目标是尽量少的运行各种服务。如果开放给外部的端口足够少,可以对整体有很好的把控。如果某些服务必须对本地网络开放,至少要将它与外部断开连接。

如果你发现一个你并不了解的服务,那么你可能并不需要它。而且要牢记的是,一些服务并不是在网络上应用的服务。查看哪些服务正在监听你的 TCP 端口,可以使用 netstat 命令:

[elly@mars ~] netstat -l | grep tcp
tcp     0      0 *:32769                 *:*      LISTEN
tcp     0      0 *:32771                 *:*      LISTEN
tcp     0      0 *:printer               *:*      LISTEN
tcp     0      0 *:kerberos_master       *:*      LISTEN
tcp     0      0 *:sunrpc                *:*      LISTEN
tcp     0      0 *:6001                  *:*      LISTEN
tcp     0      0 *:785                   *:*      LISTEN
tcp     0      0 localhost.localdom:smtp *:*      LISTEN
tcp     0      0 *:ftp                   *:*      LISTEN
tcp     0      0 *:ssh                   *:*      LISTEN
tcp     0      0 ::1:x11-ssh-offset      *:*      LISTEN

需要注意的一些点:

  • X11 应该运行在服务器上
  • 如果没有打印机,那么无需 lp
  • 网络内如果没有 win 系统,不需要 Samba
  • 必须用 FTP 时,才允许有 FTP
  • 不要让 NFSNIS 允许互联网访问

经常更新

经常更新,防止 bug

防火墙与访问策略

什么是防火墙

防火墙一般是管理员需要掌握的事情,但是你也需要有一些防火墙的知识。

包过滤

第一道防线是 packet filter,会查看 IP 包,基于内容做出决定。一般是 Netfilter 包,提供 iptable 命令。它还提供状态检查功能,除了查看包内部,还会检查一个包是属于一个新的连接还是一个现存连接。

TCP wrappers

它与包过滤提供相同的结果,但是工作过程不同。wrapper 会接受连接请求,之后测试配置文件并确定是接受还是拒绝一个请求。它在应用层控制连接,而不是在网络层。

代理

访问独立应用

日志文件

入侵检测

更多注意事项

  • 不要允许 root 登录,需要额外的权限时使用 sudo
  • 定期修改密码
  • 总是使用 SSHSSL,避免使用 TelnetFTP 以及 E-mail 客户端发送秘密的内容
  • 检查一个软件的源,从可信任的站点获取软件源
  • 在使用一个临时网络连接时,在不用之后马上断开连接
  • 在个人设置的端口运行私有服务
  • 尽可能深入了解你的系统

如何确认自己是否被黑

是否有如下的情况:

  • 莫名打开的端口,奇怪的进程
  • 系统小组件 (常用命令) 行为怪异
  • 登录错误
  • 不能解释的带宽使用
  • 损坏或丢失的日志文件,系统日志守护进程行为怪异
  • 界面模式奇怪
  • 配置文件莫名修改
  • shell 历史文件中的奇怪条目
  • 不能确定的临时文件

从被入侵中恢复

  • 从网络上断开连接
  • 尽量找到安全如何被突破的
  • 备份重要的非系统数据,确保数据完整性
  • 重新安装系统
  • 使用新的密码
  • 恢复备份数据
  • 及时升级
  • 关闭不需要的服务,检查防火墙以及其他访问策略
  • 重新连接
posted @ 2022-01-15 21:10  ArvinDu  阅读(172)  评论(0编辑  收藏  举报