iptables学习笔记

Iptables防火墙

1.防火墙的种类及使用说明

  • 硬件防火墙
    • 三层路由:华为/H3C/Cisco,公司使用H3C SecPath F1000-AK125ACG1000-AK230应用网关作为防火墙
    • 深信服
    • Juniper
  • 软件防火墙
    • iptables
    • firewalld
  • 云防火墙
    • 阿里云:安全组

2.必须熟悉的名词

  • 容器:瓶子,罐子,存放东西
  • 表(table):存放的容器
  • 链(chain):存放规则的容器
  • 规则(policy):准许或拒绝规则
Netfilter表(table)链(chains)规则(policy)
一栋楼楼里的房子房子里的柜子柜子里的物品

3.iptables执行过程

3.1 工作流程

  1. 防火墙是层层过滤的,实际是按照配置贵的的顺序从上到下,从前到后进行过滤的.

  2. 如果匹配上规则,即明确表示是阻止还是通过,数据包就不在向下匹配新的规则

  3. 如果规则中没有明确表示是阻止还是通过,也就是没有匹配规则,向下进行匹配,直到匹配**默认规则**得到明确的组织还是通过.

  4. 防火墙的**默认规则所有规则执行完才执行的**

3.2 表与链

  • iptables是 4 表 伍 链

  • 4表: filter表 nat表 raw表 mangle表

3.2.1 表的说明

一.filter表

  • 防火墙:屏蔽或准许端口/ip
filter表强调:主要和主机自身有关,真正负责主机防火墙功能的(过滤流入流出主机的数据包)
filter表是iptables默认使用的表,这个表定义了三个链(chains) 工作场景:企业主机防火墙
INPUT负责过滤所有目标地址是本地地址的数据包,通俗的说:就是过滤进入主机的数据包
FORWORD负责转发流进记住的数据包.器转发的作用,和NAT关系很大,LVS NAT模式,net.ipv4.ip_foreword=0
OUTPUT处理所有源地址是本机地址的数据包,即从主机发出去的数据包

二.nat表

  • 实现nat功能
    • 实现共享上网(内网服务器上外网)
    • 端口映射
    • ip映射
nat表
OUTPUT和主机发出去的数据包有关,改变主机发出数据包的目的地址
PREROUTING
POSTROUTING

4.安装iptables

4.1停止并禁用firewalld自启动

[root@k8s-02 ~]# systemctl stop firewalld
[root@k8s-02 ~]# systemctl list-unit-files | grep firewalld
firewalld.service                             enabled #可以看到是开机自启
[root@k8s-02 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

4.2安装iptables-services

[root@k8s-02 ~]# yum install -y iptables-services #安装
[root@k8s-02 ~]# systemctl start iptables	#启动
[root@k8s-02 ~]# systemctl enable iptables	#自启
[root@k8s-02 ~]# iptables -nL #看一下规则
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

5.使用iptables

5.1 iptables命令参数

参数含义
-L显示表中的所有规则
-n不要把端口或ip反向解析为域名
-t指定表 --不指定默认是filter表
-Aappend追加准许ACCEPT 一般是加入准许类规则使用
-Ddelete 删除 -D INPUT 1
-Iinsert拒绝的规则放在最上面
参数含义
-pprotocal协议 tcp/udp/icmp/all
dport目标端口
–sport源端口
-s–source 源IP 指定端口需要加上-p 协议
-d–destination 目标IP
-m指定模块 (多个端口multiport)
-i输入的时候从哪个网卡进入
-o输出的时候从哪个网卡出去
参数含义
-j满足条件后的动作:DROP/ACCEPT/REJECT
参数含义
-F清除所有规则,不会处理默认的规则
-X删除所有用户自定义的链
-Z链的计数器清零(数据包计数器与数据包字节计算器)

5.2配置filter表规则

  • 清空所有配置
[root@k8s-01 local]# iptables -F
[root@k8s-01 local]# iptables -X
[root@k8s-01 local]# iptables -Z
[root@k8s-01 local]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
  • 允许访问22端口
root@iptables ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  • 禁止某个IP访问
[root@iptables ~]# iptables -I INPUT -s 172.20.20.18 -j DROP #设置规则
[root@iptables ~]# iptables -nL	#查看
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       all  --  172.20.20.18         0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@iptables ~]# iptables -D INPUT 1 #删除
[root@iptables ~]# iptables -nL	#再次查看
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
  • 开放/禁止多个端口
[root@iptables ~]# iptables -I INPUT -p tcp -m multiport --dport 1024:1026 -j ACCEPT #开放1024-1028端口
[root@iptables ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 1024:1026
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination    
  • 禁止ping

    • 内核操作(临时)
    [root@iptables ~]# echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all	#禁止
    [root@iptables ~]# echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all 	#允许
    
    • 内核操作(永久)
    echo net.ipv4.icmp_echo_ignore_all=1 >/etc/sysctl.conf	#禁止
    echo net.ipv4.icmp_echo_ignore_all=0 >/etc/sysctl.conf	#允许
    
    • iptables操作
    iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP		#丢弃
    iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j REJECT	#拒绝
    
  • 限制并发及速率

-m limit限制模块

-m linit --limit 10/minute #限制每分钟只能有十个数据包,每6秒生成一个

–limit-burst[n]在同一时间内允许通过的请求"n"为数字,不指定默认为5

-m limit --limit 10/minute --limit-burst 5
  • 防火墙规则的保存与恢复

保存:iptables-save 默认输出到屏幕 iptables-save >/etc/sysconfig/iptables写入到配置文件

恢复:iptables-restore </etc/sysconfig/iptables,或者重启iptables服务

5.3 nat表配置

  • 查看nat表
[root@iptables ~]# iptables -nL
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@iptables ~]# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination    
  • 配置
[root@iptables ~]# iptables -t nat -A POSTROUTING -s 172.20.20.0/24 -j SNAT --to-srouce 10.0.0.1
# -s 172.20.20.0/24 需要转换的地址   --to-srouce 10.0.0.1 转换成的地址
[root@iptables ~]# echo 'net.ipv4.ip_forward = 1' >>/etc/sysctl.conf #开启内核的转发
[root@iptables ~]# sysctl -p #重新载入
net.ipv4.ip_forward = 1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值