分享
 
 
 

Linux平台的安全性

王朝system·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

Linux 平台的安全性

Linux 内核 2.4 版本中集成了 NetFilter 框架,该框架是 Linux 平台新的网络安全功能框架,实现了多种网络安全功能:数据包过滤、状态保持、 NAT ,以及抗攻击等等。我们熟知的 Iptables ,仅仅是 NetFilter 框架在用户空间的配置工具,负责从用户命令行界面接收命令,然后转化成内核认识的结构体,调用相应的内核操作函数,将规则插入到内核中去。

Iptables 的使用方法请在 Linux 命令行界面中键入" man iptables ",查看手册页的情况。

要使用 Iptables ,必须在编译 Linux 内核的时候(内核的版本必须大于 2.4 )选择与 NetFilter 相关的内核模块,否则即使安装了Iptables,也不能使用。别着急,看到 NetFilter和Iptables ,不要认为他们是两个东西,它们一个是内核空间的实现模块,称作 NetFilter ,一个是用户空间的控制命令解析器,称作 Iptables 。两者结合才能完成整体的工作。我们按以下的叙述顺序说明 Iptables 和 NetFilter 的使用方法,以及如何使用它们增强主机的安全性。

将分如下章节讨论

1. 内核 NetFilter 选项编译过程

2. Iptables 工具的安装和编译

3. NetFilter 框架和 Iptables 使用方式概述

4. 使用 Iptables 增强主机安全性 How-To

好了,开始我们的 Iptables 之旅吧!注意本手册说明的过程都是在 RedHat7.2 内核版本 2.4.7 ,启动程序为 LILO , Shell 为 bash 上进行操作的。在别的版本的内核或者操作环境请具体参考系统手册页 man 信息。

2.1. 内核 NetFilter 选项编译过程

2.1.1. 内核代码的位置

安装了 Linux 以后,内核部分的代码在系统目录 /usr/src/Linux-2.4/ 中。当然如果下载了新的内核代码包,例如名为 linux-kernel-2.4.X.tag.gz (X表示次要版本号),可以在任何一个目录下解开该代码包,但是一般的规律是将代码包解压到 /usr/src/ 目录下,使用的命令序列如下:

[test /root/]# pwd/root[test /root/]# mv linux-kernel-2.4.7.tag.gz /usr/src/[test /root/]# cd /usr/src/[test /usr/src/]# tar zxvf linux-kernel-2.4.7.tar.gz[test /usr/src/]# cd linux-kernel-2.4.7

好了,进入到了新的内核代码目录,我们现在开始对目录进行裁减和编译。注意:如果没有支持 2.4 版本的内核,可以从 http://www.kernel.org 的网站上获得关于 Linux 内核的最新下载信息。

2.1.2. 内核代码选项介绍

进入内核源代码所在的目录以后,在该目录下使用如下命令进入内核配置界面:

make menuconfig

该命令会进入到一个 ASCI 的简单菜单界面,让用户对需要的内核选项进行选取,然后自动保存成一个内核配置文件。进入配置界面后如下图:

选中" Networking options ",进入下一配置界面

本界面是专门配置 Linux 主机网络特性的配置选项

本界面的内容包含了专门配置 Netfilter 选项

里面罗列的选项一般都需要使用 Space 键选中。注意在高亮光标停留在某个选项上时,使用 Space 键可以将该选项加入内核中。但是一个选项和内核有三种关系:

模块化方式加入。(在选项前显示【M】)

直接编译到内核中。(在选项前显示【*】)

不加入内核(选项前显示为空【】)

这两种方式都没有问题,一般推荐使用直接编译到内核中。 Space 键可以在"模块方式"、"直接编译方式"、"忽略模块"这三种方式之间进行切换。好了,选择完你需要的选项以后,直接使用 Tab 键将高亮光标移动到 " Exit " 上,然后一路退出,到下一个界面。保存刚才对内核选项的配置,然后回车退出。

2.1.3. 内核代码的编译和安装

编译内核分为以下几步:

1. 首先使用命令 make dep 命令编译内核模块之间的依赖关系。

2. 然后使用命令 make bzImage 命令编译压缩的内核。

3. 最后连续使用 make modules 和 make modules_install 命令将模块化的选项编译到内核中。

4. 好了,已经编译完成了内核,现在新内核的名字叫做 bzImage ,路径位置在(假设源代码在 /usr/src/Linux-2.4中 )/usr/src/Linux-2.4/arch/i386/boot/ 下,名称为 bzImage 。

5. 现在我们要使用这个新的内核启动系统。将 bzImage 拷贝到 /boot/ 目录下,然后起个新的你喜欢的名字,我们假设为 bzImage.nf 。

2.1.4. 系统使用新编译的内核重新启动

1. 修改 /etc/lilo.conf (假设你用 LILO 启动系统),添加下列行:

image=/boot/bzImage.nf label=linux-nf read-only root=/dev/hda5 (换成你系统的根所在的硬件路径)

2. 编辑完成以后,在 shell 中敲入命令 lilo ,安装新的内核到启动映像中。

3. 重新启动系统(使用命令 reboot ,或者 halt -r )

