软件防火墙-iptables简介

防火墙
硬件: 一层,阻止数据到达目标物理设备
软件: 四层,阻止数据流入内核的某个位置
----@ DDOS:攻击 措施:首先增大带宽,设定物理防火墙

概念:防火墙是位于两个或多个网络间,实行网络间访问控制的一组组件集合的硬件或软件(用于互联网与企业间信息安全,监控往来传输)。

功能:隔离网络,划分网络区域,指定访问策略控制在不同区域间数据传输。

实现:Linux防火墙功能由内核实现
---------------------------------------------------------------------
修改防火墙或者关闭防火墙
firewall-cmd --permanent --add-service=glusterfs
firewall-cmd --reload
或者
systemctl stop firewalld.service
---------------------------------------------------------------------
iptables: rhel6
靠内核中一个名称为netfilter的模块实现
用户空间管理工具: iptables --> 向内核发起系统调用,调用netfilter模块
netfilter: 调用其它5个内核函数

五个链: 五个内核工作区域;五个内置链(主链)-------对应五个钩子函数
五链:是规则的实现;本质就是向函数传递参数;规则一旦定义,立即生效
PREROUTING INPUT FORWARD OUTPUT POSTROUTING

四表:逻辑概念,功能的集合(功能的体现);是具有相同功能链的集合
filter: 过滤;默认就使用该表
INPUT FORWARD OUTPUT

nat: 地址转换
PREROUTING OUTPUT POSTROUTING

mangle: 标记
PREROUTING INPUT FORWARD OUTPUT POSTROUTING

raw: 追踪
PREROUTING OUTPUT

二.iptables工具使用: [规则] [规则编号]
基本格式: iptables [-t 表] 选项 链 匹配条件 + 处理动作
1》基本选项的使用:
针对链的管理:-N -X -E -P
针对链上规则的管理: -L -F -A -I -D -R -Z -S
规则生效的特点:
规则是自上而下生效,一旦匹配成功,则不再向下匹配
一般范围广的规则,写在后面;条件越多的,写在上面

#iptables -L
-n: 不反解名称
--line-number: 显示规则行号
-v: 详细显示
-vv: 更详细显示
iptables:
-L -F -N -X -E -P -A -I -D -R -Z -S

-L, --list -F, --flush -N, --new-chain -X, --delete-chain
(列出) (清空) (创建新链) (删除创建链)
-E, --rename-chain -P, --policy -A, --append -I, --insert
(重命名链) 修改默认(策略) (追加规则) (插入规则)
-D, --delete -R, --replace -Z, --zero -S, --list-rules
(删除规则) (替换规则) (清空防火墙引用计数) (显示规则)

2》规则开机生效、规则保存、规则恢复:

iptables管理: 虽然不是服务,以服务方式管理
#service iptables restart 重启iptables

开机自动生效:#chkconfig iptables on 让iptables开机自启

----默认保存(现有规则)
#service iptables save
/etc/sysconfig/iptables 默认保存规则的文件
恢复规则重启iptables

----指定保存(现有规则)
#iptables-save > /tmp/firewall.txt
恢复规则:
#iptables-restore < /tmp/firewall.txt

----编辑规则文件
#vim /tmp/loring.txt
*filter
: INPUT ACCEPT [0:0]
: OUTPUT ACCEPT [0:0]
: FORWARD ACCEPT [0:0]
-A INPUT -s 192.168.0.11 -j DROP
-A INPUT -s 192.168.0.22 -j DROP
-A OUTPUT -s 192.168.0.33 -j DROP
COMMIT

恢复规则
#iptables-restore < /tmp/loring.txt

三. 匹配条件:注意:所有匹配条件,都可以组合一起使用
(一).基本匹配:
源地址匹配:-s(可网段) 目标地址匹配:-d 流入接口匹配:-i 流出接口匹配: -o 协议匹配:-p

(二).隐式扩展: 可以不写匹配名称,但是必须要隐藏在对应协议的后面
1. 端口匹配:目标端口匹配:--dport
源端口匹配: --sport
2. 标志位匹配: --tcp-flags SYN,ACK,FIN,RST SYN
--syn
3. icmp协议状态匹配: --icmp-type 0 | 8
icmp状态:
0: echo-replay 响应
8: echo-request 请求

(三).显示扩展:必须写匹配名称
1. 多端口匹配: multiport --dports | --sports
2. 多地址匹配: iprange --src-range | --dst-range 注意:给定的范围可以跨网段
3. 匹配mac地址: mac --mac-source 注意: 只能使用--mac-source匹配源mac地址

4. 限制: limit --limit 6/m --limit-burst=3 注意:burst的值,代表前几个数据包不受限定
5. 状态匹配: state --state {NEW | ESTABLISHED | RELATED}
NEW: 新请求的数据包
ESTABLISHED: 以连接状态的数据包
RELATED: 相关联的数据包
6. 时间匹配: time
--datestart --datestop 日期 + 时间
--timestart --timestop 时间
--weekdays 星期
--monthdays 日
7. 字符串匹配:string --string "字符串" --algo bm

四.自定义链: 主要为了减少主链上的规则 (自定义链可以被嵌套引用)自定义连只有被引用才有意义
#iptables -N loringapp
#iptables -A INPUT -p tcp --dport 80 -j loringapp

五.地址转换: nat表 *****

1.端口转换: REDIRECT ---- “-j REDIRECT --to-port ” *****
#iptables -t nat -A PREROUTING -s 192.168.0.248 -p tcp --dport 80 -j REDIRECT --to-port 8090

2.目标地址转换: DNAT --- “-j DNAT --to-destination” 实现反向代理;从公网到私网
#iptables -t nat -A PREROUTING -d 192.168.1.248 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.247

3.源地址转换: SNAT --- “-j SNAT --to-source” 实现正向代理;从私网到公网
#iptables -t nat -A POSTROUTING -s 192.168.1.222 -p tcp --dport 80 -j SNAT --to-source 192.168.0.248

六.防火墙标记:mangle
1.配置防火墙: 在node2上,通过TTL值给数据包打标记。
打标签给数据包
#iptables -t mangle -A PREROUTING -m ttl --ttl-eq 64 -j MARK --set-mark 10
给标签数据包设定规则
#iptables -t filter -A FORWARD -m mark --mark 10 -j ACCEPT
修改TTL
#echo 128 > /proc/sys/net/ipv4/ip_default_ttl

原文地址:https://www.cnblogs.com/zhangshan-log/p/13745274.html