iptables防火墙

2023-05-16

文章目录

  • Linux包过滤防火墙概述
  • iptables的表、链结构
  • iptable安装
  • iptables的管理选项
  • 规则的匹配条件

Linux包过滤防火墙概述

netfilter
位于Linux内核中的包过滤功能体系
称为Linux防火墙的“内核态”

iptables
位于/sbin/iptables,用来管理防火墙规则的工具
称为Linux防火墙的“用户态”

上述2种称呼都可以表示Linux防火墙

包过滤的工作层次

主要是网络层,针对IP数据包
体现在对包内到的IP地址、端口等信息的处理上
3层—— ip——流量
4层——端口——服务

在这里插入图片描述

iptables的表、链结构

iptables的作用是为包过滤机制的实现提供规则(或称为策略),通过不同的规则,告诉netfilter对来自某些源、前往某些目的或具有某些协议特征的数据包应该如何处理。为了更加方便地组织和管理防火墙规则,iptables采用了“表”和“链”的分层结构,如图所示。
在这里插入图片描述
如图为iptables防火墙默认的规则表、链结构
其中,每个规则“表”相当于内核空间的一个容器,根据规则集的不同用途规划分为默认的四个表:在每个“表”容器内包括不同的规则“链”,根据处理数据包的不同时机划分为五种链:而决定是否过滤或处理数据包的各种规则,则是按先后顺序存放在各规则链中。
1.规则表
为了从规则集的功能上有所区别,iptables管理者四个不同的规则表,其功能分别有独立的内核模块实现。这四个表的名称、包含的链及各自的用途如下。

一:filter表:filter表用来对数据包进行过滤,根据具体的规则要求决定如何处理一个数据包。
filter表对应的内核模块为iptable_filter,表内包含三个链,即INPUT、FORWARD、OUTPUT。
二:nat表:nat(Network Address Translation,网络地址转换)表主要用来修改数据包的IP地址、端口号等信息。nat表对应的内核模块为iptable_nat,表内包含三个链,即PREROUTING、POSTROUTING、OUTPUT。
三:mangle表mangle表用来修改数据包的TOS(Type Of Service,服务类型)、TTL(Time To Live,生存周期),或者为数据包设置Mark标记,以实现流量整形、策略路由等高级应用。mangle表对应的内核模块为iptable_mangle,表内包含个链即PREROUYING、POSTROUTING、INPUT、OUTPUT、FORWARD。
四:raw表:raw表是自1.2.9以后的版本iptables新增的表,主要用来决定是否对数据包进行状态跟踪。raw表对应的内核模块为iptable_raw,表内包含两个链,即OUTPUT、PREROUTING。

2.规则链
在处理各种数据包时,根据防火墙规则的不同介入时机,iptables默认划分为五种不同的规则链。这五种链的名称、各自的介入时机如下。

INPUT链:当收到访问防火墙本机地址的数据包(入站)时,应用此链中的规则。
OUTPUT链:当防火墙本机向外发送数据包(出站)时,应用此链中的规则。
FORWARD链:当接收到需要通过防火墙中转发送给其他地址的数据包(转发)时,应用此链中的规则。
PREROUTING链:在对数据包做路由选择之前,应用此链中的规则。
POSTROUTING链:在对数据包做路由选择之后,应用此链中的规则。
其中,INPUT、OUTPUT链主要在“主机型防火墙”中,即主要针对的服务器本机进行保护的防火墙:而FORWARD、PREROUTING、POSTROUTING链多用在“网络型防火墙”中,如使用Linux防火墙作为网关服务器,在公司内网与Intermet之间进行安全控制。

规则链

规则链的作用:对数据包进行过滤或处理  (衡量标准)
链的作用:容纳各种防火墙规则
链的分类依据:处理数据包的不同时机

默认包括5种规则链

INPUT:处理入站数据包
OUTPUT:处理出站数据包
FORWARD:处理转发数据包
POSTROUTING链:在进行路由选择后处理数据包
PREROUTING链:在进行路由选择前处理数据包

规则表

表的作用:容纳各种规则链
表的划分依据:防火墙规则的作用相似

默认包括4个规则表

raw表:确定是否对该数据包进行状态跟踪
mangle表:为数据包设置标记
nat表:修改数据包中的源、目标IP地址或端口
filter表:确定是否放行该数据包(过滤)