4. 在系统启动以后,你会看到 LILO 提出的提示符,此时按 TAB 键,然后会出现可以使用的启动内核,应该有 linux-nf ,它对应的内核就是 /boot/bzImage.nf 。直接敲入 linux-nf ,然后回车,系统就会使用 bzImage.nf 启动。

2.2. Iptables 工具的安装和编译

Iptables 是 Linux Netfilter 框架的用户端程序,负责接收用户的命令,并且将用户命令添加到内核中。 Iptables 一般是一个 *.tar.gz 的软件包,下载以后使用如下命令序列将其展开:

[test /root]# pwd/root[test /root]# tar zxvf iptables-2.6.tar.gz[test /root]# cd iptables-2.6[test /root]# make[test /root]# make install

好了,现在可以直接在命令行方式下使用该命令了。该命令的语法后面介绍。

2.3. NetFilter 框架和 Iptables 使用方法概述

Linux 根据数据包在内核中的不同处理,将整个 IP 包在内核中的生存周期划分为三个: PREROUTING 、FORWARD、POSTROUTING 。其他还有两个 LOCAL INPUT 和 LOCAL_OUTPUT (一般简写成 INPUT 和 OUTPUT ),分别对应送入本机上层协议栈的数据包和本机发送出的数据包。如果想要保护本机的安全性,那么只需关注 INPUT 和 OUTPUT 方向的数据包就可以了。其他几个不需要关心。

这五个方向对应着内核中五条不同的规则链和三个不同的规则表。

Linux 中规则链被组织在三个不同的规则表中: Filter 、NAT、Mangle 。其中 Filter 针对过滤系统, NAT 针对地址转换系统, Mangle 针对策略路由和特殊应用。规则链分配如下:

Filter:INPUT、FORWARD、OUTPUT

NAT:PREROUTING、POSTROUTING

Mangle:PREROUTING、POSTROUTING

针对主机的安全性主要集中在 Filter 表中的 INPUT 和 OUTPUT 规则链,这两个关键字在添加规则的时候会使用到。

在内核编译了 NetFilter 系统以后,系统会自动建立这五个规则链和三个规则表。

我们在使用的时候主要要使用到的规则表是 Filter 表,规则链是 INPUT 和 OUTPUT 链。添加的主要规则都集中在这两个链上。用图示表示如下:

2.4. 使用 Iptables 增强主机的安全性 How-To

1. 取消不必要的服务监听端口

使用 Linux 下的 Setup 命令,进入 ASCI 图形界面,限制主机提供的常用服务,例如 FTP、Daytime、Echo、Telnet、WEB、syslog remote 等等一系列不需要的服务。

然后使用下列命令序列重启 Xinetd :

[test /root]# cd /etc/init.d[test /root]# ./xinted restart

使用 netstat -na 命令观察系统中是否有不期望的端口正在监听。如果自己需要什么服务,利用 Setup 工具打开服务,并且重启 Xinetd 就可以了。

如果没有不期望的端口被打开,可以进入下一步。

2. 修改 INPUT 和 OUTPUT 规则链的默认策略

使用下列命令序列:

[test /root]# iptables -P INPUT DROP[test /root]# iptables -P OUTPUT DROP

这样以来,任何未经同意的数据包都会被系统拒绝。

添加如下命令控制访问主机:

iptables -A INPUT -p PROTO -state ESTABLISHED ,RELATED -j ACCEPT

本条命令的含义是凡是属于已经建立连接的数据包,或者关联性连接的数据包都允许通过。注意将命令行中的 "PROTO" 换成真正的协议名称 tcp、 udp、 或者 icmp

iptables -A INPUT -s A.B.C.D/32 -p PROTO -dport PORT -j ACCEPT

这条命令的含义是允许从 IP 地址为 A.B.C.D 主机来的,协议为 PROTO 的 IP 包,访问本主机的 PORT 端口的数据包允许通过。例如可以将 PORT 换成 80 ,表示 WEB 服务,换成 22 ,表示 SSH 服务等等。注意将 PROTO 换成 tcp 或者 udp 。

好了,只有经过上述命令添加的 IP 地址的主机,才能访问该主机。

为了防止IP地址冒充,我们可以将 IP 地址和 MAC 地址进行绑定,使用如下命令:

arp -s A.B.C.D aa:bb:cc:dd:ee:ff

表示 A.B.C.DIP 地址对应的 MAC 地址是 aa:bb:cc:dd:ee:ff 。

上述命令完成以后,主机的安全访问就在 NetFilter 的控制之下了。

例如,允许 10.0.0.41 的主机访问该服务器的 SSH 服务,使用如下命令:

iptables -A INPUT -s 10.0.0.41/32 -p tcp -dport 22 -j ACCEPT

允许 10.0.0.0/24 网段访问 news 服务:

iptables -A INPUT -s 10.0.0.0/24 -p tcp -dport 532 -j ACCEPT

同时绑定内部主机的 MAC 地址和 IP 地址的对应关系。

最后可以使用下列命令观察一下是否所有需要的规则都被完全的加入了内核中:

iptables -L

全文出处:enet

玉杰 2004-07-20

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有