iptables 简单配置示例

iptables防火墙简介

iptables/netfilter是Linux下自带的一款免费且优秀的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,

可以对流入、流出、流经服务器的数据包进行精细的控制。

iptables是Linux2.4及2.6内核中集成的模块。

防火墙果汁的执行顺序默认是从前到后依次执行,遇到匹配的规则就不在继续向下检查,若果遇到不匹配的规则会继续向下执行,

匹配上了拒绝规则也是匹配,因此不再继续。

在iptables中有三个最常用的表,分别是filter,nat和mangle,每一个表中都包含了各自不同的链。

filter表:

filter是iptables默认使用的表,负责对流入、流出本机的数据包进行过滤,该表中定义了3个链:

  1. INPOUT 
    负责过滤所有目标地址是本机地址的数据包,就是过滤进入主机的数据包。
  2. FORWARD
    负责转发流经本机但不进入本机的数据包,起到转发的作用。
  3. OUTPUT
    负责处理所有源地址是本机地址的数据包,就是处理从主机发出去的数据包。

NAT表:

NAT是Network Address Translation的缩写,是网络地址转换的意思,用来负责来源与目的ip地址和port的转换。

一般用于局域网多人共享上网或将内网ip映射成外网ip+port转换的功能。该表主要包含3个链:

OUTPUT
和主机发出去的数据包有关,在数据包路由之前改变主机产生的数据包的目的地址。

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

POSTROUTING
在数据包离开防火墙时,进行路由判断之后执行的规则。改变包的源地址(SNAT功能)、端口等

Mangle表:

Mangle表主要负责修改数据包中的特殊路由标记,如TTL、TOS、MARK等。这个表中包含了5个链:INPUT、FORWARD、OUTPUT、PREROUTING、POSTROUTING,

这张表与特殊的标记相关,一般情况我们很少使用。

iptables:

0.0.0.0 所有ip

#查看帮助

iptables -h

man iptables

列出iptables规则

iptables -L -n

列出iptables规则并显示规则编号

iptables -L -n --line-numbers

列出iptables nat表规则(默认是filter表)

iptables -L -n -t nat

清除默认规则(注意默认是filter表,如果对nat表操作要加-t nat)

#清楚所有规则

iptables -F

#删除用户自定义的链

iptables -X

#将链的计数器清零

iptables -Z

#重启iptables发现规则依然存在,因为没有保存

service iptables restart

#保存配置

service iptables save

#禁止ssh登陆(若果服务器在机房,一定要小心)

iptables -A INPUT -p tcp --dport 22 -j DROP

#清除规则

iptables -D INPUT -p tcp --dport 22 -j DROP

iptables -D INPUT [line-number]    // 根据

-A, --append chain 追加到规则的最后一条

-D, --delete chain [rulenum] Delete rule rulenum (1 = first) from chain

-I, --insert chain [rulenum] Insert in chain as rulenum (default 1=first) 添加到规则的第一条

-p, --proto  proto protocol: by number or name, eg. ‘tcp‘,常用协议有tcp、udp、icmp、all

-j, --jump target 常见的行为有ACCEPT、DROP和REJECT三种,但一般不用REJECT,会带来安全隐患

注意:INPUT和DROP这样的关键字需要大写

#禁止192.168.10.0网段从eth0网卡接入

iptables -A INPUT -p tcp -i eth0 -s 192.168.10.0/24 -j DROP

#禁止ip地址非192.168.10.10的所有类型数据接入

iptables -A INPUT ! -s 192.168.10.10 -j DROP

#禁止ip地址非192.168.10.10的ping请求

iptables -I INPUT -p icmp --icmp-type 8 ! -s 192.168.98.10 -j DROP

#扩展匹配:1.隐式扩展 2.显示扩展

#隐式扩展

-p tcp

--sport PORT 源端口

--dport PORT 目标端口

#显示扩展:使用额外的匹配规则

-m EXTENSTION --SUB-OPT

-p tcp --dport 22 与 -p tcp -m tcp --dport 22功能相同

state:状态扩展,接口ip_contrack追踪会话状态

NEW:新的连接请求

ESTABLISHED:已建立的连接请求

INVALID:非法连接

RELATED:相关联的连接

#匹配端口范围

iptables -I INPUT -p tcp --dport 22:80 -j DROP

#匹配多个端口

