iptables 防火墙

iptables防火墙工具;

iptables是一款优秀且完全免费的包过滤的防火墙工具,它的功能非常强大,且灵活;

netfilter/iptables网络过滤 ;

它是表的容器 ;

表是链的容器 ;

链是规则的容器 ;

规则就是iptables一系列过滤信息规范和具体操作方法;

iptables的过滤流程

client请求数据-------------->iptables filter-------------->获取主机 Service

|                   |

  数据包能匹配上规则则通过               不能匹配则丢弃

匹配上了拒绝规则也是匹配,因此,不在继续向下进行;

例如:同时执行以下规则

[[email protected] ~]# iptables -A INPUT -P tcp --dport 3306 -j DROP

[[email protected] ~]# iptables -A INPUT -P tcp --dport 3306 -j ACCEPT

表:filter,nat,mangle ;

链:INPUT,FORWARD,OUTPUT, PREROUTING,POSTROUTING;

filter表:负责防火墙功能,过滤本机流入流出的数据包,是iptables默认使用的表,包含三个链:

INPUT:负责过滤所有目标地址是本机地址的数据包;

FORWARD:负责转发流经主机但不进入本机的数据包,起转发作用 ;

OUTPUT:处理所有原地址是本机地址的数据包,就是处理从主机发出去的数据包;

nat表:网络地址转换,负责来源与目的的ip地址和port的转换,和主机本身无关,一般用于局域网多人共享或内网映射外网ip及不同端口转换服务等功能,

包含三个链:

OUTPUT:同上 ;

PREROUTING:在数据包到达防火墙时,进行路由判断之前执行的规则改变包的目的地址,端口等。

POSTROUTING:在数据包离开防火墙时进行路由判断之后执行的规则,改变包的原地址,端口等。

mangle表:主要负责修改数据包由特殊的路由标记,如:TTL,TOSMARK等,

这个表包含了5个链: INPUT,FORWARD,OUTPUT,PREROUTING,PSOTROUTING;

====================================================================================

查看帮助,如何使用iptables;

[[email protected] ~]# iptables -h

实践iptables命令及规则:

启动iptables:

[[email protected] ~]# /etc/init.d/iptables start

查看iptables状态:

[[email protected] ~]# /etc/init.d/iptables status

列出所有的规则:默认是filter表;

[[email protected] ~]# iptables -L -n

指定列出哪张表;

[[email protected] ~]# iptables -L -n -t filter

[[email protected] ~]# iptables -L -n -t nat

[[email protected] ~]# iptables -L -n -t mangle

临时清除默认规则,

重启后失效  iptables -F

删除所有规则 iptables -X

删除用户自定义的链 iptables -Z 把所有规则的指针清零,就是计数器清零;

禁止ssh默认的22端口 ;

-D 删除;

-t 指定表,不加-t默认是filter表;

-I 插入到第一条进行生效,

-A是添加到最后一条进行生效 -A 添加 INPUT 链,

-p  协议 tcp、udp协议 --dport 端口 ;

-j  行为     行为参数 ACCEPT(接受), DROP(丢弃), REJECT(拒绝);

添加规则:

[[email protected] ~]# iptables -A INPUT -p tcp --dport 22 -j DROP

删除规则:

[[email protected] ~]# iptables -D INPUT -p tcp --dport 22 -j DROP

显示规则号:

[[email protected] ~]# iptables -L -n --line-num

显示行号,根据行号删除规则:

[[email protected] ~]# iptables -L -n --line-num

[[email protected] ~]# iptables -D INPUT 1

禁止某个网段连入: -i 指定哪张网卡,进 -o 指定哪张网卡, 出 -s 对原地址进行过滤;

[[email protected] ~]# iptables -t filter -A INPUT -i eth0 -s 192.168.1.1/24 -j DROP

删除禁止网段联网规则;

[[email protected] ~]# iptables -t filter -D INPUT -i eth0 -s 192.168.1.1/24 -j DROP

拒绝规则: ! 测试(非) ;

