iptables防火墙 - 01

Iptables防火墙

一、Iptables防火墙概述
1.应用场景
1.主机安全
2.内部共享上网
3.端口或IP转发
2.iptables注意事项
1.匹配规则是从上往下依次执行的
2.只要匹配到某一条规则,就不会在往下执行
3.如果都没有匹配到规则,就执行默认规则
4.默认规则最后执行,默认允许所有
5.经常使用的规则尽量往前放
二、iptables四表五链
1.四表五链
#四表:
filter表——过滤数据包
Nat表——用于网络地址转换(IP、端口)
Mangle表——修改数据包的服务类型、TTL、并且可以配置路由实现QOS
Raw表——决定数据包是否被状态跟踪机制处理
#五链:
INPUT链——进来的数据包应用此规则链中的策略
OUTPUT链——外出的数据包应用此规则链中的策略
FORWARD链——转发数据包时应用此规则链中的策略
PREROUTING链——对数据包作路由选择前应用此链中的规则(所有的数据包进来的时侯都先由这个链处理)
POSTROUTING链——对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)

在这里插入图片描述

2.filter表
#过滤数据包,主要作用就是阻止和允许访问
1.INPUT链:过滤流入主机的数据包
2.OUTPUT链:过滤流出主机的数据包
3.FORWARD链:负责转发流经主机的数据包
3.Nat表
#用于网络地址转换,主要作用就是端口转发和ip转发
1.OUTPUT链:过滤流出主机的数据包
2.PREROUTING链:数据包到达防火墙时进行判断,改写数据包的地址或或端口(进)
3.POSTROUTING链:数据包到达防火墙时进行判断,改写数据包的地址或或端口(出)
三、iptables安装
1.安装
[root@lb01 ~]# yum install -y iptables-services
2.启动
[root@lb01 ~]# systemctl stop firewalld
[root@lb01 ~]# systemctl restart iptables
3.iptables常用参数
1.链管理:
    -N:new, 自定义一条新的规则链;
    -X:delete,删除自定义的规则链;
        注意:仅能删除 用户自定义的 引用计数为0的 空的 链;
    -P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:
           ACCEPT:接受
           DROP:丢弃
           REJECT:拒绝
    -E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除;
    
  ## 查看防火墙 [root@lb01 ~]# iptables -nL
2.规则管理:
    -A:append,追加;
    -I:insert, 插入,要指明位置,省略时表示第一条;
    -D:delete,删除;
        (1) 指明规则序号;
        (2) 指明规则本身;
    -R:replace,替换指定链上的指定规则;
    -F:flush,清空指定的规则链;
    -Z:zero,置零;
        iptables的每条规则都有两个计数器:
            (1) 匹配到的报文的个数;
            (2) 匹配到的所有报文的大小之和;
3.查看:
	-L:list, 列出指定链上的所有规则;
    -n:numberic,以数字格式显示地址和端口号;
    -v:verbose,详细信息;
        -vv, -vvv
    -x:exactly,显示计数器结果的精确值;
    --line-numbers:显示规则的序号;
四、iptables常用操作
1.查看防火墙策略(filter)
[root@lb01 ~]# 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 


[root@lb01 ~]# iptables -nL --line-numbers   # 显示防火墙规则的序号
2.查看指定表
-t   指定表

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

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

# 防火墙的表   raw  、nat 、filter 、mangle 
3.清空防火墙规则
#删除规则
[root@lb01 ~]# iptables -F
#删除自定义的链
[root@lb01 ~]# iptables -X
#计数器清零
[root@lb01 ~]# iptables -Z

# 只能一个一个执行, iptables -F
4.添加防火墙规则
[root@lb01 ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j DROP   # 轻易勿用

iptables 		#命令
-t 				#指定表
filter 			#指定链
-A				#添加规则
INPUT			#链的名字
-p				#指定协议
tcp				#tcp协议
--dport			#指定端口
22 				#端口
-j 				#指定动作
DROP			#丢弃

### 执行完这条命令,机器自动断开 ,然后清空所有规则才能连接 

#删除规则
[root@lb01 ~]# iptables -F
#删除自定义的链
[root@lb01 ~]# iptables -X
#计数器清零
[root@lb01 ~]# iptables -Z
5.删除防火墙规则
#1.查看防火墙规则序号
[root@lb01 ~]# iptables -nL --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
3    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:111

#2.删除防火墙规则
[root@lb01 ~]# iptables -D INPUT 1

#3.再次查看
[root@lb01 ~]# iptables -nL --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
2    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:111
五、防火墙配置实例
1.禁止端口访问
[root@lb01 ~]# iptables -t filter -A INPUT -p tcp --dport 111 -j DROP
2.拒绝IP访问
[root@lb01 ~]# iptables -t filter -A INPUT -p tcp -s 10.10.0.1 -i eth0 -j DROP  # 轻易勿用
-i		指定网卡
-s		指定源地址IP

[root@lb01 ~]# iptables -t filter -A INPUT -p tcp -s 10.10.0.1 -i eth0 -j REJECT
3.禁止IP网段访问
[root@lb01 ~]# iptables -t filter -A INPUT -p tcp -s 10.10.0.0/24 -i eth0 -j REJECT
4.只允许某个IP访问
#正规的使用方法
[root@lb01 ~]# iptables -t filter -A INPUT -p tcp -s 10.10.0.1 -i eth0 -j ACCEPT
[root@lb01 ~]# iptables -t filter -A INPUT -p tcp -s 10.10.0.0/24 -i eth0 -j DROP

#取反的使用
[root@lb01 ~]# iptables -t filter -A INPUT -p tcp ! -s 10.10.0.1 -i eth0 -j DROP

#添加允许的ip时
[root@lb01 ~]# iptables -t filter -I INPUT -p tcp -s 10.10.0.8 -i eth0 -j ACCEPT
-I		向上添加规则
六、企业一般配置
1.配置前考虑
1.考虑防火墙开在哪台机器上
2.这台机器部署了哪些服务
	nginx
	keepalive
3.服务对应的端口和协议
	80
	111
	443
	vrrp
	22
4.配置默认拒绝所有

#配置
[root@lb01 ~]# iptables -t filter -A INPUT -p tcp -m multiport --dport 80,443,111 -j ACCEPT
[root@lb01 ~]# iptables -t filter -A INPUT -p vrrp -j ACCEPT
[root@lb01 ~]# iptables -t filter -A INPUT -p tcp -s 172.16.1.6 --dport 22 -j ACCEPT
[root@lb01 ~]# iptables -P INPUT DROP

#注意天坑:

配置好以后,不要清空防火墙规则,小心删除规则,因为我们最后一条配置的是默认拒绝所有,而清空防火墙规则不会更改其状态,还是默认拒绝所有,所以完犊子了
[root@lb01 ~]# iptables -P INPUT ACCEPT
2.防火墙规则永久生效
#配置完防火墙,执行以下操作,将自己配置的规则添加到防火墙的配置文件中
[root@lb01 ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

[root@lb01 ~]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.21 on Wed Dec 16 15:39:15 2020
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [1:176]
:POSTROUTING ACCEPT [1:176]
COMMIT
# Completed on Wed Dec 16 15:39:15 2020
# Generated by iptables-save v1.4.21 on Wed Dec 16 15:39:15 2020
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [40:5168]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6379 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -s 10.10.0.1/32 -i eth0 -p tcp -j ACCEPT
-A INPUT -s 10.10.0.0/24 -i eth0 -p tcp -j DROP
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Wed Dec 16 15:39:15
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FikL-09-19

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值