防火墙 : 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用于做协议匹配(四层协议匹配:tcp,udp,icmp)
扩展匹配:隐含扩展:对某一协议的扩展 显式扩展
隐含扩展
-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的服务工作在tcp上22端口,来自于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设置
防火墙脚本 把所有执行的命令放进去 开机自动运行
本文出自 “攀岩,永不驻足。” 博客,谢绝转载!