防火墙 : Fire wall    由软件或者硬件组成的组件. 指工作在网络边缘(主机边缘),对进出等网络的数据包基于一定的规则进行检查,并在匹配到某规则时,由规则定义的处理机制进行处理的这样一种功能的组件                                

防火墙的五个系统自带的规则链:INPUT  OUTPUT  FORWARD   POSTROUTING  PREROUTING

四个表:filter过滤在三个点上做:input,output,forward      nat地址转换在三个点做:prerouting在此上做目标地址转换,  postrouting在此上做源地址转换, output     mangle在五个点都可以做,拆包,做重新封装的    raw只在两个地方做:prerouting,output

写规则:iptables [-t table] command 加到哪个链上 跟上这个链的第几个位置 匹配条件 -j

-t table 有四种可选 filter nat mangle raw

command 对规则(rule)操作的命令-A表示追加,在链的最后追加           -I表示插入,用法:-I CHAIN UNM        -R 替换,用法:-R CHAIN NUM           -D用于删除一条规则用法:-D CHAIN NUM

对链(CHAIN)进行操作  -N用于新建一个用户自定义链    -X表示删除一条用户自定义链,只能删除一条空链       -F用于清空一个链         -Z表示清空计数器,默认两个计数器        -P表示定义一个链的默认处理策略      -E用于重命名一条链  

list -L 列出链中所有规则

-L的辅助命令:-n表示以数字的方式来显示,不反解ip地址  -v显示详细信息   -x显示精确数字,不做换算       --line-numbers显示规则行号

Match Creteria

基本匹配 

-s匹配数据包的源地址(--src或者--source   

-d--dst或者--destination)指定匹配数据包目标地址    

-i指定数据包的流入接口(指逻辑接口)  

-o指定数据包的流出接口  

-p用于做协议匹配(四层协议匹配:tcpudpicmp

扩展匹配:隐含扩展:对某一协议的扩展  显式扩展

隐含扩展

-p tcp      

--sport匹配源端口    --dport  匹配目标端口

--tcp-flags(留个标志位,SYN,ACK,FIN,PSH,URG,RST.ALL,ALONE

--syn表示上面的数据包 重置时syn重置,rst不可重置

-p udp

           --sport

           --dport

-p icmp

           --icmp-type     echo-request代码是8发出请求   echo-reply代码是0应答

显示扩展

-m   明确指定是一个扩展    

state:

四个状态:NEW   ESTABLISHED   RELATED  INVALID

--state后跟状态 表示检查哪几个状态

/etc/sysconfig/iptables-sysconfig 文件下写进ftp服务项

-m multiport多端口匹配

--sports 用于指定多个源端口 中间用逗号隔开  

--dports用于指定多个目标端口

--ports指定非连续的端口

-m connlimit

--connlimit-above    NUM 超出几个就被拒绝,上限是多高

-m time 用于指定之间

--timestart 起始时间  --timestop结束时间    起始时间不能小于结束时间,凌晨后写成两段

-m string 做字符串匹配

--algo

--string pattern

-j  TARGET

        ACCEPT允许

        DROP拒绝

        REJECT

        SNAT

        DNAT

        REDIRECT

        LOG

例如:本机上有ssh的服务工作在tcp22端口,来自于192.168.0.0//24,目标地址此地址,允许通过 

进来的iptables -t filter -A INPUT -s  192.168.0.0/24 -d 192.168.0.97 -p tcp --dport 22 -j ACCEPT  

出去的iptables -t filter -A OUTPUT -s 192.168.0.97 -d 192.168.0.0/24 -p tcp --sport 22 -j ACCEPT

iptables -L -n查看策略 默认是filter 

写默认策略 iptables -t filter -P INPUT DROP     iptables -t filter -P OUTPUT DROP    

-s ‘ ! ‘ 192.168.0.0/24表示取反  前面加感叹号 用强引用

service iptables save 保存iptables的设置

关于target :ACCEPT  , DROP   , REJECT    ,SNAT    ,DNAT

源地址转换SNAT ,MASQUERADE地址伪装 POSTROUTING上做

DNAT目标地址转换  PREROUTING上做

在转换的基础上加过滤功能  iptables -A FORWARD -i eth1 -s 172.16.0.1 -j DROP 但别人改地址 就没辙了  所以说包过滤的安全性还是很有限的  (-i 表示流入接口的设置)

layer7-filter   7层过滤  补充到内核上,重编内核(netfilter   再重装iptables  (电子档rh253

大致三个步骤  解压完之后  ./configure --prefix=指定安装路径   make(头文件,库文件)  make install

二进制文件安装位置/usr/local/bin,/usr/local/sbin,/usr/local/libexec

库文件安装位置/usr/local/lib

配置文件安装位置/usr/local/etc

帮助文件安装位置/usr/local/share

系统默认寻找库文件的路径/lib,/usr/lib,/usr/local/lib   /etc/ld.so.conf 定义新库文件路径(若路径发生改变) 或者   /etc/ld.so.conf.d/ *.conf 建立这个文件,把新路径写进来     ldconfig  -v重新加载库文件路径

帮助文件:man有个配置文件/etc/man.config 定义在执行man命令时到什么路径下去找man文件 MANPATH行下加一个新路径   

头文件在/usr/include,/usr/local/include 若路径发生变化,则制定链接:ln -sv /usr/local/tutils/include  /usr/include/tutils(起个名字)

保存iptables的设置  service iptables save  保存在/etc/sysconfig/iptables

iptables-save 保存规则 要手动设置输出重定向 > /etc/sysconfig/iptables/iptables.2011012401

iptables-restore < /etc/sysconfig/iptables/iptables.20110124* 表示启动哪个iptables设置

防火墙脚本 把所有执行的命令放进去 开机自动运行