Iptables防火墙

时间:2022-08-27 13:41:56

1 位置

使用vim /usr/sysconfig/iptables

2 启动、关闭、保存

  • service iptables stop
  • service iptables start
  • service iptables restart
  • service iptables save

3 结构

iptables –> tables –> chains –>rules

3.1 iptables的表与链

iptables具有Filter,NAT,Mangle,Raw四种内建表

3.1.1 Filter表

filter表示iptables的默认表,它具有三种内建链:

  • input chain   - 处理来之外部的数据
  • output chain - 处理向外发送的数据
  • forward chain- 将数据转发到本机的其它网卡上

3.1.2 NAT表

NAT有三种内建的链:

  • prerouting   - 处理刚到达本机并在路由转发前的数据包,它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。
  • postrouting - 处理即将离开本机数据包,它会转换数据包中的源目标IP地址(source ip address),通常SNAT(source NAT)
  • output        - 处理本机产生的数据包

3.1.3 Mangle表

Mangle表用于指定如何处理数据包,它能改变TCP头中的Qos位,Mangle表具有5个内建链

  • prerouting
  • output
  • forward
  • input
  • postrouting

3.1.4 Raw表

raw表用户处理异常,它具有2个内建链

  • prerouting chain
  • output chain

3.2 Iptables规则(Rules)

  • rules包括一个条件和一个目标(target)
  • 如果满足条件就执行目标target中规则或者特定值
  • 如果不满足条件,就判断下一条Rules

3.2.1 目标值

  • accept - 允许防火墙接收数据包
  • drop    - 防火墙丢弃数据包
  • queue  - 防火墙将数据包移交到用户空间
  • return  - 防火墙停止执行当前链中的后续rules规则,并返回到调用链(the calling chain)

4 命令

#iptables -t filter -L   查看filter表

#iptables -t nat  -L    查看nat表

#iptables -t mangel -L 查看mangel表

#iptables -t raw  -L 查看Raw表

例如 以下例子表明在filter表的input链, forward链, output链中存在规则:

# iptables --list
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT)
num target prot opt source destination Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353
6 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
8 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
10 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

字段说明

num:编号

target:目标

prot:协议

source:数据包的源IP地址

destination:数据包的目标地址

4.1 清空所有的规则 

#iptables –flush

4.2 追加命令

iptables -A命令追加新规则,其中-A表示append,一般而言最后一条规则用于丢弃(drop)所有数据包,并且使用-A参数添加新规则,那么就是无用的。

4.2.1 语法

iptables –A chain firewall-rule

  • -A chain 指定要追加的规则的链
  • firewall-rule 具体规则的参数
4.2.2 基本参数

用于描述数据包的协议,源地址、目的地址、允许经过的网络接口,以及如何处理这些数据包。

  • 协议 –p (protocol)

    如tcp,udp,icmp等,可以使用all来指定所有协议

    不指定-p参数,默认值是all,

    可以使用协议名(tcp,udp),或者协议值(6代表tcp),映射关系可以查看/etc/protocols

  • 源地址 –s (source)

    指定数据包的源地址,参数可以使用IP地址、网络地址、主机名,不指定-s参数,就是代表所有地址。

    例如:-s 192.168.1.101 具体的IP地址

    例如:-s 192.168.1.10/24 指定网络地址

  • 目的地址 –d  (destination)

    指定目的地址,参数和-s相同
  • 执行目标 –j (jump to target)

    -j代表了当与规则(Rule)匹配时如何处理数据包,可能的值是accept、drop、queue、return,还可以指定其他链(chain)作为目标
  • 输入接口 –i (input interface)

    指定了要处理来自哪个接口的数据包,这些数据包进入input、forward、prepoute链,不指定将处理进入所有接口的数据包

    例如:-i eth0 指定了要处理eth0进入的数据

    可以取反  !-i eth0,指eth0以外。

    可以匹配  -i eth+ 指以eth开头的

  • 输出接口 –o (out interface)

    数据包有那个接口输出,类似于 –i
  • 源端口 –sport

    例如 –sport 22

    例如 –sport 22:100指定端口范围

  • 目的端口 –dport

    类似于-sport
  • TCP标志
  • ICMP类型

5 实例分析

例如:接收目标端口为22的数据包

iptables –A INPUT –i etho –p tcp –dprot 22 –j ACCEPT

例如:拒绝所有其他数据包

iptables –A INPUT –j DROP

6 修改默认策略

上例仅对接收的数据包进行过滤,而对于要发出的数据包却没有任何限制。

使用iptables –L查看防火墙配置时,发现所有的链旁边都有(policy ACCEPT)标注,这表明当前链的默认策略为ACCEPT

# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
DROP all -- anywhere anywhere Chain FORWARD (policy ACCEPT)
target prot opt source destination Chain OUTPUT (policy ACCEPT)
target prot opt source destination

这种情况下,如果没有明确添加DROP规则,那么默认情况下采用ACCEPT策略进行过滤。

6.1 添加DROP规则

iptables –A INPUT –j DROP

iptables –A OUTPUT –j DROP

iptables –A FORWARD –j DROP

6.2 SSH

允许接收远程主机的SSH请求

iptables –A INPUT –i eth0 –p tcp –dport 22 –m state  --state NEW,ESTABLISHED –j ACCEPT

允许发送本地主机的SSH响应

iptables –A OUTPUT –o eth0 –p tcp –sport 22 –m state  --state ESTABLISHED –j ACCEPT  

