专栏首页CaiRuiIptables防火墙

Iptables防火墙

1、简介

iptables是linux/unix自带的一款开源基于包过滤的防火墙工具,使用非常灵活,对硬件资源需求不是很高,是在内核中集成的服务,主要工作在OSI的二、三、四层。

术语介绍:

Netfilter:是表的容器  表:链的容器  链:规则的容器  规则:iptables一系列过滤信息的规范和具体方法

工作流程:

客户端请求数据------》iptables Filter-------》获取主机的服务(直接拒绝Drop)

数据包————过滤规则 1————过滤规则 2————默认规则
拒绝就 Drop--------------------------------后面的规则不起作用
没有匹配————拒绝就 Drop--------------后面的规则不起作用
前两个规则都没有匹配—————默认规则去过滤

  防火墙是层层过滤,数据包的匹配规则是自上而下顺序匹配,如果前面都没有匹配上规则(这个匹配规则是无论通过还是拒绝都是匹配上规则),明确通过或阻止,最后交给防火墙默认规则去处理

2、常用表的介绍

常用的表有:filter、nat、mangle

完整过程:

1、数据包进入----经过NAT PREROUTING----经过 FORWARD----FILTER INPUT----NAT OUTPUT----FILTER OUTPUT----NAT POSTROUTING  主要用于NAT或端口映射

2、数据包经过----经过 FORWARD----FILTER FORWARD----NAT POSTROUTING  主要用于过滤

3、帮助信息

[root@VM_0_7_centos ~]# iptables -h
iptables v1.4.7

Usage: iptables -[ACD] chain rule-specification [options]
       iptables -I chain [rulenum] rule-specification [options]
       iptables -R chain rulenum rule-specification [options]
       iptables -D chain rulenum [options]
       iptables -[LS] [chain [rulenum]] [options]
       iptables -[FZ] [chain] [options]
       iptables -[NX] chain
       iptables -E old-chain-name new-chain-name
       iptables -P chain target [options]
       iptables -h (print this help information)

Commands:
Either long or short options are allowed.
  --append  -A chain		Append to chain  把规则添加到链的结尾
  --check   -C chain		Check for the existence of a rule
  --delete  -D chain		Delete matching rule from chain  删除匹配规则从链中
  --delete  -D chain rulenum
				Delete rule rulenum (1 = first) from chain
  --insert  -I chain [rulenum]
				Insert in chain as rulenum (default 1=first)  把规则添加到链的开头
  --replace -R chain rulenum
				Replace rule rulenum (1 = first) in chain
  --list    -L [chain [rulenum]]
				List the rules in a chain or all chains  #以列表的形式查看
  --list-rules -S [chain [rulenum]]
				Print the rules in a chain or all chains
  --flush   -F [chain]		Delete all rules in  chain or all chains  #清除所有规则
  --zero    -Z [chain [rulenum]]
				Zero counters in chain or all chains  #清除计数器
  --new     -N chain		Create a new user-defined chain  #以数字的形式查看
  --delete-chain
            -X [chain]		Delete a user-defined chain  #清除用户自定义链
  --policy  -P chain target
				Change policy on chain to target    #将链策略更改为目标
  --rename-chain
            -E old-chain new-chain
				Change chain name, (moving any references)
Options:
[!] --proto	-p proto	protocol: by number or name, eg. `tcp'  指定端口类型,如tcp,udp
[!] --source	-s address[/mask][...]
				source specification    原规则(-s 后面跟IP地址)
[!] --destination -d address[/mask][...]
				destination specification
[!] --in-interface -i input name[+]
				network interface name ([+] for wildcard)    网络接口名称(后面跟网络接口,如eth0)
 --jump	-j target
				target for rule (may load target extension)    目标规则
  --goto      -g chain
                              jump to chain with no return
  --match	-m match
				extended match (may load extension)
  --numeric	-n		numeric output of addresses and ports  #端口和地址的数字输出
[!] --out-interface -o output name[+]
				network interface name ([+] for wildcard)  网络接口名称(是output的网络接口名称,和-i区别开来)
  --table	-t table	table to manipulate (default: `filter')  #指定表
  --verbose	-v		verbose mode
  --line-numbers		print line numbers when listing
  --exact	-x		expand numbers (display exact values)
[!] --fragment	-f		match second or further fragments only
  --modprobe=<command>		try to insert modules using this command
  --set-counters PKTS BYTES	set the counter during insert/append
[!] --version	-V		print package version.
[root@VM_0_7_centos ~]# /etc/init.d/iptables status  查看iptables的运行状态
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

[root@VM_0_7_centos ~]# iptables -L -n  查看表列表和端口地址
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           

 清除规则

[root@VM_0_7_centos ~]# iptables -F  清除iptables规则
[root@VM_0_7_centos ~]# 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        

清除指定表  iptablers -F -t 表名

