防火墙
防火墙是根据配置文件/etc/sysconfig/iptables来控制本机的"出、入"的网络访问行为。linux
1,Filter表:主要是跟进入linux本机的数据包有关,过滤数据包,默认表安全
1):INPUT链:过滤全部目标地址是本机的数据。(对进入本机的数据包进行过滤)
2):OUTPUT链:过滤由本机产生的数据(对源地址是本机的数据包进行过滤)
3):FORWARD链:过滤全部路过本机的数据包(源地址和目的地址都不是本机的数据包)网络
2,NAT表:网络地址转换,这个表主要用来进行来源或者目的的IP和port的转换,与linux本机无关,主要是与linux主机的局域网内的环境有关。app
若是数据包容许通过NAT或者masquerade,那么其余的数据也会作一样的动做,也就是说其余数据包不会被一个一个的NAT。ssh
包含的3个动做:
DNAT:改变数据包的目的地址使包能从新路由到某台机器。
SNAT:改变数据包的源地址(使局域网能访问公网)
NASQUERADE:个SNAT同样使局域网能访问公网,无固定IP使用PPP.PPPoE等拨号上网模式链接公网。tcp
NAT表包含3条链:
PREROUTING链:数据包达到防火墙时改变包的目的地址。
POSTROUTING链:在数据包离开防火墙时改变数据包的源地址
OUTPUT链:改变本地产生数据的目标地址spa
3,MANGLE表:破坏者,主要是与特殊的数据包的路由标志有关,修改数据包、改变数据包的头内容(TTL、TOS、MARK)blog
TOS:设置改变数据包的服务类型,通常不建议使用TOS设置发往公网的包除非打算依赖TOS来路由。
TTL:改变数据包的生存时间,可让数据包有一个特殊的TTL,欺骗ISP
MASK:给数据包设置特殊的标记,经过标记配置带宽限制或者而基于请求分类接口
mangle表有5条链:
PREROUTING链:数据进入防火墙后,路由判断以前改变数据包。
POSTROUTING链:在数据包肯定目的地址以后,改变数据包
INPUT链:在数据包进入本机以后,应用程序接受数据以前改变数据包
OUTPUT链:在数据包被肯定目的以前改变数据包
FORWARD链:第一次路由判断以后,最后一次路由判断以前改变数据包ip
4,RAW表:原始表格
主要是用于配置,原始表格有2中内置的链条
PREROUTING链
OUTPUT链
IPTABLES中数据包的被跟踪的4种链接状态:
一、NEW:该包想要开始一个链接(从新链接或者链接重定向)
二、RELATED:该包属于某个已经创建的链接所创建的新链接,好比:FTP数据传输链接就是控制链接所RELATED出来的链接
三、ESTABLISHED:只要发送并接到应答,一个数据链接就从NEW变为ESTABLISHED,并且该状态会继续这个链接的后继数据包。
四、INVALID:数据包不能被识别属于哪一个链接或者没有任何的状态好比内存溢出、收到不知属于哪一个链接的ICMP错误信息。通常应该DROP这个状态任何数据。
5,firewalld优先级
策略应用优先级:raw, mangle, nat, filter
策略经常使用优先级:filter,nat,mangle,raw
6,列举全部规则:
iptables -L -n
-L:列举在一个表或者链的全部规则
-n:以数字的方式输出地址或者端口
显示规则编号:
--line-numbers:当查询时打印编号
iptables -L -n --line-numbers
指定表显示规则:
iptables -L -n -t nat
清除表规则:
-F:删除一个或者多个链的全部的规则
iptables -F -t nat
保存规则:
service iptables save
/etc/rc.d/init.d/iptables save
禁止ssh登陆:
iptables -A INPUT -p tcp --dport 22 -j DROP
删除:
iptables -D INPUT -p tcp --dport 22 -j DROP
iptables -D INPUT 1
-A,append chain新增规则到某个规则链中,该规则将会成为规则链的最后一条规则
-D,delete chain [rulenum]从某个规则链中删除一条规则,能够输入完整的规则,也能够输入规则编号
-R,--replace,取代现行的规则,规则被取代后不会改变规则顺序。
-I,insert chain [rulenum],插入一条规则,本来该位置上的规则将会日后移一个顺位。
-p:porto protocol,例如:tcp、udp、icmp。
-j:jump表示跳转,跟target结合起来表示数据表将跳转到哪一个目标,并执行相应的动做。常见的动做有:ACCEPT\DROP\REJECT三种,可是通常不适用REJECT,会带来安全隐患。
--dport:目的端口号
注意:INPUT和ACCEPT等关键字必须大写
禁止ip 192.168.137.0 网段 从eth0网卡接入:####
iptables -A INPUT -p icmp -i eth0 -s 192.168.137.0 -j DROP
禁止ip地址非192.168.137.113的全部类型的数据进入:
iptables -A INPUT ! -s 192.168.137.113 -j DROP
扩展匹配:一、隐式扩展 二、显式扩展
隐式扩展:
-p tcp
--sport:源端口
--dport:目的端口
显式扩展:
-m extension --sub-opt
-p tcp --dport 22 和-p tcp -m tcp --dport 22 功能相同
state:状态扩展,接口ip_contrack跟踪会话状态
NEW:新的链接状态
RELATED:相关联的链接
ESTABLEISHED:已创建的链接请求
INVALID:非法的链接
匹配端口范围:
iptables -A INPUT -p tcp --dport 22:80 -j DROP
匹配多个端口:
iptables -A INPUT -p tcp --dport 22,80,3306 -j DROP
-m 匹配扩展:
iptables -A INPUT -p tcp -m multiport --dport 22,80,3306 -j DROP
不容许源端口80的数据输出:iptables -A OUTPUT -p tcp --sport 80 -j DROP