Linux防火墙iptables基础

IPtables基础

简介

iptables命令可用于配置Linux的包过滤规则,常用于实现防火墙、NAT。

iptables里面有4张表,分别是filter,NAT,mangle,raw表。运维人员的话主要关注的是filter和NAT表。

  1. filter:主要是过滤包的,内建三个链INPUT、OUTPUT以及FORWARD。INPUT作用于进入本机的包;OUTPUT作用于本机送出的包;FORWARD作用于那些跟本机无关的包。
  2. NAT:主要用户地址转换和端口映射,内建三个链,分别是PREOUTING、OUTPUT、POSTROUTING。

iptables命令基本结构

iptables
[-t TABLE] SUBCOMMAND CHAIN CRETERIA -j TARGET

iptables [ –t 表名 ]命令选项 [ 链名 ] [ 条件匹配 ] [ –j 目标动作或跳转 ]

注:如果-t默认表是filter表。

Command(命令)   

-F:flush, 清空规则链; 省略链, 表示清空指定表上的所有的链;

-N: new, 创建新的自定义规则连;

-X: delete/drop, 删除用户自定义的空的规则链;

-Z: zero, 清零, 置零规则计数器

-P: Policy, 为指定链设置默认策略,未符合过滤条件之封包,预设的处理方式;

对filter表中的链而言, 默认策略通常有ACCEPT(允许,放行), DROP(丢弃), REJECT(拒绝);

-E: rEname, 重命名自定义链; 引用计数不为0的自定义链, 无法改名, 也无法删除;

-L, --list:列出某规则链中的所有规则。

规则管理:

-A: append, 将新规则追加于指定链的尾部;

-I: insert, 将新规则插入至指定链的指定位置;  //不指明插入的行数时默认插入到第一行.

-D: delete, 删除指定链上的指定规则;

有两种指定方式:

(1) 指定匹配条件;

(2) 指定规则编号;

-R: replace, 替换指定链上的指定规则;

        查看:

-L: list, 列出指定链上的所有规则;

-n: numberic, 以数字格式显示地址和端口号;

-v: verbose, 显示详细信息;

-vv, -vvv:详细更详细信息.

--line-numbers: 显示规则编号;

-x: exactly, 显示计数器计数结果的精确值;


    Parameter(参数)

[!] -s IP|Netaddr: 检查报文中的源IP地址是否符合此处指定的地址范围;

[!] -d IP|Netaddr: 检查报文中的目标IP地址是否符合此处指定的地址范围;

-p {tcp|udp|icmp}: 检查报文中的协议, 即ip首部中的protocols所标识的协议;

-i IFACE: 数据报文的流入接口; 仅能用于PREROUTING, INPUT及FORWARD链上;

-o IFACE: 数据报文的流出接口; 仅能用于FORWARD, OUTPUT及POSTROUTING链上;

 Target:

ACCEPT: 接收

DROP: 丢弃

REJECT: 拒绝

LOG: 记录日志

MARK: 做防火墙标记

DNAT: 目标地址转换

SNAT: 原地址转换

MASQUERADE: 地址伪装



基础命令

  • iptables -nvL               //iptables -nvL 查看规则
