Linux基础篇学习——Linux安全之iptables

iptables简介

iptables是工具(CentOS7.6的工具为firewalld),用户通过ipatbles将用户的安全设定执行到对应的"安全框架"中,这个"安全框架"是真正的防火墙,名为netfilter

1.netfilter是防火墙真正的安全框架,位于内核空间
2.iptables是一个命令行工具,位于用户空间,通过这个命令行工具操作netfilter
3.netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能

内核空间 也叫做内核态,操作系统占据的内存区域
用户空间 也叫做用户态,用户进程所在的内存区域

硬件驱动代码运行在内核空间,与kernel运行在相同空间内,所以驱动程序发生问题容易造成系统的崩溃。将用户空间与内核空间隔离开,可减少系统崩溃的可能,提高系统的稳定性。在现实环境中,应用程序崩溃的情况比一些硬件故障出现的概率要多的多得多。所以将用户空间和内核空间隔离开很有必要。

防火墙分类

从逻辑上分类

分类 说明
主机防火墙 针对单个主机进行防护
网络防火墙 处于网络入口或者边缘,针对网络入口进行防护,服务于防火墙背后的本地局域网

从物理上分类

分类 说明
硬件防火墙 在硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高,成本高
软件防火墙 应用软件处理逻辑运行于通用硬件平台之上的防火墙,性能低,成本低

四表五链

具有相同功能的规则的集合叫做“表”,不同的规则放置于不同的表中工作

说明 内核模块
filter表 过滤,防火墙 iptables_filter
nat表 网络地址转换 iptable_nat
mangle表 拆解封装,重新封装 iptable_mangle
raw表 关闭nat表上启用的连接追踪机制 iptable_raw

表是链上的一些具有相同功能规则的集合

PREROUTING raw表,mangle表,nat表
INPUT mangle表,filter表(Centos7中有nat表)
FORWARD mangle表,filter表
OUTPUT raw表,mangle表,nat表,filter表
POSTROUTING mangle表,nat表

在实际使用中,通常是用表来操作

表(功能) 链(钩子)
raw PREROUTING,OUTPUT
mangle PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
nat PREROUTING,OUTPUT,POSTROUTING(Centos7中有INPUT)
filter INPUT,FORWARD,OUTPUT

当不同的表处于同一条"链"时,优先级次序由高到低为 raw-->mangle-->nat-->filter

规则

定义 根据指定的匹配条件来尝试匹配每个流经此处的报文,一旦匹配成功,则由规则后面指定的处理动作进行处理
匹配条件加上处理动作共同组成了规则

基本匹配条件 扩展匹配条件
源地址 Source IP 源端口 Source Port
目标地址 Destintion IP m目标端口 Destination Port
匹配条件 含义
ACCEPT 允许数据包通过
DROP 直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了超时时间才会有反应。
REJECT 拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息
SNAT 源地址转换,解决内网用户用同一个公网地址上网的问题
MASQUERADE 是SNAT的一种特殊形式,适用于动态的、临时会变的ip上
DNAT 目标地址转换
REDIRECT 在本机做端口映射
LOG 在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配

iptables管理命令

OPTION

-L 查看规则 默认查看filter表
-t 表名 -L 查看指定表的规则
-F 清空规则
-v 显示详细信息
-n 表示不解析ip地址,直接显示
--line-numbers 显示详细信息

-I 插入规则到链 默认添加到最前面
-A 追加规则到链 追加到最前面
-s 匹配报文的源地址
-j 动作
-D num 删除
-R 修改
! 非
-d 匹配报文的目标地址
-p 匹配报文的协议类型TCP、UDP、ICMP
-i 网卡名称 匹配的报文从哪个网卡接口流入本机
-o 网卡名称 匹配的报文从哪个网卡接口流出本机
--dport num 匹配目标端口号
--sport num 匹配来源端口号

-P 修改链的默认策略 iptables -P INPUT DROP/ACCEPT,DROP后SSH也会断开
规则链的默认拒绝动作只能是DROP

iptables保存

导入 iptables-restore < /etc/sysconfig/iptables 临时有效,需保存才永久有效

方法1 直接保存

[root@zycentos7 ~]# service iptables save

