一.编辑iptables的七层应用的步骤:
1.下载我们需要的软件包
get linux-2.6.28.10.tar.gz
mget iptables-1.4.6.tar.bz2 l7-protocols-2009-05-28.tar.gz netfilter-layer7-v2.22.tar.gz
2.配置我们的内核和netfilter
在配置我们的内核和netfilter之前,看一看我们的配置环境安装了没有
# yum grouplist --->如果安装了可以不执行下面的命令
# yum groupinstall "Development Libraries" "Development Tools"
开始解压我们的内核
# tar zxvf linux-2.6.28.10.tar.gz -C /usr/src/ --->-C指定我们的解压后的存放路径;通常我们的linux的内核源代码通常放在/usr/src/目录下,所以我们直接解压到这个目录;
开始解压我们的netfilter
# tar zxvf netfilter-layer7-v2.22.tar.gz -C /usr/src/
解压之后,我们的linux内核源代码包通常是以他们的版本号命名的,我们需要做一下连接,连接到linux目录下,因为我们的系统在启动内核的时候通常到linux目录中加载内核;
# cd /usr/src/
# ln -sv linux-2.6.28.10 linux
开始给我们的内核打补丁
# cd linux
# patch -p1 < ../netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch -->-p1表示netfilter-layer7-v2.22这个目录去掉,直接用后面的进行打补丁
开始编译内核
由于我们不清楚我们当前的linux支持那一种组件和内核,我们不太清楚,因此,我们需要先拷贝一份我们系统当前默认的配置文件到当前的linux目录下,并重命名为.config,如下:
# cp /boot/config-2.6.18-164.el5 ./config
# make menuconfig -->编译
这时候,我们需要安下面的步骤打开下面的模块
Networking support → Networking Options →Network packet filtering framework →Code Netfilter Configuration
<M> Netfilter connection tracking support
<M> “layer7” match support
<M> “string” match support
<M> “time” match support
<M> “iprange” match support
<M> “connlimit” match support
<M> “state” match support
<M> “conntrack” connection match support
<M> “mac” address match support
<M> FTP protocol support
<M> "multiport" Multiple port match support
编译好上面的之后,在编译下面的
Networking support → Networking Options →Network packet filtering framework → IP: Netfilter Configuration
<M> IPv4 connection tracking support (required for NAT)
<M> Full NAT
<M> MASQUERADE target support <M> NETMAP target support <M> REDIRECT target support
下面开始装编译内核木块
# make
# make modules_install
在执行这个命令的时候,在最后会生成内核的依赖关系,就是:DEPMOD 2.6.28.10,这个命令就是帮助我们生成依赖关系的,这个命令的执行结果我们可以查看:# ls /lib/modules/2.6.28.10/
下面开始安装内核
# make install
然后重启一下系统选择启动这个内核,看一下是否有错误,如果没有错误,在让该内核选为默认启动内核;
下面将这个内核定义为默认启动内核:
# vim /etc/grub.conf
修改内容:就是将default=1修改成default=0,就ok了;
下面开始编译我们的iptables
# cp /etc/rc.d/init.d/iptables ~/iptables -->将iptables脚本拷贝一份,因为iptables实质上不是服务,而是一个工具,它定义的规则是靠脚本实现的;
# cp /etc/sysconfig/iptables-config ~/ --->这个定义iptables启动的时候,开机启动的哪些模块
下面开始卸载软件,因为同时存在会造成冲突的
# rpm -e iptables-ipv6 iptables iptstate --nodeps -->这里忽略依赖关系,因为那个包还要用,这里不能用yum去卸载,因为yum不会忽略依赖关系的;
# tar jxvf iptables-1.4.6.tar.bz2 -C /usr/src
# cd /usr/src/
下面我们就需要打补丁,实际就是cp两个文件
# cp netfilter-layer7-v2.22/iptables-1.4.3forward-for-kernel-2.6.20forward/libxt_layer7.* iptables-1.4.6/extensions/
# cd iptables-1.4.6/
# ./configure --prefix=/usr --with-ksource=/usr/src/linux
# make
# make install
# cd
# tar zxvf l7-protocols-2009-05-28.tar.gz
# cd l7-protocols-2009-05-28
# make install
# mv ~/iptables /etc/rc.d/init.d/
# which iptables -->查看iptables在哪里调用,我们会发现在/usr/sbin/iptables下调用,所以下面我们就来修改下面我们的iptables文件,让调用iptables的命令修改到默认路径下
# vim /etc/rc.d/init.d/iptables# vim /etc/rc.d/init.d/iptables
我们在该文件中修改它的默认调用路径:/\/sbin\/$IPTABLES
然后再进行修改,都修改成/usr/sbin/$IPTABLES,这就将iptables的调用修改成为默认路径
# mv iptables-config /etc/sysconfig/
在开始启动之前,我们应该先写入一条规则,来激活,否者启动不了,因为iptables不是服务,
# iptables -t filter -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT
# service iptables start
3.我们的iptables是否在重启后不会丢失是在/etc/sysconfig/iptables-config文件中定义的
4.我们用service iptables save后,我们写的规则都保存到/etc/sysconfig/iptables文件中去了,当我们重启之后,系统就会自动到这个文件中读取;
5.当我们写的规则想要保存,但不是作为默认的iptables保存,而是用来测试,我们可以用一个命令来保存
# iptables-save > /etc/sysconfig/iptables/iptables.2011012401
6.假如我们保存了很多个版本,如:iptables.2011012401 ,iptables.2011012402 ,iptables.2011012403
我们不能不能默认启动,因为默认启动的是/etc/sysconfig/iptables这个路径下的规则,我们想要启动我们定义的路径的规则的方法是:
# iptables-restore < /etc/sysconfig/iptables/iptables.2011012401
二. 我们平常应用的小知识
1.screen 这是一个很好的后台运行命令
# yum install screen
# screen -ls --->查看当前有几个screen,同时可以查看screen的number
# screen -r number ---> 回到该number的screen界面
ctrl a+d 是退出
三.有关web的要了解的内容
1.http(全称:超文本传输协议),监听tcp的80端口
两个版本:1.1和1.0的
http基于tcp协议的,要经过三次握手
1.0版本的时候,经过n次握手
1.1版本的时候,经过keepalive(保持连接),限制了链接的数目
2.html(超文本编辑语言),传输的是纯文本,即:ASCII码,不可以传输二进制文件
3.www 基于http的应用
4.MIME:Multipurpose Internet Mail Extension可以让邮件,传输图像,声音,等,也可以让html传输图像,声音,视频等二进制数据
5.我们在访问http协议的时候,通常会给我一些数字代码报告一些错误代码,通常是一个1xx,2xx,3xx,4xx或者5xx开头的响应码;
1xx:通常以1开头的信息是一些显示信息,
2xx:通常以2开头的信息是正常的信息
3xx:通常以3开头的也是正常信息,但是信息不完整,还需要进一步处理
301,302:表示网页重定向
4xx:临时性错误;
5xx:永久性错误,不能修改的错误;
四. httpd 安装完成以后:我们这里的httpd就是我们所称的apache
1.# yum install httpd
我们安装好httpd软件后,所有的配置文件都放在/etc/httpd/目录下;所有的网页文件默认都会放在/var/www/目录下;
/usr/sbin/httpd---->这是安装完成以后,自动生成的一个守护进程 (177页 253)
/etc/init.d/httpd --->这是自动生成的开机启动脚本
/etc/httpd/* --->这个目录放置的是配置文件
/var/www/* --->这是网页存放的目录,
/var/log/httpd -->这里放的是日志文件
/usr/lib/httpd/modules -->放的是模块
在/etc/httpd/conf.d/目录里放着welcome.conf欢迎网页,当我们没有主页的时候,就会打开这个网页;
2.我们想让用户访问自己家目录的主页
先关闭SELinux
# vim /etc/httpd/conf/httpd.conf
注销UserDir disable,开启UserDir public_html这一项
然后再su到用户student下,建立public_html目录,并在这个歌目录里建立主页,然后再给chmod 0+x /home/student,就可以访问了;如果我们打开了SELinux后,就会发现我们的主页又不可以访问了,这是因为我们的public_html目录的标签类型没有改变成默认的类型,我们这里需要把它修改成默认的类型:$ /sbin/restorecon -R public_html/,这样就ok了;
3.在/etc/httpd/conf/httpd.conf内,分为三段(Section)
第一段:全局环境配置
第二段:主服务器配置
第三段:虚拟主机配置
在这个文件内,以<Directory /var/www/html></Directory>开始,结束的表示容器,/www表示着个容器只在/www目录中有效
eg:假如我们修改了document的默认目录/var/www/html成为/www,我们在这个目录里建立一个主页,我们挥发想当我们打开我们的SELinux的时候,发现我们的主页不可访问了,我们用ls -Z查看一下我们目录的标签类型改变了,我们需要修改/www的类型:# mkdir -R --reference=/var/www/html /www
4.下面的代码是复制httpd.conf中的,第一行和最后一行决定是否可以在家目录下访问网页的
# UserDir disable
#
# To enable requests to /~user/ to serve the user's public_html
# directory, remove the "UserDir disable" line above, and uncomment
# the following line instead:
#
UserDir public_html
5. DoumentRoot定义网页存放位置的,下面是cp 文件http.conf的
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html"
注意:每一个DoumentRoot都对应一个<Directory>
eg:上面对应的是<Directory "/var/www/html">
所以,上面的改变了,下面的也要改变,
6.但我们没把SELinux关掉时,是不能访问我们自定义的目录内的页面的,解决办法是:
chcon -R --reference=/var/www/html /www
如果改错了:可以恢复标签,如下
/sbin/restorecon -R public_html/
查看带标签的命令是ls -Z
7.要想访问一个非指定的目录里的页面,可以用Alias,如:访问/tmp/bss,可以如下
eg:在http配置文件httpd.conf中找到Alias的位置,添加一句:Alias /bbs "/tmp/bss"
这就叫路径别名
我们每次修改了配置文件之后,就应该重启或者reload一下服务,但是我们最好在重启的时候测试一下语法时候有错误;
# httpd -t或者# service httpd configtest
8.启用用户认证的方式定义用户是否可以访问主页的:
eg:定义只有wang 和jun 两个用户可以访问的方法
在httpd.conf文件中这样配置,(185页)
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride AuthConfig --->这一项表示是否覆盖默认的acl,Authconfig表示是基于用户的认证的
AuthName "wangjun's directory" -->定义认证的名字的
AuthType basic --->定义认证类型的,这里用很多认证方式,我们这里用的是基于本地文件的认证
AuthUserFile /www/.htpasswd --->定义放账号密码的文件,但是通过哈希编码之后存放的
require User wang jun
****在上面的加 require valid-user 可以定义多用户,和定义组的
接下来,去准备.htpqsswd文件了,但是这个文件是哈希编码,必须用htpasswd命令创建
eg:htpasswd -cm /www/.htpasswd wang
注意:第一次用-c,第二次一定不能用-c了,-m表示用md5加密的密码
htpasswd -cm /www/.htpasswd jun
五.使用https的条件:即使用证书
1.必须装mod_ssl模块,才能用
装好之后,会生成一个文件,在/etc/httpd/conf.d/目录内生成一个ssl.conf配置文件
只要编辑ssl.conf文件就可以达到目的了
# yum install mod_ssl
装完这个模块之后,会在自动生成一个配置文件:/etc/httpd/conf.d/ssl.conf
2.造证书
CA造好之后进行下面的步骤:
下面的步骤是给httpd服务器发证:
#mkdir /etc/httpd/ssl
#cd /etc/httpd/ssl
#openssl genrsa 1024 > httpd.key --->创建私钥
#openssl req -new -key httpd.key -out httpd.csr -->证书签署请求
Country Name :CN ---这是命名组播名字
State or Province Name:HA ---->省的名字
Locality Name :zz
Organization Name:linuxer ---->组织名字
等等;
#openssl ca -in httpd.csr -out httpd.crt ---->开始签证
签好后,就会生成三个文件
# vim /etc/httpd/conf.d/ssl.conf
修改SSLCertificateFile /etc/pki/tls/certs/localhost.crt为我们上面放证书的地方:
这里我们修改成:SSLCertificateFile /etc/httpd/ssl/httpd.crt
修改SSLCertificateKeyFile /etc/pki/tls/private/localhost.key为我们私钥放置的地方:
我们这里修改成:SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
下面我们搜索DocumentRoot,然后手动打开我们的目录存放路径:
按照模板添加下面两项:
DocumentRoot "/www"
ServerName www.a.com:443
本文出自 “linux小窝” 博客,谢绝转载!