管理员
|
阅读:3404回复:0
liunx-防火墙技术基础配置讲解
楼主#
更多
发布于:2011-11-21 11:57
| | | | 防火墙(firewall)技术 什么是防火墙呢?就是工作在网络边缘,按照管理员定义的规则,对于进出的报文进行规制匹配动作检测这一的组件。 防火墙分为硬件与软件防火墙,防火墙工作在网络的边缘,防火墙自身是不会发生作用的,它只是一个组件。 防火墙策略 rules (规则) policy 防火墙的类型 市面主要有二种 工作的三四层的网络层防火墙 工作在七层的 代理网关 工作在三层的: 工作在网络层 所有进出ip首部 进行规检测 工作在七层的:防火墙比较安全,但是效率比较低 只要发现目标 传输报文规则 就做出处理的匹配处理 三层的防火墙只拆开三层发现没有问题后封装后发送。 七层的拆开所有的数据包再封装发送。 inux系统上自带的防火墙 iptables 前身ipfwiptables ->写成规则放在内核中才能生效 tcp/IP stack协议栈放在内核中, 在 kernel(rules)中 才生效 能给内核打交道的文件 /proc /sys 防火墙想要生效 必须放在内核空间中 iptables/netfilter 网络过滤器 五个关卡 过滤数据 数据包的走向 ---ssh--- // \ 外网 《--- 服务器 《--- 内网 地址转换 必须在路由之前转换 不同的功能,需要在不同的位置实现 不同的位置还有使用不同的规则链和处理机制 NETFILET 有五个位置实现过滤 hook functions 钩子函数 五个内置的量 chains五个关卡 数据包 就要就如我们网卡的那一刻的也就是路由器的叫做 PREROUTING 路由器 到本机内部 INPUT 流入接口 转发关卡 FORWARD 流出的端口 output POSTROUTING 内置的5个规则链 防火墙策略 “通” 默认门是光着的 谁都不让进 要明确谁能进 “堵” 默认门是开着的 1,允许/不允许 filter 2,地址转换 nat过滤与转发是分开的 为了避免交叉我们专一定义一个表的东西来实现定义区分同一个链上的不同功能的规则。 表 3,修改报文源数据 mangle(这个表格主要是与特殊数据包的路由标记有关) 回顾ip首部格式思考一下? =三表五链= filter表 只能做到三个链上 input forward output(大写) nat表 prerouting output postrouting 大写 mangle表 prerouting input forward OUTPUT POSTROUTING数据包是自上而下检测的 一旦匹配到了就不在检测了 要把严格的放在上面, 处理机制 自己定义的链必须要与基准链串联起来才能工作 可以删除自己定义的链 不能删除内部的链 怎么写防火墙规则 iptables 语法规则 iptables的命令会对网络数据包进行过滤及阻止。所以不要在远程主机上进行防火墙的练习 i ptables 至少有3个默认的table(filter nat mangle) 比较常用的是filter 它是默认的表格,另一个则是net表格较常用,mangle比较少用................. 鸟哥上面的资料 1.规则的清除与观察 #iptables [-t tables][-L][-nv] -t:后面接table 例如nat或filter 若省略次项目,则使用默认的filter -L:列出目前的table的规则 -n:不进行ip与HOSTNAME的反查 显示信息的速度会快的很多 -v:列出更多信息,包括通过规则的数据包总个数、相关的网络接口等 ===== #iptables [-t tables] [-FXZ] 参数 -F :清除所有的已定规则 -X:除掉所有用的“自定义”的链(应该说的tables) -Z;将所有的chain的计数与流量通过都归零。 ................... 2.定义默认策略 #iptables [-t nat] -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP] -P 定义策略(Policy) 注意 这个p位大写 ACCEPT :该数据包可接受 DROP : 该数据包直接丢弃 不让client端知道为何丢弃。 范例 将本机的input设为DROP 请他的设置为ACCEPT # iptables -p INPUT DROP # iptables -p OUTPUT ACCEPT # iptables -p FORWARD ACCEPT iptables [-t table] COMMAND chain CRETIRIA -j actton 列 iptables -t filter -A INPUT -s 1 查看定义的规则iptables -L S chain指定在那个链操作 CRETIRIA匹配规则标准 -j 指定如何处理 对于规则是必须的 COMMAND: 链管理命令 : - p 设定默认策略是关的还是开的 # iptables -P INPUT(DROP|ACCEPT) 立即生 效的 列 #iptables -P INPUT DROP 把默认规则删除 #iptables -p INPUT ACCEPT 开启 -F flash 清空所有已定的规则 #iptable -t net -F PREROUTING 清空net表链 -N 新建用户自定义规则链 #iptables -N inbound_tcp_web -X 删除用户自定义的空规则链 -E 重定义用户的规则链 -Z 清空链默认规则及链规则中的接受器的 规则管理命令: -A 追加的 -I 把规则插入到第几条 -R 修改规则 NUM -D 删除第几条规则 查看命令 -L 查看 -n 数据的方式 -v 详细信息 -vv -vvv 越多越详细 -x 精确值 不进行单位换算 --line-numbers 显示行号 列 iptables -L -n --line-number 匹配标准: 通用匹配 通用匹配 -s,--src 指定做源地址匹配 IP ,NETWORK/NETMASK, 0.0.0.0/0.0.0.0 -d 匹配目标地址 -p 匹配协议的 通常这三种协议(tcp|udp|icmp) -i 数据的流入接口 etho -o 流出接口 隐含扩展 tcp utp的规则比对 某种特定协议的扩展 -p tcp --dport 端口范围 限制来源端口号码,端口号码可以是连续的 列入1024:65535 --sport 端口范围 限制目的地的端口号码。 --tcp-flags 参数 检查的标准位 必须为1的标准位 六个标志位 SYN,ACK,FIN,PAH,RST,URG :--tcp-flage syn,ack,fin,rst,syn 三次握手的第一次匹配 = --syn -p udp --dport --sport -p icmp --icmp-types 8 后面需要接ICMP的数据包类型 也可以使用代号 列如8代表echo request 的意思 例如ICMP type为 0,3,4,11,12,14,16,18的数据包可以进入本机 --icmp-type 0,3,4,11,12,14,16,18 echo-request 8 请求回显 echo-reply 0 显示扩展 状态模块 MAC与RELATED -m 表示显示扩展 -p tcp -m multiport --dports 21,23,80 -m start 状态检测 -j ACTION DROP 悄悄拒绝 REJECT 明确拒绝 ACCRPT 接受 custom_chain DNAT SNAT MASQUERADE 源地址伪装 REDIRECT 端口重定向 MAPK RETUPN 返回 ipables -t filter -A INPUT -s 172.16.0.0/16 -d 172.16.100.1 -p tcp -dportRELATED 状态检测 NEW 新发布的链接 ESTABLISHED 以建立的链接 ERLATED 具有关联关系的链接 INVALID 无法识别的链接iptables -L -n iptables -L -n --line-number iptables -R 保存 service iptables save 在这个文件下面 /etc/sysconfig/iptables iptable-sabe > /etc/syscnnfig/iptables.2 iptables-restore < /etc/sysconfig/iptables.2 -- NAT 代理服务器 地址转换 iptables -t nat POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 172.16.100.1 MASQUERADE地址伪装
| | | | |
|