默认的表、链结构示意图
在这里插入图片描述

规则表之间的顺序

raw→mangle→nat→filter(常用表)

规则链之间的顺序

入站:PREROUTING→INPUT    注:入站出站对应主机防火墙 转发对应网络防火墙
出站:OUTPUT→POSTROUTING
转发:PREROUTING→FORWARD→POSTROUTING

规则链内的匹配顺序

按顺序依次检查,匹配即停止(LOG策略例外)
若找不到相匹配的规则,则按该链的默认策略处理

匹配流程示意图
在这里插入图片描述
附加:地址伪装在nat:POSTROUTING上
小结
iptables防火墙默认包括哪几个表、哪几种链?
对于转发的数据包,会经过哪几种链的处理?
在同一个规则链内,规则匹配的特点是什么?

iptable安装

关闭firewalld防火墙

[root@serverl ~]# systemctl stop firewalld.service
[root@serverl ~]# systemctl disable firewalld.service 

注:CentOS 7默认使用firewalld防火墙,若想使用iptables防火墙,必须先关闭firewalld防火墙
安装iptables防火墙

[root@serverl ~]# yum -y install iptables iptables-services

设置iptables开机启动

[root@serverl ~]# systemctl start iptables.service 
[root@serverl ~]# systemctl enable iptables.service

语法构成

lptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]   p表示协议
 [root@serverl ~]# iptables -t filter -I INPUT -p icmp -j REJECT  阻止ping测试

注意事项

不指定表名时,默认指filter表
不指定链名时。默认指表内的所有链
除非设置链的默认策略,否则必须指定匹配条件
选项、链名、控制类型使用大写字母,其余均为大小写

附加:

iptables -t filter -n -L INPUT :表示查看filter表INPUT链中的所有语句
例:
[root@server1 ~]# iptables -t filter -I INPUT -p icmp -s 20.0.0.10 -j REJECT 
[root@server1 ~]# iptables -n -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     icmp --  20.0.0.11            0.0.0.0/0            reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)

[root@serverl ~]# ping 20.0.0.11  客户机无法ping通
PING 20.0.0.11 (20.0.0.11) 56(84) bytes of data.
From 20.0.0.11 icmp_seq=1 Destination Port Unreachable
From 20.0.0.11 icmp_seq=2 Destination Port Unreachable

附加:
iptables命令的的常用管理选项
在这里插入图片描述

[root@server1 ~]# iptables -F  清空
[root@server1 ~]# iptables -n -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         
[root@server1 ~]# iptables -n -L --line-numbers
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 

数据包的常见控制类型

ACCEPT:允许通过
DROP:直接丢弃,不给出任何回应
REJECT:拒绝通过,必要时会给出提示
LOG:记录日志信息,然后传给下一条规则继续匹配

防火墙规则的“匹配即停止”对于LOG操作来说是一个特例,因为LOG只是一种辅助动作,并没有真正处理数据包
例:删除命令

[root@server1 ~]# iptables -D INPUT 1
[root@server1 ~]# iptables -n -L
[root@server1 ~]# iptables -t filter -I INPUT -p icmp -s 20.0.0.10 -j DROP 
[root@server1 ~]# iptables -n -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination      
与上一个实验比较(无反应)
[root@serverl ~]# ping 20.0.0.11
PING 20.0.0.11 (20.0.0.11) 56(84) bytes of data.

其中,添加、删除清空和查看规则是最常见的管理操作,下面通过一些规则操作实例来展示相关选项的使用。
1.添加新的规则