注意这几个参数

  • -m state:启用状态匹配模块(state matching module)
  • -- state:状态匹配模块的参数,当ssh客户端第一个数据包到达服务器时,状态字段为NEW,建立连接后数据包的状态字段都是ESTABLISHED

6.3 HTTP

允许接收远程主机的http请求

iptables –A INPUT –i eth0 –p tcp   --dport 80 –m state   --state NEW ,ESTABLISHED –j ACCPET

允许发送本地主机的Http响应

iptables –A OUTPUT –i eth0 –p tcp  -- sport 80 –m  state  --state ESTABLISHED  -j ACCPET

6.4 完成的配置步骤

6.4.1 删除现有的规则

iptables -F

6.4.2 配置默认策略

iptables –P INPUT DROP

iptables –P FORWARD DROP

iptables –P OUTPUT DROP

6.4.3 允许远程主机进行SSH连接

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

6.4.4 允许本地主机进行SSH连接

iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

6.4.5允许http请求

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

Iptables防火墙的更多相关文章

  1. CentOS系统配置 iptables防火墙

    阿里云CentOS系统配置iptables防火墙   虽说阿里云推出了云盾服务,但是自己再加一层防火墙总归是更安全些,下面是我在阿里云vps上配置防火墙的过程,目前只配置INPUT.OUTPUT和FO ...

  2. 关闭SELinux和iptables防火墙

    1.关闭SELinux: 编辑SELinux配置文件: [root@Redis selinux]# vim /etc/selinux/config 修改SELINUX配置项为disable SELIN ...

  3. CentOS 7.0,启用iptables防火墙

    CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.service #停止fir ...

  4. 编译内核实现iptables防火墙layer7应用层过滤 (三)

    在前面的两篇文章中我们主要讲解了Linux防火墙iptables的原理及配置规则,想博友们也都知道iptables防火墙是工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙.以 ...

  5. [CentOs7]iptables防火墙安装与设置

    摘要 CentOS 7.0默认使用的是firewall作为防火墙,如果改为iptables防火墙,如何操作? 关闭firewall: systemctl stop firewalld.service ...

  6. iptables防火墙作为基本需求的配置

    企业中使用iptables防火墙:(一般不要在命令中输入规则) # Firewall configuration written by system-config-firewall# Manual c ...

  7. [moka同学摘录]iptables防火墙规则的添加、删除、修改、保存

    文章来源:http://www.splaybow.com/post/iptables-rule-add-delete-modify-save.html 本文介绍iptables这个Linux下最强大的 ...

  8. linux 的iptables防火墙

    .a文件就是*.o文件的集合, 是object文件的归档文件, 所以, 用nm -A  ???.a看到的 symbolic符合名称都是 相应的,  包含的  .o文件.... linux 2.4内核中 ...

  9. 使用iptables防火墙限制web的访问PV

    使用iptables防火墙限制web的访问PV #!/bin/bash while true;do awk '{print $1}' /tmp/test/access.log| grep -v &qu ...

  10. Netfilter/iptables防火墙

    http://os.51cto.com/art/201107/273443.htm [51CTO独家特稿]Linux系统管理员们都接触过Netfilter/iptables,这是Linux系统自带的免 ...

随机推荐

  1. JS操作页面

    DOM操作 1 windows对象操作 属性(值或者子对象): opener:打开当前窗口的源窗口,如果当前窗口是首次启动浏览器打开的,则opener是null.可以利用这属性来关闭源窗口 方法(函数 ...

  2. JAVA基础知识之网络编程——-使用Proxy创建连接

    在前面的HTTP网络通信的例子中,使用了URLConnection conn = url.openConnection();连接网络, 如果改用URLConnection conn = url.ope ...

  3. Angular学习(7)- 模板2

    示例: <!DOCTYPE html> <html ng-app="MyApp"> <head> <title>Study 8&lt ...

  4. keystone命令与client接口学习

    keystone学习 ------------------ Keystone(OpenStack Identity Service)是OpenStack框架中,负责身份验证.服务规则和服务令牌的功能, ...

  5. win7系统64位&quot&semi;禁用驱动程序签名强制&quot&semi;如何设置?

    换了Win7系统64位旗舰版的朋友是不是都发现了一点,以前32位Win7系统用的好好的小程序小应用,一下子就装不上了.这是由于Win7系统64位系统对于未有认证签名的驱动程序进行了限制安装,而大部分小 ...

  6. Visifire Chart控件设置 柱状图 条的宽窄

     Chart myChart = new Chart();myChart.DataPointWidth = 5;宽度以PlotArea的百分比为单位,如下例: chart.Width = 500; c ...

  7. jsp如果超过字数就变成&period;&period;&period;

    <script> var infoTitle = '<ww:property value="infoTitle"/>'; if(infoTitle.leng ...

  8. 【2017-06-06】Ajax完整结构、三级联动的制作

    一.Ajax完整结构 $.ajax({ url:"Main.ashx", data:{}, dataType:"json", type:"post&q ...

  9. Git学习总结(一)

    .常用Git命令清单 一.新建代码库 #在当前目录创建一个Git代码库 $ git init #新建一个目录,将其初始化为Git代码库 $ git init [project name] #下载一个项 ...

  10. Jmeter----【Mac电脑】环境配置与打开Jmeter界面

    前提条件:打开Jmeter界面,首先需要安装java并配置环境变量. 第一步:下载并安装jdk和环境配置 java jdk下载:http://www.oracle.com/technetwork/ja ...