防火墙iptables基础

tech2023-08-22  96

iptables防火墙

一、防火墙概述:
什么是防火墙: > 一道保护性的安全屏障 --做网络之间的隔离、保护
二、Linux包过滤防火墙
>RHEL7默认使用的使firewalld作为防火墙 >但firewalld底层还是调用包过滤防火墙iptables
三、iptables的表、链结构
>raw(状态跟踪):prerouting、output >mangle(包标记):prerouting、postrouting、input、output、forward >nat(地址转换):prerouting、postrouting、output >filter(过滤):input、forward、output

五链:INPUT入站规则、OUTPUT出站规则 FORWARD转发规则、PREROUTING路由前规则、POSTROUTING路由后规则

四、包过滤的匹配流程
>规则连内的匹配顺序 -顺序比对,匹配及停止(LOG除外) -若无任何匹配,则按照该链的默认策略处理
五、iptables用法解析
>1、基本用法 .管理程序的位置: /sbin/iptables >2、指令组成 .iptables -t 表名 选项 链名 条件 -j 目标操作 例:iptables -t filter -i INPUT -p icmp -j REJECT >3、注意事项/整体规律 . 可以不指定表,默认为filter表 .可以不指定链,默认为对应表所有链 .如果没有匹配的规则,则使用防火墙默认规则 .选项/链名/目标操作用大写字母,其余小写
六、基本的目标操作

ACCEPT: 允许通过/方形 DROP:直接丢弃,不做任何回应 REJECT:拒绝通过,必要时会给出提示 LOG:记录日志,然后传给下一条规则

七、常用的管理选项
>添加规则: -A 在链的末尾追加一条规 -l 在链的开头(或指定序号)插入一条规则 >查看规则: -L 列出所有的规则 -n 以数字的形式显示地址、端口等信息 --line-numbers 查看规则是显示序号 >删除规则: -D 删除链内指定序号(或内容)的一条规则 -F 清空所有的规则 >默认策略: -P 为指定的链设置默认规则
八、规则的管理实例
1.添加新的规则
>-A 追加 -i 插入 iptables -t filter -A INPUT -p tcp -j ACCEPT #追加规则值filter表中的INPUT链的末尾,允许任何人使用tcp协议访问本机 iptables -I INPUT -p udp -j ACCEPT #插入规则值filter表的INPUT链的开头,允许任何事使用udp协议访问本机 iptables -I INPUT 2 -p icmp -j ACCEPT #插入规则至filter表中的INPUT链的第二行,允许任何人使用ICMP协议访问本机 >-p: 指定协议名或协议号
2.查看规则列表
>-L查看: iptables -nL INPUT #仅查看INPUT链的规则 target prot opt source destination ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0
3.-D删除、-F清空
iptables -D INPUT 3 #删除filter表的INPUT链的第三条规则 iptables -nL INPUT #查看规则确认是否删除 >>依次清空四个表规则: iptables -t nat/mangle/raw -F
4.设置默认规则
>所有链的初始默认规则均为ACCEPT >通过 -P 选项可以重置默认规则 >ACCEPTE 或者 DROP 默认规则不允许设置REJECT iptables -t filter -P INPUT DORP #设置INPUT链的默认规则为DROP
九、针对filter的介绍
1、filter表的控制
>1、防护类型及条件 主机/网络型防护; 开启内核的ip转发; 基本的匹配条件。 >2、过滤规则: 封禁IP地址/网段 保护特定网络服务 禁ping相关策略处理 >3.开启内核IP转发: echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf 永久配置 echo 1 > /proc/sys/net/ipv4/ip_forward 临时配置
2、基本匹配条件
>通用匹配: -可直接使用,不依赖与其他条件或扩展 -包括网络协议、IP地址、网络接口等条件 ----选项----|------用法----------- 协议匹配 -p 协议名 地址匹配 -s 源地址、-d 目标地址 接口匹配 -i 收数据的网卡、-o 发数据的网卡 ------------|-------------------- >隐含匹配: -要求以特定的协议匹配作为前提 -包括端口、TCP标记、ICMP类型等条件 ----选项----|------用法------------- 端口匹配 --sport 源端口、 --dport 目标端口 ICMP类型匹配 --icmp-type ICMP类型 ------注:需要取反条件时,需要用!----
3、过滤规则示例
>封网段禁IP -主机防护,针对入站访问的源地址 iptables -A INPUT -s 192.168.2.0/24 -j DROP #丢弃192.168.2.0/24网段所有主机发送给本机的数据包 -网络防护,针对转发访问的源地址 >保护特定网络服务 -限制对指定服务端口的访问
4、禁ping相关策略处理

