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
协议 - 描述
TCP
的RFC793
RFC1122
RFC2001
,描述IP
的RFC791
RFC1122
RFC1112
TCP/IPv6
网络刚刚起步时,没有人预料到它会发展地如此迅猛。以至于预留的 IP
不能满足每一台设备有一个唯一地标识。因此 IPv6
应运而生。
现今,并不是所有的应用、服务都支持 IPv6
。可以在如下查看关于 IPv6
的信息:
- man 7 ipv6:
Linux
的IPv6
应用 - RFC1883 描述了
IPv6
协议
PPP, SLIP, PLIP, PPPOE
Linux
内核内建支持 PPP: Point-to-Point-Protocol
点对点协议,SLIP: Serial Line IP
串行线路 IP,PLIP: Parallel Line IP
并行线 IP,以及 PPPP Over EThernet
。PPP
协议最长用在个人用户访问网络服务供应商提供的服务,在访问用户较多时,通常会被 PPPOE
代替。
大部分 Linux
提供变羽使用的工具来设置网络连接。
ISDN
Linux
内核具有内建的 ISDN
,isdn4linux (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
包,实现服务器配置,启动 smbd
即 samba
服务器,启动 nmbd
即 netbios
名服务器。Samba
可以以图形化方式配置,也可以通过 web
界面或命令行以及文本配置文件配置。守护进程会将 Linux
设备作为 Windows
下的网上邻居出现。
更多的相关信息查看:
- man smb.conf
- Samba 项目文档
网络配置与网络信息
配置网络接口
所有大型、对用户友好的 Linux
发布版本都具有不同的图形化工具,来方便用户配置电脑的本地网络,比如配置它来连接到互联网服务供应商或实现无线访问。这些工具可以从菜单启动或通过命令行启动:
Ubuntu
配置选择System->Administration->Networking
完成配置RedHat
由redhat-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
这个文件定义了访问不同域名服务的顺序。对于互联网访问,重要的 dns
在 hosts
行:
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
命令都会展示更加细节的配置信息以及关于接口的系列的静态信息,还有重要的接口是否 UP
或 RUNNING
的信息。
PCMCIA
略
网络接口名
在 Linux
设备上,设备名 lo
或 local 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
在你的家用电脑上,你可能会有一个小规模网络,比如你可能运行不同设备之间的文件传输服务,如 FTP
或 Samba
服务。这种情况下,启动你只需要偶尔使用的服务,并让它们持续运行十分浪费资源。因此,你会发现需要的守护进程依赖于中心程序,监听所有它需要响应的服务端口。
这个超级服务器,互联网服务守护进程,在系统初始化时启动。有两个常用的应用: inetd
以及 xinetd
。Linux
系统上通常会运行其中的一个:
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.conf
,xinetd
的 /etc/xinetd.d
。这个管理文件共享服务以及打印服务,SSH
,FTP
,telnet
,Samba
等服务。
只要接收到连接请求,中央服务器会启动响应服务器的实例。这样,下面的例子中,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
服务器还有 vsftpd
、Ncftpd
以及 Proftpd
等。
FTP 客户端
大部分 Linux
发布版本包括 ftp
,ftp
程序提供额外的特性,比如更便于理解的用户界面、文件名补全、追加恢复功能、数千、会话管理等:
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
可以使用 PAM
,Pluggable Authentication Module
,可插入认证模组,一个灵活的 UNIX
认证方法。PAM
的优点:
- 一个通用的认证策略,可以被用在很多应用上
PAM
可以被应用在不同的应用上,而不需要重新编译应用来特别支持PAM
- 为管理员和应用开发者提供了高度灵活性与身份认证的控制
- 应用开发者不需要不需要开发它们的程序来使用特定的认证策略,这样可以专注于程序细节的开发
目录 /etc/pam.d
包含 PAM
配置文件 (曾经是 /etc/pam.conf
),每一个应用或服务都具有它自己的文件。文件中的每一行具有四个元素:
- 模块:
- 认证: 提供真正的认证 (也许是询问并检查密码) 并设置证书,比如组成员
- 账户: 检查来确保允许用户访问 (账户没有过期,用户现在尚允许登录等)
- 密码: 用来设置密码
- 会话: 在用户认证之后使用。这个模块执行允许访问的额外任务 (比如,挂载用户的家目录)
模块栈的顺势十分重要。
- 控制标识: 告知
PAM
在成果/失败之后需要执行的动作。值可以是required
,requisite
,sufficient
或optional
- 模块路径: 卡插入模组使用的路径,通常是
/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
目录中找到。这个配置文件是自我解释的,并默认使能了大部分的特性。如果需要帮助,可以查看 sshd
的 man
帮助页面。
当用户的身份被服务器认证,服务器会执行给定的命令,给到用户一个 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
- 不要让
NFS
或NIS
允许互联网访问
经常更新
经常更新,防止 bug
。
防火墙与访问策略
什么是防火墙
防火墙一般是管理员需要掌握的事情,但是你也需要有一些防火墙的知识。
包过滤
第一道防线是 packet filter
,会查看 IP
包,基于内容做出决定。一般是 Netfilter
包,提供 iptable
命令。它还提供状态检查功能,除了查看包内部,还会检查一个包是属于一个新的连接还是一个现存连接。
TCP wrappers
它与包过滤提供相同的结果,但是工作过程不同。wrapper
会接受连接请求,之后测试配置文件并确定是接受还是拒绝一个请求。它在应用层控制连接,而不是在网络层。
代理
访问独立应用
日志文件
入侵检测
更多注意事项
- 不要允许
root
登录,需要额外的权限时使用sudo
- 定期修改密码
- 总是使用
SSH
或SSL
,避免使用Telnet
,FTP
以及E-mail
客户端发送秘密的内容 - 检查一个软件的源,从可信任的站点获取软件源
- 在使用一个临时网络连接时,在不用之后马上断开连接
- 在个人设置的端口运行私有服务
- 尽可能深入了解你的系统
如何确认自己是否被黑
是否有如下的情况:
- 莫名打开的端口,奇怪的进程
- 系统小组件 (常用命令) 行为怪异
- 登录错误
- 不能解释的带宽使用
- 损坏或丢失的日志文件,系统日志守护进程行为怪异
- 界面模式奇怪
- 配置文件莫名修改
shell
历史文件中的奇怪条目- 不能确定的临时文件
从被入侵中恢复
- 从网络上断开连接
- 尽量找到安全如何被突破的
- 备份重要的非系统数据,确保数据完整性
- 重新安装系统
- 使用新的密码
- 恢复备份数据
- 及时升级
- 关闭不需要的服务,检查防火墙以及其他访问策略
- 重新连接