1、系统安装CentOS4.4 Linux 2.6.9-42.EL默认内核
安装时选包:vi编辑器 DHCP DNS
开发工具(里面的图形支持库就不要选啦,其他三项都选,以免以后安装软件缺东少西的) 防火墙选择不安装。关闭SELINUX 配好网卡IP
开始安装系统
系统装完用root登陆(我习惯用ROOT,你只要记得改文件前先cp个备份就好啦
使ROOT要逼自己养成这个习惯。否则劝你还是不要总用root登陆主机啦)
删掉没用的sendmail 等RPM包
# rpm -qa | grep
sendmail
# service sendmail stop
# rpm -e --nodeps sendmail
# rpm -qa |
grep kernel
把 kernel-smp*.rpm 和 kernel-smp-devel*.rpm 这两个包卸掉
# rpm -e
--nodeps kernel-smp
# rpm -e --nodeps kernel-smp-devel
查看grub.conf
启动项就变成一项啦 否则系统默认启动项是SMP多处理器的,我的机器只有一个CPU,所以就卸掉啦。
# cat
/boot/grub.conf
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title
CentOS-4 i386-up (2.6.9-42.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-42.EL ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.9-42.EL.img
修改SSH远程启用root登陆
# vi
/etc/ssh/sshd_config
#PermitRootLogin yes 找到这句把前面的#注释去掉 保存退出
重新启动系统
使上面的更改都全部生效 主要是使 uname –r 结果以CPU个数匹配 其他修改其实可以重新启动服务就可以完成的 service XXX
restart
注意:因为iptables我们以后要配的 所以安装的时候选择不启用,也就是说你现在的机器INPUT、OUTPUT都是ACCEPT
如果你不是选择防火墙使你SSH连接不上,可以停掉,反正我们等下升级完它后还是会自己写脚本的 否则就没升级它的必要啦
关闭防火墙的命令: # service
iptables stop
OK
以上步骤都是在主机上做的,以后的我们就到终端SSH上去啦。
做完上面的事你就可以离开阴森的机房啦,去本本上SSH登陆配置
远程用SSH登陆到这台主机
修改字符集
locale
查看一下当前字符集
默认字符集是LANG="zh_CN.UTF-8"
因为我选的中文安装,因为我是用Xshell这个SSH工具登陆的(
其他登陆器我没用过不清楚,其实你也可以调整登陆器的字符集显示用UTF-8也可以显示中文,但当你vi一个文件时你就发现有多痛苦啦,行对不齐等等问题满多的)
在某一目录使用
cd lskdj 就是一个不存在的目录 就看到乱码啦
解决方法:
# cp /etc/sysconfig/i18n
/etc/sysconfig/i18n.bak
修改前做好备份
# vi /etc/sysconfig/i18n
将此文件里的默认内容全部删除 然后加入下面这几行
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"
保存退出
然后重新用SSH登陆 再用locale 命令查看一下 cd lskdj 测试一下能否看到中文
OK
罗嗦到此为止。开工
TFTP上传所需软件包到 /usr/src/
目录下
ipp2p-0.8.2.tar.gz
patch-o-matic-ng-20060509
iptables-1.3.5.tar.bz2
l7-protocols-2006-10-18.tar.gz
kernel-2.6.9-42.EL.src.rpm
netfilter-layer7-v2.6.tar.gz
这里说一下 因为ipp2p0.8.2不支持iptabls1.3.6
所以选用1.3.5
patch-o-matic-ng-20060509 这个补丁包里面的模块是我自己选的
在 patchlets/ 目录下
把自己需要的模块留下 其他删除既可
这个配置文件要保留patchlets/config
另外需要注意一点20060509这个包里的
time模块在2.6下编译时是出错的,但在2.4内核上编译就没问题,你可以用20050801
这个包内的time模块来安装或者你就直接用这个补丁包来安装也一样,只要你找到自己用的模块将模块放在patchlets/ 里即可
L7的就没什么说的啦
都是最新的
kernel-2.6.9-42.EL.src.rpm 这个内核源码包你可以去网上下或在光盘里找
解开所有压缩包
# tar
zxvf ipp2p-0.8.2.tar.gz
# tar zxvf l7-protocols-2006-10-18.tar.gz
# tar
zxvf netfilter-layer7-v2.6.tar.gz
# tar xvjf
iptables-1.3.5.tar.bz2
修正rpm包安装key警告问题
# rpm --import
/usr/share/doc/centos-release-4/RPM-GPG-KEY*
建立内核源码包安装所需用户
#
useradd buildsvn
安装源码包 考一份内核到 /usr/src/linux-2.6.9做编译使用,如果编译失败 可以删除后再考新的
所以不建议做软连接操作
# rpm -ivh kernel-2.6.9-42.EL.src.rpm
# cd
/usr/src/redhat/SPECS
# rpmbuild -bp --target=i686 kernel-2.6.spec
# cp -a
/usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9
/usr/src
修改拷贝的内核与当前系统内核版本一致(很重要,否则编译出来的模块不能被当前内核使用)
# cd
/usrs/src/linux-2.6.9
# vi Makefile
修改 EXTRAVERSION =
-prep
该成EXTRAVERSION = -42.EL
保持跟uname -r 的版本一致 检测一下
# uname
-r
2.6.9-42.EL
# head -n4 Makefile
VERSION = 2
PATCHLEVEL =
6
SUBLEVEL = 9
EXTRAVERSION = -42.EL
# make
mrproper
该命令确保源代码目录下没有不正确的.o文件以及文件的互相依赖。
# make menuconfig
直接保存退出,生成
.config 文件。
为内核打补丁并添加模块
#
cd /usr/src/patch-o-matic-ng-20060509
设置内核和iptables的环境变量
# export
KERNEL_DIR=/usr/src/linux-2.6.9
# export
IPTABLES_DIR=/usr/src/iptables-1.3.5
添加模块
# ./runme time
# ./runme
ipp2p
# ./runme iprange(已经自带)
其实你若明确了 patchlets/ 下的模块后
可以用 ./runme xxxx
随意字符 然后它会自动到patchlets/ 下检测每一个模块提示你
添加Layer-7模块
# cd
/usr/src/linux-2.6.9
# patch -p1 <
/usr/src/netfilter-layer7-v2.6/for_older_kernels/kernel-2.6.9-2.6.10-layer7-1.2.patch
#
cd /usr/src/iptables-1.3.5
# patch -p1 <
/usr/src/netfilter-layer7-v2.6/iptables-layer7-2.6.patch
# chmod +x
extensions/.layer7-test
l7-filter模块加入完成
为内核选择新添加的模块
# cd
/usr/src/linux-2.6.9
# make menuconfig
路径:Device Drivers --->
Networking support --->
Networking
options --->
Network packet filtering (replaces
ipchains) --->
IP: Netfilter
Configuration --->
新加入的模块都在这里 选中新加入的模块
Layer 7 match
support (EXPERIMENTAL)
[ ] Layer 7 debugging output (NEW) (这个debug
就不要选啦)
(2048) Buffer size for application layer
data (NEW)
保存退出
编译netfilter模块
# cd /usr/src/linux-2.6.9
# make
modules_prepare
# make
M=net/ipv4/netfilter
编译完成netfilter模块后拷贝编译完成的模块到当前系统netfilter中(注CentOS所有版的cp
–f 这个选项都失效 手动Y回车吧 汗~)
# cp -f /usr/src/linux-2.6.9/net/ipv4/netfilter/*.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/netfilter/
# chmod +x
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/netfilter/*.ko
# depmod
-a
安装l7协议
# cd /usr/src/l7-protocols-2006-10-18
# make install
安装新的
iptables
(这个注释不明白是什么意思)
# vi
/usr/src/linux-2.6.9/include/linux/config.h
用 // 把下面的中间三行注释掉
#include
//#if !defined (__KERNEL__) &&
!defined(__KERNGLUE__)
//#error including kernel header in userspace; use the
glibc headers instead!
//#endif
#endif
保存退出
# cd
/usr/src/iptables-1.3.5
# export KERNEL_DIR=/usr/src/linux-2.6.9
# export
IPTABLES_DIR=/usr/src/iptables-1.3.5
保证有这两个环境变量存在(前面我们已经做过,可用 echo $
KERNEL_DIR和echo $ IPTABLES_DIR 查看目录设置是否正确)然后安装
# make BINDIR=/sbin
LIBDIR=/lib MANDIR=/usr/share/man install
更新ipp2p模块,使他支持更多的协议
# cd
/usr/src/ipp2p-0.8.2
# make
备份原模块 # cp /lib/iptables/libipt_ipp2p.so
/
# cp /usr/src/ipp2p-0.8.2/libipt_ipp2p.so
/lib/iptables
安装白金写的域名模块
[root@ES-vcmres patchlets]# cd
domain-0.0.2/
[root@ES-vcmres domain-0.0.2]#
ls
ChangeLog ipt_domain.c ipt_domain.o libipt_domain.o
Makefile
INSTALL
ipt_domain.h libipt_domain.c libipt_domain.so tags
[root@ES-vcmres
domain-0.0.2]# make
make -C /lib/modules/2.6.9-42.EL/build
SUBDIRS=/usr/src/patch-o-matic-ng-20060509/patchlets/domain-0.0.2
modules
make[1]: Entering directory
`/usr/src/kernels/2.6.9-42.EL-i686'
CC
[M] /usr/src/patch-o-matic-ng-20060509/patchlets/domain-0.0.2/ipt_domain.o
Building
modules, stage 2.
MODPOST
CC
/usr/src/patch-o-matic-ng-20060509/patchlets/domain-0.0.2/ipt_domain.mod.o
LD
[M] /usr/src/patch-o-matic-ng-20060509/patchlets/domain-0.0.2/ipt_domain.ko
make[1]:
Leaving directory `/usr/src/kernels/2.6.9-42.EL-i686'
[root@ES-vcmres
domain-0.0.2]# make install
cp -rf libipt_domain.so /lib/iptables/
cp -rf
ipt_domain.ko /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/
depmod
-a
安装白金写的多IP模块
[root@ES-vcmres patchlets]# cd
multiip/
[root@ES-vcmres multiip]# ls
INSTALL
ipt_multiip.h libipt_multiip.c libipt_multiip.so
ipt_multiip.c ipt_multiip.o libipt_multiip.o Makefile
[root@ES-vcmres
multiip]# make
make -C /lib/modules/2.6.9-42.EL/build
SUBDIRS=/usr/src/patch-o-matic-ng-20060509/patchlets/multiip modules
make[1]:
Entering directory `/usr/src/kernels/2.6.9-42.EL-i686'
CC
[M] /usr/src/patch-o-matic-ng-20060509/patchlets/multiip/ipt_multiip.o
Building
modules, stage 2.
MODPOST
CC
/usr/src/patch-o-matic-ng-20060509/patchlets/multiip/ipt_multiip.mod.o
LD
[M] /usr/src/patch-o-matic-ng-20060509/patchlets/multiip/ipt_multiip.ko
make[1]:
Leaving directory `/usr/src/kernels/2.6.9-42.EL-i686'
[root@ES-vcmres
multiip]# make install
cp -rf libipt_multiip.so /lib/iptables/
cp -rf
ipt_multiip.ko /lib/modules/`uname
-r`/kernel/net/ipv4/netfilter/
[root@ES-vcmres multiip]# depmod
-a
安装结束
测试
1、查看 iptables版本
# iptables –V
iptables
v1.3.5
查看 ipp2p 版本
# iptables -m ipp2p -h | grep IPP2P
IPP2P v0.8.2
options:
2、IPP2P range
# iptables -A FORWARD -m iprange --src-range
192.168.1.2-192.168.1.254 -m ipp2p --ipp2p -j DROP
3、layer 7 ,time
,iprange
# iptables -A FORWARD -m layer7 --l7proto qq -m time --timestart
8:00 --timestop 17:30 --days Mon,Tue,Wed,Thu,Fri -m iprange --src-range
192.168.1.5-192.168.1.239 -j DROP
3、白金写的域名和多IP模块测试
# iptables -A
FORWARD -m domain --name "sohu.com" -j DROP
# iptables -A FORWARD -m multiip
--sip 192.168.1.3,192.168.1.8,192.168.1.33 -j DROP
阅读(2795) | 评论(0) | 转发(0) |