追求永无止境
分类: LINUX
2015-07-26 11:26:06
其实防火墙对我们来说很不陌生,我们平常使用的windows操作系统中就自带有防火墙功能,不过大多数的我们忽略了它而已。如果使用过windows服务器就会发现防火墙其实挺实用的,它最大的功能就是帮助我们限制某些服务的访问来源。例如:可以限制特定IP访问文件传输服务(比如仅限局域网内使用)、可以限制整台主机仅可以接受客户端的www请求,关闭其它服务、可以限制内网用户访问外部网络等。
一、内置防火墙类别:
1、Netfilter:数据包过滤机制
分析进入主机的网络数据包,将数据包的头部数据提取出来进行分析,已决定该连接为放行或抵挡的机制。
Netfilter使用iptable这个软件来作为防火墙数据包过滤的命令。
2、TCP Wrappers:程序管理
通过服务器程序的外挂来处理的,分析谁对某程序进行访问,然后通过规则去分析该服务器程序谁能够连接、谁不能连接。该服务与启动的端口无关,只与启动的名称有关。
3、Proxy:代理服务
二、Netfilter可以做的工作:
拒绝让internet的数据包进入主机的某些端口
拒绝让某些来源IP的数据包进入
拒绝让带有某些特殊标志的数据包进入
分析硬件地址来决定连接与否
TCP Wrappers能够管理的防火墙规则:
由super daemon(xinetd)所管理的服务
支持libwrap.so模块的服务
数据包过滤软件:iptables
Iptables至少就有3个表格:
Filter(过滤器):主要跟进入linux本机的数据包有关,是默认的table
INPUT:主要与想要进入linux本机的数据包有关
OUTPUT:主要与linux本机所要送出的数据包有关
PREROUTING:路由判断之前的nat,进入路由器之前修改目的主机地址
POSTROUTING:路由判断之后的nat,进入路由器后修改源主机地址
FORWARD:与linux本机没有关系,它可以传递数据包到后端的计算机中,与NAT的table相关性高
NAT(地址转换):是Network
Addresss Translation的缩写,这个表格主要用来进行来源与目的IP或port的转换,与linux本机无关,主要与linux主机后的局域网内计算机相关。
PREROUTING:在进行路由判断之前所要进行的规则
POSTROUTING:在进行路由判断之后所要进行的规则
OUTPUT:与发送出去的数据包有关
Mangle(破坏者):这个表格主要是与特殊的数据包的路有标志有关,很少使用。
三、防火墙规则的查看与清楚:
Iptables –t:后边接table,如:nat
filter,默认使用的是filter
-L 列出目前的table规则
-n:不进行IP与HOSTNAME的反查,显示信息的速度会快很多
-v:列出更多的信息
Target:代表进行的操作,ACCEPT是放行,而REJECT则是拒绝,DROP是丢弃
Prot:代表使用的数据包协议,主要有TCP
UDP ICMP 3中数据包格式
Opt:额外的选项说明
Source:规则是针对哪个来源IP进行限制
Destination:规则是针对哪个目标IP进行限制
Iptables:-F:(flush)清楚所有的已指定的规则
-R:(replace)替换指定的规则
-X:除掉所有用户“自定义”的chain
-Z:将所有的chain的计数与流量统计都归为零
定义默认策略(policy):
Iptables [-t nat] –P[INPUT,OUTPUT,FORWARD]
[ACCEPT,DROP]
Eg:iptables –P INPUT DROP
Iptables –P OUTPUT ACCEPT
Iptables –P FORWARD ACCEPT
Iptables-save
数据包的基础比对:IP、网络及接口设备
Iptables [-AI 链名] [-io 网络接口] [-p 协议] [-s 来源IP/网络] [-d 目标IP/网络] –j [ACCEPT|DROP|REJECT|LOG]
-AI 链名:针对某条链进行规则的“插入”或“累加”
-A:新增加一条规则,该规则增加在原规则的最后面。
-I:插入一条规则,如果没有指定此规则的顺序,默认插入变成第一条规则
-io 网络接口:设置数据包进出的接口规范
-o:数据包所进入的那个网络接口
-i:数据包所传出的那个网络接口
-p 协定:设置此规则适用于哪种数据包格式
-s 来源IP/网络:设置此规则之数据包的来源地,可指定单纯的IP或网络
IP:192.168.2.100
网络:192.168.2.0/24
若规范不允许则加上“!”
-d 目标IP/网络:
-j:后面接操作,主要的操作有ACCEPT
DROP REJECT
TCP、UDP的规则比对:针对端口设置
Iptables [-AI 链] [-io 网络接口] [-p
tcp,udp] [-s 来源IP/网络] [--sport 端口范围] [-d 目标IP/网络] [--dport 端口范围] –j [ACCEPT|DROP|REJECT]
--sport 端口范围:限制来源的端口号码,端口号码可以是连续的,eg:1024:65535
--dport 端口范文:限制目标的端口号码
注意:因为仅有TCP与UDP数据包具有端口,因此想要使用—dport、--sport时,需要加上-p tcp或-p udp的参数才会成功
Iptables外挂模块:mac与state
Iptables –A INPUT [-m state] [--state 状态]
-m:一些iptables的外挂模块,主要常见的有:
state:状态模块
mac:网卡硬件地址
--state:一些数据包的状态
INVALID:无效的数据包,例如数据破损的数据包状态
ESTABLISHED:已经连接成功的连接状态
NEW:想要新建立连接的数据包状态
RELATED:最常用,表示这个数据包是主机发送出去的数据包有关
Eg:iptables –A INPUT –m
mac mac –mac-source aa:bb:cc:dd:ee:ff –j ACCEPT
Eg:iptables –A INPUT –m state –state
RELATED,ESTABLISHED –j ACCEPT
ICMP数据包规则的比对:针对是否相应ping来设计
Iptables –A INPUT [-p icmp] [--icmp-type 类型] –j ACCEPT
--icmp-type:后面必须要接ICMP的数据包类型,也可以使用代号。
四、防火墙规则指定顺序:
规则归零->默认策略->信任本机->回应数据包->信任用户
eg:
#1.清除规则
iptables -F
iptables -X
iptables -Z
#2.设置策略
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P ACCEPT
#3.制定各种规则
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT