1.常见防火墙选用
硬件防火墙
开源软件:iptables(默认规则改为INPUT DROP)
云服务器:安全组(阿里云 白名单,默认是拒绝的)
2.iptables使用 执行过程
3.iptables 4表5链
4.准备iptables环境
5.iptables功能之一防火墙
封IP 封端口
准许某个ip访问 网段访问
6.iptables功能之内网服务器上外网(共享上网)
7.iptables功能之 端口转发
2.常见防火墙选用
- 公司网站入口使用的硬件 防火墙 、三次路由带有防火墙功能
- itpables访问量小 C5 C6自带,CentOS 7为Firewalld
SELinux
3.相关名词与单词
名词 | 含义 | 对比 |
---|---|---|
容器 | 存放内容/存放东西 | |
Netfilter/iptables | 是表的容器 | 国家 |
表(table) | 表是用来存放链的容器 | 省 |
链(chain) | 链 存放规则的容器 | 市 |
规则(policy) | 准许/拒绝访问 | 区/县 |
4.防火墙执行过程
- 防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
- 如果匹配上规则,即明确表示是阻止(DROP)还是通过(ACCEPT)数据包就不再向下匹配新的规则。
- 如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
- 防火墙的默认规则是所有规则执行完才执行的。
5.四表五链
5.1 四表及作用
表 | 功能 |
---|---|
Filter | 过滤,默认的表,防火墙功能 |
NAT | 实现NAT转化:1.共享上网 2.端口转发 |
mangle | 查询帮助man iptables 了解即可 |
raw | 查询帮助man iptables 了解即可 |
5.2 四表中的5链
五链:
PREROUTING
FORWARD
INPUT
OUPUT
POSTROUTING
5.3 filter表和nat表
5.3.1 filter表
filter表 | 企业工作场景:主机防火墙 |
---|---|
INPUT | 就是过滤进入主机的数据包 |
FORWARD | 负责转发流经主机的数据包 |
OUTPUT | 就是处理从主机发出去的数据包 |
5.3.2 nat表
nat表 | |
---|---|
PREROUTING | 处理用户请求中的目的地址 目的端口 端口转发 ip映射 |
POSTROUTING | 处理离开服务器的请求 源端口 源ip :共享上网 |
OUTPUT | 和主机放出去的数据包有关,改变主机发出数据包的目的地址 |
补充:
filter表:
INPUT 作用:用于发送到本地套接字的数据包。
FORWARD 作用:对于正在通过该框路由的数据包
OUTPUT 作用:用于本地生成的数据包。
nat表:
PREROUTING 作用:因为他们一进来就改变了包
OUTPUT 作用:用于在路由之前更改本地划分的数据包。
POSTROUTING 作用:改变包,因为它们即将离开
6.防火墙之filter表
6.1环境准备
m01 iptables iptables-services
db01 iptables iptables-services
[root@m01 ~]# rpm -qa iptables-services
iptables-1.4.21-28.el7.x86_64
[root@m01 ~]# rpm -ql iptables-services
/etc/sysconfig/ip6tables
/etc/sysconfig/iptables #iptables 配置文件
/usr/lib/systemd/system/ip6tables.service
/usr/lib/systemd/system/iptables.service #iptables服务管理配置
启动防火墙
[root@m01 ~]# systemctl stop firewalld #CentOS7关闭firewalld [root@m01 ~]# systemctl restart iptables [root@m01 ~]# systemctl enable iptables
手动加载内核模块
[root@m01 ~]# modprobe ip_tables
[root@m01 ~]# modprobe iptable_filter
[root@m01 ~]# modprobe iptable_nat
[root@m01 ~]# modprobe ip_conntrack
[root@m01 ~]# modprobe ip_conntrack_ftp
[root@m01 ~]# modprobe ip_nat_ftp
[root@m01 ~]# modprobe ipt_state
检查防火墙内核模块是否加载成功:
[root@m01 ~]# lsmod |egrep 'nat|ipt|filter' nf_nat_ftp 12770 0 nf_conntrack_ftp 18638 1 nf_nat_ftp ipt_REJECT 12541 2 nf_reject_ipv4 13373 1 ipt_REJECT ipt_MASQUERADE 12678 1 nf_nat_masquerade_ipv4 13412 1 ipt_MASQUERADE iptable_filter 12810 1 xt_nat 12681 2 iptable_nat 12875 1 nf_nat_ipv4 14115 1 iptable_nat nf_nat 26787 4 nf_nat_ftp,nf_nat_ipv4,xt_nat,nf_nat_masquerade_ipv4 nf_conntrack 133095 8 nf_nat_ftp,nf_nat,xt_state,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ftp,nf_conntrack_ipv4 ip_tables 27126 2 iptable_filter,iptable_nat libcrc32c 12644 3 xfs,nf_nat,nf_conntrack
6.2 配置规则-禁止访问22端口
[root@m01 ~]# iptables -F #清除规则 [root@m01 ~]# iptables -X [root@m01 ~]# iptables -Z [root@m01 ~]# 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 ~]# #添加一条规则,禁止22端口访问 [root@m01 ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j DROP [root@m01 ~]# Type `help' to learn how to use Xshell prompt. [d:\~]$ #断开了~跑下机房
删除规则,重新连接m01
[root@m01 ~]# iptables -nL --line-number #查看防火墙规则 [root@m01 ~]# iptables -t filter -D INPUT 1 #删除第1条规则 [root@m01 ~]# iptables -nL --line-number #再次查看
重新连接 22端口就可以用了
Type `help' to learn how to use Xshell prompt.
[d:\~]$
Connecting to 10.0.0.61:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
Last login: Tue Jul 2 17:04:55 2019
[root@m01 ~]#
配置防火墙规则注意事项:
去机房重启系统或者登陆服务器删除刚才的禁止规则。
让机房人员重启服务器或者让机房人员拿用户密码登录进去
通过服务器的远程管理卡管理(推荐)
先写一个定时任务,每5分钟就停止防火墙**5. 测试环境测试好,写成脚本,批量执行
6.3 filter表其他规则配置
6.3.1 只让10.0.0.0/24网段进行访问连接
只要是10.0.0.0/24 局域网的用户 访问m01 都ACCEPT
此例子主要限制:网段或ip地址
[root@m01 ~]# iptables -A INPUT -p tcp ! -s 10.0.0.0/24 -j DROP #"!" 叹号表示取反
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 DROP tcp -- !10.0.0.0/24 0.0.0.0/0
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
去另一台服务器上测试一下是否成功:
[root@db01 ~]# ssh 10.0.0.61 #连接10.0.0.61,可以连接 root@10.0.0.61's password: Last login: Tue Jul 2 17:41:01 2019 from 10.0.0.51 [root@m01 ~]# logout #退出 Connection to 10.0.0.61 closed. [root@db01 ~]# ssh 172.16.1.61 #连接172.16.1.61,不可以连接 ....等到死
6.3.2准许或禁止端口
多个端口:表示范围 1-1024范围
[root@m01 ~]# iptables -I INPUT -p tcp ! --dport 1:1024 -j DROP
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpts:!1:1024
2 DROP tcp -- !10.0.0.0/24 0.0.0.0/0
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
多个端口 不连续 80,443,52113,22
[root@m01 ~]# iptables -I INPUT -p tcp -m multiport ! --dport 80,443,22 -j DROP
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports !80,443,22
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
6.4 iptables命令及参数
iptables | |
---|---|
-t | 指定表 filter(默认) nat |
-A | append 把规则追加到末尾 |
-I (大写字母i ) | insert 把规则插入到规则的第1条 (添加拒绝类规则的时候) |
-p | protocal 指定协议:tcp /udp/icmp |
--dport | destination port 目标端口 |
--sport | source port 源端口 |
-d | dest ip address 目标ip地址 |
-s | source ip address 源ip地址 |
-j | jump 方法 DROP (拒绝)、 ACCEPT(准许) 、REJECT(拒绝) |
iptables查看 删除 | ||
---|---|---|
-F | 清除链中所有规则 | |
-X | 清空自定义链的规则 | |
-Z | 清空计数器 | |
-n | 不要把端口解析服务名字 | |
-L | 显示表中的规则 | |
--line-number | 给每个链中的规则加上行号 | |
-D | 删除规则 根据规则的号码进行删除 |
7.ICMP协议
简介:
IP协议是一种面向无连接的数据报协议,它是一种不可靠的协议,它不提供任何差错检验。因此网际报文控制协议(Internet Control Message Protocol)ICMP出现了,ICMP协议用于IP主机、路由器之间传递控制消息,这里的控制消息可以包括很多种:数据报错误信息、网络状况信息、主机状况信息等,虽然这些控制消息虽然并不传输用户数据,但对于用户数据报的有效递交起着重要作用,从TCP/IP的分层结构看ICMP属于网络层,它配合着IP数据报的提交,提高IP数据报递交的可靠性。ICMP是封装在IP数据报中进行发送的,从这点看来,ICMP协议又有点像一个传输层协议,其实不然,因为ICMP报文的目的不是目的主机上的某个应用程序,它不为应用程序提供传输服务,ICMP报文的目的是目的主机上的网络层处理软件。简单的来说,ICMP协议就像奔波于网络中的一名医生,它能及时检测并汇报网络中可能存在的问题,为解决网络错误或拥塞提供了最有效的手段
ICMP报文有很多类型,不同的类型有不同的代码。最常用的类型是主动请求为8,主动请求的应答为0。
网络出问题了使用ping命令,ping命令是基于ICMP协议工作的,ICMP报文是封装在IP包里面的。
NEW
ESTABLISHED
RELATED
INVALID
8.准许或禁止ping
现在是可以ping通的
[root@m01 ~]# ping 10.0.0.61
PING 10.0.0.61 (10.0.0.61) 56(84) bytes of data.
64 bytes from 10.0.0.61: icmp_seq=1 ttl=64 time=0.064 ms
64 bytes from 10.0.0.61: icmp_seq=2 ttl=64 time=0.038 ms
^C
--- 10.0.0.61 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.038/0.051/0.064/0.013 ms
[root@m01 ~]# ping 172.16.1.61
PING 172.16.1.61 (172.16.1.61) 56(84) bytes of data.
64 bytes from 172.16.1.61: icmp_seq=1 ttl=64 time=0.079 ms
64 bytes from 172.16.1.61: icmp_seq=2 ttl=64 time=0.039 ms
^C
--- 172.16.1.61 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.039/0.059/0.079/0.020 ms
[root@m01 ~]#
添加icmp,禁止ping
[root@m01 ~]# iptables -I INPUT -p icmp --icmp-type any -j DROP #禁止ping
[root@m01 ~]#
[root@m01 ~]# ping 10.0.0.61 #ping不通了
PING 10.0.0.61 (10.0.0.61) 56(84) bytes of data.
^C
--- 10.0.0.61 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 1999ms
[root@m01 ~]# ping 172.16.1.61 #ping不通了
PING 172.16.1.61 (172.16.1.61) 56(84) bytes of data.
^C
--- 172.16.1.61 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2001ms
[root@m01 ~]# ping 127.0.0.1 #ping不通了
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
^C
--- 127.0.0.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1003ms
8.限制访问频率
iptables -I INPUT -s 10.0.1.0/24 -p icmp --icmp-type 8 -m limit --limit 6/min --limit-burst 5 -j ACCEPT
9.永久保存规则
[root@m01 ~]# cat /etc/sysconfig/iptables #防火墙的默认规则
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-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 FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
[root@m01 ~]# iptables-save #当前的防火墙规则
# Generated by iptables-save v1.4.21 on Wed Jul 3 09:28:21 2019
*filter
:INPUT ACCEPT [93:6196]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [69:7412]
-A INPUT -s 10.0.1.0/24 -p icmp -m icmp --icmp-type 8 -m limit --limit 6/min -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type any -j DROP
COMMIT
# Completed on Wed Jul 3 09:28:21 2019
# Generated by iptables-save v1.4.21 on Wed Jul 3 09:28:21 2019
*nat
:PREROUTING ACCEPT [39:2360]
:INPUT ACCEPT [2:104]
:OUTPUT ACCEPT [44:3050]
:POSTROUTING ACCEPT [44:3050]
-A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to-source 10.0.0.61
-A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.61
COMMIT
# Completed on Wed Jul 3 09:28:21 2019
[root@m01 ~]# iptables-save >/etc/sysconfig/iptables
[root@m01 ~]#
[root@m01 ~]# iptables-restore < /etc/sysconfig/iptables
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT icmp -- 10.0.0.0/24 0.0.0.0/0 icmptype 8 limit: avg 6/min burst 5
ACCEPT icmp -- 10.0.1.0/24 0.0.0.0/0 icmptype 8 limit: avg 6/min burst 5
DROP icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 255
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@m01 ~]# systemctl restart iptables.service
注意事项:
- iptables-save >/etc/sysconfig/iptables
- iptables 是关闭状态 stop/disable
- 关闭时不要使用iptables -nL查看状态 ,一查看就打开了
- 查看防火墙状态:systemctl is-active iptables
10.生产环境防火墙配置
1.逛公园:防火墙默认的规则 默认规则都是允许(Chain INPUT (policy ACCEPT))
2.电影院:默认规则是拒绝DROP 凭票进入
10.1 允许SSH登录端口进入
[root@m01 ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
10.2 允许机回环Io接口数据流量流出与流入
[root@m01 ~]# iptables -A OUTPUT -o lo -j ACCEPT
[root@m01 ~]# iptables -A INPUT -i lo -j ACCEPT
-i input 与 INPUT链一起使用
-o output 与 OUTPUT 链一起使用
10.3准许icmp协议通过
[root@m01 ~]# iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
10.4准许用户使用的端口通过 80,443
#先把信任网段删掉再进行测试
[root@m01 ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
[root@m01 ~]# iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#俩台虚拟机上测试
[root@m01 ~]# nc -l 80
[root@db01 ~]# telnet 10.0.0.61 80
Trying 10.0.0.61...
Connected to 10.0.0.61.
Escape character is '^]'.
10.5 允许用户与服务器建立连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
10.6 开启信任的IP网段
[root@m01 ~]# iptables -A INPUT -s 10.0.0.0/24 -p all -j ACCEPT
[root@m01 ~]# iptables -A INPUT -s 172.16.1.0/24 -p all -j ACCEPT
10.7 修改默认规则
[root@m01 ~]# iptables -P INPUT DROP
[root@m01 ~]# iptables -P FORWARD DROP
[root@m01 ~]# iptables -P OUTPUT ACCEPT
查看设置的规则
[root@m01 ~]# iptables -nL
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 8
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT all -- 10.0.0.0/24 0.0.0.0/0
ACCEPT all -- 172.16.1.0/24 0.0.0.0/0
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 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
11.NAT 表
nat表 | |
---|---|
PREROUTING | 处理用户请求中的目的地址 目的端口 端口转发 ip映射 |
POSTROUTING | 处理离开服务器的请求 源端口 源ip :**共享上网 |
OUTPUT | 和主机放出去的数据包有关,改变主机发出数据包的目的地址 |
保存好之前的规则删除
[root@m01 ~]# iptables-save >/root/iptables.rule [root@m01 ~]# ll iptables.rule -rw-r--r-- 1 root root 969 Jul 3 10:33 iptables.rule
跑机房修改默认规则:
11.1 PREROUTING
[root@m01 ~]# #iptables -t nat -A PREROUTING -d 10.0.0.61 -p tcp --dport 8080 -j DNAT --to-destination 10.0.0.51:22
[root@m01 ~]# iptables -nL -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- 0.0.0.0/0 10.0.0.61 tcp dpt:8080 to:10.0.0.51:22
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 10.8.0.0/24 !10.8.0.0/24 to:10.0.0.61
SNAT all -- 172.16.1.0/24 0.0.0.0/0 to:10.0.0.61
[root@m01 ~]# iptables -nL -t nat #查看nat表
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- 0.0.0.0/0 10.0.0.61 tcp dpt:9000 to:10.0.0.51:22
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 10.8.0.0/24 !10.8.0.0/24 to:10.0.0.61
SNAT all -- 172.16.1.0/24 0.0.0.0/0 to:10.0.0.61
[root@m01 ~]# cat /proc/sys/net/ipv4/ip_forward #查看防火墙是否打开
1
[root@m01 ~]# lsmod |egrep 'nat|ipt|filter' #检查
iptable_filter 12810 1
xt_nat 12681 3
iptable_nat 12875 1
nf_nat_ipv4 14115 1 iptable_nat
nf_nat 26787 2 nf_nat_ipv4,xt_nat
nf_conntrack 133095 3 nf_nat,nf_nat_ipv4,nf_conntrack_ipv4
ip_tables 27126 2 iptable_filter,iptable_nat
ipt_REJECT 12541 0
nf_reject_ipv4 13373 1 ipt_REJECT
libcrc32c 12644 3 xfs,nf_nat,nf_conntrack
#现在连接应该是不通,此刻需要添加一条内核优化
[root@m01 ~]# #第一种方法:
[root@m01 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@m01 ~]# cat /proc/sys/net/ipv4/ip_forward
1
[root@m01 ~]# #第二种方法:
[root@m01 ~]# echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
#让其生效
[root@m01 ~]# sysctl -p
11.2 POSTROUTING
#添加NAT共享上网命令
[root@m01 ~]# iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.61
[root@m01 ~]# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
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
去db01上关闭网卡eth0
#关闭eth0网卡
[root@db01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=no #把eth0网卡关闭
IPADDR=10.0.0.51
PREFIX=24
GATEWAY=10.0.0.254
DNS1=10.0.0.254
或者
[root@db01 ~]# ifdown eth0 #暂时将eth0网卡关闭
#可以利用m01进行ssh远程连接db01的内网地址
[root@m01 ~]# ssh 172.16.1.51
Last login: Wed Jul 3 11:12:04 2019 from 10.0.0.1
[root@db01 ~]#
#修改eth1网卡网关
[root@db01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=static
IPADDR=172.16.1.51
PREFIX=24
NAME=eth1
DEVICE=eth1
ONBOOT=yes
GATEWAY=172.16.1.61 #修改网关为m01的内网地址
DNS1=223.5.5.5 #DNS按原理来说会自动分配,如果不通的话就加入此条DNS解析即可
[root@db01 ~]# systemctl restart network #重启网卡
[root@db01 ~]#
[root@db01 ~]# 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=7.74 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=2 ttl=127 time=11.8 ms
^C
--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 7.249/9.136/11.833/1.812 ms
[root@db01 ~]#
【防火墙】面试题
- iptables的面试问答:https://www.cnblogs.com/wajika/p/6382956.html
- 20道必会iptables面试题:https://www.cnblogs.com/wajika/p/6382853.html
- iptables四个表与五个链间的处理关系:https://www.bbsmax.com/A/kmzLBxAG5G/
- CentOS7-IP代理转发功能的配置:https://blog.csdn.net/drxRose/article/details/88797494
1.选择
1.1 rule permit ip source 210.78.1.1 0.0.255.255 destination202.38.5.2 0.0.0.0 的含义是(B)
资料连接:https://bbs.51cto.com/thread-889882-1.html
A.允许主机210.78.1.1访问主机202.38.5.2
B.允许210.78.0.0的网络访问202.38.0.0的网络
C.允许主机202.38.5.2 访问网络210.78.0.0
D.允许210.78.0.0的网络访问主机202.38.5.2
1.2在防火墙上允许tcp和udp端口21、 23、 25访问内网,下列那张协议包可以进来 (多选)A_C_D
A.SMTP
B.STP
C.FTP
D.Telnet
E.HTTP
F.POP3
1.3 以下不属于防火墙能够实现的功能是(B )
A、网络地址转换
B、差错控制
C、数据包过滤
D、数据转发
1.4 哪个不属于iptables的表(D)
filter
nat
mangle
INPUT
1.5 以下对防火墙的描述正确的是:(B)
完全阻隔了网络
能在物理层隔绝网络
仅允许合法的通讯
无法阻隔黑客的侵入
2 填空
2.1 防火墙是设置在被保护网络和外部网络之间的一道屏障,以防止破坏性侵入(内部网络)
2.2 在centos7下,我想关闭掉防火墙,应该用命令systemctl stop firewalld来关闭掉。如果以后开机都不想它启动起来,执行___systemctl disable firewalld____命令
2.3 在Centos7 配置ip转发需要在/etc/sysctl.conf里加入net.ipv4.ip_forward=1执行sysctl -p命令后生效
3 简答
iptables save //保存规则 systemctl restart iptables //重启iptables服务以便生效
相关链接:https://www.cnblogs.com/wajika/p/6382853.html
filter表:
INPUT 作用:用于发送到本地套接字的数据包。
FORWARD 作用:对于正在通过该框路由的数据包。
OUTPUT 作用:用于本地生成的数据包。
nat表:
PREROUTING 作用:因为他们一进来就改变了包
OUTPUT 作用:用于在路由之前更改本地划分的数据包。
POSTROUTING 作用:改变包,因为它们即将离开
3.1 防火墙策略,开放服务器80端口,禁止来自10.0.0.188的地址访问服务器80端口的请求。
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp -d 10.0.0.188 --dport 80 -j DROP
3.2 防火墙策略,实现把访问10.0.0.3:80的请求转到172.16.1.17:8080上。
iptables -t nat -A PREROUTING -d 10.00.3 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.17:8080
3.3 防火墙策略配置说明。阐述出10.10.10.1访问192.168.1.1所有端口策略需要的配置过程
3.4 iptables使用的表有哪些?请简要的描述iptables使用的表以及它们所支持的链。
Filter表、Nat表、Mangle表、Raw表 Filter表 : Filter表是iptables中使用的默认表,它用来过滤网络包。如果没有定义任何规则,Filter表则被当作默认的表,并且基于它来过滤。支持的链有INPUT链,OUTPUT链,FORWARD链。 Nat表 : Nat表主要用于网络地址转换。根据表中的每一条规则修改网络包的IP地址。流中的包仅遍历一遍Nat表。例如,如果一个通过某个接口的包被修饰(修改了IP地址),该流中其余的包将不再遍历这个表。通常不建议在这个表中进行过滤,由NAT表支持的链称为PREROUTING链,POSTROUTING链和OUTPUT链。 Mangle表 : 正如它的名字一样,这个表用于校正网络包。它用来对特殊的包进行修改。它能够修改不同包的头部和内容。Mangle表不能用于地址伪装。支持的链包括PREROUTING链,OUTPUT链,Forward链,Input链和POSTROUTING链。 Raw表 : Raw表在我们想要配置之前被豁免的包时被使用。它支持PREROUTING链和OUTPUT链。
3.5 屏蔽192.168.1.5访问本机dns服务端口:
iptables -A INPUT -s 192.168.1.5 -j DROP
3.6 允许10.1.1.0/24访问本机的udp 8888 9999端口
相关链接:https://blog.csdn.net/zhaoyangjian724/article/details/52572632
iptables -A INPUT -p udp -s 10.1.1.0/24 -m multiport ! --dport 8888,9999 -j DROP
3.7 iptables禁止10.10.10.1访问本地80端口
iptables -A INPUT -p tcp -s 10.10.10.1 --dport 80 -j DROP
3.8 如何利用iptables屏蔽某个IP对80端口的访问
iptables -A INPUT -p tcp -s #屏蔽的IP# --dport 80 -j DROP
3.9 写出iptables四表五链,按照优先级排序
iptables四个表与五个链间的处理关系:https://www.bbsmax.com/A/kmzLBxAG5G/
默认表是filter(没有指定表的时候就是filter表) iptables的四表优先级:raw--->mangle--->nat--->filte filter:一般的过滤功能 nat:用于nat功能(端口映射,地址映射等) mangle:用于对特定数据包的修改 raw:有限级最高,设置raw时一般是为了不再让iptables做数据包的链接跟踪处理,提高性能 iptables的五链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING PREROUTING:数据包进入路由表之前 INPUT:通过路由表后目的地为本机 FORWARDING:通过路由表后,目的地不为本机 OUTPUT:由本机产生,向外转发 POSTROUTIONG:发送到网卡接口之前
3.10如何通过iptables将本地80端口的请求转发到8080端口,当前主机IP为192.168.2.1
3.11请写一条命令,只允许80端口,其他端口都拒绝,eth1网卡ip为192.168.1.12
3.12限制连接到192.168.100.100:8080 后端服务最大1000
3.13请简述防火墙的基本功能和特点
3.14内网环境中,A(10.0.0.1)机与B(10.0.0.2)机互通,现在需要在A机上简历安全策略,禁止B机访问A机的SSH服务(22端口)有几种方法?如何操作?
3.15service iptables stop 与 iptables -F 有何区别?
3.16Iptables封禁eth0网卡与192.168.1.1通讯的所有数据包
3.17Iptables禁止所有到本机(eth0:10.10.10.200)22端口的TCP访问
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
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作为跳板机出往,请给出配置方法
3.20配置跳板机主机的某个内核参数,并使其生效
3.21配置跳板机的iptables防火墙规则
3.22把10.10.0.0 网段流出的数据的原地址修改为66.66.66.66
3.23本机有两张网卡,分别为eth0和eth1,请写出仅允许从eth0访问本机web(80)服务的iptables规则,允许eth1所有访问