Firewall:隔离工具;Packets Filter Firewall;工做于主机或网络的边缘,对经由的报文根据预先定义的规则(匹配条件)进行检测,对于可以被规则匹配到的报文实行某预约义的处理机制的一套组件;网络
硬件防火墙:在硬件级别实现部分功能的防火墙;另外一个部分功能基于软件实现; app
软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙;框架
主机防火墙:服务范围为当前主机;tcp
网络防火墙:服务范围为防火墙被的局域网;ide
iptables/netfilter:工具
netfilter:防火墙框架,framework;位于内核空间;post
iptables:命令行工具程序,位于用户空间;规则管理工具;spa
netfilter:命令行
hooks functionserver
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