[root@VM_0_7_centos ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j DROP

因为默认的是filter表,所以和iptables -F一样

配置防火墙前最好写一个定时任务,每多长时间就关闭防火墙,这样就可以防止无法远程登录

-A  把规则添加到链的结尾

-I  把规则添加到链的开头

[root@VM_0_7_centos ~]# iptables -t filter -A INPUT -p tcp --dport 9001 -j DROP
[root@VM_0_7_centos ~]# iptables -t filter -A INPUT -p tcp --dport 9002 -j DROP
[root@VM_0_7_centos ~]# /etc/init.d/iptables status
Table: filter
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:9001 
2    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:9002 

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

[root@VM_0_7_centos ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:9001 
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:9002 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

在实际的企业应用中,如果默认的规则是允许的,但是我又得禁止某一个应用或服务时,就会用到-I参数,将规则放在最前面,比如你发现一个网站被一个IP频繁访问,就可以用它来禁止

[root@VM_0_7_centos ~]# iptables -t filter -I INPUT -p tcp -s 10.0.100.1 --dport 9003 -j ACCEPT
[root@VM_0_7_centos ~]# /etc/init.d/iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     tcp  --  10.0.100.1           0.0.0.0/0           tcp dpt:9003 
2    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:9001 
3    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:9002 

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

删除某一行规则

[root@VM_0_7_centos ~]# /etc/init.d/iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     tcp  --  10.0.100.1           0.0.0.0/0           tcp dpt:9003 
2    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:9001 
3    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:9002 

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

[root@VM_0_7_centos ~]# iptables -D INPUT 3
[root@VM_0_7_centos ~]# /etc/init.d/iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     tcp  --  10.0.100.1           0.0.0.0/0           tcp dpt:9003 
2    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:9001 

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

禁止某网段的流量

[root@VM_0_7_centos ~]# iptables -A INPUT -i eth0 -s 10.0.0.0/24 -j DROP

[root@VM_0_7_centos ~]# /etc/init.d/iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     tcp  --  10.0.100.1           0.0.0.0/0           tcp dpt:9003 
2    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:9001 
3    DROP       all  --  10.0.0.0/24          0.0.0.0/0           

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

iptables企业级应用配置

清除规则

[root@VM_0_7_centos ~]# iptables -F
[root@VM_0_7_centos ~]# iptables -X
[root@VM_0_7_centos ~]# iptables -Z
[root@VM_0_7_centos ~]# /etc/init.d/iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

配置规则使得内网用户可用

[root@VM_0_7_centos ~]# iptables -A INPUT -s 100.1.3.9/24 -j ACCEPT
[root@VM_0_7_centos ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@VM_0_7_centos ~]# iptables -A INPUT -i lo -j ACCEPT
[root@VM_0_7_centos ~]# iptables -A OUTPUT -o lo -j ACCEPT

设置规则(默认规则)

[root@VM_0_7_centos ~]# iptables -P INPUT DROP
[root@VM_0_7_centos ~]# iptables -P FORWARD DROP
[root@VM_0_7_centos ~]# iptables -P OUTPUT DROP  

配置用户访问web页面(这个不能禁止,因为网站是开放给全球用户访问)

[root@VM_0_7_centos ~]# iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
[root@VM_0_7_centos ~]# /etc/init.d/iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80 

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination        

因为所有iptables命令都是保存在内存中的,重启计算机就会失效

[root@VM_0_7_centos ~]# cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
[root@VM_0_7_centos ~]# /etc/init.d/iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

成功保存iptables规则

维护iptables防火墙

[root@VM_0_7_centos ~]# vim /etc/sysconfig/iptables
# Generated by iptables-save v1.4.7 on Fri Mar 23 11:13:52 2018
*filter
:INPUT ACCEPT [938:61166]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [872:82030]
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT 
COMMIT
# Completed on Fri Mar 23 11:13:52 2018

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python 类

    1、创建和使用类   使用类几乎可以模拟任何东西。 1.1创建Dog类   根据Dog类创建的每个实例都将存储名字和年龄。我们赋予了每条小狗蹲下sit()和打滚...

    用户1173509
  • Linux 优化

     一、最小化原则 (1)安装最小化 (2)开机启动服务最小化 (3)操作最小化 (4)权限最小化 (5)配置参数合理,不要最大化 二、端口优化   远程登录的端...

    用户1173509
  • 局域网技术

    2.1 局域网的概念 1.数千米范围内额几台到数百台小型计算机或微型计算机通过通信线缆连接而形成的计算机系统称为计算机局域网络。局域网简称LAN,是Local ...

    用户1173509
  • BERT中的黑暗秘密

    2019年可以被称为NLP的Transformer之年:这种架构主导了排行榜并激发了许多分析研究。毫无疑问,最受欢迎的Transformer是BERT(Devl...

    zenRRan
  • nlp模型-bert从入门到精通(二)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    学到老
  • 七,ESP8266-UDP(基于Lua脚本语言)二,ESP8266 GPIO和SPI和定时器和串口

    那天朋友问我为什么有UDP Sever 和 UDP Client   ,,我说:每个人想的不一样,设计上不一样...... 既然是面向无连接的,那么模块发数据就...

    杨奉武
  • 报告,骗子已开工,最新防骗技能已安排

    俗话说过了正月十五才算过完了年,这才刚过完元宵节,黑产份子已经蠢蠢欲动,开始了新一年的“忙活”。小助手特意将近期可能高发的套路提前跟大伙儿唠唠嗑。

    用户6966869
  • 如果你需要一个独立的 SFTP 服务器,这可能是你最好的选择!

    SFTPGo 是一个全功能和高度可配置的 SFTP 服务器软件,这是 Github 上作者对这个软件的介绍。

    iMike
  • 「SDL第二篇」窗口渲染

    上一篇文章中我们对SDL作了简单的介绍,重点介绍了如何编译SDL以及如何使用它。在文章的最后我们留下了一个疑问,即虽然我们创建了窗口,但窗口却并没有真正显示出来...

    音视频_李超
  • Otter小试

    之前因为机房多活的需要关注了Otter,搭建这个环境算是费劲了心思,在之前准备的过程中发现GitHub上面的说明文档和实际的操作还有一些差距,有些过程也是一...

    jeanron100

扫码关注云+社区

领取腾讯云代金券