iptables理论说明
防火墙种类及使用说明
- 硬件: 整个企业入口
- 三层路由: H3C 华为 Cisco(思科)
- 深信服
- 软件: 开源软件 网站内部 封ip 封ip
- iptables 写入到Linux内核中 以后服务docker
- firewalld C7
- 云防火墙
- 阿里云:安全组
关于防火墙需要知道的名词
- 容器: 瓶子 罐子 存放东西
- 表(table): 存放链的容器
- 链(chain): 存放规则的容器
- 规则(policy): 准许或拒绝规则
Netfilter | 表(tables) | 链(chains) | 规则(Policy) |
---|---|---|---|
一栋楼 | 楼里的房子 | 房子里的柜子 | 柜子里衣服,摆放规则 |
iptables执行过程:
正向解析和反向解析
- 正向解析:将域名解析为 IP 地址。
- 反向解析:将 IP 地址解析为域名。
iptables四表五链
iptables 通过四个表(filter, nat, mangle, raw)和五个链(INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING)来控制数据包。
四表
- filter:默认表,用于控制数据包的访问控制,即决定哪些包可以进入、离开或穿过系统。
- nat:用于网络地址转换,如端口转发、DNAT(目的地址转换)和 SNAT(源地址转换)。
- mangle:用于修改数据包的内容,如修改TTL值、QoS(服务质量)等。
- raw:用于配置数据包是否被状态跟踪系统跟踪。
五链
- INPUT:处理进入本机的数据包。
- OUTPUT:处理本机发出的数据包。
- FORWARD:处理经过本机但不是本机发出或目的地的数据包。
- PREROUTING:处理到达本机、在路由决策之前的数据包。
- POSTROUTING:处理离开本机、在路由决策之后的数据包。
input、output、forward、prerouting、postrouting
iptables的四表五链中,每个表包含的链如下:
1.filter表
- INPUT链:处理进入本机的数据包。当数据包的目的地是本机时,会经过此链进行过滤。
- OUTPUT链:处理本机产生的、将要发出的数据包。本机应用程序发送的数据包会经过此链进行检查。
- FORWARD链:处理经过本机但非本机产生的数据包,即本机作为路由器转发的数据包会经过此链。
2.nat表
- PREROUTING链:在进行路由选择之前对数据包进行地址转换。常用于目标地址转换(DNAT),根据需要修改进入的数据包的目标地址。
- POSTROUTING链:在进行路由选择之后对数据包进行地址转换。主要用于源地址转换(SNAT),修改出去的数据包的源地址。
- OUTPUT链:处理本机产生的、将要进行地址转换后发出的数据包。用于本机发送的需要进行NAT转换的包。
3.mangle表
- PREROUTING链:在进行路由选择之前对数据包进行修改,如修改TTL、TOS等信息。
- POSTROUTING链:在进行路由选择之后对数据包进行修改。
- INPUT链:处理进入本机的数据包,在数据包被本机应用程序接收之前进行修改。
- OUTPUT链:处理本机产生的、将要发出的数据包,在发送之前进行修改。
- FORWARD链:处理经过本机但非本机产生的数据包,在数据包被转发之前进行修改。
4.raw表
- PREROUTING链:在进行路由选择之前对数据包进行处理,主要用于决定是否对数据包进行连接跟踪。
- OUTPUT链:处理本机产生的、将要发出的数据包,在进行连接跟踪之前进行处理。
四表五链总结:
1) filter表
- 防火墙: 屏蔽或准许 端口 ip
filter表 | 强调:主要和主机自身相关,真正负责主机防火墙功能的(过滤流入流出主机的数据包) filter表示iptables默认使用的表,这个表定义了三个链(chains) 企业工作场景:主机防火墙 |
---|---|
INPUT | 负责过滤所有目标地址是本机地址的数据包 通俗来说:就是过滤进入主机的数据包 |
FORWARD | 负责转发流经主机的数据包。起转发的作用,和NAT关系很大,后面会详细介绍 LVS NAT模式,net.ipv4.ip_forward=0 |
OUTPUT | 处理所有源地址是本机地址的数据包 通俗的讲:就是处理从主机发出去的数据包 |
2) nat表
- 实现nat功能
- 实现共享上网(内网服务器上外网)
- 端口映射和ip映射
nat | 负责网络地址转换的,即来源与目的IP地址和port的转换。 应用:和主机本身无关,一般用于局域网共享上网或者特殊的端口转换服务相关。 工作场景: 1. 用于企业路由(zebra)或网关(iptables),共享上网(POSTROUTING) 2. 做内部外部IP地址一对一映射(dmz),硬件防火墙映射IP到内部服务器,ftp服务(PREROUTING) 3. WEB,单个端口的映射,直接映射80端口(PREROUTING) 这个表定义了3个链,nat功能相当于网络的acl控制。和网络交换机acl类似。 |
---|---|
OUTPUT | 和主机放出去的数据包有关,改变主机发出数据包的目的地址。 |
PREROUTING | 在数据包到达防火墙时,进行路由判断之前执行的规则,作用是改变数据包的目的地址、目的端口等 就是收信时,根据规则重写收件人的地址。 例如:把公网IP:xxx.xxx.xxx.xxx映射到局域网的xx.xx.xx.xx服务器上。 如果是web服务,可以报80转换为局域网的服务器9000端口上 10.0.0.61 8080(目标端口) —-nat—à 10.0.0.7 22 |
POSTROUTING | 在数据包离开防火墙时进行路由判断之后执行的规则,作用改变数据包的源地址,源端口等。 写好发件人的地址,要让家人回信时能够有地址可回。 例如。默认笔记本和虚拟机都是局域网地址,在出网的时候被路由器将源地址改为了公网地址。 生产应用:局域网共享上网。 |
iptables命令参数
3.5.2 iptables命令参数
参数 | 含义 |
---|---|
–L | 显示表中的所有规则 |
-n | 不要把端口 或ip反向解析为 名字 |
-t | 指定表 不指定默认是filter表 |
-A | append 追加 加入准许类规则 使用-A |
-D | delete 删除 -D INPUT 1 |
-I | insert 拒绝类规则放在所有规则最上面 拒绝类 -I |
line-numbers | 显示行号 |
参数 | 含义 | |
---|---|---|
-p | 协议 protocal tcp/udp/icmp/all | |
–dport | 目标端口 dest destination 指定端口 加上协议 -p tcp | |
–sport | 源端口 source 源 | |
-s | –source 源ip | |
-d | –destination 目标ip | |
-m | 指定模块 multiport | |
-i | input 输入的时候 从哪个网卡进来 | |
-o | output 输出的时候 从哪个网卡出去 |
参数 | 含义 | |
---|---|---|
-j | 满足条件后的动作 : DROP/ACCEPT/REJECT | |
DROP REJECT拒绝 DROP把数据丢掉 不会返回信息给用户 REJECT 拒绝 返回拒绝信息 | ||
删除慎用:
参数 | 含义 | |
---|---|---|
-F flush | 清除所有规则,不会处理默认的规则 | |
-X | 删除用户自定义的链 | |
-Z | 链的计数器清零(数据包计数器与数据包字节计数器) |
操作命令
命令 | 描述 | 示例命令 |
---|---|---|
-A | 在链的末尾添加规则 | iptables -A INPUT -j DROP |
-I | 在链的开头或指定行号前插入规则 | iptables -I INPUT 1 -j DROP |
-D | 删除链中的规则 | iptables -D INPUT -s 192.168.1.100 -j DROP |
-L | 列出所有规则 | iptables -L |
-F | 清空所有规则 | iptables -F |
-X | 删除所有非默认链 | iptables -X |
-Z | 将所有规则的计数器归零 | iptables -Z |
-P | 设置默认策略 | iptables -P INPUT DROP |
-C | 显示指定规则的包和字节计数 | iptables -C INPUT -s 192.168.1.100 |
-n | 不进行 DNS 解析 | iptables -n -L |
-v | 显示详细信息 | iptables -v -L |
-t | 指定表 | iptables -t nat -L |
! | ! 只准许 10.0.0.0/24 访问 除了 10.0.0.0/24都拒绝 | iptables -I INPUT! -s 10.0.0.0/24 -j DROP |
iptables实战操作
环境准备
# 准备两台机器
web01
10.0.0.7
172.16.1.7
web02
10.0.0.8
172.16.1.8
# 关闭firewalld软件防火墙
[root@m01 ~]# systemctl stop firewalld
[root@m01 ~]# systemctl disable firewalld
# 安装iptables软件防火墙
yum install -y iptables-services
# 查看iptables相关的文件
[root@m01 ~]# rpm -ql iptables-services
/etc/sysconfig/ip6tables
/etc/sysconfig/iptables #防火墙的配置文件
/usr/lib/systemd/system/ip6tables.service
/usr/lib/systemd/system/iptables.service #防火墙服务配置文件(命令)
# 防火墙相关模块 加载到内核中
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
# 永久防火墙模块添加生效
cat >>/etc/rc.local<<EOF
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
EOF
# 检查模块有没有配置上
[root@m01 ~]# lsmod |egrep 'filter|nat|ipt'
nf_nat_ftp 12770 0
nf_conntrack_ftp 18638 1 nf_nat_ftp
iptable_nat 12875 0
nf_nat_ipv4 14115 1 iptable_nat
nf_nat 26787 2 nf_nat_ftp,nf_nat_ipv4
nf_conntrack 133053 6 nf_nat_ftp,nf_nat,xt_state,nf_nat_ipv4,nf_conntrack_ftp,nf_conntrack_ipv4
iptable_filter 12810 0
ip_tables 27126 2 iptable_filter,iptable_nat
libcrc32c 12644 3 xfs,nf_nat,nf_conntrack
# 启动iptables防护墙
[root@m01 ~]# systemctl start iptables.service
[root@m01 ~]# systemctl enable iptables.service
# iptables -nL 查看默认规则
[root@web02 ~]# iptables -nL
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@m01 ~]# iptables -F
[root@m01 ~]# iptables -X
[root@m01 ~]# iptables -Z
操作教程案例
案例1:封禁特定 IP
假设我们要封禁 IP 地址为 192.168.1.100
的设备访问外部网络。
# 在 INPUT 链的开头插入一条规则,拒绝来自 IP 地址 192.168.1.100 的连接
iptables -I INPUT -s 192.168.1.100 -j DROP
# 在 INPUT 链的末尾添加一条规则,允许来自 IP 地址 192.168.1.100 的连接
iptables -A INPUT -s 192.168.1.100 -j ACCEPT
# 查看 filter 表中的规则
iptables -t filter -L
iptables -tL
# 删除刚才添加的规则
iptables -t filter -D OUTPUT -s 192.168.1.100 -j DROP
# 列出 INPUT 链中的所有规则
iptables -L INPUT --line-numbers
# 删除 INPUT 链中行号为 1 的规则
iptables -D INPUT 1
案例2:允许内网访问
假设我们要允许内网 IP 地址范围192.168.1.0/24
访问外部网络。
# 添加规则到 filter 表的 OUTPUT 链,允许来自 192.168.1.0/24 的所有数据包
iptables -t filter -A OUTPUT -s 192.168.1.0/24 -j ACCEPT
# 查看 filter 表中的规则
iptables -t filter -L
iptables -tL
# 删除刚才添加的规则
iptables -t filter -D OUTPUT -s 192.168.1.0/24 -j ACCEPT
# 列出 INPUT 链中的所有规则
iptables -L INPUT --line-numbers
# 删除 INPUT 链中行号为 1 的规则
iptables -D INPUT 1
案例3:综合案例
# 查看规则
iptables -nL
# 查看规则,链以序号列出
iptables -L INPUT --line-numbers
iptables -L INPUT --line-n
# 禁止所有ip访问22端口
iptables -t filter -I INPUT -p tcp --dport 22 -j DROP
# 删除规则
iptables -t filter -D INPUT -p tcp --dport 22 -j DROP
# 删除INPUT链中第一条规则
iptables -D INPUT 1
# 封ip,禁止10.0.0.8访问我的所有协议端口
iptables -I INPUT -s 10.0.0.8 -j DROP
案例4:添加或禁止网段
# 允许10.0.0.0/24网段访问我
iptables -I INPUT -s 10.0.0.0/24 -j ACCEPT
# 禁止10.0.0.0/24网段访问我
iptables -I INPUT -s 10.0.0.0/24 -j DROP
# 允许1.1.1.0/24访问我的tcp协议
iptables -I INPUT -s 10.0.0.0/24 -p tcp -j ACCEPT
# 只允许10段和172端访问我,所有协议端口
iptables -P INPUT DROP
iptables -I INPUT -s 10.0.0.0/24 -j ACCEPT
iptables -I INPUT -s 172.16.1.0/24 -j ACCEPT
# 只允许10段访问我,所有协议端口,除了10段全禁掉。!表示取反
iptable -I INPUT ! -s 10.0.0.0/24 -j DROP
# 禁止1.1.1.0/24访问我的2222端口,另一台用nc -kl测试
iptables -I INPUT -s 1.1.1.0/24 -p tcp --dport 2222 -j DROP
案例5:修改链条默认规则,修改为拒绝,添加准入
# 查看默认链条规则
[root@oldboy-m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
# 更改默认规整为拒绝
iptables -P INPUT -j DROP
# 查看
[root@oldboy-m01 ~]# iptables -nL
Chain INPUT (policy DROP)
target prot opt source destination
# 添加准入规则,只允许访问我的80和443。-m multiport模块能指定多个端口
iptables -I INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT
# 添加准入规则,放行1-99的端口,区间
iptables -I INPUT -p tcp --dport 1:99 -j ACCEPT
案例6:匹配ICMP类型
- ICMP(Internet Control Message Protocol)Internet控制报文协议 ping
- 整个网站核心
通过防火墙规则 控制是否可以ping
默认就是这么写的 –icmp-type 8
[root@m01 ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 8
通过内核参数 控制 禁止被ping
# /etc/sysctl.conf调用/proc/sys/net/ipv4/icmp_echo_ignore_all。0为开启,1为禁止。
[root@m01 ~]# cat /etc/sysctl.conf
#/proc/sys/net/ipv4/icmp_echo_ignore_all
net.ipv4.icmp_echo_ignore_all = 1
[root@m01 ~]# sysctl -p
net.ipv4.icmp_echo_ignore_all = 1
[root@oldboy-m01 ~]# echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all
[root@oldboy-m01 ~]# #net.ipv4.icmp_echo_ignore_all=1 写入到 /etc/sysctl.conf
[root@oldboy-m01 ~]# #sysctl -p
[root@oldboy-m01 ~]# echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all
防火墙规则的保存与恢复
- iptables-save 规则输出到屏幕,并保存。相当于保存到/etc/sysconfig/iptables文件(延迟)。前提是iptables服务已启动
- 可以把规则保存到一个文件里加bash批量执行
- systemctl restart iptables 会读取 /etc/sysconfig/iptables内容
命令:
iptables-save
iptables-restore
文件:
/etc/sysconfig/iptables
# 最保险的永久保存方式,因为iptables-save保存具有缓慢性质,不会马上永久保存。
# 这样追加到文件里会马上保存,但是iptables-restore < 就无法恢复了。单执行iptables-save缓慢延迟保存
iptables-save > /etc/sysconfig/iptables
# 误操作恢复,恢复规则
iptables-restore < /etc/sysconfig/iptables
filter表小结
- 封ip 端口 网段
- 禁止ping
- 限制速度和并发
- iptables filter表 功能 可以在 云服务器使用
实际生产用法
全部DROP禁止,然后添加允许规则
- iptables配置方式
- 逛公园模式: 默认规则是 ACCEPT
- 看电影模式: 默认规则是 DROP
- 默认是拒绝 去电影院
- ssh可以连接进来
# 清空规则(危险,危险,危险,生产环境勿操作)(只是教程,生产环境别动别改)
iptables -F
iptables -X
iptables -Z
# 允许SSH端口(22)的流量进入
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
# 允许本机回环接口(lo)的流量进入
iptables -A INPUT -i lo -j ACCEPT
# 允许HTTP(80)和HTTPS(443)端口的流量进入
iptables -A INPUT -p tcp -m multiport --dports 443,80 -j ACCEPT
# 允许来自10.0.0.0/24网段的流量进入
iptables -A INPUT -s 10.0.0.0/24 -j ACCEPT
# 允许来自172.16.1.0/24网段的流量进入
iptables -A INPUT -s 172.16.1.0/24 -j ACCEPT
# 允许本机回环接口(lo)的流量流出
iptables -A OUTPUT -o lo -j ACCEPT
# 最后再把INPUT表改为DROP
iptables -P INPUT DROP
# 最后保存
iptables-save
iptables-save > /etc/sysconfig/iptables
- 汇总
[root@oldboy-m01 ~]# iptables-save
# Generated by iptables-save v1.4.21 on Wed Feb 12 15:51:48 2020
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [1:60]
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -s zabbix服务端IP -m tcp --dport 10050 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m multiport --dports 443,80 -j ACCEPT
-A INPUT -s 10.0.0.0/24 -j ACCEPT
-A INPUT -s 172.16.1.0/24 -j ACCEPT
-A INPUT -s 10.7.1.0/24 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Wed Feb 12 15:51:48 2020
# Generated by iptables-save v1.4.21 on Wed Feb 12 15:51:48 2020
*nat
:PREROUTING ACCEPT [2:458]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [417:25020]
:POSTROUTING ACCEPT [417:25020]
COMMIT
# Completed on Wed Feb 12 15:51:48 2020
允许127回环地址lo
允许流出与流入
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
今日英语
accept 接受
drop 丢弃
input 输入
output 输出
line 行
-I 是insert 插入
-A 是append 追加
-D 是delete 删除
-p 是protocol 协议
-s 是source 来源src
-dport 是dest port 目标端口
-d 是 destination 目标
-m 是multiport 多端口
-i 是input 输入
-o 是output 输出
nat表
- 共享上网
- 端口转发/端口映射
- ip映射
- SNAT # 源地址转换,我们访问外网
- DNATI# 目标地址转换 用户通过访问路由器公网IP,转发到内网的服务器上
# 设置默认规则为允许
[root@m01 ~]# iptables -P INPUT ACCEPT
[root@m01 ~]# iptables -P FORWARD ACCEPT
[root@m01 ~]# iptables -nL
实现共享上网※※※※※
配置:
# 注意:如果iptables开着,需要清空规则,否则默认规则会阻挡
# 先清空规则(慎重)
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
# 在服务端开启端口转发nat功能,表示开启 IP 数据包的转发功能,61
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p
# 在服务端添加允许SNAT(源地址转换)规则,172转换为10.0.0.7出去上网,61
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 10.0.0.61
iptables-save
# 在其他客户端网关指向61,并配置DNS
[root@web01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens36
TYPE=Ethernet
BOOTPROTO=none
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=172.16.1.7
PREFIX=24
GATEWAY=172.16.1.61
DNS1=8.8.8.8
[root@web01 ~]# cat /etc/resolv.conf
nameserver 223.5.5.5
# 重启网卡后,ping外网测试
[root@web01 ~]# ping baidu.com
PING baidu.com (220.181.38.148) 56(84) bytes of data.
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=1 ttl=127 time=8.90 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=2 ttl=127 time=7.52 ms
注意:
# 注意,如果公网ip是不固定的,第二步SNAT(源地址转换)换成以下设置
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE
检查:
# 检查服务端,有没有开启NAT端口转发,有没有规则
sysctl -p
iptables-save
# 检查客户端端,有没有网关,有没有路由
[root@web02 ~]# ip r
default via 172.16.1.7 dev ens36 proto static metric 101
172.16.1.0/24 dev ens36 proto kernel scope link src 172.16.1.8 metric 101
[root@web02 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.1.7 0.0.0.0 UG 101 0 0 ens36
172.16.1.0 0.0.0.0 255.255.255.0 U 101 0 0 ens36
实现端口转发※※※※※
注意:不占用服务器端口,不处理,只是经过。
当有人访问我的9000端口,我转发到172.16.1.7的22端口
[root@m01 ~]# iptables -t nat -A PREROUTING -d 10.0.0.61 -p tcp --dport 9000 -j DNAT --to-destination 172.16.1.7:22
[root@m01 ~]# iptables -nL -t nat
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 172.16.1.0/24 0.0.0.0/0 to:10.0.0.61
测试与检查
本地shell中
[d:\~]$ ssh root@10.0.0.61 9000
3 实现ip映射
当有人访问10.0.0.62全部让他去找172.16.1.7全部端口
# 添加ip,多个ip
ip a add 10.0.0.62/24 dev ens33 label ens33:0
[root@m01 ~]# iptables -t nat -A PREROUTING -d 10.0.0.62 -j DNAT --to-destination 172.16.1.7
[root@m01 ~]# iptables -nL -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT all -- 0.0.0.0/0 10.0.0.62 to:172.16.1.7
4 nat表总结
- 实现共享上网
- 端口转发
- ip映射
- nat功能在 云服务器无法使用 替代品叫: NAT网关
面试题
1、详述iptales工作流程以及规则过滤顺序?
2、iptables有几个表以及每个表有几个链?
3、iptables的几个表以及每个表对应链的作用,对应企业应用场景?
4、画图讲解iptables包过滤经过不同表和链简易流程图并阐述。
5、请写出查看iptables当前所有规则的命令。
6、禁止来自10.0.0.188 ip地址访问80端口的请求
7、如何使在命令行执行的iptables规则永久生效?
8、实现把访问10.0.0.3:80的请求转到172.16.1.17:80
9、实现172.16.1.0/24段所有主机通过124.32.54.26外网IP共享上网。
10、描述tcp 3次握手及四次断开过程?
11.详细描述HTTP工作原理?
12.请描述iptables的常见生产应用场景。
13、请描述下面iptables命令的作用
iptables -N syn-flood
iptables -A INPUT -i eth0 -syn -j syn-flood
iptables -A syn-flood -m limit -limit 5000/s -limit-burst 200 -j RETURN
iptables -A syn-flood -j DROP
14、企业WEB应用较大并发场景如何优化iptables?
15、写一个防火墙配置脚本,只允许远程主机访问本机的80端口(奇虎360面试题)
16、请描述如何配置一个linux上网网关?
17、请描述如何配置一个专业的安全的WEB服务器主机防火墙?
18、企业实战题6:请用至少两种方法实现!写一个脚本解决DOS攻击生产案例。提示:根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频率每隔3分钟。防火墙命令为:iptables -A INPUT -s 10.0.1.10 -j DROP。
19、/var/log/messages日志出现kernel: nf_conntrack: table full, dropping packet.请问是什么原因导致的?如何解决?
20、上机实战iptables考试题
1.1.1.1 rule permit ip source 210.78.1.1 0.0.255.255 destination202.38.5.2 0.0.0.0 的含义是()
允许主机210.78.1.1访问主机202.38.5.2
允许210.78.0.0的网络访问202.38.0.0的网络
允许主机202.38.5.2 访问网络210.78.0.0
允许210.78.0.0的网络访问主机202.38.5.2
1.1.1.2 在防火墙上允许tcp和udp端口21、 23、 25访问内网,下列那张协议包可以进来 (多选)——
SMTP
STP
FTP
Telnet
HTTP
POP3
1.1.1.3 以下不属干防火墙能够实现的功能是( ).
A、网络地址转换
B、差错控制
C、数据包过滤
D、数据转发
1.1.1.4 哪个不属于iptables的表
filter
nat
mangle
INPUT
1.1.1.5 以下对防火墙的描述正确的是:()
完全阻隔了网络
能在物理层隔绝网络
仅允许合法的通讯
无法阻隔黑客的侵入
1.1.2 填空
1.1.2.1 防火墙是设置在被保护网络和外部网络之间的一道屏障,以防止破坏性侵入()
1.1.2.2 在centos7下,我想关闭掉防火墙,应该用命令来关闭掉。如果以后开机都不想它启动起来,执行命令
1.1.2.3 在Centos7 配置ip转发需要在_里加入_执行_命令后生效
1.1.3 简答
1.1.3.1 防火期墙策略,开放服务器80端口,禁止来自10.0.0.188的地址访问服务器80端口的请求。
1.1.3.2 防火墙策略,实现把访问10.0.0.3:80的请求转到172.16.1.17:8080上。
1.1.3.3 防火墙策略配置说明。阐述出10.10.10.1访问192.168.1.1所有端口策略需要的配置过程
1.1.3.4 iptables知识考察,根据要求写出防火墙规则?
1.1.3.5 屏蔽192.168.1.5访问本机dns服务端口:
1.1.3.6 允许10.1.1.0/24访问本机的udp 8888 9999端口
1.1.3.7 iptables禁止10.10.10.1访问本地80端口
1.1.3.8 如何利用iptables屏蔽某个IP对80端口的访问
1.1.3.9 写出iptables四表五链,按照优先级排序
1.1.3.10如何通过iptables将本地80端口的请求转发到8080端口,当前主机IP为192.168.2.1
1.1.3.11请写一条命令,只允许80端口,其他端口都拒绝,eth1网卡ip为192.168.1.12
1.1.3.12限制连接到192.168.100.100:8080 后端服务最大1000
1.1.3.13请简述防火墙的基本功能和特点
1.1.3.14内网环境中,A(10.0.0.1)机与B(10.0.0.2)机互通,现在需要在A机上简历安全策略,禁止B机访问A机的SSH服务(22端口)有几种方法?如何操作?
1.1.3.15service iptables stop 与 iptables -F 有何区别?
1.1.3.16Iptables封禁eth0网卡与192.168.1.1通讯的所有数据包
1.1.3.17Iptables禁止所有到本机(eth0:10.10.10.200)22端口的TCP访问
1.1.3.18如何禁止192.168.500.2访问本机ssh端口?解释这条规则:/sbin/iptables -t nat -A PREROUTING -d 192.168.20.99/32 -p udp -m udp –dport 99 -j DNAT –to-destination 192.168.20.11
1.1.3.19有一台主机内网IP:10.4.82.200,公网IP:118.186.111.121,现欲使10.4.82.0/24网段,(该网段默认网关为10.4.82.254),使用10.4.82.200作为跳板机出往,请给出配置方法
1.1.3.20配置跳板机主机的某个内核参数,并使其生效
1.1.3.21配置跳板机的iptables防火墙规则
1.1.3.22把10.10.0.0 网段流出的数据的原地址修改为66.66.66.66
1.1.3.23本机有两张网卡,分别为eth0和eth1,请写出仅允许从eth0访问本机web(80)服务的iptables规则,允许eth1所有访问
5、请写出查看iptables当前所有规则的命令。
iptables-save
iptables -nL
iptables -nL -t nat
6、禁止来自10.0.0.188 ip地址访问80端口的请求
iptables -I INPUT -s 10.0.0.188 -p tcp --dport 80 -j DROP
7、如何使在命令行执行的iptables规则永久生效?
iptables-save
/etc/sysconfig/iptables
8、实现把访问10.0.0.3:80的请求转到172.16.1.17:80
iptables -t nat -A PREROUTING -d 10.0.0.3 -p tcp --dport 80 -j DNAT --to-destination 172.16.xxxx:80
9、实现172.16.1.0/24段所有主机通过124.32.54.26外网IP共享上网。
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 123.32.54.26
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT MASQUERADE
10.案例 iptalbes 实现防止syn ddos 和ping攻击
-A FORWARD -p tcp –syn -m limit –limit 1/s –limit-burst 5 -j ACCEPT
-A FORWARD -p tcp –tcp-flags SYN,ACK,FIN,RST RST -m limit –limit 1/s -j ACCEPT
-A FORWARD -p icmp –icmp-type echo-request -m limit –limit 1/s -j ACCEPT
说明:第一行:每秒中最多允许5个新连接。第二行:防止各种端口扫描。第三行:Ping洪水攻击(Ping of Death),可以根据需要调整或关闭