Linux-C-高级-第6章-IPTable防火墙基础


目录(持续更新)


基础-第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规则
以免失误将自己锁在外面

你可能感兴趣的:(Linux-C-高级-第6章-IPTable防火墙基础)