IPtables的用法


学习目标:能够正确运用iptables来制定防火墙规则


语法:

  1. iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
  2. iptables –[A|I 链] [-i|o 网络接口] [-p 协议] [-s 来源ip/网域] [-d 目标ip/网域] j[ACCEPT|DROP]

参数:

主要是从几个方面来限制,ip地址,端口,网卡,协议。
-P,-F,-L,-A,-l num,-D num,-s,-d,-i,-o,-p,-sport num,-dport num

查看规则:

iptables [-t tables] [-L] [-nv]
参数:
-t 指定表明,默认为filter表
-l 指定链名,默认是所有链
-v 显示所有信息
-x 展开数字

image.png

字段解释:

规则操作:

清除所有规则:

iptables -t filter -F INPUT

增加规则:

iptables -A INPUT -s 192.168.36.1 -j DROP

删除规则:

方法1:根据规则的编号进行删除操作
方法2:根据具体的匹配条件去删除规则

iptables -t tables -D INPUT 3
iptables -t filter -D INPUT -s 192.168.131.131 -j DROP

修改单个规则:

iptables -t filter -R INPUT 7 -s 192.168.131.111 -j REJECT

转发本地端口:

iptables -t nat -A PREROUTING -p tcp --dport 6666 -j REDIRECT --to-port 22

自定义链:

创建自定义链
iptables -t filter -N http_chain
引用自定义链
iptables -I INPUT -p tcp --dport 80 -j http_chain
创建规则(和五链使用方法一样)
iptables -t filter -A http_chain -s 192.168.80.1 -j REJECT
iptables -t filter -A http_chain -s 10.1.0.0/16 -j REJECT

删除自定义链:
删除引用:
iptables -t filter -D INPUT -p tcp --dport 80 -j http_chain
删除规则:
iptables -F http_chain
删除链:
iptables -X http_chain


总结:

iptables从外部上看是对数据包进行处理。它是通过设定规则来对数据包进行处理,具体的规则设定,应该从表从链的角度去考虑。比如需要设定的是什么规则,就用到对应的表,需要在什么地方对包进行处理,就要考虑到设置在那一条链上,具体的链表又是有相关性的,就比如说mangle表是对数据包进行拆解,修改,封装的,它在每一条链上都存在。倘若我们需要用到对数据包进行修改拆解封装的功能,就要用到mangle表,具体用在那一条链上就需要我们考虑。这是链和表的角度,具体规则的设定,又有许多的参数。但是大体来看是从几个角度去设定的。ip地址,协议,端口,从那个网卡流入流出的。以及对应执行的动作,例如接受拒绝,丢弃,DNAT和SNAT等等。

Firewalld和Selinux


核心概念:区域

把在firewalld服务中访问8080和8081端口的流量策略设置为允许,但仅限当前生效

firewall-cmd --zone=public --add-port=8080-8081/tcp
如果是永久生效就是--permanent

把原本访问本机888端口的流量转发到22端口,要且求当前和长期均有效

firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport22:toaddr=192.168.36.131

计划任务:

目标:能够指定计划任务来切割日志


计划任务主要是周期性的做一些事情,目前主要用途是定期备份数据

一次调度执行at:

需要安装at

循环调度执行cron用户级:

它是一个守护进程,它会去执行对应目录下面放置的文件,这些文件由用户自己根据需求定制

日志管理基础:


目标:能够管理系统的日志

处理日志的进程:

rsyslogd:绝大部分日志记录,与系统的操作有关,安全,认证sshd,su,计划任务at,cron
httpd/nginx/mysql等等应用可以以自己的方式记录日志

logrotate日志轮转


针对任何日志文件,(rsyslog日志,和各应用程序的日志)

logrotate(轮转日志切割)

  • 如果不进行日志切割,则日志文件会越来越大,不方便阅读
  • 将丢弃系统中最旧的日志,节省空间
  • logrotate本身并不是守护进程,它是通过计划任务crond每天执行