ACCEPT与DROP都属于基础动作。而REJECT则属于扩展动作。
其实,"动作"也有自己的选项,我们可以在使用动作时,设置对应的选项,此处以REJECT为例,展开与"动作"有关的话题。动作REJECT
REJECT动作的常用选项为--reject-with
使用--reject-with选项,可以设置提示信息,当对方被拒绝时,会提示对方为什么被拒绝。可用值如下当不设置任何值时,默认值为icmp-port-unreachable。icmp-net-unreachableicmp-host-unreachableicmp-port-unreachableicmp-proto-unreachableicmp-net-prohibitedicmp-host-pro-hibitedicmp-admin-prohibited
当没有明确设置--reject-with的值时,默认提示信息为icmp-port-unreachable,即端口不可达之意。
此时在另一台主机上向主机139发起ping请求,如下图所示,提示目标端口不可达。那么我们将拒绝报文的提示设置为"主机不可达",示例如下
再次向主机139发起ping请求,可以看到,ping请求被拒绝时,提示信息已经从"目标端口不可达"变成了"目标主机不可达"。动作LOG
使用LOG动作,可以将符合条件的报文的相关信息记录到日志中,但当前报文具体是被"接受",还是被"拒绝",都由后面的规则控制,换句话说,LOG动作只负责记录匹配到的报文的相关信息,不负责对报文的其他处理,如果想要对报文进行进一步的处理,可以在之后设置具体规则,进行进一步的处理。下例表示将发往22号端口的报文相关信息记录在日志中。
LOG动作也有自己的选项,常用选项如下
--log-level选项可以指定记录日志的日志级别,可用级别有emerg,alert,crit,error,warning,notice,info,debug。--log-prefix选项可以给记录到的相关信息添加"标签"之类的信息,以便区分各种记录到的报文信息,方便在分析时进行过滤。注:--log-prefix对应的值不能超过29个字符。
比如,我想要将主动连接22号端口的报文的相关信息都记录到日志中,并且把这类记录命名为"want-in-from-port-22",则可以使用如下命令
从刚才的示例中我们已经了解到,LOG动作会将报文的相关信息记录在/var/log/message文件中,当然,我们也可以将相关信息记录在指定的文件中,以防止iptables的相关信息与其他日志信息相混淆,修改/etc/rsyslog.conf文件(或者/etc/syslog.conf),在rsyslog配置文件中添加如下配置即可。vim /etc/rsyslog.conf kern.waring /var/log/iptables.logservice rsyslog restart 服务重启后,配置即可生效,iptables的日志就存入/var/log/iptables.log中
完成上述配置后,我在IP地址为192.168.1.98的客户端机上,尝试使用ssh工具连接上例中的主机,然后查看对应的日志文件
如上图所示,ssh连接操作的报文的相关信息已经被记录到了iptables.log日志文件中,而且这条日志中包含"标签":want-in-from-port-22,如果有很多日志记录,我们就能通过这个"标签"进行筛选了,这样方便我们查看日志,同时,从上述记录中还能够得知报文的源IP与目标IP,源端口与目标端口等信息,从上述日志我们能够看出,192.168.1.98这个IP想要在14点11分连接到192.168.1.139(当前主机的IP)的22号端口,报文由eth4网卡进入,eth4网卡的MAC地址为00:0C:29:B7:F4:D1,客户端网卡的mac地址为F4-8E-38-82-B1-29。