[[email protected] ~]# iptables -t filter -D INPUT -i eth0 -s ! 192.168.1.0/24 -j DROP

[[email protected] ~]# iptables -t filter -D INPUT -i eth0 -s ! 192.168.1.105 -j DROP

对网卡,端口的设置规则与上面方法相似 端口范围可以使用冒号隔开,如: 23:30

对指定多端口使用逗号隔开,如:23,24,25

安全保护: 防止洪水攻击的保护:限制1秒钟一次 ;

[[email protected] ~]# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s ACCEPT

端口扫描的一个保护;

[[email protected] ~]# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s ACCEPT

防止被ping死:

[[email protected] ~]# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s ACCEPT

===================================================================================== iptables 防火墙 filter 表生产实战例子:

清除当前的防火墙所有规则和计数器;

iptables -F //清除当前所有链(chain)的规则;

iptables -Z //清除当前链(chain)指针(计数器);

iptables -X //清除当前用户自定义的链;

配置允许SSH登入端口进入;

[[email protected] ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

[[email protected] ~]# iptables -A INPUT -i lo -j ACCEPT

[[email protected] ~]# iptables -A OUTPUT -o lo -j ACCEPT

[[email protected] ~]# iptables -L -n

设置默认的防火墙和允许规则(电影院模式);

[[email protected] ~]# iptables --policy OUTPUT ACCEPT

[[email protected] ~]# iptables -P FORWARD DROP

[[email protected] ~]# iptables -P INPUT DROP [[email protected] ~]# iptables -L -n

开启信任的ip网段;

[[email protected] ~]# iptables -A INPUT -s 192.168.1.100/24 -p all -j ACCEPT

允许http服务无条件通过     ;

#允许普通的外部服务80;

[[email protected] ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# 443 端口 HTTPS加密协议端口 ;

[[email protected] ~]# iptables -A INPUT -p tcp --dport 443 -j ACCEPT

允许icmp类型协议通过,(#以下如果不想开就不执行) ;

[[email protected] ~]# iptables -A INPUT -p icmp --icmp-type any -j ACCEPT

[[email protected] ~]# iptables -A INPUT -p icmp -s 192.168.1.1/24 -m icmp --icmp-type any -j ACCEPT

[[email protected] ~]# iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT     #如果不想开就不执行;

允许关联的状态包通过 ;

[[email protected] ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

[[email protected] ~]# iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

[[email protected] ~]# iptables -L -n --line-number

永久保存配置文件,更改配置文件之前一定要记得备份 ;

[[email protected] ~]# cp /etc/sysconfig/iptables /etc/sysconfig/iptables.olboy.bak

[[email protected] ~]# /etc/init.d/iptables save

查看更改后的配置文件 ;

[[email protected] ~]# less /etc/sysconfig/iptables

===============================================================================

阻止某个ip进行攻击;

[[email protected] ~]# iptables -I INPUT -s 27.168.22.24 -j DROP

==============================================================================

iptables防火墙nat表生产实战     ;

将linux服务器配置成上网网关或者路由器 DNAT全称目的网络地址转换,它是一种改变数据包ip地址的技术,

它可以使多台服务器共享一个ip地址连入Internet,并且继续提供服务 ;

例如: iptables -t nat -A PREROUTING -d 203.81.17.88 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.0.0.16:80

//将所有访问ip 203.81.17.88并且是80端口的请求,地址改写为内部web服务器10.0.0.16的80端口,从而实现内部ip对外提供服务的目的。

SNAT全称源网络地址转换,它是一种改变数据包源ip地址的技术,经常用来使多台计算机分享一个Internet地址访问互联网,

如办公室内部机器上网,IDC机房的内部机器上网等,

例如:

iptables -t nat -A POSTROUTING -s 10.0.0.0/255.255.255.0 -o eth0 -j SNAT --to-source 203.81.17.88

//将源地址是10.0.0.0的数据包地址改写成为公司203.81.17.88出网,这是办公室或机房内部服务器共享上网的常用方法;

MASQUERADE 为动态源地址转换,即当外部ip非固定ip时的场合经常使用 ;

例如:ASDL拨号上网: iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE

将源地址是192.168.0.0/24的数据包进行地址伪装,此命令可以实现ADSL线路多台计算机共享上网;

-------------------------------------------------------------------------

演示前期准备:

1)服务器网关B需具备如下条件;

1,B需要的物理条件是双网卡,建议eth0外网地址,eth1地址,并且内外处于联通状态 ;

2.确保服务器B自身可以上网,这样才能带动下面的机器上网,ping baidu.com ;

3.网关内核文件/etc/sysctl.conf里需要开启转发功能,在网关172.163.1.3机器上开启路由转发功能,

编辑/etc/sysctl.conf,将内容改为net.ipv4_forward = 1,然后执行sysctl -p使之生效。

[[email protected] ~]# vim /etc/sysctl.conf

[[email protected] ~]# sysctl -p

查看iptables的filter表的FORWARD链是否允许转发     ;

[[email protected] ~]# iptables -L -n     Chain FORWARD (policy ACCEPT)     target     prot opt source               destination

ipotables 是在内核中运行的,我们需要检查或载入如下基本内核模块;

modprobe ip_tables

modprobe iptable_filter

modprobe iptable_nat

modprobe ip_conntrack

modprobe ip_nat_ftp

modprobe ipt_state

实例: 以下为网关B上操作 如果配不好,可以先关iptables;

----------------------------------------------------------------------------------

问题1:

实现C可经过B,通过A上网

# iptables -t -nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.3

#iptables -t -nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE

-----------------------------------------------------------------------------------

问题2:

实现外部ip地址端口到内部服务器ip和端口映射;

#iptables -t -nat -A PRETOUTING -d 10.0.0.3 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.17:80

提示:以上方法仅仅是端口之间的映射,实际上也可以实现ip一对一的映射,即DMZ的功能,

方法:

-A PREROUTING -d 124.42.60.112 -j DNAT --to-destination 10.0.0.8 -A POSTROUING -s 10.0.0.8 -o eth0 -j SNAT --to-source 124.42.60.112

-------------------------------------------------------------------------------------

问题3:

实现172段机器和10段机器互访;

route add -net 172.16.1.0/24 gw 10.0.0.3

提示:对于办公室小流量的跨网段访问这样实现是可以的,但是如果是IDC机房大流量跨网段访问 ;

我们就需要使用三成交换机来实现了;

时间: 2024-10-13 20:45:49

iptables 防火墙的相关文章

Iptables防火墙(一)

一.Linux防火墙基础 Linux防火墙主要工作在网络层,属于典型的包过滤防火墙. netfilter和iptables都用来指Linux防火墙,主要区别是: netfilter:指的是linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在,属于"内核态"的防火墙功能体系. iptables:指的是用来管理linux防火墙的命令程序,通常位于/sbin/iptables目录下,属于"用户态"的防火墙管理体系. 1.iptables的表.链结构 Ipt

【整理笔记-防火墙】实现iptables防火墙搭建

搭建防火墙,配置防火墙. - - 系统centos7 . centos7自带firewalld,由于看firewalld命令行没有接触过,所以安装iptables防火墙. 1:禁用firewalld firewall-cmd --state 查看系统自带防火墙状态. 用systemctl stop firewalld.service   禁止立即生效, systemctl disable firewalld.service  永久关闭firewalld.执行完再看一下防火墙状态, 显示为not

iptables防火墙高级应用

iptables 防火墙(主机防火墙) 前言:我们在以前学习过asa防火墙,对防火墙有一定的了解,那么iptables和asa防火墙类似,作用一样,都是为了保证网络安全,系统安全,服务器的安全,和asa一样也需要建立策略,个人觉得比asa的策略要繁琐一点,但只要多做几遍,也就简单了. 一.防火墙基础 Linux防火墙主要工作在网络层,属于典型的包过滤防火墙. 1.iptables的表.链结构 Iptables采用了表和链的分层结构,每个规则表相当于内核空间的一个容器,根据规则集的不同用途划分为默

Linux下的配置iptables防火墙增强服务器安全

Linux下的配置iptables防火墙增强服务器安全 实验要求 iptables常见概念 iptables服务器安装及相关配置文件 实战:iptables使用方法 例1:使用iptables防火墙保护公司web服务器 例2:使用iptables搭建路由器,通过SNAT使用内网机器上网 例3:限制某些IP地址访问服务器 例4:使用DNAT功能把内网web服务器端口映射到路由器外网 实验环境 iptables服务端:xuegod-63   IP:192.168.1.63 iptables客户端:x

iptables防火墙应用

安全服务--Iptables  一.网络安全访问控制我们都知道,Linux一般作为服务器使用,对外提供一些基于网络的服务,通常我们都需要对服务器进行一些网络控制,类似防火墙的功能,  常见的访问控制包括:那些IP可以访问服务器,可以使用那些协议,那些接口.那些端口 是否需要对数据包进行修改等等.如果某服务器受到攻击,或者来自互联网哪个区域或者哪个IP的攻击,这个时候应该禁止所有来自该IP的访问.那么Linux底层内核集成了网络访问控制,通过netfilter模块来实现.  iptables作用:

基于linux的web服务器的iptables防火墙安全优化设置

安全规划:开启 80  22 端口并 打开回路(回环地址 127.0.0.1) #iptables –P INPUT ACCEPT #iptables –P OUTPUT ACCEPT #iptables –P FORWARD ACCEPT 以上几步操作是为了在清除所有规则之前,通过所有请求,如果远程操作的话,防止远程链接断开. 接下来清除服务器内置规则和用户自定义规则: #iptables –F #iptables -X 打开ssh端口,用于远程链接用: #iptables –A INPUT

iptables防火墙配置详解

iptables简介 iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表. filter负责过滤数据包,包括的规则链有,input,output和forward: nat则涉及到网络地址转换,包括的规则链有,prerouting,postrouting和output: mangle表则主要应用在修改数据包内容上,用来做流量整形的,默认的规则链有:INPUT,OUTPUT,NAT,POSTROUTING,PREROUTING: inpu

CentOS下配置iptables防火墙 linux NAT(iptables)配置

CentOS下配置防火墙 配置nat转发服务CentOS下配置iptables防火墙 linux NAT(iptables)配置 CentOS下配置iptables 1,vim /etc/sysconfig/network   这里可以更改主机名称. NETWORKING=yesNETWORKING_IPV6=noHOSTNAME=BGI-TJ.localdomain GATEWAY=192.168.11.1(超算网关) 2.vim /etc/sysconfig/network-scripts/

20条IPTables防火墙规则用法!

导读 管理网络流量是系统管理员必需处理的最棘手工作之一,我们必需规定连接系统的用户满足防火墙的传入和传出要求,以最大限度保证系统免受攻击.很多用户把 Linux 中的 IPTables 当成一个防火墙,从严格意见上来说 IPTables 只是能够帮助管理员定义各种规则并与 Linux Kernel 进行沟通的一个命令行工具.它只是帮助管理员配置网络流量的传入.传出规则列表,具体的实现其实是在 Linux 内核当中. IPTables 包括一组内置和由用户定义规则的「链」,管理员可以在「链」上附加

iptables防火墙之主机型

iptables防火墙本身是不防火的,是靠其中的规则判断数据是丢弃还是放行,而这些规则就存放在iptables的四表五链中. iptables四表五链 四表 filter(过滤数据包):INPUT,OUTPUT,FORWARD nat(地址转换):PREROUTING,POSTOUTING,OUTPUT mangle表(拆开,修改,封装数据):五个链全部包含 raw(状态追踪):PREROUTING,OUTPUT 五链(根据数据报文的流向,判断报文放在那里) INPUT:到本机内部来的数据 OU