IPtables的用法
学习目标:能够正确运用iptables来制定防火墙规则
语法:
iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
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 展开数字
字段解释:
规则操作:
清除所有规则:
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:
循环调度执行cron用户级:
它是一个守护进程,它会去执行对应目录下面放置的文件,这些文件由用户自己根据需求定制
日志管理基础:
处理日志的进程:
rsyslogd:绝大部分日志记录,与系统的操作有关,安全,认证sshd,su,计划任务at,cron
httpd/nginx/mysql等等应用可以以自己的方式记录日志
logrotate日志轮转
针对任何日志文件,(rsyslog日志,和各应用程序的日志)
logrotate(轮转日志切割)
- 如果不进行日志切割,则日志文件会越来越大,不方便阅读
- 将丢弃系统中最旧的日志,节省空间
- logrotate本身并不是守护进程,它是通过计划任务crond每天执行