方法2 重定向保存

[root@zycentos7 ~]# iptables-save > /etc/sysconfig/iptables

iptables -nvL

表项 说明
pkts 对应规则匹配到的报文的个数
bytes 对应匹配到的报文包的大小总和
target 规则匹配成功后需要采取的措施(动作)
prot 规则对应的协议
opt 规则对应的选项
in 数据包由哪个接口(网卡)流入
out 数据包由哪个接口(网卡)流出
source 源地址
destination 目标地址

练习

练习1 把INPUT规则链的默认策略设置为拒绝,向INPUT链中添加允许ICMP流量进入的策略规则

[root@zylinux ~]# iptables -P INPUT DROP
[root@zylinux ~]# iptables -I INPUT -p icmp -j ACCEPT

练习2 把INPUT规则链的默认策略设置为允许,将INPUT规则链设置为只允许指定网段的主机访问本机的22端口,拒绝来自其他所有主机的流量

[root@zylinux ~]# iptables -P INPUT ACCEPT
[root@zylinux ~]# iptables -I INPUT -s 192.168.232.0/24 -p tcp --dport 22 -j ACCEPT
[root@zylinux ~]# iptables -A INPUT -p tcp --dport 22 -j REJECT

防火墙策略规则是按照从上到下的顺序匹配的,因此一定要把允许动作放到拒绝动作前面,否则所有的流量就将被拒绝掉,从而导致任何主机都无法访问我们的服务

练习3 向INPUT规则链中添加拒绝192.168.232.125主机访问本机80端口(Web服务)的策略规则

[root@zylinux ~]# iptables -t filter -I INPUT -p tcp -s 192.168.232.125 --dport 80 -j REJECT

练习4 向INPUT规则链中添加拒绝所有主机访问本机1000~1024端口的策略规则

[root@zylinux ~]# iptables -t filter -I INPUT -p tcp --dport 1000:1024 -j REJECT
[root@zylinux ~]# iptables -t filter -I INPUT -p udp --dport 1000:1024 -j REJECT

练习5 指定位置插入链

[root@zylinux ~]# iptables -t filter -I INPUT 2 -s 192.168.232.125 -j REJECT	;指定插入的位置编号
[root@zycentos7 ~]# ping 192.168.232.123
PING 192.168.232.123 (192.168.232.123) 56(84) bytes of data.
From 192.168.232.123 icmp_seq=1 Destination Port Unreachable
^C
--- 192.168.232.123 ping statistics ---
2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 1004ms

练习6 删除指定链

[root@zylinux ~]# iptables -t filter -D INPUT 1

练习7 修改指定链

[root@zylinux ~]# iptables -t filter -R INPUT 1 -s 192.168.232.125 -j DROP

练习8 DROP一个网段

[root@zylinux ~]# iptables -t filter -I INPUT -s 192.169.232.0/24 -j DROP

练习9 不允许主机与192.168.232.125通信

[root@zylinux ~]# iptables -t filter -I OUTPUT -d 192.168.232.125  -j DROP
[root@zylinux ~]# ping 192.168.232.125
PING 192.168.232.125 (192.168.232.125) 56(84) bytes of data.
ping: sendmsg: Operation not permitted

练习10 192.168.232.125除了能ping,其他都不能

[root@zylinux ~]# iptables -I INPUT ! -p icmp -s 192.168.232.125 -j REJECT
[root@zycentos7 ~]# ping 192.168.232.123
PING 192.168.232.123 (192.168.232.123) 56(84) bytes of data.
64 bytes from 192.168.232.123: icmp_seq=1 ttl=64 time=0.478 ms
[root@zycentos7 ~]# curl 192.168.232.123
curl: (7) Failed connect to 192.168.232.123:80; Connection refused
[root@zycentos7 ~]# ssh 192.168.232.123
ssh: connect to host 192.168.232.123 port 22: Connection refused

练习11 禁止eth0网卡包流入

[root@zylinux ~]# iptables -I INPUT -p icmp -i eth0 -j DROP

练习12 禁止eth0网卡包流出

