Firewall:隔离工具;Packets Filter Firewall;工作于主机或网络的边缘,对经由的报文根据预先定义的规则(匹配条件)进行检测,对于能够被规则匹配到的报文实行某预定义的处理机制的一套组件;
硬件防火墙:在硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现;
软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙;
主机防火墙:服务范围为当前主机;
网络防火墙:服务范围为防火墙被的局域网;
iptables/netfilter:
netfilter:防火墙框架,framework;位于内核空间;
iptables:命令行工具程序,位于用户空间;规则管理工具;
netfilter:
hooks function
prerouting
input
forward
output
postrouting
iptables:
CHAINS:
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
报文流向:
到本机某进程的报文:PREROUTING --> INPUT
由本机转发的报文:PREROUTING --> FORWARD --> POSTROUTING
由本机的某进程发出报文:OUTPUT --> POSTROUTING
tables:
filter:过滤,防火墙;
nat:network address translation,网络地址转换;
mangle:拆解报文,做出修改,并重新封装;
raw:关闭nat表上启用的连接追踪机制;
优先级次序(由高而低):
raw --> mangle --> nat --> filter
功能<-->钩子:
raw仅适用于:PREROUTING,OUTPUT
mangle五个链均适用:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
nat上仅有四个链:PREROUTING,INPUT,OUTPUT,POSTROUTING
filter仅有三个链:INPUT,FORWARD,OUTPUT
iptables规则的组成部分:
匹配条件:
网络层首部:Source IP, Destination IP
传输层首部:Source Port, Destination Port
扩展检查机制:
处理动作:target
ACCEPT,DROP,REJECT
防火墙安装:
netfilter:要确认内核编译的时候编译了netfilter,位于内核中的tcp/ip协议栈报文处理框 架;
iptables:
CentOS 5/6:iptables命令编写规则;
# iptables -t filter -F
# service iptables save
CentOS 7:firewalld,firewall-cmd, firewall-config
# systemctl disable firewalld
补充:如果想向6一样使用iptables,可以安装iptables-server工具
yum install -y iptables-server
cp /usr/libexec/iptables/iptables.init /etc/init.d/iptables
之后就可以使用service命令控制iptables了
程序包:iptables, iptstate
iptables命令:
规则:根据指定的匹配条件来尝试匹配每个流经此处的报文,一旦匹配成功,
则由规则后面指定的处理动作进行处理;
匹配条件:
基本匹配条件:源地址,目标地址,传输层协议
扩展匹配条件:需要借助于扩展模块进行指定的匹配条件
隐式扩展:已经在基本匹配条件中指明的协议相关的扩展;
显式扩展:隐式扩展之外的其它扩展匹配条件;
处理动作:
基本动作:ACCEPT,DROP,...
扩展动作:需要借助于扩展模块进行,但无须显式指定,仅需指明动作;
在扩展模块中,大写字母显示的模块就是为扩展动作的
添加规则时需要考量的问题:
(1) 报文流经的位置:用于判断将规则添加至哪个链;
(2) 实现的功能:用于判断将规则添加至哪个表;
(3) 报文的方向:用于判断哪个为“源”,哪个为“目标”;
(4) 匹配条件:用于编写能够正确匹配目标报文的规则;
iptabls命令的使用格式:
iptables [-t table] {-A|-C|-D} chain rule-specification
iptables [-t table] -I chain [rulenum] rule-specification
iptables [-t table] -R chain rulenum rule-specification
iptables [-t table] -D chain rulenum
iptables [-t table] -S [chain [rulenum]]
iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]
iptables [-t table] -N chain
iptables [-t table] -X [chain]
iptables [-t table] -P chain target
iptables [-t table] -E old-chain-name new-chain-name
rule-specification = [matches...] [target]
match = -m matchname [per-match-options]
target = -j targetname [per-target-options]
规则管理格式:iptables [-t able] COMMAND chain cretieria [ -m matchname [per-match-options]] [-j targetname [per-target-options]]
-t table:指明要管理的表; 默认为filter;
COMMANDS:
链管理:
-P:iptables [-t table] -P chain target,定义链的默认策略;其target一般可使用ACCEPT或DROP;
iptables -P INPUT ACCEPT/DROP 内网的时候可以使用REJECT,外网尽量不要用REJECT
-N:iptables [-t table] -N chain,自定义规则链;仅在默认链通过某规则进行调用方可生效;因此,每个自定义链都有其引用记数;
-X:iptables [-t table] -X [chain],删除自定义的空的引用计数为0的链;
-F:iptables [-t table] -F [chain [rulenum]] [options...],清空指定的链,或删除指定链上的规则 ;
-E:iptables [-t table] -E old-chain-name new-chain-name,重命名自定义的引用计数为0的链;
-Z:iptables [-t table] -Z [chain [rulenum]] [options...]
规则:
-A:append, iptables [-t table] -A chain rule-specification,追加规则到指定的链尾部;
-I:insert, iptables [-t table] -I chain [rulenum] rule-specification,插入规则到指定的链中的指定位置,默认为链首;
-D:delete,iptables [-t table] -D chain rule-specification或iptables [-t table] -D chain rulenum,删除指定的链上的指定规则;
-R:replace,iptables [-t table] -R chain rulenum rule-specification,将指定的链上的指定规则替换为新的规则;
查看:
-L:list, iptables [-t table] -L [chain [rulenum]] [options...]
-n:数字格式;
-v:verbose,详细格式信息;
-vv, -vvv
--line-numbers:显示链上的规则的编号;
-x:exactly,显示计数器的精确值;
计数器:
每条规则以及链的默认策略分别有各自的两个计数器:
(1) 匹配到的报文的个数:pkts
(2) 匹配到的所有报文的大小之积:bytes
回顾:
iptables/netfilter
四表:raw, mangle, nat, filter
五链:PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
iptables命令:
iptables [-t able] COMMAND chain cretieria [-m -m matchname [per-match-options]] [-j targetname [per-target-options]]
COMMANDS:
链管理:-P,-N,-X,-E,-F,-Z
规则管理:-A,-I,-D,-R
查看:-L,-n, -x, -v, --line-numbers
本文出自 “提着酱油瓶打醋” 博客,请务必保留此出处http://sauce.blog.51cto.com/11880696/1864614
原文:http://sauce.blog.51cto.com/11880696/1864614