Linux系统中网络配置详解
一.安装和配置网络设备
在安装linux时,如果你有网卡,安装程序将会提示你给出tcp/ip网络的配置参数,如本机的 ip地址,缺省网关的ip地址,DNS的ip地址等等.根据这些配置参数,安装程序将会自动把网卡(linux系统首先要支持)驱动程序编译到内核中去.但是我们一定要了解加载网卡驱动程序的过程,那么在以后改变网卡,使用多个网卡的时候我们就会很容易的操作.网卡的驱动程序是作为模块加载到内核中去的,所有linux支持的网卡驱动程序都是存放在目录/lib/modules/(linux版本号)/net/ ,例如inter的82559系列10/100M自适应的引导网卡的驱动程序是eepro100.o,3COM的3C509 ISA网卡的驱动程序是3C509.o,DLINK的pci 10网卡的驱动程序是via-rhine.o,NE2000兼容性网卡的驱动程序是ne2k-pci.o和ne.o.在了解了这些基本的驱动程序之后,我们就可以通过修改模块配置文件来更换网卡或者增加网卡.
1. 修改/etc/conf.modules 文件
这个配置文件是加载模块的重要参数文件,大家先看一个范例文件
#/etc/conf.modules
alias eth0 eepro100
alias eth1 eepro100
这个文件是一个装有两块inter 82559系列网卡的linux系统中的conf.modules中的内容.alias命令表明以太口(如eth0)所具有的驱动程序的名称,alias eth0 eepro100说明在零号以太网口所要加载的驱动程序是eepro100.o.那么在使用命令 modprobe eth0的时候,系统将自动将eepro100.o加载到内核中.对于pci的网卡来说,由于系统会自动找到网卡的io地址和中断号,所以没有必要在conf.modules中使用选项options来指定网卡的io地址和中断号.但是对应于ISA网卡,则必须要在conf.modules中指定硬件的io地址或中断号, 如下所示,表明了一块NE的ISA网卡的conf.modules文件.
alias eth0 ne
options ne io=0x300 irq=5
在修改完conf.modules文件之后,就可以使用命令来加载模块,例如要插入inter的第二块网卡:
#insmod /lib/modules/2.2.14/net/eepro100.o
这样就可以在以太口加载模块eepro100.o.同时,还可以使用命令来查看当前加载的模块信息:
[root@ice /etc]# lsmod
Module Size Used by
eepro100 15652 2 (autoclean)
返回结果的含义是当前加载的模块是eepro100,大小是15652个字节,使用者两个,方式是自动清除.
2. 修改/etc/lilo.conf文件
在一些比较新的linux版本中,由于操作系统自动检测所有相关的硬件,所以此时不必修改/etc/lilo.conf文件.但是对于ISA网卡和老的版本,为了在系统初始化中对新加的网卡进行初始化,可以修改lilo.conf文件.在/etc/lilo.conf文件中增加如下命令:
append="ether=5,0x240,eth0 ether=7,0x300,eth1"
这条命令的含义是eth0的io地址是0x240,中断是5,eth1的io地址是0x300,中断是7.
实际上,这条语句来自在系统引导影像文件时传递的参数,
LILO: linux ether=5,0x240,eth0 ether=7,0x300,eth1
这种方法也同样能够使linux系统配置好两个网卡.类似的,在使用三个以上网卡的时候,也可以依照同样的方法.
在配置好网卡之后,就应该配置TCP/IP的参数,在一般情况下,在安装linux系统的同时就会提示你配置网络参数.但是之后如果我们想要修改网络设置,可以使用如下的命令:
#ifconfig eth0 A.B.C.D netmask E.F.G.H
A.B.C.D 是eth0的IP地址,E.F.G.H是网络掩码.
其实,在linux系统中我们可以给一块网卡设置多个ip地址,例如下面的命令:
#ifconfig eth0:1 202.112.11.218 netmask 255.255.255.192
然后,使用命令#ifconfig -a 就可以看到所有的网络接口的界面:
eth0 Link encap:Ethernet HWaddr 00:90:27:58:AF:1Ainet addr:202.112.13.204 Bcast:202.112.13.255 Mask:255.255.255.192UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:435510 errors:0 dropped:0 overruns:0 frame:2TX packets:538988 errors:0 dropped:0 overruns:0 carrier:0collisions:318683 txqueuelen:100Interrupt:10 Base address:0xc000eth0:1 Link encap:Ethernet HWaddr 00:90:27:58:AF:1Ainet addr:202.112.11.218 Bcast:202.112.11.255 Mask:255.255.255.192UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1Interrupt:10 Base address:0xc000lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0UP LOOPBACK RUNNING MTU:3924 Metric:1RX packets:2055 errors:0 dropped:0 overruns:0 frame:0TX packets:2055 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 |
我们看到网络接口有三个,eth0 , eth0:1,lo,eth0是真实的以太网络接口,eth0:1和eth0是同一块网卡,只不过绑定了另外的一个地址,lo是会送地址。eth0和eth0:1可以使用不同网段的ip地址,这在同一个物理网段却使用不同的网络地址的时候十分有用。
另外,网卡有一种模式是混杂模式(prosimc),在这个模式下,网卡将会接收网络中所有的数据包,一些linux下的网络监听工具例如tcpdump,snort等等都是把网卡设置为混杂模式.
ifconfig命令可以在本次运行的时间内改变网卡的ip地址,但是如果系统重新启动,linux仍然按照原来的默认的设置启动网络接口。这时候,可以使用netconfig或netconf命令来重新设置默认网络参数。netconfig 命令是重新配置基本的tcp/ip参数,参数包括是否配置为动态获得ip地址(dhcpd和bootp),网卡的ip地址,网络掩码,缺省网关和首选的域名服务器地址。netconf命令可以详细的配置所有网络的参数,分为客户端任务,服务器端任务和其他的配置三个部分,在客户端的配置中,主要包括基本主机的配置(主机名,有效域名,网络别名,对应相应网卡的ip地址,网络掩码,网络设备名,网络设备的内核驱动程序),DNS地址配置,缺省网关的地址配置,NIS地址配置,ipx接口配置,ppp/slip的配置等等。在服务器端配置中,主要包括NFS的配置,DNS的配置,ApacheWebServer配置,Samba的配置和Wu-ftpd的配置。在其他的配置选项中,一个是关于/etc/hosts文件中的主机配置,一个是关于/etc/networks文件中的网络配置信息,最后是关于使用linuxconf配置的信息。
在linuxconf命令下,同样也可以配置网络信息,但是大家可以发现,linuxconf程序是调用netconf来进行网络配置的。
另外,在/etc/sysconfig/network-scripts目录下存放着系统关于网络的配置文件,范例如下:
:<br><br>ifcfg-eth0* ifdown-post* ifup-aliases* ifup-ppp*ifcfg-eth1* ifdown-ppp* ifup-ipx* ifup-routes*ifcfg-lo* ifdown-sl* ifup-plip* ifup-sl*ifdown@ ifup@ ifup-post* network-functionsifcfg-eth0是以太口eth0的配置信息,它的内容如下:DEVICE="eth0" /*指明网络设备名称*/IPADDR="202.112.13.204" /*指明网络设备的ip地址*/NETMASK="255.255.255.192" /*指明网络掩码*/NETWORK=202.112.13.192 /*指明网络地址*/BROADCAST=202.112.13.255 /*指明广播地址*/ONBOOT="yes" /*指明在系统启动时是否激活网卡*/BOOTPROTO="none" /*指明是否使用bootp协议*/ |
所以,我们也可以修改这个文件来进行linux下网络参数的改变。
3、外部网络安全
MySQL数据库安装好以后,Unix平台的user表是这样的:
mysql> use mysql;
Database changed
mysql> select Host,User,Password,Select_priv,Grant_priv from user;
图1
4 rows in set (0.00 sec)
Windows平台的user表是这样的:
mysql> use mysql;
Database changed
mysql> select Host,User,Password,Select_priv,Grant_priv from user;
图2
4 rows in set (0.00 sec)
我们先来看Unix平台的user表。其中redhat只是我试验机的机器名,所以实际上Unix平台的MySQL默认只允许本机才能连接数据库。但是缺省root用户口令是空,所以当务之急是给root用户加上口令。给数据库用户加口令有三种方法:
1)在shell提示符下用mysqladmin命令来改root用户口令:
shell>mysqladmin -uroot password test
这样,MySQL数据库root用户的口令就被改成test了。(test只是举例,我们实际使用的口令一定不能使用这种易猜的弱口令)
2)用set password修改口令:
mysql> set password for root@localhost=password('test');
这时root用户的口令就被改成test了。
3)直接修改user表的root用户口令:
mysql> use mysql;
mysql> update user set password=password('test') where user='root';
mysql> flush privileges;
这样,MySQL数据库root用户的口令也被改成test了。其中最后一句命令flush privileges的意思是强制刷新内存授权表,否则用的还是缓冲中的口令,这时非法用户还可以用root用户及空口令登陆,直到重启MySQL服务器。
我们还看到user为空的匿名用户,虽然它在Unix平台下没什么权限,但为了安全起见我们应该删除它:
mysql> delete from user where user='';
Windows版本MySQL的user表有很大不同,我们看到Host字段除了localhost还有是%。这里%的意思是允许任意的主机连接MySQL服务器,这是非常不安全的,给攻击者造成可乘之机,我们必须删除Host字段为%的记录:
mysql>delete from user where host='%';
默认root用户的空密码也是必须修改,三种修改方法和Unix平台一样。
我们注意到Host字段为localhost的匿名用户拥有所有的权限!就是说本地用户用空的用户名和空的口令登陆MySQL数据库服务器可以得到最高的权限!所以匿名用户必须删除!
mysql> delete from user where user='';
对user表操作以后不要忘了用flush privileges来强制刷新内存授权表,这样才能生效。
默认安装的Windows版MySQL存在的不安全因素太多,我们在安装后一定要进一步配置!
MySQL的5个授权表:user, db, host, tables_priv和columns_priv提供非常灵活的安全机制,从MySQL 3.22.11开始引入了两条语句GRANT和REVOKE来创建和删除用户权限,可以方便的限制哪个用户可以连接服务器,从哪里连接以及连接后可以做什么操作。作为MySQL管理员,我们必须了解授权表的意义以及如何用GRANT和REVOKE来创建用户、授权和撤权、删除用户。
在3.22.11版本以前的MySQL授权机制不完善,和新版本也有较大的不同,建议升级到最新版本的MySQL。(本书的操作例子是以MySQL 3.23.49为样本)我们先来了解授权表的结构。
1)MySQL授权表的结构与内容:
mysql> desc user;
图3
17 rows in set (0.01 sec)
user表是5个授权表中最重要的一个,列出可以连接服务器的用户及其加密口令,并且它指定他们有哪种全局(超级用户)权限。在user表启用的任何权限均是全局权限,并适用于所有数据库。所以我们不能给任何用户访问mysql.user表的权限!
权限说明:
图4
mysql> desc db;
图5
13 rows in set (0.01 sec)
db表列出数据库,而用户有权限访问它们。在这里指定的权限适用于一个数据库中的所有表。
mysql> desc host;
图6
12 rows in set (0.01 sec)
host表与db表结合使用在一个较好层次上控制特定主机对数据库的访问权限,这可能比单独使用db好些。这个表不受GRANT和REVOKE语句的影响,所以,你可能发觉你根本不是用它。
mysql> desc tables_priv;
图7
8 rows in set (0.01 sec)
tables_priv表指定表级权限。在这里指定的一个权限适用于一个表的所有列。
mysql> desc columns_priv;
图8
7 rows in set (0.00 sec)
columns_priv表指定列级权限。在这里指定的权限适用于一个表的特定列。
三.网络的安全设置
在这一部分,再次强调一定要修改/etc/inetd.conf,安全的策略是禁止所有不需要的服务.除此之外,还有以下几个文件和网络安全相关.
(1)./etc/ftpusers ftp服务是一个不太安全的服务,所以/etc/ftpusers限定了不允许通过ftp访问linux主机的用户列表.当一个ftp请求传送到ftpd,ftpd首先检查用户名,如果用户名在/etc/ftpusers中,则ftpd将不会允许该用户继续连接.范例文件如下:
# /etc/ftpusers - users not allowed to login via ftp root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody nadmin |
(2)/etc/securetty 在linux系统中,总共有六个终端控制台,我们可以在/etc/securetty中设置哪个终端允许root登录,所有其他没有写入文件中的终端都不允许root登录.范例文件如下:
# /etc/securetty - tty's on which root is allowed to login tty1 tty2 tty3 tty4 |
(3)tcpd的控制登录文件/etc/hosts.allow和/etc/hosts.deny
在tcpd服务进程中,通过在/etc/hosts.allow和/etc/hosts.deny中的访问控制规则来控制外部对linux主机的访问.它们的格式都是
service-list : hosts-list [ : command]
服务进程的名称 : 主机列表 可选,当规则满足时的操作
在主机表中可以使用域名或ip地址,ALL表示匹配所有项,EXCEPT表示除了某些项, PARANOID表示当ip地址和域名不匹配时(域名伪装)匹配该项.
范例文件如下:
# # hosts.allow This file describes the names of the hosts which are # allowed to use the local INET services, as decided # by the '/usr/sbin/tcpd' server. # ALL : 202.112.13.0/255.255.255.0 ftpd: 202.117.13.196 in.telnetd: 202.117.48.33 ALL : 127.0.0.1 |
在这个文件中,网段202.112.13.0/24可以访问linux系统中所有的网络服务,主机202.117.13.196只能访问ftpd服务,主机202.117.48.33只能访问telnetd服务.本机自身可以访问所有网络服务.
在/etc/hosts.deny文件中禁止所有其他情况:
#/etc/hosts.deny
ALL : DENY : spawn (/usr/bin/finger -lp @%h | /bin/mail -s "Port Denial noted in %d-%h" root)
在/etc/hosts.allow中,定义了在所有其他情况下,linux所应该执行的操作.spawn选项允许linux系统在匹配规则中执行指定的shell命令,在我们的例子中,linux系统在发现无授权的访问时,将会发送给超级用户一封主题是"Port Denial noted in %d-%h"的邮件,在这里,我们先要介绍一下allow和deny文件中的变量扩展.
(4)/etc/issue和/etc/issue.net
在我们登录linux系统中的时候,我们常常可以看到我们linux系统的版本号等敏感信息.在如今的网络攻击行为中,许多黑客首先要收集目标系统的信息,版本号等就是十分重要的信息,所以在linux系统中一般要把这些信息隐藏起来./etc/issue和/etc/issue.net就是存放这些信息的文件.我们可以修改这些文件来隐藏版本信息.
另外,在每次linux重新启动的时候,都会在脚本/etc/rc.d/rc.local中再次覆盖上面那两个文件./etc/rc.d/rc.local文件的范例如下:
# This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. if [ -f /etc/redhat-release ]; then R=$(cat /etc/redhat-release) arch=$(uname -m) a="a" case "_$arch" in _a*) a="an";; _i*) a="an";; esac NUMPROC=`egrep -c "^cpu[0-9]+" /proc/stat` if [ "$NUMPROC" -gt "1" ]; then SMP="$NUMPROC-processor " if [ "$NUMPROC" = "8" -o "$NUMPROC" = "11" ]; then a="an" else a="a" fi fi # 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. #e cho "" > /etc/issue #e cho "$R" >> /etc/issue # echo "Kernel $(uname -r) on $a $SMP$(uname -m)" >> /etc/issue cp -f /etc/issue /etc/issue.net echo >> /etc/issue |
(5)其他配置
在普通微机中,都可以通过ctl+alt+del三键的组合来重新启动linux.这样是十分不安全的,所以要在/etc/inittab文件中注释该功能:
# Trap CTRL-ALT-DELETE
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now (T113)
Linux系统中网络配置详解相关推荐
- Linux系统中网络配置详解(一)
从linux诞生的那一天起,就注定了它的网络功能空前地强大.所以在linux系统中如何配置网络,使其高效,安全的工作就显得十分重要.下面我们就从网络设备的安装,网络服务的设置和网络安全性三个方面 ...
- Linux系统中top命令详解
在Linux系统中top命令是常用的分析性能的工具,能够实时监控系统中各个进程资源占用的情况,这和windows中任务管理器有点类似. top参数详解 第一行,任务队列信息,同 uptime 命令的执 ...
- Linux系统中的权限详解
我们linux服务器上有严格的权限等级,如果权限过高导致误操作会增加服务器的风险.所以对于了解linux系统中的各种权限及要给用户,服务等分配合理的权限十分重要. 一.文件基本权限 首先看下linux ...
- Linux系统中wc命令详解
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项]文件... 2.命令功能: 统计指定文件中的字节数. ...
- linux给目录赋访问权限_【Linux】Linux系统中的权限详解
我们linux服务器上有严格的权限等级,如果权限过高导致误操作会增加服务器的风险.所以对于了解linux系统中的各种权限及要给用户,服务等分配合理的权限十分重要. 一.文件基本权限 首先看下linux ...
- linux系统中drrwx-xr-x 用法详解
drrwx-xr-x 用法详解 drwxr-xr-x 用法详解: 第一位表示文件类型.d是目录文件,l是链接文件,-是普通文件,p是管道 第2-4位表示这个文件的属主拥有的权限,r是读,w是写,x ...
- linux系统静态路由配置,详解linux静态路由配置
学习linux时,你可能会遇到配置静态路由的问题,这里将介绍配置linux静态路由问题的解决方法,在这里拿出来和大家分享一下.现在有五个设备,PC1接ROUT1,ROUT1再接ROUT2,ROUT2再 ...
- linux系统中drrwx-xr-x 用法详解
drrwx-xr-x 用法详解 drwxr-xr-x 用法详解: 第一位表示文件类型.d是目录文件,l是链接文件,-是普通文件,p是管道 第2-4位表示这个文件的属主拥有的权限,r是读,w是写,x ...
- Linux系统中sysctl命令详解 sysctl -p、sysctl -a、sysctl -w
sysctl命令用于运行时配置内核参数,这些参数位于/proc/sys目录下.sysctl配置与显示在/proc/sys目录中的内核参数.可以用sysctl来设置或重新设置联网功能,如IP转发.IP碎 ...
最新文章
- RedHat/CentOS系统信息查看命令大全
- 下面关于微型计算机控制技术的叙述,(微型计算机控制技术选择题.docx
- 探讨计算机房的防火安全
- linux终端传文件,如何使用Linux FTP命令传输文件
- Strategic Game
- django_form校验
- 天津知青网6周年网庆-京剧-智取威虎山片段
- 视觉SLAM笔记(57) 回环检测
- JavaScript和HTML事件处理程序属性中的this的含义
- java 父类 new 子类
- MySQL数据监控案例_zabbix 监控多实例mysql
- 华为荣耀9升降级系统 | 华为荣耀9变砖后如何救砖 | 华为荣耀9获取BL解锁码以及如何解BL锁 | 华为荣耀9如何通过写ramdisk.img来获取root
- Python 植物大战僵尸代码实现(2):植物卡片选择和种植
- autosub字幕自动识别生成-最新windows配置方法
- 任天堂Switch蓝牙发射器方案
- cad抠图 lisp_五个实用的AutoCAD的lisp程序
- 全面解析《嵌入式程序员应该知道的16个问题》
- 来,给产品狗起个正儿八经的名字!
- js——分享QQ、QQ空间、微信、微博
- AtCoder Regular Contest 120 解题报告
热门文章
- 本地YUM源配置并设置成本地同步网络源,摆脱依赖包
- Dokcer容器实战之部署论坛
- NIO详解(一):java网络编程IO总结(BIO、NIO、AIO)
- 一周一论文(翻译 总结)—— [DSN 18] RDMC A Reliable RDMA Multicast for Large Objects :一个面向大型对象的可靠的RDMA广播框架
- java线程多栈会溢出_JVM 栈(stack)溢出案例
- Linux7如何手动建库,Centos 7系列删除数据库并重新安装
- linux配置apache文件大小,linux下apache中httpd.conf文件配置参数说明
- a1708硬盘转接口_2015年A1502 Macbook Pro更换硬盘
- simple go web application 二维码生成 打包部署
- Django之ORM使用以及模板语言