一、防火墙简介 1、功能: 1)通过源端口,源IP地址,源MAC地址,包中特定标记和目标端口,IP,MAC来确定数据包是否可以通过防火墙 2)分割内网和外网【附带的路由器的功能】 3)划分要被保护的服务器 如果Linux服务器启用了防火墙,SELinux等的防护措施,那么,他的安全级别可以达到B2[原来是C2] 2、防火墙分类 1)数据包过滤【绝大多数的防火墙】 分析IP地址,端口和MAC是否符合规则,如果符合,接受 2)代理服务器 3、防火墙的限制 1)防火墙不能有效防止病毒,所以防火墙对病毒攻击基本无效,但是对木马还是有一定的限制作用的。 2)防火墙一般不设定对内部[服务器本机]访问规则,所以对内部攻击无效 【附】现当今的杀毒软件对病毒的识别率大约在30%左右。也就是说,大部分的病毒是杀毒软件并不认识的! 4、防火墙配置原则【交叉使用】 拒绝所有,逐个允许 允许所有,逐个拒绝 【附:】防火墙规则:谁先配置,谁先申请! 5、Linux常见防火墙 2.4/2.6内核 iptables #现在常用的 2.2内核 ipchains 二 、iptables防火墙 1、结构:表-------链--------规则
2、表:在iptables中默认有以下三个表 filter表 数据过滤表 #filter过滤,渗透 NAT表 内网与外网地址转换 Mangle 特殊数据包标记 3、链 filter表中: INPUT OUTPUT FORWARD 三、iptables基础语法 1、规则的查看和清楚 iptables [-t表名] [选项] 选项: -L 查看 -F 清除所有规则 -X 清除自定义链 -Z 清除所有链统计 -n 以端口和ip显示 示例: iptables -t nat -L #查看nat表中规则 iptables -L #查看filter表中规则,不写表名默认查看的是filter表! 2、定义默认策略 iptables -t 表名 -P 链名 ACCEPT|DROP #-P(大) 定义默认策略 实例: iptables -t filter -P INPUT DROP 注意:不要把自己踢出服务器,所以这条规则应该最后设定。 3、限定IP和网卡接口设置 iptables [-AI 链] [-io 网卡接口] [-p 协议] [-s 源IP] [-d 目标ip] -j 动作 说明: -A 追加链规则 #在链规则最后加入此规则 -I INPUT 2 #把此规则插入到INPUT链,变成第二条规则 -D 链 条数 #删除指定链的指定条数防火墙 示例: iptables -D INPUT 2 #删除input链上的第二条规则 -i eth0 #指定进入接口,要在INPUT链上定义 -o eth0 #指定传出接口,要在OUTPUT链上定义 -p 协议 #[tcp/udp/icmp/all] -j 动作 #[ACCEPT|DROP] 实例: iptables -A INPUT -i lo -j ACCEPT 允许本机回环网卡通信,在INPUT链 iptables-A INPUT -i eth0 -s 192.168.140.254 -j ACCEPT 允许254进入eth0 iptables-A INPUT -i eth0 -s 192.168.140.0/24 -j DROP 拒绝140网段访问 4、设定端口访问 iptables -A INPUT -i eth0 -p all -s源ip --sport 源端口 -d 目标IP --dport 目标端口-j 动作 #一般需要指定的是目标端口,而且一定要设置协议类型!
实例: iptables -A INPUT -i eth0 -p tcp -s 192.168.140.0/24 --dport 22 -j DROP iptables -A INPUT -i eth0 -p tcp -s 192.168.140.0/24 --dport 137:139 -j ACCEPT #允许访问137到139端口 注意:指定端口时,协议不能用all,要指定确切协议,如TCP 5、模块调用 -m 模块名 模块选项加载iptables功能模块 1) -m state --state ESTABLISHED,RELATED iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT #state状态模块常见状态ESTABLISHED【联机成功的状态】RELATED【返回包状态】 2)-m mac --mac-source按照mac地址限制访问 iptables -A INPUT -m mac --mac-source aa:bb:cc:dd:ee:ff -j DROP #拒绝某mac访问 3)-mstring --string "想要匹配的数据包中字串" iptables -A FORWARD -p udp --dport 53 -m string --string "tencent"--algo kmp -j DROP #通过dns拒绝QQ登录 #--algo指定字符串模式匹配策略,支持KMP和BM两种字符串搜索算法,任意指定一个即可 6、简易防火墙实例 iptables -F iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT #iptables -A INPUT -p tcp --dport 22 -s <IP地址>-j ACCEPT iptables -A INPUT -p tcp --dport 873 -j ACCEPT iptables -A INPUT -p tcp --dport 139 -j ACCEPT iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -P INPUT DROP 7、防火墙服务开机自启动 chkconfig iptables on 8、防火墙规则开启自启动 1) service iptables save 会把规则保存到/etc/sysconfig/iptables文件中,重启会自动读取 2) a.手工写防火墙脚本 如 vi /root/iptables.rule iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 873 -j ACCEPT iptables -A INPUT -p tcp --dport 139 -j ACCEPT iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -P INPUT DROP b.赋予执行权限 chmod 755 /root/iptables.rule c.开机运行 vi/etc/rc.local d.写入 /root/iptables.rule
|