iptables的简单应用

1.简介

    netfilter位于Linux内核中的包过滤防火墙功能,称为Linux防火墙的“内核态
    iptables位于/sbin/iptables,是用来管理防火墙的命令工具,为防火墙体系提供过滤规则/策略,决定如何过滤或处理到达防火墙主机的数据包,称为Linux防火墙的“用户态

    iptables是就是一个用户端的程序,给内核里的netfilter软件提供参数,告诉netfilter如何去过滤数据(哪些数据让它过,哪些不让它过)

2.iptables的四表五链

2.1 四表

        规则表具有某一类相似用途的防火墙规则,规则按照不同处理时机区分到不同的规则链以后,被归置不同的“表”中,规则表是规则链的集合。

默认的4个规则表
    raw表:确定是否对该数据包进行状态跟踪
    mangle表:为数据包设置标记
    nat表:修改数据包中的源、目标IP地址或端口   -->实现snat和dnat的功能
    filter表:确定是否放行该数据包(过滤)

规则表间的优先顺序
    依次为:raw、mangle、nat、filter

2.2 五链

        规则的作用在于对数据包进行过滤或处理,根据处理时机的不同,各种规则被组织在不同的“链”中,规则链是防火墙规则/策略的集合
默认的5种规则链
    INPUT:处理入站数据包  -->进入你的系统里的应用程序
    OUTPUT:处理出站数据包  -->应用程序的数据离开电脑
    FORWARD:处理转发数据包  --》做路由器使用,转发数据
    POSTROUTING链:在进行路由选择后处理数据包   -->SNAT
    PREROUTING链:在进行路由选择前处理数据包   -->DNAT

规则链间的匹配顺序
    入站数据:PREROUTING、INPUT
    出站数据:OUTPUT、POSTROUTING
    转发数据:PREROUTING、FORWARD、POSTROUTING

规则链内的匹配顺序
    按顺序依次进行检查,找到相匹配的规则即停止(LOG策略会有例外)
    若在该链内找不到相匹配的规则,则按该链的默认策略处理(DROP或者ACCPET)
 

3.iptables的规则

iptables命令的语法格式

        iptables  [-t 表名管理选项  [链名]  [条件匹配]  [-j 目标动作或跳转]

        iptables -t nat -A  POSTROUTING  -s 192.168.249.0/24 -o eth0 -j SNAT --to-source 192.168.1.7

几个注意事项

不指定表名时,默认表示filter

不指定链名时,默认表示该表内所有链

除非设置规则链的缺省策略,否则需要指定匹配条件

3.1 查看规则

iptables -L 默认查看的是filter表
-t 接表名 查看对应表的规则 

[root@dhcp ~]# iptables -L -t nat
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     

 3.2 设置规则内容

-A 是在已经设置的规则后面加一条规则 iptables -t filter -A INPUT -p tcp -j ACCEPT

-I 是插入规则 指定数字选择插入位置  iptables -A INPUT -p icmp --icmp-type 8 -j DROP  
插入规则到第2条的位置

--icmp-type 8  不允许收到请求报文  就是禁止别人ping自己,自己可以ping别人,也不能ping自己 如果是0就是自己ping不了别人,不能收到响应报文

[root@dhcp ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       icmp --  anywhere             anywhere             icmp echo-request

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@dhcp ~]# ping 192.168.249.2
PING 192.168.249.2 (192.168.249.2) 56(84) bytes of data.
64 bytes from 192.168.249.2: icmp_seq=1 ttl=128 time=0.928 ms
64 bytes from 192.168.249.2: icmp_seq=2 ttl=128 time=0.268 ms
^C
[root@dhcp ~]# ping 192.168.249.160
PING 192.168.249.160 (192.168.249.160) 56(84) bytes of data.
^C
--- 192.168.249.160 ping statistics ---
6 packets transmitted, 0 received, 100% packet loss, time 5024ms

-P 是设置五链的规则, 只有俩个选择(DROP或ACCPET)  iptables -P INPUT DROP 

-p 是指定协议

-j 指定策略  ACCPET 或 DROP(这里是指在filter表的操作) 

--line-numbers 用数字的形式显示

一般设置链的规则都是 DROP, 然后在添加允许进出数据的规则。要先设定规则,在设置链的规则,不然会直接什么数据包都接受不了,直接断开你的ssh连接。

iptables -t filter  -A INPUT -p tcp -j ACCEPT
iptables -t filter  -I INPUT -p udp -j ACCEPT
iptables -t filter  -I INPUT 2 -p icmp -j ACCEPT

iptables -P INPUT  DROP

3.3 删除设置的规则

iptables -F 删除一整个表的规则

iptables -D 删除某个或某些规则

iptables -D INPUT 1 删除filter表中INPUT链的第一条规则

iptables -D INPUT -p icmp --icmp-type 0 -j DROP 可以指定要删除的规则ip

[root@dhcp ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       icmp --  anywhere             anywhere             icmp echo-request

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination      

[root@dhcp ~]# iptables -D INPUT 1
[root@dhcp ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination       

3.4 iptables 规则的保存

因为iptables的规则在内存中,一旦服务器关闭就会消失,所以要保存起来

导出规则  iptables-save   结合重定向输出“>”符号保存规则信息

导入规则 iptables-restore 结合重定向输入“<”符号恢复规则信息

iptables-save > /etc/sysconfig/iptables  保存规则  保存到你想要保存的地方

iptables-restore < /etc/sysconfig/iptables  导入规则

[root@dhcp ~]# iptables-save > ~/iptables
[root@dhcp ~]# cat iptables 
# Generated by iptables-save v1.4.21 on Wed Jan  3 11:09:31 2024
*nat
:PREROUTING ACCEPT [11:924]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [18:1786]
:POSTROUTING ACCEPT [18:1786]
COMMIT
# Completed on Wed Jan  3 11:09:31 2024
# Generated by iptables-save v1.4.21 on Wed Jan  3 11:09:31 2024
*filter
:INPUT ACCEPT [67:3904]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [35:2680]
-A INPUT -p icmp -m icmp --icmp-type 0 -j DROP
COMMIT
# Completed on Wed Jan  3 11:09:31 2024
[root@dhcp ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       icmp --  anywhere             anywhere             icmp echo-reply

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@dhcp ~]# reboot
[root@dhcp ~]# iptables-restore < iptables 
[root@dhcp ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       icmp --  anywhere             anywhere             icmp echo-reply

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

  • 24
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值