防火墙:firewall
防火墙的作用:
防止别人进入你的电脑,攻击你的电脑
防火墙不能杀病毒
SNMP协议(Simple Network Management Protocol):简单网络管理协议
端口:161
tcp/udp都适用
软件防火墙:Linux系统的防火墙是由内核实现的
内核 kernel:
1、cpu的管理
2、进程管理
3、内存的管理
4、文件系统管理
5、网络的管理
6、其他硬件的管理
前身 内核1.x版本是 ipfirewall
当内核发展到2.x系列的时候,软件更名为ipchains
2.4 版及以后的内核中,包过滤机制是netfilter,管理工具是iptables
netfilter:
位于Linux内核中的包过滤防火墙功能体系
称为Linux防火墙的“内核态”
iptables:软件,给netfilter传递参数,可以查看netfilter里的信息
位于/sbin/iptables,是用来管理防火墙的命令工具
为防火墙体系提供过滤规则/策略,决定如何过滤或处理到达防火墙主机的数据包
称为Linux防火墙的“用户态”
规则表:
具有某一类相似用途的防火墙规则,按照不同处理时机区分到不同的规则链以后,被归置到不同的“表”中
规则表是规则链的集合,有默认的,也可以自己定义
默认的4个规则表(顺序至上而下,默认如下):
raw表:确定是否对该数据包进行状态跟踪
PERROUTING、OUTPUT
mangle表:为数据包设置标记
PEROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING
nat表:修改数据包中的源、目标IP地址或端口
PREROUTING、INPUT、OUTPUT、POSTROUTING
filter表:确定是否放行该数据包(过滤)
INPUT、FORWARD、OUTPUT
规则链(Chain):
规则的作用在于对数据包进行过滤或处理,根据处理时机的不同,各种规则被组织在不同的“链”中
规则链是防火墙规则/策略的集合
默认的5种规则链:
INPUT:处理入站数据包
OUTPUT:处理出站数据包
FORWARD:处理转发数据包
PREROUTING:在进行路由选择前处理数据包
POSTROUTING:在进行路由选择后处理数据包
数据包过滤匹配流程:
iptables:
几个注意事项:
不指定表名时,默认表示filter表
不指定链名时,默认表示该表内所有链
除非设置规则链的缺省策略,否则需要指定匹配条件
-F:清除某个表的规则,默认是filter,表里的链里的规则都会被清空
-L:列出链
-P:链目标
-t:按表查看,默认是filter表
-A:add,给规则链增加一条规则,规则链必须是大写(例如,-A INPUT)
-s:源地址
-n:以数字的形式显示
-p:协议名(例如,tcp,icmp)
--sport:源端口
--dport:目标端口
--line-num:显示规则的编号
-v:显示匹配到的数据包的个数个字节数
-j:目标动作或跳转
ACCEPT:放行数据包
DROP:丢弃数据包
REJECT:拒绝数据包
LOG:记录日志信息,并传递给下一条规则处理
-m:扩展模块
-m multiport:结合“--sports 源端口列表”或者“--dports 目标端口列表”的形式,多个端口之间使用逗号“,”分隔,连续的端口也可以使用冒号“:”分隔(例如:iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT)
-m status:结合“--state 状态类型”的形式,同时表示多种状态时以逗号“,”分隔,常见的数据包状态包括:NEW、ESTABLISHED、RELATED(例如:iptables -A INPUT -p tcp -m state --state NEW -j DROP)
保存规则:
iptables-save:结合重定向输出“>”符号保存规则信息
例:iptables-save > /root/all_iptables.txt
导入规则:
iptables-restore:结合重定向输入“<”符号恢复规则信息
例:iptables-restore < /root/all_iptables.txt
把命令写到/etc/rc.local文件里(这是开机时,执行的脚本)
并赋予/etc/rc.d/rc.local运行的权限
chmod +x /etc/rc.d/rc.local