ping的通信流程:

> A ----ping请求(echo-request)---> B > A <----ping相应(echo-reply)-------B

需求:

>允许本机ping其他主机,但是禁止其他主机ping本机 >iptables -A INPUT -p icmp --icmp-type echo-request -j DROP #仅禁止入站的ping请求,不拒绝入站的ping回应包
十、关于防火墙规则匹配的扩展条件
1、扩展条件的方法
>前提条件: -有对应的防火墙模块支持 >基本用法: - -m 扩展模块 --扩展条件 条件值 - 示例: -m mac --mac-source 00:0C:29:74:BE:21
2、常见的扩展条件类型
>1. MAC地址匹配: -m mac --mac-source MAC地址 >2. 多端口配置: -m multiport --sports 源端口列表 -m multiport --dports 目标端口列表 >3、IP范围匹配: -m iprange --src-range IP1-IP2 -m iprange --dst-range IP1-IP2
3、扩展案例
>1、根据MAC 地址封锁主机 适用于交换网络,针对源MAC地址 --不管其IP地址变换。 》》通过抓取数据包获取访问端的MAC地址 -iptables -A INPUT -p tcp --dport 22 \ -m mac --mac-source 52:54:00:00:00:0b -j DROP #拒绝主机远程本机 >2、 多端口案例 一条规则开放多个端口 --比如web、ftp、mail、ssh等 iptables -A INPUT -p tcp -m multiport --dports 20,25,80,110,143,16501:16800 -j ACCEPT #一次性开启20,25,80,110,143,16501到16800所有的端口 >3、根据ip范围封锁主机 ssh登录的IP范围控制 -允许从192.168.4.10-192.168.4.20登录 -禁止从192.168.4.0/24网段其他主机登录 iptables -A INPUT -p tcp -dport 22 -m iprange --src-range 192.168.4.10-192.168.4.20 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -s 192.168.4.0/24 -j DROP
十一、NAT表的典型应用
1、NAT转换原理
>私有地址的局限性 --比如看网页、收邮件、。。。 --源地址为私有地址,服务器如何给出回应----需要通过转换
2、SNAT源地址转换
> -用来修改数据包的源地址 -仅用于nat表的POSTROUTING链
3、配置SNAT共享上网
>配置关键策略 - 需要开启路由配置 -选择路由后,针对来自局域网,即将从外网接口发出去的包,将源IP地址修改为网关的公网IP地址 iptables -t nat -A POSTROUTING -s 192.168.4.0/24(局域网网段地址) -p tcp --dport 80 -j SNAT --to-source 192.168.2.5(外网接口IP地址)
4、地址伪装策略
>共享动态公网IP地址实现上网 -主要针对外网接口的IP地址不固定情况 -将SNAT改为MASQUERADE -对于ADSL宽带拨号连接,网络接口可写ppp+ iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -o ens33 -j MASQUERADE --to-source 174.16.16.1
5.iptables的常见生产应用
1.端口映射 2.把访问外网ip及端口映射到内网的某个服务端口 3.把访问LVS/nginx的外网vip及80端口请求映射到IDC负载均衡内部的ip及端口上。 4.大并发场景的iptables优化 net.nf_conntrack_max = 25000000 net.netfilter.nf_conntrack_max = 25000000 net.netfilter.nf_conntrack_tcp_timeout_建立= 180 net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120 net.netfilter.nf_conntrack_tcp_timeout_net_wait_=60 net_netfilter.nf_conntrack_tcp_timeout_time_wait_120
6.解决DDOS攻击的案例脚本
netstat -na|grep EST|awk -F “[ :]+” ‘{print $6}’|sort|uniq -c >>/tmp/a.log while true do grep EST a.log|awk -F ‘[ :]+’ ‘{print $6}’|sort|uniq -c >/tmp/tmp.log exec </tmp/tmp.log while read line do ip=echo $line|awk "{print $2}" count=echo $line|awk "{print $1}" if [ $count -gt 100 ] && [ iptables -L -n|grep $ip|wc -l -lt 1 ] then iptables -I INPUT -s ip−jDROP//−I将其封杀在iptables显示在第一条 echo"ip−jDROP//−I将其封杀在iptables显示在第一条echo"line is dropped" >>/tmp/dropip.log fi done sleep done netstat -na|grep EST|awk -F “[ :]+” ‘{print $6}’|awk ‘{S[$1]++}END{for(i in S) print i,S[i]}’
最新回复(0)