数据包进入主机的流程
TCP/IP packet ---> IP(Net) Filter ---------> TCP Wrappers--------------------------------------> www设置---------------------> 本机资源
内核默认防火墙(iptables) /etc/hosts.allow和/etc/hosts.deny(对TCP的Header分析) 软件的功能(nginx,appche) /var/log/message和/var/log/secure可以查看系统的日志
iptables的chain、table和rule
iptables基本概念包括五个链、四个表和若干规则。链由一些列规则组成、表则由一系列链组成。
五个链分别是PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING
四个表分别是filter、nat、mangle、raw
4个表的优先级由高到低的顺序为:raw > mangle > nat > filter
四个表的功能特点
filter表:匹配数据包以进行过滤
nat表:修改数据包进行地址或者端口的转换
mangle表:用于修改数据包IP头信息中TOS、TTL、或者对数据包进行Mark以实现QoS或者特定路由策略
raw表:不经过iptables的状态跟踪功能而进行快速处理(iptables是一个有状态的系统,会在raw表之后mangle表之前,对数据包进行connection tracking,而由于raw表是优先级最高的表,数据包如果满足raw表的内容匹配之后,便不会再经过后续connection tracking和地址端口转换等操作,可以提高特定类型包的处理效率)
filter表:
INPUT链:作用于进入本机的包
OUTPUT链:作用于送出本机的包
FORWARD链:作用于和本机无关的包
nat表:
PREROUTING链:作用是包在刚刚到达防火墙时改变包的目标地址
OUTPUT链:改变本地产生的包的目标地址
POSTROUTING链:作用是在包将离开防火墙时改变包源地址
五个链的功能特点
PREROUTING,作用在数据包进入内核网络模块之后,获得路由之前
INPUT,作用在数据包被决定路由到本机之后
FORWARD,作用在数据包被决定路由到其他主机之后
OUTPUT,作用在离开本机的数据包进入内核网络模块之后
POSTROUTING,作用在对于离开本机或者FORWARD的数据包,当数据包被发送到网络之后
链、表、路由和连接跟踪的组合关系
关于connection tracking
很多iptables的功能需要借助connection tracking实现,所以当数据包经过iptables在raw表处理之后mangle表处理之前,会进行connection tracking处理,从iptables的connection tracking机制可以得知当前数据包所对应的连接的状态:
NEW,该包请求一个新连接,现在没有对应该数据包的连接
ESTABLISHED,数据包已经属于某个连接
RELATED,数据包已经属于某个连接,但是又请求一个新连接
INVALID,数据包不属于任何连接
清除防火墙规则
iptables -F
iptables -X
iptables -z
定义默认策略policy
iptables [-t nat] -P [INPUT,OUTPUT,FORWORD] [ACCCECT,DROP]
一般INPUT设置成dorp,其他设置成ACCEPT
数据包基础对比
iptables [-AI 链] [-io 网络接口] [-p 协议] [-s 来源ip/网段] [-d 目标IP/网段 ] -j [ACCEPT/DROP]
tcp、utp包过滤
iptables [-AI 链] [-io 网络接口] [-p 协议] [-s 来源ip/网段] [--sport 端口范围] [-d 目标IP/网段 ] [-dport 端口范围 ] -j [ACCEPT/DROP]
模块状态 mac和related
iptables -A INPUT -m state state --state 状态
-m:一些iptables的模块,主要常见的有 state mac
state:状态模块
mac:网卡硬件地址
--state
INVALID:无效包
ESTABLESHED:已经联机的状态
NEW:新建立的包
RELATED:与我们主机发出去的数据包相关
ICMP数据过滤
ICMP数据包的类型格式都是进行网络过滤,通常我们把icmp type8拿掉
iptables -A INPUT -p icmp --icmp-type 类型 -j ACCEPT
如:
#!/bin/bash
icmpa="1 2 3 4"
for typeicmp in $icmpa
do
iptables -A INPUT -i eth0 -p icmp --icmp-type $typeicmp -j ACCEPT
done
防火墙的记录,恢复
保存 iptables-save > filename
恢复 iptables-restorre < filename
IPv4核心管理功能
文件/proc/sys/net/ipv4/tcp_syncookies #防止dos攻击,不适合用在很高的服务器上
设置 echo "1" > /proc/sys/net/ipv4/tcp_syncookies
内核取消ping响应的设置 /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts和/proc/sys/net/ipv4/icmp_echo_ignore_all
echo >1 /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
/proc/sys/net/ipv4/conf/网络接口
rp_fiter 逆向路由过滤,建议启动
log_martians 记录来源非法ip
accept_redirects:实体网段转发,建议取消
accept_source_route:很少用,建议关闭
https://blog.youkuaiyun.com/cloudvtech/article/details/79824300