添加新的防火墙规则时,使用管理选项“-A”、“-I”,前者用来追加规则,后者用来用来插入规则。例如,若要在filter表INPUT链的末尾添加一条防火墙规则,可以执行以下操作(其中“-p协议名”作为匹配条件)。
[root@serverl ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT 
当使用管理员选项“-I”时,允许同时指定添加规则的顺序号,未指定序号默认作为第一条。例如,以下操作添加的两条规则将分别位于filter表的第一条、第二条(其中省略“-t filter”选项,默认使用filter表)。
[root@server1 ~]# iptables -I INPUT -p udp -j ACCEPT 
[root@server1 ~]# iptables -I INPUT 2 -p icmp -j ACCEPT 

实验1:禁止其他客户端访问

[root@server1 ~]# yum -y install iptables-services
[root@server1 ~]# systemctl start iptables
[root@server1 ~]# iptables -t filter -I INPUT -p icmp -s 20.0.0.11 -j REJECT 
[root@server1 ~]# iptabl s -n -L (发现icmp排在最前面)
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     icmp --  20.0.0.11           0.0.0.0/0            reject-with icmp-port-unreachable
主机ip为20.0.0.11的测试效果如下:
[root@serverl ~]# ping 20.0.0.10
PING 20.0.0.10 (20.0.0.10) 56(84) bytes of data.
From 20.0.0.10 icmp_seq=1 Destination Port Unreachable
From 20.0.0.10 icmp_seq=2 Destination Port Unreachable

2:删除行数

[root@server1 ~]# iptables -n -L INPUT --line-numbers  显示行数
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    REJECT     icmp --  20.0.0.11            0.0.0.0/0            reject-with icmp-port-unreachable
2    REJECT     icmp --  20.0.0.10            0.0.0.0/0            reject-with icmp-port-unreachable
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
4    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
5    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
6    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
7    REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host

[root@server1 ~]# iptables -D INPUT 6  删除第6行
[root@server1 ~]# iptables -n -L INPUT --line-numbers  发现原第7行已删除
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    REJECT     icmp --  20.0.0.11            0.0.0.0/0            reject-with icmp-port-unreachable
2    REJECT     icmp --  20.0.0.10            0.0.0.0/0            reject-with icmp-port-unreachable
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
4    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
5    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
6    REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host

iptables的管理选项

添加新的规则

-A:在链的末尾追加一条规则
-l:在链的开头(或指定序号)插入一条规则
[root@serverl ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT 
[root@serverl ~]# iptables -I INPUT -p udp -j ACCEPT 
[root@serverl ~]# iptables -I INPUT 2 -p icmp -j ACCEPT  -p用来指定协议
2表示在第几行,默认为第1行

查看规则列表

-L:列出所有的规则条目
-n:以数字形式显示地址、端口等信息
-v:以更详细的方式显示规则信息
--line-numbers:查看规则时,显示规则的序号

查看规则列表

[root@serverl ~]# iptables -n -L INPUT    -n -L可合写成-nL(顺序不能颠倒)
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
REJECT     icmp --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  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
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           

删除、清空规则

-D:删除链内指定序号(或内容)的一条规则
-F:清空所有的规则
[root@serverl ~]# iptables -D INPUT 3
[root@serverl ~]# iptables -n -L INPUT 
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  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
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           

[root@serverl ~]# iptables -F       清空四张表里面的所有链的所有规则
[root@serverl ~]# iptables -t filter -F
[root@serverl ~]# iptables -t nat -F   清空nat表中里面的所有链中的所有规则
[root@serverl ~]# iptables -t mangle -F 
[root@serverl ~]# iptables -t raw -F
查看删除后显示效果:
[root@server1 ~]# iptables -t filter -n -L
优先级:raw>mangle>nat>filter

设置默认策略(但不显示)

 -p:为指定的链设置默认规则
[root@server1 ~]# iptables -t filter -P FORWARD DROP   指定的表
[root@server1 ~]# iptables -P OTUPUT ACCEPT 所有表
(清空所有默认策略要么是ACCEPT、要么是DROP表的所有链)
[root@server1 ~]#iptables -t filter -P INPUT DROP  设置默认规则(默认只有filter表显示DROP,其他表不变)
[root@server1 ~]#iptables -t filter -n -L INPUT    查看效果(默认,故无显示)

附加:
设置默认策略
iptables的各链中,默认策略是规则匹配的最后一个环节——当找不到任何一条能够匹配数据包的规则时,则执行默认策略。默认策略的控制类型为ACCEPT(允许)、DROP(丢弃)两种。例如,执行以下操作可以将filter表中FORWARD链的默认策略设为丢弃,OUTPUT链默认策略设为允许。

root@localhost ~]#iptables -t filter -P FORWARD DROP
[root@localhost ~]#iptables -P OUTPUT ACCEPT

需要注意的是,当使用管理选项“-F”清空链时,默认策略不受影响。因此若要修改策略,不许通过管理选项“-P”重新进行设置。另外,默认策略并不参与链内规则的顺序编排,因此在其他规则之前或之后设置并无区别。

[root@server1 ~]# iptables -t filter -P INPUT ACCEPT
[root@server1 ~]# iptables -t filter -n -L INPUT 

常用管理选项汇总
在这里插入图片描述

规则的匹配条件

通用匹配

 可直接使用,不依赖于其他条件或扩展
 包括网络协议、IP地址、网络接口等条件

隐含匹配

 要求以特定的协议匹配作为前提
 包括端口、TCP标记、ICMP类型等条件

显示匹配

 要求以“-m扩展模块”的形式明确指出类型
 包括多端口、MAC地址、IP范围、数据包状态等条件

常见的通用匹配条件

 协议匹配:-p协议名
 地址匹配:-s源地址、-d目的地址
 接口匹配:-i入站网卡、-o出站网卡

附加:

出站:流量从防火墙出去
入站:流量从防火墙网卡进入
入站匹配的地址是源地址
出站匹配的地址是目标地址
[root@localhost ~]#iptables -I INPUT -p icmp-j DROP
[root@localhost ~]#iptables -A FORWARD ! -p icmp -j ACCEPT 叹号 !表示取反

[root@localhost ~]#iptables -A FORWARD -s 192.168.1.11 -j REJECT
[root@localhost ~]#iptables -I INPUT -s 10.20.30.0/24 -j DROP

例如:若要丢弃从外网接口(ens33)访问防火墙本机且源地址为私有地址的数据包,可以执行以下操作

[root@localhost ~]#iptables -A INOUT -i ens33 -s 192.168.0.0/16 -j DROP 禁止私有网段进站
[root@localhost ~]#iptables -A INOUT -i ens33 -s 10.0.0.0/8 -j DROP
[root@localhost ~]#iptables -A INOUT -i ens33 -s 172.16.0.0/12 -j DROP
ens33:外网接口 以上三个网段为私有地址段

实验:允许客户机访问apache服务器,不允许它访问ftp服务器(同一个主机)
规则的匹配条件5.4
10.

[root@server1 ~]# iptables -F
[root@server1 ~]# iptables -nL INPUT --line-numbers 
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination   
[root@server1 ~]# yum -y install httpd vsftpd
[root@server1 ~]# cd /var/www/html
[root@server1 html]# vi index.html
<html><h1>web server</h1></html>
[root@server1 html]# cd
[root@server1 ~]# systemctl start httpd
[root@server1 ~]# curl http://localhost
<html><h1>web server</h1></html>
[root@server1 ~]# cd /var/ftp/pub/
[root@server1 pub]# echo a>a.txt
[root@server1 pub]# echo b>b.txt
[root@server1 pub]# echo c>c.txt
[root@server1 pub]# ls -lh
总用量 12K
-rw-r--r--. 1 root root 2 10月 19 10:37 a.txt
-rw-r--r--. 1 root root 2 10月 19 10:38 b.txt
-rw-r--r--. 1 root root 2 10月 19 10:38 c.txt
[root@server1 pub]# cd
[root@server1 ~]# chown -R ftp.ftp /var/ftp/pub/
[root@server1 ~]# chmod -R 755 /var/ftp/pub/
[root@server1 ~]# sed -i /^anonymous_enable/s/YES/NO/g /etc/vsftpd/vsftpd.conf 
[root@server1 ~]# sed -i /^anon/anon_umask=022/g /etc/vsftpd/vsftpd.conf 
修改以下配置
[root@server1 ~]# vi /etc/vsftpd/vsftpd.conf 
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO
non_umask=022/g
non_umask=022/g
修改为
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES
anon_umask=022

#anon_upload_enable=YES→non_upload_enable=YES
#anon_mkdir_write_enable=YES→anon_mkdir_write_enable=YES并在其下一行添加如下命令
anon_other_write_enable=YES

listen_ipv6=YES→listen_ipv6=NO
listen=NO→listen=YES

[root@server1 ~]# systemctl start vsftpd

11.进行测试

[root@serverl ~]# curl http://20.0.0.10
<html><h1>web server</h1></html>
[root@serverl ~]# yum -y install ftp
[root@serverl ~]# ftp 20.0.0.10
Connected to 20.0.0.10 (20.0.0.10).
220 (vsFTPd 3.0.2)
Name (20.0.0.10:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> ls -lh
227 Entering Passive Mode (20,0,0,10,222,128).
150 Here comes the directory listing.
-rwxr-xr-x    1 14       50              2 Oct 19 02:37 a.txt
-rwxr-xr-x    1 14       50              2 Oct 19 02:38 b.txt
-rwxr-xr-x    1 14       50              2 Oct 19 02:38 c.txt
226 Directory send OK.
ftp> get c.txt
local: c.txt remote: c.txt
227 Entering Passive Mode (20,0,0,10,224,77).
150 Opening BINARY mode data connection for c.txt (2 bytes).
226 Transfer complete.
2 bytes received in 3.2e-05 secs (62.50 Kbytes/sec)
ftp> bye
221 Goodbye.

10:

[root@server1 ~]# iptables -I INPUT -p tcp -s 20.0.0.11 --dport=21 -j REJECT   
[root@server1 ~]# iptables -n -L INPUT 
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     tcp  --  20.0.0.11            0.0.0.0/0            tcp dpt:21 reject-with icmp-port-unreachable

11:验证

[root@serverl ~]# ftp 20.0.0.10
ftp: connect: 拒绝连接
ftp> bye

12:验证

[root@server1 ~]# yum -y install ftp
[root@server1 ~]# ftp 20.0.0.10 可以连接

规则的匹配条件5.3

常用的隐含匹配条件
 端口匹配:--sport源端口(一般针对客户)、--dport目的端口(一般针对服务器)
 ICMP类型匹配:--icmp-type ICMP类型 
 [root@localhost ~]#iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT
udp=(DNS:备注使用)
[root@localhost ~]#iptables -A INPUT -A INPUT-p tcp --dport 20:21 -j ACCEPT
20:21 :表示连续的端口号用:分隔
 [root@localhost ~]#iptables -A INPUT -p icmp --icmp-type 8 -j DROP
 [root@localhost ~]#iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
[root@localhost ~]#iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
以上三句话总结为只允许我的icmp包出去(ping其他),不允许其他icmp包进来(其他ping)我
[root@localhost ~]#iptables -A INPUT -p icmp DROP
8请求,0 回显,3不可达

实验:
11:

systemctl stop iptables

10:

[root@localhost ~]#iptables -A INPUT -p icmp --icmp-type 8 -j DROP
 [root@localhost ~]#iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
[root@localhost ~]#iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
[root@localserver ~]#iptables -n -L INPUT
相互ping测试

附加:
ICMP类型匹配
编写iptables规则时使用“–icmp-type ICMP 类型”的形式,针对的协议为ICMP,用来检查ICMP数据包的类型(–icmp-type)。ICMP类型使用字符串或数字代码表示,如“Echo-Request”(代码为8)、“Echo-Reply”(代码为0)、“Destination-Unreachable”(代码为3),分别对应ICMP协议的请求、回显、目标不可达。例如,若要禁止从其他主机ping本机,但是允许本机ping其他主机,可以执行以下操作。(无后文)

常用的显示匹配条件

 多端口匹配:-m multiport --sports源端口列表          可以适用于不连续端口
            -m multiport --dports目的端口列表
  IP范围匹配:-m iprange --src-range IP范围
  MAC地址匹配:-m mac --mac-source MAC地址
  状态匹配:-m state --stale连接状态
[root@localhost ~]#iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT 允许邮箱使用
[root@localhost ~]#iptables -A FORWARD -p tcp -m iprange --src-range 192.168.4.21-192.168.4.28 -j ACCEPT
[root@localhost ~]#iptables -A INPUT -m mac --mac -source 00:0c:29:c0:55:3f -j DROP

连接状态:

[root@localhost ~]#iptables -P INPUT DROP 
[root@localhost ~]#iptables -I INPUT -p tcp -m multiport --dport 80 -j ACCEPT
[root@localhost ~]#iptables -I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT

常用管理选项汇总
在这里插入图片描述
本章总结

iptables的基本语法
iptables常用管理选项
A、I、L、n、v、--line-numbers、D、F、P
iptables规则匹配条件
 通用匹配、隐含匹配、显示匹配

在这里插入图片描述
在这里插入图片描述

附加:策略一般是针对其他主机使用

 SNAT策略及应用→easyip
 DNAT策略及应用←servernat

规则的导入、导出
使用防火墙脚本

SNAT策略概述
SNAT策略的典型应用环境
局域网主机共享单个公网IP地址接入Internet
SNAT策略的原理
源地址转换,Source Network Address Translation
修改数据包的源地址
在这里插入图片描述
具体实现的方法:
(1)中间的防火墙充当路由器,开启nat功能;
(2)防火墙上做策略,指定192.168.1.0/24的主机转换成202.10.100.5

iptables -F
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens37(外网卡) -j SNAT --to-source 202.10.100.5

DNAT:相当于华为路由器中的servernat的知识点,让外网的用户可以访问内网发布的服务。
具体的实现方法:
(1)中间的防火墙充当路由器,开启nat功能;
(2)防火墙上做策略,指定访问网关的某服务映射给内网服务器

iptables -t nat -A PREROUTING -i ens37 (外网卡) -d 202.10.100.5 -p tcp --d port 21 -j DNAT --to-destination 192.168.1.10

附加:内→外:SNAT 192.168.1.0/24 → 202.10.100.5/24
外→内:DNAT 202.10.100.5:21→ 192.168.1.10:21
实验(上面为实验图以及实验说明)
192.168.1.11:

[root@serverl ~]# hostname internal
[root@serverl ~]# bash

192.168.1.10:

添加一块网卡VMent0(桥接模式)
编辑:虚拟网络编辑器:VMent0(Rea开头)确定
[root@ser	ver ~]#cd /etc/sysconfig/network-scripts/ 
[root@ser	ver network-scripts]# ls -lh
[root@ser	ver network-scripts]#cp -p ifcfg-ens33 ifcfg-ens37
[root@ser	ver network-scripts]#vi ifcfg-ens37
IPADDR=192.168.1.10
两个ens33改为ens37
删除uuid行:UUID=29301975-17cd-45af-93cf-e9226cfde05e
[root@server1 network-scripts]# systemctl restart network
[root@server1 network-scripts]# ifconfig
查看ens37ip是否改为202.10.101.5
[root@server1 network-scripts]#cd

20.0.0.12

网络适配器改为桥接模式
[root@server1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 
修改以下配置
IPADDR=20.0.0.12  IPADDR=202.10.101.10
删除三行:GATEWAY=20.0.0.2
DNS=20.0.0.2
UUID=29301975-17cd-45af-93cf-e9226cfde05e
[root@server1 ~]# systemctl restart network
[root@server1 ~]#ifconfig
[root@server1 ~]#init 6

192.168.1.11:

[root@server1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 
GATEWAY=192.168.1.10
DNS=192.168.1.10
[root@server1 ~]# systemctl restart network
[root@server1 ~]#route -n
Kernel IP routing table
Destination     Gateway         Genmask     Flags Metric Ref    Use Iface
0.0.0.0        192.168.1.10       0.0.0.0       UG    100    0        0 ens33
192.168.1.0      0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.122.0    0.0.0.0         255.255.255.0   U     0      0        0 virbr0

20.0.0.12:

[root@server1 ~]# systemctl status network
[root@server1 ~]# ifconfig  查看ip是否为202.10.101.10

192.168.1.10:

ping以下两个ip,是否能通
[root@server1 ~]#ping 192.168.1.11
[root@server1 ~]# ping 202.10.101.10

20.0.0.12:

[root@server1 ~]#yun -y install httpd
[root@server1 ~]#cd /var/www/html
[root@server1 html]#vi index.html 
<html><h1>new web</h1></html>
[root@server1 html]#systemctl start httpd
[root@server1 html]#curl http://localhost
<html><h1>new web</h1></html>
[root@server1 html]#cd

192.168.1.10:

[root@server1 ~]# vi /etc/sysctl.conf 
最后一行添加以下内容
net.ipv4.ip_forward=1
[root@server1 ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@server1 ~]# yum -y install iptables iptables-services
[root@server1 ~]# systemctl start iptables
[root@server1 ~]# iptables -F
[root@server1 ~]# iptables -t nat -I POSTROUTING -s 192.168.1.0/24 -o ens37 -j SNAT --to-source 202.10.101.5
[root@server1 ~]# iptables -t nat -n -L((暂时先不输入)两条命令可以防止iptables -F前)
[root@server1 ~]# iptables -t filter -n -L

20.0.0.12:

[root@server1 ~]#systemctl status firewalld
[root@server1 ~]# systemctl stop firewalld
[root@server1 ~]# setenforce 0

192.168.1.10:192.168.1.11:

火狐浏览器输入
http://202.10.101.10
是否显示:new web

192.168.1.11:

[root@server1 ~]#yum -y install vsftpd
[root@server1 ~]# cd /var/ftp/pub/
[root@server1 pub]# echo abc > a.txt
[root@server1 pub]# cd
[root@server1 ~]# chown -R ftp.ftp /var/ftp/pub/
[root@server1 ~]# chmod -R 755 /var/ftp/pub/
更改以下配置
[root@server1 ~]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES其后面添加一行
anon_umask=022
#anon_upload_enable=YES→anon_upload_enable=YES
#anon_mkdir_write_enable=YES→anon_mkdir_write_enable=YES并在其后面添加一行
anon_other_write_enable=YES
listen=NO→listen=YES
listen_ipv6=YES→NO
[root@server1 ~]# systemctl restart network
[root@server1 ~]#systemctl start vsftpd
[root@server1 ~]#systemctl stop firewalld
[root@server1 ~]#setenfoce 0
[root@server1 ~]#systemctl stop iptables
[root@server1 ~]#netstat -anpt | grep 21

192.168.1.10:

[root@server1 ~]#yum -y install ftp
[root@server1 ~]#ftp 192.168.1.11
ftp  回车 cd pub ls -lh bye
[root@server1 ~]# iptables -t nat -I PREROUTING -d 202.10.101.5 -p tcp --dport 21 -j DNAT --to-destination 192.168.1.10
[root@server1 ~]# iptables -t nat -n -L PREROUTING 
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            202.10.101.5         tcp dpt:21 to:192.168.1.10
[root@server1 ~]# iptables -t nat -I PREROUTING -d 202.10.101.5 -p tcp --dport 21 -j DNAT --to-destination 192.168.1.11
[root@server1 ~]# iptables -t nat -n -L PREROUTING 
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            202.10.101.5         tcp dpt:21 to:192.168.1.11
DNAT       tcp  --  0.0.0.0/0            202.10.101.5         tcp dpt:21 to:192.168.1.10
[root@server1 ~]# iptables -t nat -D PREROUTING 2
[root@server1 ~]# iptables -t nat -n -L PREROUTING 
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            202.10.101.5         tcp dpt:21 to:192.168.1.11

20.0.0.12:

[root@server1 ~]#yum -y install ftp
[root@server1 ~]#ftp 202.10.101.5
ftp 回车 cp pub  ls -lh后如果提示网络不可达 输入passive ls -lh get.a.txt
put initia;-setup-ks.cfg  bye
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iptables防火墙 的相关文章

随机推荐

  • 重磅|中科视拓开源SeetaFace2人脸识别算法

    今天 xff0c 来自中科院计算所的人工智能国家队中科视拓宣布 xff0c 开源商用级SeetaFace2人脸识别算法 SeetaFace2采用商业友好的BSD协议 xff0c 这是在2016年9月开源SeetaFace1 0人脸识别引擎之
  • 学习笔记

    八种基本排序及其时间复杂度 https blog csdn net yang03 26 article details 80773280 参照上述文章中快速排序算法的源代码进行验证 在在线编程网站http www bccn net run
  • 杂记

    在线键盘敲击练习 xff1a https www dazima cn flash 127 html 有道云笔记网页网址 xff1a http note youdao com Android使用RenderScript实现图片的高斯模糊效果
  • ubuntu开机后桌面显示空白的问题

    原文 xff1a ubuntu开机只显示空白桌面解决方案 摘自 xff1a http www 2cto com os 201305 214687 html ubuntu开机只显示空白桌面解决方案 重新安装如下 xff1a sudo apt
  • 在ubuntu中安装编译工具mingw

    原文 xff1a Mingw xff1a 在Linux系统下编译Windows的程序 链接 xff1a http www sudu cn info html edu 20071227 87635 html Ubuntu下可以直接安装 xff
  • Spring Boot常用注解(绝对经典)

    x1f3c6 作者简介 xff1a 哪吒 xff0c CSDN2022博客之星Top1 CSDN2021博客之星Top2 多届新星计划导师 博客专家 x1f4aa xff0c 专注Java硬核干货分享 xff0c 立志做到Java赛道全网T
  • linux下deb包如何安装

    原文 xff1a 怎么安装deb软件 链接 xff1a http zhidao baidu com link url 61 w 6LOuxz 97ZrSjEDIZemmLBsQTsseXJCRe1qE5PkmFKhF3o8tRmAkBloU
  • ubuntu下用apt-get时一直报[正在等待报头]

    原文 xff1a ubuntu下用apt get是总是出现0 正在等待报头 链接 xff1a http blog csdn net nevasun article details 6268332 分类 xff1a Linux系统管理 201
  • Android软键盘弹出时把布局顶上去的解决方法

    原文 xff1a 解决Andriod软键盘出现把原来的布局给顶上去的方法 xff08 转 xff09 链接 xff1a http blog sina com cn s blog 9564cb6e0101g2eb html 决方法 xff0c
  • 一个android列表的适配器数据异步加载的问题

    一个android列表的适配器数据异步加载的问题 问题现象 xff1a 当点击一个ListView的子项 xff0c 等更新ListView完成时 xff0c 再点击一下ListView的子项 xff0c 程序运行良好 xff1b 当点击一
  • MHA高可用配置及故障切换

    MHA概述 传统的MySQL主从架构存在问题 单点故障 MHA概述 一套优秀的MySQL高可用环境下故障切换和主从复制的软件 MySQL故障过程中 xff0c MHA能做到0 30秒内自动完成故障切换 MHA的组成 MHA Manager
  • setenforce: SELinux is disabled解决方案

    解决方案 第一步 修改配置文件 root 64 www vi etc selinux config SELINUX 61 disabled 该为SELINUX 61 1 第二步 重启nginx服务 systemctl restart ngi
  • OpenStack

    文章目录 OpenStack概述OpenStack简介什么是云计算IaaSPaaSSaaSDaaS OpenStack发展历程OpenStack发展趋势OpenStack工作流程OpenStack管理流程QEMULibvirt OpenSt
  • 利用wget命令获取FTP资源

    wegt命令作用 xff1a 可以从对方的ftp服务器上直接下载现存的软件包 命令格式 xff1a wget ftp IP 软件包名称 若是防止网站上面现在相关软件包可以使用该命令 xff1a wget http IP 软件包名称 验证 x
  • 部署OpenStack架构

    文章目录 OpenStack环境部署部署思路基础环境配置配置OpenStack系统环境配置 Keystone 组件的搭建小结 Glance组件的搭建 OpenStack环境部署 虚拟机设备信息及需求 控制节点 xff08 ct xff09
  • FTP服务与DNS域名解析服务

    文章目录 FTP原理FTP匿名账户的部署过程 xff1a FTP本地用户的部署过程 xff1a 指定用户的宿主目录路径DNS 域名解析服务 DNS正向解析DNS反向解析DNS主从复制 FTP原理 ftp使用场合 xff1a 用于文件的传输
  • 【Redis 1】Redis基础知识概述

    一 Redis简介 1 Redis xff08 Remote Dictionary Server 远程字段服务 xff09 是一个开源的使用ANSI C语言编写 支持网络 科技与内存亦可持久化的日志型 key value数据库 xff0c
  • PXE高效批量网络装机

    文章目录 PXE概述PXE部署kickstart无人值守部署 PXE概述 PXE批量部署的优点 规模化 xff1a 同时装配多台服务器 自动化 xff1a 安装系统 配置各种服务 远程实现 xff1a 不需要光盘 U盘等安装介质 PXE x
  • Firewalld防火墙基础

    Firewalld概述 Firewalld 支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具 支持IPv IPv6防火墙设置以及以太网桥 支持服务或应用程序直接添加防火墙规则接口 拥有两种配置模式 运行时配置 xff1a 即
  • iptables防火墙

    文章目录 Linux包过滤防火墙概述iptables的表 链结构iptable安装iptables的管理选项规则的匹配条件 Linux包过滤防火墙概述 netfilter 位于Linux内核中的包过滤功能体系 称为Linux防火墙的 内核态