解决遇到Linux网络配置,从熟悉网络配置文件入手

如果接触过Linux,网络配置是一个比较棘手的问题。
但是Linux是文件为基础来构建的系统,包括我们windows中设备,Linux也视为文件。所以只要我们明白文件的作用。就能对Linux更加的熟悉,网络配置也是。所以为了熟悉和解决遇到Linux网络配置,首先从网络配置文件入手。
这里面整理和汇集较多资料,从多角度,多篇文章,希望能耐心看完。
一.简要概述
DNS配置文件
[root@localhost etc]# cat /etc/resolv.conf 
nameserver 210.36.16.33
nameserver 202.103.224.68
search localdomain
IP配置文件
[root@localhost etc]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:04:23:C4:9D:0C
IPADDR=192.168.2.86
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet
网关
[root@localhost etc]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain                     //命令行显示的名字,如[root@localhost ~]#
GATEWAY=192.168.2.254                              //也可以放在ifcfg-eth0 
主机名
[root@localhost patches]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain   localhost


二详细介绍
在 linux 系统中, TCP/IP 网络是通过若干个文本文件进行配置的,需要编辑这些文件来完成联网工作。系统中重要的有关网络配置文件为:

◆ /etc/sysconfig/network
◆ /etc/HOSTNAME
◆ /etc/hosts
◆ /etc/services
◆ /etc/host.conf
◆ /etc/nsswitch.conf
◆ /etc/resolv.conf
◆ /etc/rc.d/init.d/network

接下来我们将对这些文件逐一讲述,这些文件都可以在系统运行时进行修改,不用启动或者停止任何守护程序,更改会立刻生效 ( 除了 /etc/sysconfig/network) 。另外,这些文件都支持由 "#" 开头的注释,每一个文件都有在 UNIX 手册页中的第 5 部分中有一项,可以用 man 命令来获取它们,如 man 5 hosts, man 5 services 。

◆ /etc/sysconfig/network   网络设置
  该文件用来指定服务器上的网络配置信息,包含了控制和网络有关的文件和守护程序的行为的参数。下面是一个例子文件:

NETWORKING=yes
HOSTNAME=machine1
GATEWAY=210.34.6.2
FORWARD_IPV4=yes
GATEWAYDEV=

其中, NETWORK=yes/no 表示网络是否被配置;
HOSTNAME=hostname hostname 表示服务器的主机名;
GATEWAY=gw-ip gw-ip 表示网络网关的 IP 地址;
FORWARD_IPV4=yes/no 是否开启 IP 转发功能;
GAREWAYDEV=gw-dev gw-dw 表示网关的设备名,如: eth0 等;
为了和老的一些软件相兼容, "/etc/HOSTNAME" 文件应该用和 HOSTNAME=hostname 相同的主机名。

◆ /etc/HOSTNAME   主机名

  该文件包含了系统的主机名称,包括完全的域名,如:

192.168.0.1 machine1.domain machine1

  这个文件是在启动时从文件 /etc/sysconfig/network 中的 HOSTNAME 行中得到的 ,用于在启动时设置系统的主机名。

◆ /etc/hosts   IP 地址和主机名的映射

   /etc/hosts 中包含了 IP 地址和主机名之间的映射,还包括主机名的别名, IP 地址的设计使计算机容易识别,但对于人却很难记住它们,为了解决这个问题,创建了 /etc/hosts 这个文件。下面是一个例子文件:

127.0.0.1 machine1 localhost.localdomain localhost
192.168.1.100 machine7
192.168.1.101 otherpc otheralias

  在这个例子中,本机名是 machine1 , otherpc 还有别名 otheralias ,它可以指向 otheralias 。。一旦配置完机器的网络配置文件,应该重新启动网络以使修改生效,使用下面的命令来重新启动网络:

/etc/rc.d/init.d/network restart

   /etc/hosts 文件通常含有主机名、 localhost 和系统管理员经常使用的系统别名,有时候 telnet 到 linux 机器要等待很长时间,可以通过在 "/etc/hosts" 加入客户的机器的 IP 地址和主机名的匹配项,就可以减少登录等待时间。在没有域名服务器情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的 IP 地址,否则,其他的主机名通常使用 DNS 来解决, DNS 客户部分的配置在文件 /etc/resolv.conf 中。

◆ /etc/services  服务名和端口号之间的映射

   /etc/services 中包含了服务名和端口号之间的映射,不少的系统程序要使用这个文件,下面是 RedHat 安装时缺省的 /etc/services 中的前几行:

