防火墙分类
主机防火墙:服务范围为当前主机网络防火墙:服务范围为防火墙一侧的局域网硬件防火墙:专用于软硬件结合的防火墙软件防火墙:应用于通用硬件平台上的应用软件四层防火墙:OSI下四层七层防火墙:OSI上三层,主要看请求的资源
防火墙的具体功能:
filter:过滤 nat:地址转换 mangle:报文修改,fwmark raw:关闭连接追踪执行的优先次序 raw-mangle-nat-filter
centos: 基于netfilter:内核framework {框架} syscall:iptables工具,管理规则 firewall,firewall-cmd 更加规范,更加易用 报文流向: tables-->hook(钩子)对应 -CHAINS tables filter:INPUT OUTPUT FORWARD nat:PREROUTING ,INPUT,OUTPUT,POSTROUTING Nat转换四层PREROUING POSTROUTING 七层 output input mangle:PREROUTING ,INPUT,OUTPUT,POSTROUTING,FORWARD raw:PREROUTING,OUTPUT iptables -t {filter,nat。。。。} -nvL遵循的原则
*********规则的排序原则*********越复杂的往前*********访问越多的规则往前 格式:iptables [-t tables] SUBAOMMAND chain [num | rule-spec]SUBCOMMAND 子命令-A :attend -I :insert-D:删除-R: 替换 管理链-N :新建-X : 删除一条自定义的、空的,引用计数为 0 的。-E: rename 只能改自定义链的且引用计数为0 的链。 -P:POLICY ,默认的规则-F:FLUSH 清空-Z:置零 ,计数器置零 iptables每条规则每个链都有两个计数器:packets于bytes pkts是报文个数 bytes是大小匹配条件通用匹配 [!]-s --sip --source-ip 源地址或源地址网络
[!]-d -- 目标地址或目标网络 -i 数据报文的流入接口(网卡) -o 数据报文的流出接口(网卡) -p tcp udp icmp 扩展匹配 -m string -m time -m multiport 隐式扩展 -p tcp隐含 -m tcp 省略了 -m matchname --sport --dport 端口号连续可以连着写 例如137,138,139 可以写为137:139 --tcp-flags mask(要检查的标志位列表不写默认检查ACK,SYN,RST, FIN) comp(标志为1的列表) SYN(同步) ACK(确认) RST(复位) FIN(结束) URG(紧急) PSH(推送) --syn = ack syn rst fin syn -p udp --sport --dport -p icmp(网路控制消息协议,网络通信状态探测,traceroute) 有两种类型 --icmp-type 8 表示echo-request ping的请求 0 表示echo-replay ping的响应 显示扩展 需用 -m 指出matchname ex 多端口的匹配(隐式扩展只能实现单端口,或连续端口的匹配) -m multiport iptables -A INPUT -s 172.18.27.47 -p tcp -m multiport --dports 139,445,21:22 -j ACCEPT -m iprange 将一段连续的多个地址进行设定 iptables -I INPUT 2 -m iprange --src(dst)-range 172.18.27.36-172.18.27.66 -j ACCEPT -m set 用ipset工具将多个不连续的地址加入 yum -y install ipset ipset list 安装此包时先将iptables备份清空 ipset create myset(列表) hash:ip(net网段) ipset add myset 172.18.27.88 ipset add myset 172.18.87.9 iptables -I INPUT 2 -m set --match-set myset src -j ACCEPT二进制 安装 /etc/mysql/my.cnf 优先级大于 /etc/my.cnf如何使在命令行执行的iptables规则永久生效? /etc/init.d/iptables save iptables-save >>/etc/sysconfig/iptables -m string 后面加比较算法 --algo bm|kmp iptables -I INPUT -m string --string “sex" --algo bm -j REJECT TIME扩展 -m time --timestart 时间 --timestop 时间 --weekdays (monthdays) iptables -I INPUT -m set --match-set myset src -m time --timestart 8:00:00 --timestop 14:00:00 --weekday Tue,Thu,Sat --kerneltz -j ACCEPT -m connlimit --connlimit-upto(小于) --connlimit-above(大于) 每个客户端的最大访问连接并发数 -m limit 基于收发报文速率做匹配 (设定多久接受一个请求或发出一个报文) 令牌与令牌桶 算法 --limit 个数/(second|,minnute|hour|day) 间隔多久发一个报文 --limit-burst number(最多可以攒多少个,同时发)连接追踪:
将iP状态保存到内存空间中构建的一个表中(UNTRACKED,INVALID,SNAT,DNT,NEW,ESTABLISHED,RELATED(数据传输建立在与命令请求之上,就说这二者相关)),弊端 超过此连接数后的连接会被拒绝 UNTRACKED这是一种特殊状态,或者说并不是状态。它是管理员在raw表中,为连接设置NOTRACK规则后的状态。这样做,便于提高包过滤效率以及降低负载 ftp的RELATED生效要在内核中载入特顶的模块 在iptables配置文件的module中加入 nf_conntrack_ftp ESTABLISHED是两次握手产生的 IP以hash的方式保存 允许已经建立连接的访问 iptables -A INPUT -m state --staet ESTABLISHED -j ACCEPT 已经追踪到的状态所存放文件/proc/net/nf_con'ntrack 能追踪到的最大连接数量/proc/sys/nf_conntrack_max 不同协议的连接追踪时长/proc/sys/net/netfilter:内核frameworkSNAT与DNAT的连接通过连接追踪原理
stateful 当前连接与之前连接无任何相关性,每个连接都是被单独对待。http协议本身无状态routing protocol 路由协议 OSPF 开放式最短路径优先routed protocol 被路由协议 ip 列出载入的模块 lsmod 载入 modprobe 载入模块 forward链 允许内部与外部通信走此 规则管理:firewalld,firewalld-cmd iptables.service,将iptables-sava>/etc/sysconfig/iptables sysctl -w ip_forward=1 临时生效 add net 地址 route add default gw +地址 重点::::***********弄清规则的先后顺序,ex forward在前 postrouting在后请描述如何配置一个linux上网网关? route add -net 192.168.0.0/24 gw 10.0.0.253 dev eth1 -j SNAT DNAT SNAT在postrouting DNAT 在prerouting转换 基于iptables将访问本机192.168.7.103:80的请求转发到192.168.7.102:80? iptables -t NAT -A PREROUTING -d 192.169.7.103 -p tcp --dport 80 -j DNAT --to-destination 192.168.7.102:80 linux服务器外网IP为192.168.7.104,内网IP为172.16.1.104,如何使用iptables实现公司员工网段为172.16.1.0/24通过linux访问连接外网? 内网至外网用postrouting sNAT 外网至内网用prerouting DnAT 一般情况下是PREROUTING == DNAT POSTROUTING == SNAT 网络中通信的都是上网ip,局域网ip不能直接被访问 检查报文 tcp udp首部 源端口 目标端口 ip首部 源IP 目标IP mac首部 源mac 目标mac处理动作DROP 丢弃 drop会额外消耗服务器资源REJECT 拒绝 ACCEPTRETURENREDIRECTSNETDNETMASQURADE 地址伪装LOG自定义链 iptables -L :list 默认反解为域名 -n 以数字显示主机地址和端口 -v :verbose -vv -vvv 详细程度 -x :exactly 精准数据 --line-numbers添加一个自定义链条 iptables -N web_rule iptables -A web_rule -s 172.18.27.27 -j REJECT iptables -A web_rule -j RETURN在主链中引用此自定义链 iptables -I INPUT 2 -j web_rule 删除自定义链时必须删除所有引用自定义链的规则而且要将链清空,才能删除可以通过iptables-save > /tmp/iptbles.rule将iptables规则保存在文件中 通过iptables-restore < /tmp/iptables.rule 中读取 规则 iptables [-t tables] SUBAOMMAND chain [num | rule-spec]规则 A,D,I,R链 -N,-X,-Z,-F,-E,-P查看 -L,-n,-v ,-x,--line-numbers网络防火墙 本身只是通过IP报文的首部信息 来筛选rule-spec 所以并不能匹配端口 ip报文信息 源IP 目标IP 上层协议 VPN经由隧道实现vdftptcp 139 445udp 137 138