目录(持续更新)
基础-第0章-安装
基础-第1章-基本操作
基础-第2章-磁盘及文件系统管理
基础-第3章-获得帮助
基础-第4章-用户及权限基础
基础-第5章-网络基本配置
基础-第6章-管道,重定向及文本处理
基础-第7章-系统启动详解
进阶-第1章-日志服务
进阶-第2章-DNS域名服务器
进阶-第3章-FTP文件共享服务
进阶-第4章-NFS文件共享服务
进阶-第5章-SMB文件共享服务
进阶-第6章-WEB服务Apache篇
进阶-第7章-电子邮件服务
进阶-第8章-Linux服务基础及管理
高级-第1章-LVM逻辑卷
高级-第2章-高级权限ACL
高级-第3章-RAID提升速度及冗余
高级-第4章-高级网络-网卡绑定,子端口
高级-第5章-SELinux安全系统基础
高级-第6章-IPTable防火墙基础
高级-第7章-Linux远程管理-SSH、VNC
第6章 IPTable防火墙基础
第一节
网络访问控制
Linux作为服务器,对外提供一些基于网络服务
通常需要网络访问控制,类似防火墙
厂家爱你访问控制包括:哪些IP可访问的服务器,协议,接口,数据包修改
如可能受到某个IP攻击,这时就禁止所有来自IP的访问
Linux 内核集成了网络访问控制功能 通过netfilter模块实现
IPTables
用户层我们可以哦那个过iptables程序对netfilter进行控制管理
netfilter可以对数据进行允许 丢弃 修改操作
netfilter支持通过以下方式对数据包进行分类
源IP地址
目标IP地址
使用接口
使用协议 ( TCP UDP ICMP )
端口号
连接状态 ( new ESTABLISHED RELATED INVALID)
过滤点
INPUT 出流量
FORWARD 转发数据
OUTPUT 入流量
PREROUTING 路由前
POSTROUTING 路由后
过滤表
三种表:
filter (chain)用于对数据进行过滤 只用在 INPUT FORWARD OUTPUT 过滤点
nat用以多数据包的源,目标IP地址进行修改 只用在 OUTPUT PREROUTING POSTROUTING过滤点
mangle用以对数据包进行高级修改 用于所有过滤点
常用功能
作为服务器
过滤本地流量
过滤本地发出流量
作为路由
过滤转发流量
修改转发数据
规则
通过规则对数据进行访问控制
一个规则使用一行配置
规则按顺序排列
当收到发出转发数据包时,使用规则对数据包进行匹配,按规则顺序进行逐条匹配
数据包按照第一个匹配上的规则执行相关动作:丢弃,放行,修改
没有匹配规则,则使用默认动作(每个检查点都有默认动作)
通过命令 iptables -t filter -A INPUT -s 192.168.1.1 -j DROP
表 链 匹配属性 动作
表:规定使用的表(filter nat mangle 不同表有不同功能)
链:规定过滤点 INPUT FORWARD OUTPUT PREROUTING POSTROUTING
匹配属性:规定匹配数据包的特征
匹配后的动作:放行 丢弃 记录 ACCEPT DROP REJECT
第二节
基础配置
表:规定使用的表
filter
nat
mangle
链:规定过滤点
INPUT
FORWARD
OUTPUT
PREROUTING
POSTROUTING
匹配属性:
规定匹配数据包的特征
源,目标地址 ,协议(TCP UDP ICMP )
端口号
接口
TCP状态
匹配后的动作:
放行 ACCEPT
丢弃 DROP
记录 REJECT (返回信息)
命令操作(临时生效)
iptables status 查看默认状态
列出现有所有规则
iptables -L
插入一个规则
iptables -I INPUT 3 -p tcp --dport 22 -j ACCEPT
插入到规则第3条 所有端口22的TCP数据全部允许进入
删除一个iptables规则
iptables -D INPUT 3
iptables -D INPUT -s 192.168.1.2 -j DROP
删除所有规则
iptables -F
参数匹配
基于IP地址
-s 192.168.1.1 源地址
-d 10.0.0.0/8 目标地址
基于接口
-i eth0 接收流量
-o eth1 发出流量
排除参数
-s '!' 192.168.1.0/24 !为取反操作
基于协议及端口
-p tcp --dport 23
-p udp --sport 23
-l icmp
例:
检测到来自192.168.1.100攻击 屏蔽所有这个IP的流量
iptables -A INPUT -s 192.168.1.100 -j DROP
屏蔽所有访问80网页服务的流量
iptables -A INPUT -s tcp --dport 80 -j DROP
屏蔽所有192.168.1.0到服务器的22端口ssh流量
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j DROP
iptables -A INPUT -i eth0 -j ACCEPT
FORWARD 路由设备使用
FORWARD 对所有数据转发控制
如:禁止所有 从192.168.1.0/24 到目标10.1.1.0/24 的流量
iptables -A FORWARD -s 192.168.1.0/24 -d 10.1.1.0/24 -j DROP
NAT
NAT 网络地址转换是用来对数据包的IP地址进行修改的机制,NAT分为两种
SNAT 源地址转换 常用伪装内部地址
DNAT 目标地址转换 通常用于跳转
iptables 中实现的 NAT 功能是NAT 表
常用NAT
通过NAT 进行跳转 转发到192.168.1.10
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-dest 192.168.1.10
DNAT 只能用在PREROUTING上
通过NAT 进行出向数据跳转
iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-dest 192.168.1.100:8080
通过NAT对数据伪装 一般意义的NAT 将内部地址全部伪装为一个外部公网IP
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
所有内网地址伪装成eth0个公网IP地址
通过NAT隐藏IP
iptables -t nat -A POSTROUTING -j SNAT --to-source 1.2.3.4
保存配置文件
通过iptables修改需要写入/etc/sysconfig/iptables配置文件
可以通过命令将iptables规则写入配置文件 保存后会覆盖
service iptables save
注意
远程管理 修改iptables
需要允许来自客户端主机的SSH流量确保是第一条iptable规则
以免失误将自己锁在外面