特别说明:此系列博文根据 朱双印博客-iptables系列博文,个人实践后总结,此为个人笔记精简版,更通俗易懂请参考 朱双印博客-iptables系列博文 原文内容,诸君必能有所收获
12 Iptables动作总结之一(基础)
此前我们已经接触过动作了,如REJECT,DROP,ACCEPT;但是我们却没说其他的动作,并且动作其实还分基础动作和扩展动作的,基础动作包括DROP,ACCEPT;其余的便是扩展动作,但是扩展动作使用时不用指定,这与之前的匹配条件使用扩展模块不同,如我们使用REJECT动作就直接使用就好了
虽说直接使用就好了,但是扩展动作却是有一些常用的选项的,我们先从REJECT开始
动作REJECT
REJECT动作的常用选项是 --reject-with,使用该选项可以设置提示信息,当对方被我们拒绝时,会提示对方为什么会被拒绝,可以使用的提示信息为:
- icmp-net-unreachable
- icmp-host-unreachable
- icmp-port-unreachable
- icmp-proto-unreachable
- icmp-net-prohibited
- icmp-host-prohibited
- icmp-admin-prohibited
当不设置值时,默认值为icmp-port-unreachable
我们可以添加一条规则,看看默认返回的提示信息是否为icmp-port-unreachable
往有规则的主机ping,效果如下
现在我们把提示信息更改为主机不可达:icmp-host-unreachable
iptables -t filter -I INPUT 2 -j REJECT --reject-with icmp-host-unreachable
在序号为2处插入该规则,保证第一条规则起作用(维持ssh连接)
现在,我们再来ping主机,看提示信息会有什么变化
可以看到,提示信息从端口不可达变成了主机不可达,其余的选项,可以根据需要添加
动作LOG
我们可以从名字大概知道这个动作会与log日志有关,使用该动作,可以将符合匹配条件的报文的相关信息记录在日志中,不进行其它操作,会将报文传递给下一条规则
如,我们想将发送到22端口的报文信息记录下来,可以定义规则如下
iptables -I INPUT -p tcp --dport 22 -j LOG
查看记录的信息是在 /var/log/messages文件中
可以看到,有很多的信息被记录下来,这是因为我们没有细化匹配规则,所以全部发往22端口的报文信息都被记录了,这样并不利于我们分析,所以尽量把规则细化是很有必要的,现在我们将刚才定义的有LOG动作的规则删除,否则会使记录的日志文件大小变得特别大
当然,我们也可以自定义具有LOG动作的规则把信息写在那个文件中,这需要更改配置文件,比如我们想将信息记录在/var/log/iptables.log文件中,我们需要更改/etc/rsyslog.conf文件(或者是/etc/syslog.conf),在配置文件中添加配置如下
kern.waring /var/log/iptables.log
重启rsyslog服务,service rsyslog restart
或systemctl restart rsyslog
,重启后,新的信息将会记录在我们配置的文件中
同样,LOG动作作为扩展动作,也是有自己的选项的
- –log-level:可以指定记录日志的日志级别,可是使用的级别有 emerg, alert,crit,error,warning,notice,info,debug
- –log-prefix:可以给记录到的相关信息添加"标签"之类的信息,用来区别各种记录的信息,方便在分析时进行过滤,但是需要注意,该选项对应的值不能超过29个字符
如,我想将主动连接22端口的报文的相关信息都记录到日志中,并且还要把这类信息记录命名为"want-in-from-port-22",这个命名不超过29个字符,现在使用如下规则
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -j LOG --log-prefix "want-in-from-port-22"
完成配置后,我们尝试从另一台主机去ssh连接带有该规则的主机,然后查看日志文件,看看效果
可以看到,在该日志文件中存在我们的命名,报文的相关信息等,由于我们给规则定义了标签(命名),这样只会在筛选报文信息时就能很快筛选出来了
【Iptables】iptables目录
【Iptables】13 Iptables动作总结之二(进阶)