iptables -I INPUT -p tcp -m multiport --dport 22,80 -j DROP

#不允许源端口为80的数据流出

iptables -I OUTPUT -p tcp --sport 80 -j DROP

#服务器一般默认规则问拒绝,如果想允某种流量通过需要额外添加

_____

Incoming                 /     \         Outgoing

-->[Routing ]--->|FORWARD|------->

[Decision]     \_____/        ^

|                        |

v                       ____

___                     /    \

/   \                  |OUTPUT|

|INPUT|                  \____/

\___/                      ^

|                        |

----> Local Process ----

http://www.netfilter.org/documentation/HOWTO/packet-filtering-HOWTO-6.html

配置防火墙:

两种模式:电影院模式和逛公园模式

配置一个生产环境的防火墙

#1.清空所有规则

iptables -F

iptables -Z

iptables -X

#2.配置允许ssh协议的22端口进入

iptables -A INPUT -p tcp --dport 22 -s 192.168.10.0/24 -j ACCEPT

#3.配置允许lo接口数据的进出

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

#4.设置默认的进出规则,DROP掉INPUT链和FORWARD链,保留OUTPUT链

iptables --policy OUTPUT ACCEPT

iptables -P INPUT DROP

iptables -P FORWARD DROP

#5.开启信任的IP段

iptables -A INPUT -p all -s 192.168.10.0/24 -j ACCEPT

#6.开放http的80端口

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

#7.允许icmp类型协议通过

iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

#8.允许关联状态包进出

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#对于FTP而言,就需要 RELATED 才能实现 21 端口白名单,如不加此项需要额外开放端口,而那些额外开放端口是不受连接状态保护的。

#9.保存iptables配置到文件

service iptables save

iptables --policy INPUT DROP // 将INPUT表策略修改为DROP

iptables的NAT功能:将Linux服务器配置为上网网关和端口映射功能

上网网关:就是将Linux服务器配置成路由器或者网关,实现其他服务器能通过这台服务器进行上网的功能,如果需要实在该功能,就要借助iptables的nat表

NAT的两种方式:DNAT和SNAT

SNAT的全称是Source Network Address Translation,意思是源网络地址转换,这是一种改变数据包源ip地址等功能的技术,

经常用来实现使多台计算机共享一个Internet地址访问互联网的功能,如x小区宽带、企业内部机器上网。(nat表的POSTROUTING)

DNAT的全称是Destination Network Address Translation,意思是目的网络地址转换,DNAT是一种改变数据包目的ip地址等功能的技术,它可以使多台服务器共享一个ip地址连入Internet,并且继续对外提供服务。通过对同一个外部ip地址分配不同的端口,可以映射到不同的内部服务器的ip和端口,从而实现提供各种服务的目的。除了进行端口映射外,还可以配合SNAT的功能,来实现类似防火墙设备才能实现的DMZ功能,即ip的一对一映射。(nat表的PREROUTING)

SNAT实验步骤:

1.准备两台服务器,其中一台服务器作为网关服务器,这台服务器要有两块网卡。另外一台作为内网服务器,有一块网卡。

2.网关服务器内核文件/etc/sysctl.conf需要开启转发功能。编辑/etc/sysctl.conf修改内容为net.ipv4.ip_forward=1,然后执行sysctl -p使修改立即生效。

3.设置iptables的filter表的FORWARD链允许转发。iptables  iptables -P FORWARD ACCEPT

4.将内网服务器的网关设置为网关服务器的内网ip地址

5.在网关服务器的iptables的nat表中加一条规则:iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j SNAT --to-source 172.16.50.128

6.验证:ping 8.8.8.8可以ping通,但是ping百度不同,需要配置DNS

DNAT实验步骤

在网关服务器的iptables的nat表中加一条规则:

iptables -t nat -A PREROUTING -d 172.16.50.128 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.10.129:80

一对一映射:

ifconfig eth0:1 172.16.50.100/24

// 外网对该IP所有端口进行转发

iptables -t nat -A PREROUTING -d 172.16.50.100 -j DNAT --to-destination 192.168.10.129

// 内网访问外网前,先通过VM1 SNAT. 所有端口转发  这个和上面标绿字体部分差不多

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.10.129 -j SNAT --to-source 172.16.50.100

一个网卡多个IP的方式:

1.网卡别名

