多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# iptables企业应用模板 [TOC] ## 一、简述 ### 1. 部署企业级防火墙两种思路 1) 默认规则默认是允许的状态。 逛公园的思路,只阻止指定的人员进入 2) 默认规则默认是不允许的状态[更安全]。 看电影的思路,只允许指定的人员进入 ### 2. 防止自己被踢出门外 操作过程中,有可能配置错误导致自己也被阻断SSH连接,处理此问题的方法如下 1) 去机房重启系统或登录服务器删除刚才的禁止规则 2) 让机房人员重启服务器或者让机房人员拿用户密码登录进去 3) 通过服务器的远程管理卡管理 4) 先写一个定时任务,每5分钟就停止防火墙 [预防为主,推荐] 5) 测试环境测试好,写成脚本,批量执行[预防为主,推荐] ## 二、配置实战 1. 备份防火墙配置文件信息 ```sh cp /etc/sysconfig/iptables{,.bak} ``` 2. 配置规则清除 ```sh iptables -F iptables -X iptables -Z ``` 3. 别把自己踢出到门外 ```sh iptables -A INPUT -s 10.0.0.1 -p tcp --dport 22 -j ACCEPT iptables -A INPUT -s 10.0.0.0/24 -p tcp --dport 22 -j ACCEPT ``` 4. 配置防火墙filter上各个链的默认规则 ```sh iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT ``` 5. 允许本机lo通信规则 ```sh iptables -A INPUT -i lo -j ACCEPT ``` 6. 指定外网可以访问的端口信息 ```sh iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT ``` 7. 内网之间不要配置防火墙策略 放开内网网段之间的访问 ```sh iptables -A INPUT -s 172.16.1.0/24 -j ACCEPT ``` 8. 允许某些外网访问 如合作企业,异地机房等 ```sh iptables -A INPUT -s 10.0.1.0/24 -j ACCEPT iptables -A INPUT -s 10.0.2.0/24 -j ACCEPT ``` 9. 允许关联的状态包通过 ```sh iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ``` 10. 允许icmp类型协议通过[ping.非必须] ```sh iptables -A INPUT -p icmp -m icmp-type any -j ACCEPT 提示:如果不想开,就不执行此命令,或者如下仅允许指定IP可以ping iptables -A INPUT -p icmp -s 10.0.0.0/24 -m icmp --icmp-type any -j ACCEPT ``` ## 三、保存配置 1. 用防火墙启动脚本命令参数,实现永久保存 ```sh /etc/init.d/iptables save ``` 保存到/etc/sysconfig/iptables 下面,以后重启,会自动调用此文件中的配置 2. 利用防火墙配置信息保存命令,实现永久保存 ```sh iptables-save >/etc/sysconfig/iptables ``` 3. 保存文件查看 ```sh cat /etc/sysconfig/iptables # Generated by iptables-save v1.4.7 on Mon Aug 15 01:33:44 2016 *nat :PREROUTING ACCEPT [1413:153792] :POSTROUTING ACCEPT [132:8834] :OUTPUT ACCEPT [132:8834] COMMIT # Completed on Mon Aug 15 01:33:44 2016 # Generated by iptables-save v1.4.7 on Mon Aug 15 01:33:44 2016 *filter :INPUT DROP [1798:662465] :FORWARD DROP [0:0] :OUTPUT ACCEPT [288:21100] -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -s 10.0.0.0/24 -p tcp -j ACCEPT -A INPUT -i lo -j ACCEPT -A OUTPUT -o lo -j ACCEPT COMMIT # Completed on Mon Aug 15 01:33:44 2016 ```