tcpmux 1/tcp # TCP port service multiplexer
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users

最左边一列是主机服务名,中间一列是端口号,” / “ 后面是端口类型,可以是 TCP 也可以是 UDP 。任何后面的列都是前面服务的别名。在这个文件中也存在着别名,它们出现在端口号后面,在上述例子中 sink 和 null都是 discard 服务的别名。

◆ /etc/host.conf 配置名字解析器

  有两个文件声明系统到哪里寻找名字信息来配置 UNIX 名字解析器的库。文件 /etc/host.conf 由版本 5 的 libc库所使用,而 /etc/nsswitch.conf 由版本 6 使用 (glibc ) 。问题在于一些程序使用其中一个,而一些使用另一个,所以将两个文件都配置正确是必要的。

   /etc/host.conf 文件指定如何解析主机名, linux 通过解析器库来获得主机名对应的 IP 地址。下面是 RedHat安装后缺省的 "/etc/host.conf" 内容:

order hosts,bind
multi on

※ "order " 指定主机名查询顺序,其参数为用逗号隔开的查找方法,支持的查找方法为 bind 、 hosts 和 nis ,分别代表 DNS 、 /etc/hosts 和 NIS ,这里规定先查询 "/etc/hosts" 文件然后再使用 DNS 来解析域名。
※ "trim" 表明当通过 DNS 进行地址到主机名的转换时,域名将从主机名中被裁剪掉, trim 可以被多个域包含多次,对 /etc/hosts 和 NIS 查询方法不起作用,注意在 /etc/hosts 和 NIS 表中主机名是被适当地 ( 有或没有全域名 )列出的。
※ "multi" 指定是否 "/etc/hosts" 文件中指定的主机可以有多个地址,值为 on 表示允许,拥有多个 IP 地址的主机一般称为具有多个网络界面。
※ "nospoof " 指是否允许对该服务器进行 IP 地址欺骗,值为 on 表示不允许, IP 欺骗是一种攻击系统安全的手段,通过把 IP 地址伪装成别的计算机,来取得其它计算机的信任。
※ "alert" 当 nospoof 指令为 on 时, alert 控制欺骗的企图是否用 syslog 工具进行记录,值为 on 表示使用,缺省值为 off 。
※ "rccorder" 如果被设置为 on ,所有的查询将被重新排序,所以在同一子网中的主机将首选被返回,缺省值为off 。