ifconfig eth0:1 192.168.50.200

2.?

删除nat表POSTROUTING 第一条rule

iptables -t nat -D POSTROUING 1

DNAT -> PREROUTING

SNAT -> POSTROUTING

回路走的MAC记录

时间: 2024-10-10 11:01:19

iptables 简单配置示例的相关文章

tinc vpn简单配置示例扩展(一)——跨越三层网络

tinc vpn简单配置示例扩展(一)--跨越三层网络 在tinc vpn简单配置示例(http://watertoeast.blog.51cto.com/8489855/1711649)一文中,构建tinc VPN的两台机器同属一个局域网(如图一),这样的场景基本与实际应用情况不符.今天对简单示例进行扩展,使构建vpn的两台主机跨越三层网络边界(如图二). 图一 tinc vpn in lan 图二 tinc VPN跨越三层网络边界 如图二所示,PC02的IP地址变成了172.16.1.6,与

[ 总结 ] web server iptables 简单配置

[[email protected] ~]# iptables -F [[email protected] ~]# iptables -X [[email protected] ~]# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # 不允许服务器主动建立新连接 [[email protected] ~]# iptables -A INPUT -p tcp -m multiport --sport 22,80 -

iptables 简单配置

通过命令 netstat -tnl 可以查看当前服务器打开了哪些端口 Ssh代码 netstat -tnl 查看防火墙设置 Ssh代码 iptables -L -n 开放22.80端口 Ssh代码 iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -m state --state NEW,E

Linux DHCP服务器简单配置示例

1.DHCP安装及配置 yum install dhcp cp /usr/share/doc/dhcp*/dhcpd.conf.sample /etc/dhcp/dhcpd.conf vim /etc/dhcp/dhcpd.conf option domain-name "redhat.com"; option domain-name-servers 202.96.128.166, 114.114.114.114;        # 设置DNS default-lease-time 3

nginx配置及HTTPS配置示例

一.nginx简单配置示例 user www www; worker_processes 10; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; #最大文件描述符 worker_rlimit_nofile 51200; events { use epoll; worker_connections 51200; } ht

HAProxy基本配置、调度算法与tcp、http、heath模式配置示例

一.HAProxy安装 1.HAProxy简单介绍 HAProxy虽然名字前有HA,但它并不是一款高可用软件,而是一款用于实现负载均衡的软件,可实现四层与七层的负载均衡. 2.yum安装HAProxy HAProxy已经包含在yum的base中,版本为1.15,可以直接yum安装 ~]# yum install -y haproxy HAProxy的配置文件路径为:/etc/haproxy/haproxy.cfg 主程序路径为:/usr/sbin/haproxy 3.HAProxy配置 HAPr

Linux下iptables防火墙简单配置

Linux下防火墙简单配置 作为一个网站服务器,只需要开放80端口和22端口即可.80用于web访问,22用于远程登录管理,可以把22端口改成其他的端口,这样更安全.一般来说 在创建访问规则时 都会将原有的规则清零 这是一个比较好的习惯,因为某些规则的存在会影响你建的规则. 基本语法:iptables [-t filter] [-AI INPUT,OUTPUT,FORWARD] [-io interface]         [-p tcp,udp.icmp,all] [-s ip/nerwor

LVS DR模型配置示例

要让路由知道哪台主机是Director,进行选择: 1.VIP:MAC(Director VIP) -- MAC绑定,但未必可行,例如路由是运营商的. 2.arptables 3.kernel parameter(常用此配置): arp_ignore:定义接收到ARP请求时的响应级别: 0:默认级别,只要本机配置有相应的地址,就给予响应: 1:只有当请求目标地址是请求到达接口上配置的地址,才给予响应: arp_announce:定义将自己的地址向外通告时的通告级别: 0:默认级别,将本机任何接口

bind的简单配置

bind的简单配置 摘要:DNS  bind简单配置        FQDN        http://www.178linux.com.  WWW是主机名  .178linux.COM.是私有域名  .com.是DNS一级域名 .是根域 DNS解析顺序 /etc/hosts→DNS缓存→DNS域服务器 主机优先查找本地的hosts(/etc/hosts)文件,没有想对应的记录则去查找本地DNS客户端的解析缓存库,缓存库没有想对应的记录则询问本地配置的DNS服务器(DNS服务器配饰文件 /et