[[email protected] ~]# iptables -nvL
Chain INPUT (policy ACCEPT 45 packets, 8317 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 1284  149K ACCEPT     tcp  --  *      *       172.31.11.189        0.0.0.0/0           tcp dpt:22 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80 
    3   152 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:22 
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
Chain OUTPUT (policy ACCEPT 916 packets, 230K bytes)
 pkts bytes target     prot opt in     out     source               destination
  • iptables -t filter -A INPUT -p tcp --dport 80 -s X.X.X.X -j DROP //-A 表示插入到最后一行
  • iptables -t filter -I INPUT -p tcp --dport 80 -s X.X.X.X -j DROP //-A 表示插入到最后一行
[[email protected] ~]# iptables -t filter -A INPUT -p tcp --dport 80 -s 172.31.24.150 -j DROP
[[email protected] ~]# iptables -t filter -I INPUT -p tcp --dport 80 -s 172.31.24.151 -j DROP
[[email protected] ~]# iptables -nvL        
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       tcp  --  *      *       172.31.24.151        0.0.0.0/0           tcp dpt:80 
  466 41872 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  lo     *       0.0.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 
    2   473 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
    0     0 DROP       tcp  --  *      *       172.31.24.150        0.0.0.0/0           tcp dpt:80 
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
Chain OUTPUT (policy ACCEPT 10 packets, 1888 bytes)
 pkts bytes target     prot opt in     out     source               destination
  • iptables -nvL --line-numbers     //查看规则带有id号
  • iptables -D INPUT 6    //根据规则的id号删除对应规则
[[email protected] ~]# iptables -nvL --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1      311 27704 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
5        2   473 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
6        0     0 ACCEPT     tcp  --  *      *       172.31.24.150        0.0.0.0/0           tcp dpt:80
  • service iptables save //iptables如果不保存的话重启服务就会丢失,所以配置好之后一定要保存下,保存的路径在/etc/sysconfig/iptables
[[email protected] ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
  • iptables-save > X.bak //可以指定文件进行保存。
  • iptables-restore <3.bak  //可以将备份的文件导入。
[[email protected] ~]# iptables-save > 3.bak      //将iptables配置文件导出
[[email protected] ~]# cat 3.bak 
# Generated by iptables-save v1.4.7 on Thu Dec 29 10:38:16 2016
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [108:16105]
-A INPUT -s 172.31.24.151/32 -p tcp -m tcp --dport 80 -j DROP 
-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 -j REJECT --reject-with icmp-host-prohibited 
-A INPUT -s 172.31.24.150/32 -p tcp -m tcp --dport 80 -j DROP 
-A FORWARD -j REJECT --reject-with icmp-host-prohibited 
COMMIT
# Completed on Thu Dec 29 10:38:16 2016
# Generated by iptables-save v1.4.7 on Thu Dec 29 10:38:16 2016
*nat
:PREROUTING ACCEPT [833:120780]
:POSTROUTING ACCEPT [11:681]
:OUTPUT ACCEPT [11:681]
COMMIT
# Completed on Thu Dec 29 10:38:16 2016
[[email protected] ~]# iptables-restore <3.bak        //将备份的文件导入
  • iptables -Z    //-Z: zero, 清零, 置零规则计数器


案例

针对filter表,预设策略INPUT链DROP,其他两个链ACCEPT,然后针对172.31.24.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口。写脚本执行是为了方便。:

#!/bin/bash
ips="/sbin/iptables"
$ips -F                  //对iptables配置进行清空下
$ips -P INPUT DROP        //请谨慎使用,执行后就会断开一切INPUT连接,所以这里用脚本导入。
$ips -P OUTPUT ACCEPT
$ips -P FORWARD ACCEPT
$ips -A INPUT -s 172.31.24.0/24 -p tcp --dport 22 -j ACCEPT
$ips -A INPUT -s 172.31.11.189 -p tcp --dport 22 -j ACCEPT 
$ips -A INPUT -p tcp --dport 80 -j ACCEPT
$ips -A INPUT -p tcp --dport 22 -j DROP
时间: 2024-10-10 04:45:07

Linux防火墙iptables基础的相关文章

Linux防火墙iptables基础详解

原文来自于:https://www.linuxidc.com/Linux/2017-01/140073.htm(引用自) 一:前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘.而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP.数据进行检测. 目前市面上比较常见的有3.4层的防火墙,叫网络层的防火墙,还有7层的防火墙,其实是代理层的网关.

linux防火墙--iptables(二)

五.filter过滤和转发 a.打开内核的IP转发 # sysctl -w net.ipv4.ip_forward=1 或 # echo 1 > /proc/sys/net/ipv4/ip_forward b.基本匹配条件 ·通用匹配 → 可直接使用,不依赖于其他条件或扩展 → 包括网络协议.IP地址.网络接口等条件 ·隐含匹配 → 要求以特定的协议匹配作为前提 → 包括端口.TCP标记.ICMP类型等条件 类别 选项 用法 通用匹配 协议匹配 -p 协议名 地址匹配 -s 源地址      

Linux防火墙iptables简明教程

前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔除了许多冗余的内容,提取出尽量多的精华部分成文,和大家共同学习,本文涉及的内容包括如下 Linux防火墙iptables简明教程 1.安装iptables 2.查看现有的iptables规则 3.删除某iptables规则 4.清除现有iptables规则 5.创建规则 6.设置开机启动 7.保存i

linux防火墙--iptables(三)

七.SNAT源地址转换 ·Source Network Address Translation ·修改数据包的源地址 ·仅用于nat表的POSTROUTING链 Example:局域网共享公网IP上网 ·配置的关键策略 → 做完路由选择后,针对来自局域网.即将从外网接口发出去的数据包,将其源IP地址修改为 网关的公网IP地址  # iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to-source 69.166

关于Linux防火墙iptables的面试问答

关于Linux防火墙'iptables'的面试问答 Nishita Agarwal是Tecmint的用户,她将分享关于她刚刚经历的一家公司(印度的一家私人公司Pune)的面试经验.在面试中她被问及许多不同的问题,但她是iptables方面的专家,因此她想分享这些关于iptables的问题和相应的答案给那些以后可能会进行相关面试的人.       所有的问题和相应的答案都基于Nishita Agarwal的记忆并经过了重写.   "嗨,朋友!我叫  Nishita Agarwal.我已经取得了理学

linux 防火墙iptables简明教程

前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔除了许多冗余的内容,提取出尽量多的精华部分成文,和大家共同学习,本文涉及的内容包括如下 Linux防火墙iptables简明教程 1.安装iptables 2.查看现有的iptables规则 3.删除某iptables规则 4.清除现有iptables规则 5.创建规则 6.设置开机启动 7.保存i

Linux防火墙(Iptables)的开启与关闭

Linux防火墙(iptables)的开启与关闭 Linux中的防火墙主要是对iptables的设置和管理. 1. Linux防火墙(Iptables)重启系统生效 开启: chkconfig iptables on 关闭: chkconfig iptables off 2.Linux防火墙(Iptables) 即时生效,重启后失效 开启: service iptables start 关闭: service iptables stop 需要说明的是对于Linux下的其它服务都可以用以上命令执行

Linux上iptables基础应用

Linux上iptables防火墙的基本应用解说 iptables是Linux上常用的防火墙软件,下面vps侦探给大家说一下iptables的安装.清除iptables规则.iptables只开放指定端口.iptables屏蔽指定ip.ip段及解封.删除已添加的iptables规则等iptables的基本应用. 关于更多的iptables的使用方法可以执行:iptables --help或网上搜索一下iptables参数的说明. 1.安装iptables防火墙如果没有安装iptables需要先安

Linux服务器集群架构部署搭建(二)linux防火墙iptables使用及NAT共享

第一章 外网防火墙部署企业应用 1.1 生产中iptables的实际应用 ①iptables是基于内核的防火墙,功能非常强大,基于数据包的过滤!特别是可以在一台非常低的硬件配置下跑的非常好.iptables主要工作在OSI七层的2.3.4层.七层的控制可以使用squid代理+iptables. ②iptabes:生产中根据具体情况,一般,内网关闭,外网打开.大并发的情况不能开iptables,影响性能,iptables是要消耗CPU的,所以大并发的情况下,我们使用硬件防火墙的各方面做的很仔细.s