iptables防火墙笔记

来源:互联网 发布:广州积分入户积分算法 编辑:程序博客网 时间:2024/05/19 17:51

防火墙,防火

防火墙的位置:
网络的边界

防火墙根据什么对外网的进出数据流进行控制?
源IP、目标IP、源端口号、目标端口号、协议、指针位(SYN、FIN、ACK、RST)、状态(NEW、ESTABLISHED、INVIAD)、MAC地址等

防火墙的分类?
1、从软硬角度
软件:
ISA、windows自带的、iptables
硬件:
ASA、juniper

2、工作的层次不同
网络防火墙:工作在三层
状态防火墙:工作在三层
代理防火墙:工作在应用层 反向代理(squid、nginx、varnish、haproxy、lvs)

iptables:

五链(钩子函数):
INPUT:
OUTPUT:
FORWARD:
PREROUTING:
POSTROUTING:

四表:
raw:负责数据的状态跟踪
PREROUTING
OUTPUT
mangle:修改数据的标识
INPUT
OUTPUT
FORWARD
PREROUTING
POSTROUTING
nat:修改源、目标ip或端口
PREROUTING
POSTROUTING
OUTPUT
filter:数据的过滤
INPUT
OUTPUT
FORWARD

书写规则的方法:
“堵”:使用画像一个一个比对 白名单
“通”:使用“良民证”,有可以通过,没有拒绝通过 黑名单

规则的匹配方法:
自上往下,逐一匹配;匹配即停止(除log外),未匹配则使用默认

注意:
书写规则时一定注意先后顺序

书写规则的建议:
越详细越写在规则的前面,越模糊越往后;如模糊包含详细则使用模糊。

表的匹配顺序:
raw—–> mangle—–> nat—–> filter

规则链的匹配顺序:
入站数据:PREROUTING—->INPUT
出站数据:OUTPUT—–>POSTROUTING
转发数据:PREROUTING—–>FORWARD——>POSTRING

开启linux的路由转发功能:
1、临时
[root@localhost ~]# echo “1” > /proc/sys/net/ipv4/ip_forward

[root@localhost ~]# /sbin/sysctl -w net.ipv4.ip_forward=1

2、永久
[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 //将原来的0改为1,
[root@localhost ~]# sysctl -p //使对/etc/sysctl.conf的修改的生效

iptables规则的语法:
iptables [-t 表名] 管理选项 [链名] [条件匹配] [-j 动作或跳转]
注意事项:
1、中括号内的内容可以省略
2、缺省表,指的是filter表
3、链名、动作或跳转字母必须大写
4、设置链的默认策略/规则,可以不写条件匹配,此外必须都写
5、不指定链名,为该表内的所有链

动作:
ACCEPT 允许
DROP 丢弃,时不时会返回一些信息
LOG 记录日志
REJECT 拒绝
SNAT 修改源IP地址
DNAT 修改目标IP地址
MASQUERADE 地址伪装

管理选项:
编辑规则:
-A:在指定链末尾添加新规则
-I: 在指定链首部或指定位置插入规则
-R: 修改、替换指定链中的某一条规则,按规则的序号或内容确定
-P:设置指定链的默认规则
-N:新建一条用户自定义的规则链
清除规则:
-D:删除指定链中的某一条规则,按规则的序号或内容确定
-F:清空指定链中的所有规则
-X:删除指定表中用户自定义的规则链
查看规则:
-L:列出指定中所有的规则进行查看,若未指定链名,则列出表中所有链的内容
-n:使用数字形式显示输出结果
-v:插卡规则列表时显示详细信息
–line-numbers:查看规则列表时,同时显示规则在链中的序号
-h:查看命令的帮助信息
-V:查看iptables命令工具的版本信息

条件匹配:
通用条件匹配:
-p 协议名称: 常用的有ip、tcp、udp、icmp等 !取反 如:-p !icmp(除了icmp协议)
-s 源IP地址或-s 源网络/子网掩码
-d 目标IP地址或-d 目标网络/子网掩码
-i 接口名称: 如 -i eth0(数据从网卡eth0进入)
-o 接口名称: 如 -o eth2(数据从网卡eth2出去)

隐含条件匹配:
–sport:源端口号 端口号1:端口号2(表示连续的端口)
–dport:目标端口号
–tcp-flags:
格式:–tcp-flags 检查的标志位范围 设置的标志位
说明:
标志位的范围:SYN,RST,ACK,FIN
设置的标志位:该标志位为1,则匹配规则
例如:iptables -A INPUT -s 192.168.100.20 -p tcp –tcp-flags SYN,ACK,RST,FIN SYN -j ACCEPT

iptables -A INPUT -s 192.168.100.20 -p tcp –syn -j ACCEPT
! –syn:
–icmp-type: icmp消息的类型
echo-request/8: 请求
echo-reply/0: 回应

显示条件匹配:
-m limit:
–limit 速度:n/s:每秒n个数据包 n/m:每分钟n个数据包 n/h:每小时n个数据包
–limit-burst 峰值: 默认是5
-m connlimit:
–connlimit-above n: 运行建立n个以上的连接
!–connlimit-above n: 只允许连接小于等于n个连接
-m state:
–state:
new(发起连接请求)、established(连接建立成功)、related(连接相关联)、invalid(无效)、none(无)
-m iprange:
–src-range IP地址范围:
–dst-range IP地址范围:使用“-”表示连续
-m multiport:
–sports 源端口范围:
–dports 目标端口范围:使用“:”表示连续;多个不连续的端口使用“,”分割
-m mac:
–source-mac 源MAC:

规则的保存:
service iptables save:将编辑的好的规则保存至/etc/sysconfig/iptables中,iptables服务重启时会自动应用保存在该文件中的规则
iptables-save:将编辑好的规则导出至指定位置 例如:iptables-save > /tmp/defaultrule
iptables-restore:导入编辑好的规则 如:iptables-restore < /tmp/defaultrule

原创粉丝点击