[root@zylinux ~]# iptables -I OUTPUT -p icmp -o eth0 -j DROP
[root@zylinux ~]# ping 192.168.232.2
PING 192.168.232.2 (192.168.232.2) 56(84) bytes of data.
ping: sendmsg: Operation not permitted

转发功能

打开转发功能 临时

echo 1 > /proc/sys/net/ipv4/ip_forward

在配置文件添加转发功能 永久

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p 	;立即生效

【centos7使用iptables】

[root@zycentos7 ~]# yum install -y iptables-services
[root@zycentos7 ~]# systemctl stop firewalld
[root@zycentos7 ~]# systemctl enable iptables

iptables防火墙

分类 主机A 主机B 主机C
主机名 zycentos7 zylinux localhost
IP eth0:192.168.232.125 eth0:192.168.232.123 eth1:169.254.221.188 eth0:169.254.221.125
GATEWAY 192.168.232.2 eth0:192.168.232.2 eth1:169.254.221.187 169.254.221.188
网卡模式 NAT eth0:NAT,eth1:host-only host-only

新增一条路由,主机A访问192.168.175.0网段都发送给主机B的eth0网卡上

[root@zycentos7 ~]# route add -net 192.168.175.0/24 gw 192.168.232.123
[root@zycentos7 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.232.2   0.0.0.0         UG    100    0        0 ens33
192.168.175.0   192.168.232.123 255.255.255.0   UG    0      0        0 ens33
192.168.232.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
[root@zycentos7 ~]# ping 192.168.175.188
PING 192.168.175.188 (192.168.175.188) 56(84) bytes of data.
64 bytes from 192.168.175.188: icmp_seq=1 ttl=64 time=1.20 ms

设置静态路由,192.168.175.0的网络通通下一跳给了192.168.175.188,当我们ping192.168.175.188的时候,首先主机B收到了这个报文,主机B发现,这个IP地址是自己的,给了主机A回应,所以可以ping通。
那为什么192.168.2.154无法ping通呢,我们可以看到主机B再收到了发给192.168.2.154这个报文的时候,发现自己并不是这个地址,没有回应。

打开主机B的转发功能,让报文可以转发

iptales -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -j REJECT
[root@zylinux ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@zycentos7 ~]# ping 192.168.175.125
PING 192.168.175.125 (192.168.175.125) 56(84) bytes of data.
From 192.168.232.123 icmp_seq=1 Redirect Host(New nexthop: 192.168.175.125)
From 192.168.232.123: icmp_seq=1 Redirect Host(New nexthop: 192.168.175.125)
64 bytes from 192.168.175.125: icmp_seq=1 ttl=63 time=0.909 ms

iptables作为网络防火墙时主要负责“过滤和转发”,过滤是在filter表中,要转发需要配置FORWARD链
主机B上配置FORWARD链,拒绝任何报文通过,这时候主机A和主机B已无法访问

[root@zylinux ~]# iptables -A FORWARD -j REJECT
[root@zylinux ~]# iptables -nvL
Chain INPUT (policy ACCEPT 9 packets, 552 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-wi   th icmp-port-unreachable

Chain OUTPUT (policy ACCEPT 5 packets, 504 bytes)
 pkts bytes target     prot opt in     out     source               destination

企业级安全体系介绍及案例

白名单、黑名单机制

链的默认策略:ACCEPTDROP

白名单机制

  当链的默认策略设置为DROP时,如果对应的链中没有配置任何规则,就表示拒绝所有报文,如果对应的链中存在规则,则按规则匹配。在链中配置规则时,链中的规则对应的动作应该为 ACCEPT ,表示只有匹配到规则的报文才会被放行,没有被规则匹配到的报文都会被默认拒绝,这就是"白名单"机制。

缺点:在对应的链中没有设置任何规则时,管理员自己也无法远程连接到主机,即使对应的链中存在放行规则,当不小心使用"iptables -F"清空规则后,放行规则被删除,所有数据包都无法进入

黑名单机制

  当链的默认策略设置为ACCEPT时,如果对应的链中没有配置任何规则,就表示接受所有的报文,如果对应的链中存在规则,则按规则匹配。在链中配置规则时,对应的动作应该设置为 DROP 或者 REJECT ,表示只有匹配到规则的报文才会被拒绝,没有被规则匹配到的报文都会被默认接受,这就是"黑名单"机制。

最佳策略

将链的默认策略保为 ACCEPT ,将 拒绝所有请求 这条规则放在链的尾部,将 放行规则 放在前面,这样做,既能实现"白名单"机制,又能保证在规则被清空时,管理员还有机会连接到主机

创建自定义链

在iptables中通过自定义链来解决默认链中的规则非常多的问题,方便管理

-t 表名 -L 查看指定表的规则
-N 指定自定义链的名称
-I 插入规则到链 默认添加到最前面
-s 匹配报文的源地址
-j 动作
-E OLD NEW 重命名自定义链
-X 删除自定义链

创建自定义链

[root@zycentos7 ~]# iptables -t filter -N IN_WEB
[root@zycentos7 ~]# iptables -nvL
……
Chain IN_WEB (0 references)
 pkts bytes target     prot opt in     out     source               destination

自定义链添加规则,拒绝来自192.168.232.123的请求

[root@zycentos7 ~]# iptables -t filter -I IN_WEB -s 192.168.232.123 -j REJECT
[root@zycentos7 ~]# iptables -nvL IN_WEB
Chain IN_WEB (0 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 REJECT     all  --  *      *       192.168.232.123      0.0.0.0/0            reject-with icmp-port-unreachable

在默认链中引用讲自定义链

[root@zycentos7 ~]# iptables -I INPUT -p tcp --dport 80 -j IN_WEB
[root@zycentos7 ~]# iptables -nvL
Chain INPUT (policy ACCEPT 24 packets, 1392 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 IN_WEB     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

通过192.168.232.123访问apache,已无法访问

[root@zylinux ~]# curl 192.168.232.125
curl: (7) couldn't connect to host

将IN_WEB自定义链重命名为WEB

[root@zycentos7 ~]# iptables -E IN_WEB WEB

删除引用计数为0并且不包含任何规则的WEB链
删除自定义链需要满足两个条件

  1. 自定义链没有被引用
  2. 自定义链中没有任何规则
[root@zycentos7 ~]# iptables -X WEB

REJECT和LOG处理动作

reject 拒绝信息

REJECT动作的常用选项为--reject-with可以设置提示信息,当对方被拒绝时,会提示对方为什么被拒绝,默认值为 icmp-port-unreachable

可用值
icmp-net-unreachable
icmp-host-unreachable
icmp-port-unreachable
icmp-proto-unreachable
icmp-net-prohibited
icmp-host-prohibited
icmp-admin-prohibited
[root@zylinux ~]# iptables -I INPUT -s 192.168.232.125 -j REJECT --reject-with icmp-host-unreachable
[root@zycentos7 ~]# ping 192.168.232.123
PING 192.168.232.123 (192.168.232.123) 56(84) bytes of data.
From 192.168.232.123 icmp_seq=1 Destination Host Unreachable

log 记录日志

使用LOG动作,可以将符合条件的报文的相关信息记录到日志中
LOG的动作的报文信息记录在 /var/log/messages,可以修改,配置信息在 /etc/rsyslog.conf

tailf -5 /var/log/messages

LOG动作选项

- - log-level 指定记录日志的日志级别
- - log-prefix 给记录到的相关信息添加"标签"之类的信息,便于区分,方便过滤 - - log-prefix对应的值不能超过29个字符

[root@zylinux ~]# iptables -I INPUT -p icmp -s 192.168.232.125 -j LOG --log-level error
[root@zylinux ~]# iptables -I INPUT -p icmp -s 192.168.232.125 -j LOG --log-level alert --log-prefix " ping-icmp "
/var/log/messages记录如下:
Nov 30 12:17:26 zylinux kernel: ping-icmp 
选项 level 级别
emerg 0
alert 1
crit 2
error 3
warning 4
notice 5
info 6
debug 7

NAT,SNAT,MASQUERADE,REDIRECT处理动作

NAT 网络地址转换

实际上报文在经过路由器或者防火墙的时候,内网的主机IP被隐藏,对应转换成路由器或者防火墙的IP并映射一个端口,这些信息会被NAT记录下来,当外部主机收到信息后,源地址和源端口显示的是防火墙的IP和映射的端口,当外部的主机回应时,首先是由防火墙或者路由器收到的,这时候会根据NAT的记录,将相应报文中的目标IP和目标端口,改为内部主机的IP和端口,再将报文发给内部主机,这样内部主机就可以隐藏IP上网

在整个过程中实际上有两次地址转换:
1.内部主机的报文发送出去,报文的源IP和端口发生了改变,SNAT
2.外部主机回应报文后,响应报文的目标IP和端口发生了改变,DNAT

NAT技术帮我们解决了隐藏内网IP,共享公网IP,IPV4地址不够用的问题

SNAT地址转换

iptables -t nat -A POSTROUTING -s 192.168.232.0/24 -j SNAT --to-source 192.168.1.153

在centos7中,SNAT规则只能存在于POSTROUTING链与INPUT链中,在centos6中,SNAT规则只能存在于POSTROUTING链中

DNAT地址转换

iptables -t nat -I PREROUTING -d 192.168.1.153 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.153:80

DNAT规则只配置在PREROUTING链与OUTPUT链中

MASQUERADE

MASQUERADE会动态的将源地址转换为可用的IP地址

iptables -t nat -I POSTROUTING -s 192.168.232.0/24 -o eth0 -j MASQUERADE

SNAT更高效

REDIRECT 端口映射

使用REDIRECT动作可以在本机上进行端口映射
将本机的8888端口映射到本机的80端口上(当别的机器访问本机的8888端口时,报文会被重定向到本机的80端口上)

[root@zylinux ~]# iptables -t nat -A PREROUTING -p tcp --dport 8888 -j REDIRECT --to-ports 80
[root@zylinux ~]# iptables -nvL -t nat
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:8888 redir ports 80

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 SNAT       all  --  *      *       192.168.232.0/24     0.0.0.0/0           to:192.168.1.153

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

[root@zycentos7 ~]# curl 192.168.232.123:80
hello,world!
[root@zycentos7 ~]# curl 192.168.232.123:8888
hello,world!

REDIRECT规则只能定义在PREROUTING链或者OUTPUT链中


iptables进阶用法

iprange扩展模块

指定一段连续的IP地址范围

-m iprange 使用iprange扩展模块
--src-range 源地址范围
--dst-range 目标地址范围

[root@zycentos7 ~]# iptables -I INPUT -m iprange --src-range 192.168.232.110-192.168.232.140 -j DROP

取反

[root@zycentos7 ~]# iptables -I INPUT -m iprange ! --src-range 192.168.232.110-192.168.232.140 -j DROP

string扩展模块

指定要匹配的字符串,如果报文中包含对应的字符串,则符合匹配条件

-m string 使用string扩展模块
--algo 指定匹配算法bm或kmp,必选项
--string 指定需要匹配的字符串

[root@zycentos7]# iptables -I INPUT -m string --algo kmp --string "error" -j REJECT
[root@zycentos7]# iptables -nvL
Chain INPUT (policy ACCEPT 70 packets, 4504 bytes)
 pkts bytes target     prot opt in     out     source               destination
   13  1833 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           STRING match "error" ALGO name kmp TO 65535
[root@zylinux ~]# curl 192.168.232.125/error.html
网页无响应

time扩展模块

根据时间段区匹配报文,如果报文到达的时间在指定的时间范围以内,则符合匹配条件
-m time 使用time扩展模块
--timestart 指定起始时间,格式00:00:00
--timestop 指定结束时间
--weekdays 用数字或用缩写(Mon)指定星期几
--monthdays,--datestart,--datestop 指定日期范围

从0点到23点之间不允许访问

[root@zycentos7 html]# iptables -I INPUT -d 192.168.232.125 -p tcp --dport 80 -m time --timestart 00:00 --timestop 23:59 -j REJECT
[root@zylinux ~]# curl 192.168.232.125
curl: (7) couldn't connect to host

connlimit扩展模块

限制每个IP地址同时链接到server端的链接数量,针对每个客户端ip,即对单IP的并发链接数限制
-m connlimit 使用connlimit扩展模块
--connlimit-above 限制连接上限
--connlimit-mask 按照网段限制连接上限

[root@zylinux ~]# iptables -t filter -I OUTPUT -p TCP --dport 22 -m connlimit --connlimit-above 2 -j REJECT

limit扩展模块

对报文到达速率进行限制
--limit # /second[/minute/hour/day] 主要用来限制单位时间内可以流入的数据包的数量
--limit-burst 令牌桶大小,默认是5

令牌桶原理
默认令牌桶数量是5个,每6秒产生一个令牌,在ping操作时,前五次没有任何影响,只是消耗了所有的令牌,从第6秒开始产生新的令牌,这时可以ping通,再要ping通需要等6秒再产生一个新的令牌

[root@zycentos7 ~]# iptables -I INPUT -m limit --limit 10/min -j ACCEPT
[root@zycentos7 ~]# iptables -A INPUT -p icmp -j REJECT
[root@zylinux ~]# ping 192.168.232.125
PING 192.168.232.125 (192.168.232.125) 56(84) bytes of data.
64 bytes from 192.168.232.125: icmp_seq=1 ttl=64 time=0.896 ms
64 bytes from 192.168.232.125: icmp_seq=2 ttl=64 time=0.510 ms
64 bytes from 192.168.232.125: icmp_seq=4 ttl=64 time=0.352 ms
From 192.168.232.125 icmp_seq=5 Destination Port Unreachable
From 192.168.232.125 icmp_seq=6 Destination Port Unreachable
From 192.168.232.125 icmp_seq=7 Destination Port Unreachable
From 192.168.232.125 icmp_seq=8 Destination Port Unreachable
From 192.168.232.125 icmp_seq=9 Destination Port Unreachable
64 bytes from 192.168.232.125: icmp_seq=10 ttl=64 time=0.766 ms

tcp-flags扩展模块

匹配tcp报文头部的标志位(SYN,ACK,FIN,RST,URG,PSH),然后根据标识位的实际情况实现访问控制的功能,防止SYN攻击

--tcp-flags ALL SYN
第一部分表示:需要匹配的标志位列表,ALL表示所有
第二部分表示:需要匹配的标志位列表中,哪个的标志位的值必须为1(其他标志位必须为0)

[root@zycentos7 ~]# iptables -I INPUT -p tcp --dport 80 --tcp-flags ALL SYN -j REJECT
[root@zylinux ~]# curl 192.168.232.125
curl: (7) couldn't connect to host
[root@zylinux ~]# nmap -sS 192.168.232.125

Starting Nmap 5.51 ( http://nmap.org ) at 2019-11-30 10:34 CST
Nmap scan report for 192.168.232.125
Host is up (0.00023s latency).
Not shown: 998 closed ports
PORT   STATE    SERVICE
22/tcp open     ssh
80/tcp filtered http
MAC Address: 00:0C:29:5D:AE:CB (VMware)

Nmap done: 1 IP address (1 host up) scanned in 0.17 seconds
[root@zylinux ~]# nmap -sT 192.168.232.125

Starting Nmap 5.51 ( http://nmap.org ) at 2019-11-30 10:34 CST
Nmap scan report for 192.168.232.125
Host is up (0.0037s latency).
Not shown: 999 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
MAC Address: 00:0C:29:5D:AE:CB (VMware)

Nmap done: 1 IP address (1 host up) scanned in 0.33 seconds

state扩展

基于连接追踪功能查看每一报文当前所处的状态

报文状态 含义
NEW 第一次连接时
ESTABLISHED 已建立的连接
INVALID 无法识别的连接
RELATED 相关联的连接
UNTRACKED row表上关闭连接追踪功能
[root@zycentos7 ~]# iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@zycentos7 ~]# iptables -A INPUT -j REJECT
[root@zycentos7 ~]# iptables -I INPUT 2 -p tcp --dport 22 -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@zycentos7 ~]# iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@zycentos7 ~]# iptables -A INPUT -j REJECT
[root@zycentos7 ~]# iptables -I INPUT 2 -s 192.168.232.123 -p tcp --dport 80 -j ACCEPT
发布了43 篇原创文章 · 获赞 30 · 访问量 5929

猜你喜欢

转载自blog.csdn.net/qq_42049496/article/details/103393176