◆ /etc/nsswitch.conf 配置名字解析器

   /etc/nsswitch.conf 文件是由 S u n 公司开发并用于管理系统中多个配置文件查找的顺序,它比/etc/host.conf 文件提供了更多的功能。 /etc/nsswitch.conf 中的每一行或者是注释 ( 以 # 号开头 ) 或者是一个关键字后跟冒号和一系列要试用的有顺序的方法。每一个关键字是在 /etc/ 目录可以被 /etc/nsswitch.conf 控制的/etc 文件的名字。下面是可以被包含的关键字:

※ aliases 邮件别名;
※ passwd 系统用户;
※ group 用户组;
※ shadow 隐蔽口令;
※ hosts 主机名和 I P 地址;
※ networks 网络名和号;
※ protocols 网络协议;
※ services 端口号和服务名称;
※ ethers 以太网号;
※ rpc 远程进程调用的名称和号
※ netgroup 网内组

  下面也是可以包含的关键字:

※ files 除了 netgroup ,对其他关键字都有效。在相应的 /etc 文件中寻找记录
※ db 除了 netgroup ,对其他关键字都有效。在相应的 /var/db 数据库中寻找记录。对长文件很有效,如passwd 文件已经 超过 500 项。要从标准 /etc 文件中产生这些文件,应改变目录到 /var/db 并运行 run 命令
※ compat 兼容性模式,对 passwd 、 group 和 shadow 文件有效。在本模式中,将先在对应的 /etc 文件中查找。如果想进行 NIS 查找,需要第一个值 ( 用户名或组名 ) 为加号 ( + ) ,后面跟对应数量的冒号 ( : ) ( /etc/passwd 为 6 个, /etc/group 为 3 个,   /etc/shadow 为 8 个 ) 。如在 /etc/passwd 文件中,下面一行应被包含在文件尾: + : * : : : : :
※ dns 只对 hosts 有意义。像在 /etc/resolvconf 配置的,在 DNS 中进行查找
※ nis 对所有的关键字都有意义。如 NIS 是可以用的,在 NIS 服务器中查找
※ [ STATUS = action ] 控制名字服务的行为。 STATUS 是 SUCCESS( 操作被成功执行 ) 、 NOTFOUND ( 记录没找到 ) 、 UNAVAIL ( 所选择的服务不可用 ) 和 TRYAGAIN ( 服务暂时不可用,请重试 ) 中的一个。 action 是return ( 终止查找并返回当前状态 ) 或 continue ( 继续这一行的其他项 ) 中的一个。如 hosts: dns nis [NOTFOUND=return] files 将会首先在 DNS 中,然后在 NIS 中查找主机名。只有当前两项都不可用时才使用文件/etc/hosts

◆ /etc/resolv.conf 配置 DNS 客户

  文件 /etc/resolv.conf 配置 DNS 客户,它包含了主机的域名搜索顺序和 DNS 服务器的地址,每一行应包含一个关键字和一个或多个的由空格隔开的参数。下面是一个例子文件:

search mydom.edu.cn
nameserver 210.34.0.14
nameserver 210.34.0.2

  合法的参数及其意义如下:

※ nameserver 表明 DNS 服务器的 IP 地址。可以有很多行的 nameserver ,每一个带一个 I P 地址。在查询时就按 nameserver 在本文件中的顺序进行,且只有当第一个 nameserver 没有反应时才查询下面的 nameserver.
※ domain 声明主机的域名。很多程序用到它,如邮件系统;当为没有域名的主机进行 DNS 查询时,也要用到。如果没有域名,主机名将被使用,删除所有在第一个点 ( . ) 前面的内容。
※ search 它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由 search 声明的域中分别查找。 domain 和 search 不能共存;如果同时存在,后面出现的将会被使用。
※ sortlist 允许将得到域名结果进行特定的排序。它的参数为网络 / 掩码对,允许任意的排列顺序。 Red Hat 中没有提供缺省的 / e t c / r e s o l v. c o n f 文件,它的内容是根据在安装时给出的选项动态创建的。

◆ /etc/init.d/network 主机地址、子网掩码和网关

  不像很多其他的 UNIX 和 linux 操作系统, Red Hat 当前并不能自动地通过 /etc/hostname 和 /etc/hosts 文件来配置网络。为了改变主机缺省的 IP 地址,必须直接编辑 /etc/init.d/network 脚本使其反映正确的网络配置。这个文件包括了声明 IP 地址、掩码、网络、广播地址和缺省路由器的变量。下面是这个文件中相应的部分:

IPADDR=192.168.1.100
NETMASK=255.255.255.0
BROADCAST=192.168.1.255
GATEWAY=192.168.1.1
linux网络配置文件【redhat和ubuntu的】

一、redhat系统的网络配置文件
      要建立一个Linux服务器就首先要了解Linux环境下和网络服务相关的配置文件的含义及如何进行安全的配置。在Linux系统中,TCP/IP网络是 通过若干个文本文件进行配置的,也许你需要编辑这些文件来完成联网工作,下面介绍几个基本的TCP/IP网络配置文件。
1./etc/sysconfig/network-scripts/ifcfg-文件
在RedHat中,系统网络设备的配置文件保存在/etc/sysconfig/network-scripts目录下,ifcfg-eth0包含第一块 网卡的配置信息,ifcfg-eth1包含第二块网卡的配置信息。在启动时,系统通过读取这个配置文件决定某个网卡是否启动和如何配置。
下面是/etc/sysconfig/network-scripts/ifcfg-eth0文件的示例:
DEVICE=eth0
IPADDR=192.168.0.2
NETMASK=255.255.255.0
BROADCAST=192.168.0.255
ONBOOT=yes
BOOTPROTO=none
GATEWAY=192.168.0.1
若希望手工修改网络地址或增加新的网络连接,可以通过修改对应的文件ifcfg-或创建新的文件来实现。
DEVICE=    表示物理设备的名字
IPADDR=    表示赋给该网卡的IP地址
NETMASK=   表示子网掩码
BROADCAST=  表示广播地址
ONBOOT=yes/no   启动时是否激活该卡
BOOTPROTO=none none:无须启动协议
bootp:使用bootp协议
   dhcp:使用dhcp协议
GATEWAY= 表示默认网关
MACADDR= 表示指定一个MAC地址
USERCTL=yes/no     是否允许非root用户控制该设备
2./etc/resolv.conf文件
文件/etc/resolv.conf配置DNS客户端,它包含了DNS服务器地址和域名搜索配置,每一行应包含一个关键字和一个或多个的由空格隔开的参数。下面是一个例子文件:
search wuxp.com
nameserver 192.168.0.1
nameserver 192.168.0.2
search wuxp.com:表示当提供了一个不包括完全域名的主机名时,在该主机名后添加wuxp.com的后缀; nameserver:表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的。因此,应该首先给出最可靠的服 务器。目前,至多支持三个名字服务器。
3./etc/sysconfig/network文件
该文件用来指定服务器上的网络配置信息,下面是一个示例:
NETWORK=yes
RORWARD_IPV4=yes
HOSTNAME=server.wuxp.com
GAREWAY=192.168.0.1
GATEWAYDEV=eth0
NETWORK=yes/no     网络是否被配置
FORWARD_IPV4=yes/no     是否开启IP转发功能
HOSTNAME= 表示服务器的主机名
GAREWAY=     表示网络网关的IP地址
GAREWAYDEV=   表示网关的设备名,如:eth0
4./etc/hosts文件
当机器启动时,在可以查询DNS以前,机器需要查询一些主机名到IP地址的匹配。这些匹配信息存放在/etc/hosts文件中。在没有域名服务器情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP地址。
下面是一个/etc/hosts文件的示例:
127.0.0.1 Localhost server.wuxp.com
192.168.0.3 station1.wuxp.com
最左边一列是主机IP信息,中间一列是主机名。任何后面的列都是该主机的别名。
网络配置例子:
你可以进入/etc/sysconfig/network-scripts。找到ifcfg-eth0.编辑它如下:
DEVICE = eth0
ONBOOT = yes
BOOTPROTO = static
IPADDR= 10.9.100.221(你需要的固定ip)
NETMASK=255.0.0.0
GATEWAY=10.255.255.254
如果需要动态分配IP,那么
DEVICE = eth0
ONBOOT = yes
USERCTL = yes
BOOTPROTO = dhcp
完了之后:/etc/rc.d/init.d/network restart
二、ubuntu系统的网络配置文件
Ubuntu 的网络配置文件主要有以下几个
IP地址配置文件: /etc/network/interfaces
打开后里面可设置DHCP或手动设置静态ip。前面auto eth0,让网卡开机自动挂载.
1. 以DHCP方式配置网卡
编辑文件/etc/network/interfaces:
sudo vi /etc/network/interfaces
并用下面的行来替换有关eth0的行:
# The primary network interface - use DHCP to find our address
auto eth0
iface eth0 inet dhcp
用下面的命令使网络设置生效:
sudo /etc/init.d/networking restart
也可以在命令行下直接输入下面的命令来获取地址
sudo dhclient eth0
2. 为网卡配置静态IP地址
编辑文件/etc/network/interfaces:
sudo vi /etc/network/interfaces
并用下面的行来替换有关eth0的行:# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.3.90
gateway 192.168.3.1
netmask 255.255.255.0
将上面的ip地址等信息换成你自己就可以了.用下面的命令使网络设置生效:
sudo /etc/init.d/networking restart
3. 设定第二个IP地址(虚拟IP地址)
编辑文件/etc/network/interfaces:
sudo vi /etc/network/interfaces
在该文件中添加如下的行:
auto eth0:1
iface eth0:1 inet static
address 192.168.1.60
netmask 255.255.255.0
network x.x.x.x
broadcast x.x.x.x
gateway x.x.x.x
根据你的情况填上所有诸如address,netmask,network,broadcast和gateways等信息.
用下面的命令使网络设置生效:
sudo /etc/init.d/networking restart
主机名称配置文件(/bin/hostname)
使用下面的命令来查看当前主机的主机名称:
sudo /bin/hostname
使用下面的命令来设置当前主机的主机名称:
sudo /bin/hostname newname
系统启动时,它会从/etc/hostname来读取主机的名称.
DNS配置文件
首先,你可以在/etc/hosts中加入一些主机名称和这些主机名称对应的IP地址,这是简单使用本机的静态查询.
要访问DNS 服务器来进行查询,需要设置/etc/resolv.conf文件.
sudo vi /etc/resolv.conf
nameserver 202.96.128.68
nameserver 61.144.56.101
nameserver 192.168.8.220
/重新设置网络,以启用新设置
sudo /etc/init.d/networking restart
ok
如果你喜欢用其他的记事本编辑器例如gedit等那就把其中命令中的vi换成gedit就可以了。


Linux网络服务配置文件详解

/etc/conf.module
/etc/HOSTNAME
/etc/sysconfig/network-scripts/ifcfg-ethN
/etc/resolv.conf
/etc/host.conf
/etc/sysconfig/network
/etc/hosts 
/etc/inetd.conf
/etc/hosts.allow
/etc/services
/etc/securetty 
/etc/rc.d/rc.local


  要建立一个安全Linux服务器就首先要了解Linux环境下和网络服务相关的配置文件的含义及如何进行安全的配置。在Linux系统中,TCP/IP网络是通过若干个文本文件进行配置的,也许你需要编辑这些文件来完成联网工作,但是这些配置文件大都可以通过配置命令linuxconf(其中网络部分的配置可以通过netconf命令来实现)命令来实现。下面介绍基本的 TCP/IP网络配置文件。

* /etc/conf.modules 文件 
  该配置文件定义了各种需要在启动时加载的模块的参数信息。这里主要着重讨论关于网卡的配置。在使用Linux做网关的情况下,Linux服务器至少需要配置两块网卡。为了减少启动时可能出现的问题,Linux内核不会自动检测多个网卡。对于没有将网卡的驱动编译到内核而是作为模块动态载入的系统若需要安装多块网卡,应该在“conf.modules”文件中进行相应的配置。

  若设备驱动被编译为模块(内核的模块):对于PCI设备,模块将自动检测到所有已经安装到系统上的设备;对于ISA卡,则需要向模块提供IO地址,以使模块知道在何处寻找该卡,这些信息在“/etc/conf.modules”中提供。

  例如,我们有两块ISA总线的3c509卡,一个IO地址是0x300,另一个是0x320。编辑“conf.modules”文件如下:  
  alias eth0 3c509 
  alias eth1 3c509 
  options 3c509 io=0x300,0x320

  这是说明3c509的驱动程序应当分别以eth0或eth1的名称被加载(alias eth0,eth1),并且它们应该以参数io=0x300,0x320被装载,来通知驱动程序到哪里去寻找网卡,其中0x是不可缺少的。

  对于PCI卡,仅仅需要alias命令来使ethN和适当的驱动模块名关联,PCI卡的IO地址将会被自动的检测到。对于PCI卡,编辑“conf.modules”文件如下:

  alias eth0 3c905 
   alias eth1 3c905

  若驱动已经被编译进了内核:系统启动时的PCI检测程序将会自动找到所有相关的网卡。ISA卡一般也能够被自动检测到,但是在某些情况下,ISA卡仍然需要做下面的配置工作:

  在“/etc/lilo.conf”中增加配置信息,其方法是通过LILO程序将启动参数信息传递给内核。对于ISA卡,编辑“lilo.conf”文件,增加如下内容:

  append=" ether="0,0,eth0 ether="0,0,eth1"

  注:先不要在“lilo.conf”中加入启动参数,测试一下你的ISA卡,若失败再使用启动参数。

  如果用传递启动参数的方法,eth0和eth1将按照启动时被发现的顺序来设置。

* /etc/HOSTNAME 文件 
  该文件包含了系统的主机名称,包括完全的域名,如:deep.openarch.com。

*/etc/sysconfig/network-scripts/ifcfg-ethN 文件 
  在RedHat中,系统网络设备的配置文件保存在“/etc/sysconfig/network-scripts”目录下,ifcfg-eth0包含第一块网卡的配置信息,ifcfg-eth1包含第二块网卡的配置信息。

  下面是“/etc/sysconfig/network-scripts/ifcfg-eth0”文件的示例:

  DEVICE=eth0

  IPADDR=208.164.186.1

  NETMASK=255.255.255.0

  NETWORK=208.164.186.0

  BROADCAST=208.164.186.255

  ONBOOT=yes

  BOOTPROTO=none

  USERCTL=no

  若希望手工修改网络地址或在新的接口上增加新的网络界面,可以通过修改对应的文件(ifcfg-ethN)或创建新的文件来实现。

  DEVICE=name     name表示物理设备的名字

  IPADDR=addr     addr表示赋给该卡的IP地址

  NETMASK=mask    mask表示网络掩码

  NETWORK=addr    addr表示网络地址

  BROADCAST=addr   addr表示广播地址

  ONBOOT=yes/no   启动时是否激活该卡

  none:无须启动协议

  bootp:使用bootp协议

  dhcp:使用dhcp协议

  USERCTL=yes/no       是否允许非root用户控制该设备 
*/etc/resolv.conf 文件 
  该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件,示例如下:

  search openarch.com

  nameserver 208.164.186.1

  nameserver 208.164.186.2

  “search domainname.com”表示当提供了一个不包括完全域名的主机名时,在该主机名后添加domainname.com的后缀;“nameserver”表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的。

*/etc/host.conf 文件 
  该文件指定如何解析主机名。Linux通过解析器库来获得主机名对应的IP地址。下面是一个“/etc/host.conf”的示例:

  order bind,hosts

  multi on

  ospoof on

  “order bind,hosts”指定主机名查询顺序,这里规定先使用DNS来解析域名,然后再查询“/etc/hosts”文件(也可以相反)。

  “multi on”指定是否“/etc/hosts”文件中指定的主机可以有多个地址,拥有多个IP地址的主机一般称为多穴主机。

  “nospoof on”指不允许对该服务器进行IP地址欺骗。IP欺骗是一种攻击系统安全的手段,通过把IP地址伪装成别的计算机,来取得其它计算机的信任。
*/etc/sysconfig/network 文件 
  该文件用来指定服务器上的网络配置信息,下面是一个示例:

  NETWORK=yes

  RORWARD_IPV4=yes

  HOSTNAME=deep.openarch.com

  GAREWAY=0.0.0.0

  GATEWAYDEV=

  NETWORK=yes/no     网络是否被配置;

  FORWARD_IPV4=yes/no    是否开启IP转发功能

  HOSTNAME=hostname hostname表示服务器的主机名

  GAREWAY=gw-ip     gw-ip表示网络网关的IP地址

  GAREWAYDEV=gw-dev   gw-dw表示网关的设备名,如:etho等

  注意:为了和老的软件相兼容,“/etc/HOSTNAME”文件应该用和HOSTNAME=hostname相同的主机名。

*/etc/hosts 文件 
  当机器启动时,在可以查询DNS以前,机器需要查询一些主机名到IP地址的匹配。这些匹配信息存放在/etc/hosts文件中。在没有域名服务器情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP地址。

  下面是一个“/etc/hosts”文件的示例:

  IP Address     Hostname           Alias

  127.0.0.1      Localhost          Gate.openarch.com

  208.164.186.1    gate.openarch.com Gate

  …………       …………           ………

  最左边一列是主机IP信息,中间一列是主机名。任何后面的列都是该主机的别名。一旦配置完机器的网络配置文件,应该重新启动网络以使修改生效。使用下面的命令来重新启动网络:/etc/rc.d/init.d/network restart 
* /etc/inetd.conf 文件 
  众所周知,作为服务器来说,服务端口开放越多,系统安全稳定性越难以保证。所以提供特定服务的服务器应该尽可能开放提供服务必不可少的端口,而将与服务器服务无关的服务关闭,比如:一台作为www和ftp服务器的机器,应该只开放80 和25端口,而将其他无关的服务如:finger auth等服务关掉,以减少系统漏洞。

  而inetd,也叫作“超级服务器”,就是监视一些网络请求的守护进程,其根据网络请求来调用相应的服务进程来处理连接请求。inetd.conf则是inetd的配置文件。inetd.conf文件告诉inetd监听哪些网络端口,为每个端口启动哪个服务。在任何的网络环境中使用Linux系统,第一件要做的事就是了解一下服务器到底要提供哪些服务。不需要的那些服务应该被禁止掉,最好卸载掉,这样黑客就少了一些攻击系统的机会。查看“/etc/inetd.conf”文件,了解一下inetd提供哪些服务。用加上注释的方法(在一行的开头加上#号),禁止任何不需要的服务,再给inetd进程发一个SIGHUP信号。

  第一步:把文件的许可权限改成600。

  [root@deep]# chmod 600 /etc/inetd.conf

  第二步:确信文件的所有者是root。

  [root@deep]# stat /etc/inetd.conf

  第三步:编辑“inetd.conf”文件(vi /etc/inetd.conf),禁止所有不需要的服务,如:ftp、 telnet、 shell、 login、 exec、talk、ntalk、 imap、 pop-2、pop-3、finger、auth,等等。如果你觉得某些服务有用,可以不禁止这些服务。但是,把这些服务禁止掉,系统受攻击的可能性就会小很多。改变后的“inetd.conf”文件的内容如下面所示:inetd.conf

  第四步:

  为了保证“inetd.conf”文件的安全,可以用chattr命令把它设成不可改变。把文件设成不可改变的只要用下面的命令:

  [root@deep]# chattr +i /etc/inetd.conf

  这样可以避免“inetd.conf”文件的任何改变(意外或是别的原因)。一个有“i”属性的文件是不能被改动的:不能删除或重命名,不能创建这个文件的链接,不能往这个文件里写数据。只有系统管理员才能设置和清除这个属性。如果要改变inetd.conf文件,你必须先清除这个不允许改变的标志:

  [root@deep]# chattr -i /etc/inetd.conf

  但是对于诸如sendmail,named,www等服务,由于它们不象finger,telnet等服务,在请求到来时由inet守护进程启动相应的进程提供服务,而是在系统启动时,作为守护进程运行的。而对于redhat linux,提供了一个linuxconfig命令,可以通过它在图形界面下交互式地设置是否在启动时运行相关服务。也可以通过命令来设置是否启动时启动某个服务,如:[root@deep]# chkconfig –level 35 named off

具体命令可以参考man chkconfig的说明。
* /etc/hosts.allow 文件 
  但是对于telnet、ftp等服务,如果将其一同关闭,那么对于管理员需要远程管理时,将非常不方便。Linux提供另外一种更为灵活和有效的方法来实现对服务请求用户的限制,从而可以在保证安全性的基础上,使可信任用户使用各种服务。Linux提供了一个叫TCP wrapper的程序。在大多数发布版本中该程序往往是缺省地被安装。利用TCP wrapper你可以限制访问前面提到的某些服务。而且TCP wrapper的记录文件记录了所有的企图访问你的系统的行为。通过last命令查看该程序的log,管理员可以获知谁曾经或者企图连接你的系统。

  在/etc目录下,有两个文件:hosts.deny hosts.allow 通过配置这两个文件,你可以指定哪些机器可以使用这些服务,哪些不可以使用这些服务。

  当服务请求到达服务器时,TCP wrapper就按照下列顺序查询这两个文件,直到遇到一个匹配为止:

  1.当在/etc/hosts.allow里面有一项与请求服务的主机地址项匹配,那么就允许该主机获取该服务

  2.否则,如果在/etc/hosts.deny里面有一项与请求服务的主机地址项匹配,就禁止该主机使用该项服务。

  3.如果相应的配置文件不存在,访问控制软件就认为是一个空文件,所以可以通过删除或者移走配置文件实现对清除所有设置。在文件中,空白行或者以#开头的行被忽略,你可以通过在行前加 # 实现注释功能。

  配置这两个文件是通过一种简单的访问控制语言来实现的,访问控制语句的基本格式为:

  程序名列表:主机名/IP地址列表。

  程序名列表指定一个或者多个提供相应服务的程序的名字,名字之间用逗号或者空格分割,可以在inetd.conf文件里查看提供相应服务的程序名:如上面的文件示例中,telent所在行的最后一项就是所需的程序名:in.telnetd。

  主机名/IP地址列表指定允许或者禁止使用该服务的一个或者多个主机的标识,主机名之间用逗号或空格分隔。程序名和主机地址都可以使用通配符,实现方便的指定多项服务和多个主机。

  Linux提供了下面灵活的方式指定进程或者主机列表:

  1.一个以"."起始的域名串,如 .amms.ac.cn 那么www.amms.ac.cn就和这一项匹配

  2.以"."结尾的IP串如 202.37.152. 那么IP地址包括202.37.152. 的主机都与这一项匹配。

  3.格式为n.n.n.n/m.m.m.m表示网络/掩码,如果请求服务的主机的IP地址与掩码的位与的结果等于n.n.n.n 那么该主机与该项匹配。

  4.ALL表示匹配所有可能性

  5.EXPECT表示除去后面所定义的主机。如:list_1 EXCEPT list_2 表示list_1主机列表中除去List_2所列出的主机

  6.LOCAL表示匹配所有主机名中不包含"."的主机

  上面的几种方式只是Linux提供的方式中的几种,但是对于我们的一般应用来说是足够了。我们通过举几个例子来说明这个问题:

  例一:我们只希望允许同一个局域网的机器使用服务器的ftp功能,而禁止广域网上面的ftp服务请求,本地局域网由 202.39.154.、202.39.153.和202.39.152. 三个网段组成。

  在hosts.deny文件中,我们定义禁止所有机器请求所有服务:

  ALL:ALL

  在hosts.allow文件中,我们定义只允许局域网访问ftp功能:

  in.ftpd -l –a: 202.39.154 202.39.153. 202.39.152.

  这样,当非局域网的机器请求ftp服务时,就会被拒绝。而局域网的机器可以使用ftp服务。此外,应该定期检查/var/log目录下的纪录文件,发现对系统安全有威胁的登录事件。last命令可以有效的查看系统登录事件,发现问题所在。

  最后tcpdchk是检查TCP_WAPPERS配置的程序。它检查TCP_WAPPERS的配置,并报告它可以发现的问题或潜在的问题。在所有的配置都完成了之后,请运行tcpdchk程序:

  [root@deep]# tcpdchk

* /etc/services 文件 
  端口号和标准服务之间的对应关系在RFC 1700 “Assigned Numbers”中有详细的定义。“/etc/services”文件使得服务器和客户端的程序能够把服务的名字转成端口号,这张表在每一台主机上都存在,其文件名是“/etc/services”。只有“root”用户才有权限修改这个文件,而且在通常情况下这个文件是没有必要修改的,因为这个文件中已经包含了常用的服务所对应的端口号。为了提高安全性,我们可以给这个文件加上保护以避免没有经过授权的删除和改变。为了保护这个文件可以用下面的命令:

  [root@deep]# chattr +i /etc/services 
* /etc/securetty 文件 
  “/etc/securetty”文件允许你规定“root”用户可以从那个TTY设备登录。登录程序(通常是“/bin/login”)需要读取“/etc/securetty”文件。它的格式是:列出来的tty设备都是允许登录的,注释掉或是在这个文件中不存在的都是不允许root登录的。

  注释掉(在这一行的开头加上#号)所有你想不让root登录的tty设备。

  编辑securetty文件(vi /etc/securetty)象下面一样,注释掉一些行:

  tty1

  #tty2

  #tty3

  #tty4

  #tty5

  #tty6

  #tty7

  #tty8

* 使Control-Alt-Delete关机键无效 
  把“/etc/inittab”文件中的一行注释掉可以禁止用Control-Alt-Delete关闭计算机。如果服务器不是放在一个安全的地方,这非常重要。

  编辑inittab文件(vi /etc/inittab)把这一行:

  ca::ctrlaltdel:/sbin/shutdown -t3 -r now

  改为:

  #ca::ctrlaltdel:/sbin/shutdown -t3 -r now

  用下面的命令使改变生效:

  [root@deep]# /sbin/init q

* 改变“/etc/rc.d/init.d/”目录下的脚本文件的访问许可 
  /etc/rc.d/init.d/下的脚本主要包含了启动服务的脚本程序。一般用户没有什么必要知道脚本文件的内容。所以应该改变这些脚本文件的权限。

  [root@deep]# chmod -R 700 /etc/rc.d/init.d/*

  这样只有root可以读、写和执行这个目录下的脚本。 
* /etc/rc.d/rc.local 文件 
  在默认情况下,当登录装有Linux系统的计算机时,系统会告诉你Linux发行版的名字、版本号、内核版本和服务器名称。这泄露了太多的系统信息。最好只显示一个“Login:”的提示信息。

  第一步:

  编辑“/ect/rc.d/rc.local”文件,在下面这些行的前面加上“#”:

  --

  # This will overwrite /etc/issue at every boot. So, make any changes you

  # want to make to /etc/issue here or you will lose them when you reboot.

  #echo "" > /etc/issue

  #echo "$R" >> /etc/issue

  #echo "Kernel $(uname -r) on $a $(uname -m)" >> /etc/issue

  #

  #cp -f /etc/issue /etc/issue.net

  #echo >> /etc/issue

  --

  第二步:

  删除“/etc”目录下的“issue.net”和“issue”文件:

  [root@deep]# rm -f /etc/issue

  [root@deep]# rm -f /etc/issue.net

  注意:“/etc/issue.net”文件是用户从网络登录计算机时(例如:telnet 、SSH),看到的登录提示。同样在“”目录下还有一个“issue”文件,是用户从本地登录时看到的提示。这 两个文件都是文本文件,可以根据需要改变。但是,如果想删掉这两个文件,必须向上面介绍的那样把 “/etc/rc.d/rc.local”脚本中的那些行注释掉,否则每次重新启动的时候,系统又会重新创建这两个文件。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值