Firewall
组件,工作在网络边缘(主机边缘),对进出本网络的数据包基于一定的规则进行检查,并在匹配到某规则时由规则定义的处理机制进行处理的
七层:代理防火墙
三层:包过滤防火墙
ralated 状态检测
edstablish 已建立连接
数据包进入主机时先送入内核
通过系统调用将规则送入内核
防火墙基于tcp/ip协议栈检查
hook function
Netfilter 过滤 功能框架
INPUT
OUTPUT
FORWARD
NAT
PREROUTING
POSTROUTING
OUTPUT
mangle
INPUT
OUTPUT
FORWARD
PREROUTING
POSTROUTING
RAW
PREROUTING
OUTPUT
PREROUTING 路由前
INPUT 到本机内部
OUTPUT 主机到外部的
FORWARD 转发
POSTROUTING 路由后
iptables [-t table] command CHAIN链 [NUM] match cretiaria匹配条件 -j TARGET
-t table
filter
nat
mangle
raw
command:
CHAIN:
-N 新建一条规则链
iptables -N attach-input
-X 删除一条用户自定义的链,只能删除空链
-F 清空链中规则,
-Z 清空计数器 每个规则有两个计数器,一个记录本条规则匹配到的数据包的个数 一个用来记录本条规则匹配到的数据包大小之和
-P 定义默认处理策略
-E
RULE:
-A 追加
-I 插入
-I CHAIN num
-R 替换
-R CHAIN NUM
-D 删除
-D CHAIN NUM
List:
-L 列出链中所有规则
-n 以数字显示地址
-v -vv -vvv 显示详细信息
-x 显示原有信息不要换算
--line-numbers 显示规则中行号
Match Creteria:
基本匹配
-s,--src,--source 匹配源地址
-d,--dst,--destination 匹配目标地址
-i 指定数据包的流入接口(逻辑接口)
-o 指定数据包的流出接口(逻辑接口)
-p,protocol,[tcp|udp|icmp] 协议匹配
扩展匹配
隐含扩展
-p tcp
--sport
--dport
--tcp-flags SYN,ACK,FIN,RST SYN ->检查SYN,ACK,FIN,RST标志,其中SYN位必须为1,ACK,FIN,RST为0,其他无所谓(SYN,ACK,FIN,PSN,URG,RST,ALL,NONE) tcp的标志位
--syn
-p udp
--sport
--dport
-p icmp
--icmp-type echo-request,8 echo-reply,0
显式扩展
-m
iptables -I INPUT 1 -d 192.168.0.97 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I OUTPUT 1 -s 192.168.0.97 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
NEW新的连接,ESTABLISHED,RELATED,INVALID无法识别状态
/etc/sysconfig/iptables-config
-m myltiport 最多15个
--sports 22,80,443
--dports
--ports
-m connlimit
--connlimit-above 最多并发连接 (限制迅雷)
! --connlimit-above 5
-m string
iptables -A INPUT -d 192.168.0.97 -p tcp --dport 80 -m string --string text -j DROP
-m time 结束时间不能小于起始时间
--timestart HH:MM
--timestop HH:MM
-j TARGET
ACCEPT
DROP
REJECT
SNAT
DNAT
MASQUERADE 地址伪装
REDIRECT 端口重定向
LOG
ssh,tcp,22,s:192.168.0.0,目标此目标机器地址
iptables -t filter -A INPUT -s 192.168.0.0/24 -d 192.168.0.97 -p tcp --dport 22 -j ACCEPT
iptables -t filter -A OUTPPUT -s 192.168.0.97 -d 192.168.0.0/24 -p tcp --sport 22 -j ACCEPT
iptables -t filter -I INPUT -s 127.0.0.1 -d 127.0.0.0/8 -j ACCEPT
iptables -t filter -I OUTPUT -s 127.0.0.1 -d 127.0.0.0/8 -j ACCEPT
iptables -t filter -P INPUT DROP 设置默认策略
iptables -t filter -P OUTPUT DROP
iptables -t filter -A OUTPUT -s 192.168.0.97 -d 0.0.0.0 -p icmp --icmp-type 0 -j ACCEPT
iptables -t filter -A INPUT -s 0.0.0.0 -d 192.168.0.97 -p icmp --icmp-type 8 -j ACCEPT
-s '!' 192.168.0.0/24
iptables -L -n -v
iptables -L -n --line-numbers
PING 回应0 请求8
策略:
通,堵
service iptables save iptables保存
/porc/sys/net/ipv4_ipforward 1打开 0关闭
route add default gw 192.168.158.129
route add -net 192.168.158.0/24 gw 192.168.0.25
route del -net 192.168.158.0/24
layer7-filter
netfilter,iptables
gcc GNU C Complier
make
glibc
./configure --prefix=/usr/local/NAME
make(头文件,库文件)
头文件
include <math.h>
/usr/include
/usr/local/include
ln -sv /uar/local/NAME/include /usr/include/NAME/
make install
二进制,/usr/local/NAME/bin,/usr/local/NAME/sbin,/usr/local/NAME/libexec
库文件,/usr/local/NAME/lib
配置文件,/usr/local/NAME/etc
帮助文件,/usr/local/NAME/share
# /usr/local/NAME/bin/AAA
# PATH=$PATH:/usr/local/NAME/bin/:/usr/local/NAME/sbin/ 设置默认环境变量
系统默认寻找库文件的路径:/lib,/usr/lib,/usr/local/lib
/etc/id.so.conf
/etc/id.so.conf.d/*.conf
# idconfig -v
帮助文件 man可以看到的手册
man的配置文件 --> /etc/man.config
MANPATH man命令的寻找路径
/etc/init.d/iptables save
service iptables save
/etc/sysconfig/iptables
/etc/sysconfig/iptables
iptables-save > /etc/sysconfig/iptables/iptables.2011012401 保存iptables
iptables-restore < /etc/sysconfig/iptables/iptables.2011012401 调用iptables