防火墙 iptables : 关闭两项功能: selinux ,生产中也一般关闭,也可以做ids***检测 iptables ,生产中内网关闭,外网打开,大并发情况下需要关闭,否则影响性能 安全优化: 1. 尽量不要给服务器配置外网ip,可以通过代理转发。 Netfilters/iptables 是开源的基于包过滤的防火墙工具,主要工作在OSI七层模型的2 ,3,4层,如果编译内核的话,iptables也支持7层控制(squid + iptables)。 Nginx负载均衡: 四层负载均衡: IP + 端口的负载 七层负载均衡: 基于URL等应用层信息的负载均衡 二层负载 : 基于MAC地址 三层负载均衡: 基于IP iptables涉及的名词 : 容器 : 用于形容包含与被包含的关系 Netfilter : 是表的容器,即是说iptables或者netfilter中包含的是各个表(filter表,NAT表,MANGLE表,RAW表) iptables的表又是链的容器 链 : INOUT , OUTPUT , FORWARD(转发) , PREROUTING(预路由,进来之前路由) , POSTROUTING 链式规则的容器 规则 : 一条条过滤的语句 表与链之间关系 : filter表包含的链有 : INPUT , OUTPUT , FORWARD , filter表主要与主机自身相关,是默认的表, nat表包含的链有 : OUTPUT , PREROUTING(发生在路由判断之前,主要作用是修改数据包的目标地址及端口,外网映射内网) , POSTROUTING(改变数据包的源地址,源端口,内网映射外网 如共享上网) mangle表包含所有的链 。 查看iptables规则 : iptables -L -n 或 iptables -L -n --line-numbers (会给规则显示序号,方便删除) iptables -V : 查看版本信息 iptables -h : 查看帮助信息 启动iptables : /etc/iinit.d/iptables start iptables -F : 清除所有规则,除了默认的 iptables -X : 清除用户自定义的链 iptables -Z : 链的计数器清零 注意 : 使用iptables所做的操作属于临时生效,重启iptables或者主机就没效果了 demo : 1. 封端口 找出ssh端口 : netstat -lntup | grep ssh 等价于命令 ss -lntup | grep ssh 结果为 22 语法 : iptables -t 表明 -A|-D 链 具体规则 处理选项(-j)(DROP | REJECT | ACCEPT) 然后禁用 : iptables -t filter -A INPUT -p tcp --dport 22 -j DROP 恢复 : -F 参数删除所有 ,有点暴力 通过序号删除 : iptables -D INPUT 规则序号 注意: 封ip时,需要使用-i参数添加规则到链首,-a 在链尾,可能不起作用 2. 禁止10.0.0.0网段连接或者封IP iptables -t filter -A INPUT -i eth0 -s 10.0.0.0/24 -j DROP # -i 表示进入的接口 -s 是源地址(可以是ip或者网段) // 效果测试 ping不通 可以禁止别人而放行自己 : 利用感叹号 ,即取非运算,感叹号在 -s 前边或者后边与os版本有关 ,效果测试: 自己可以ping通自己,但别人ping不通 3. 封端口段 iptables -A INPUT -p tcp --sport 22:88 # --sport 源端口 或 iptables -A INPUT -p tcp -m mutiport -dport 21,22,23,24 匹配制定的网络接口: iptables -A INPUT -i eth0 # 从eth0 进入的 iptables -A OUTPUT -o eth0 # 从 eth0出去的 配置一个企业防火墙 : iptables -F iptables -X iptables -Z iptables -A INPUT -p tcp --dport 22 -s 10.0.0.0/24 -j ACCEPT # 允许企业内网主机连接22端口 ssh iptables -A INPUT -i lo -j ACCEPT # 允许从本地回路进入 iptables -A INPUT -o lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # 允许从本地回路出去 默认规则: -P参数 大写P iptables -P INPUT DROP 生产操作 : 编辑文件 : /etc/sysconfig/iptables 4、使用linux做网关 原理: 利用iptable的NAT表的POSTROUTING链 服务器网关需具备的条件: a. 物理条件 具备双网卡,建议eth0 外网(10.0.0.19 ,GW 10.0.0.254) ,eth1 内网(192.168.1.19,内网卡不配置网关) b. 内核文件/etc/sysctl.conf 开启转发功能 , net.ipv4.ip_forward=1 执行 sysctl -p 使修改生效 c. iptables的filter表的FORWARD允许转发 : intables -P FORWARD ACCEPT 加载iptables内核模块 ,并放入rc.local : lsmod | egrep ^ip :查看是否有相关模块,如果没有则加载下面的模块 载入内核模块 : modprobe iptables modprobe iptable_filter modprobe iptable_nat modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe ip_nat_ftp modprobe ipt_state 局域网NAT共享上网两条命令 : 法1 : 适合有固定外网地址的 iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.19 # 将出去的数据包的源地址改为外网地址10.0.0.19 tips : -s 192.168.1.0/24 办公室或IDC内网网段 -o eth0 为网关的外网卡接口 -j SNAT --to-source 10.0.0.19 是网关的外网卡的IP地址 法2 : 适合外网地址变化的(如ASDL) iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE 外网地址映射到内网地址: iptables -t nat -A PREROUTING -d 10.0.0.7 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.17:9000 IP转IP一对一转发 : iptables -t nat PREROUTING -A -d 10.0.0.7 -j DNAT --to-destination 192.168.19.5 对于企业上网人数较多,同时有多个外网IP时,可以将ip按段分配:映射多个外网Ip地址上网 iptables -t nat POSTROUTING -A -s 10.0.0.0/255.255.240.0 -j SNAT --to-source 124.42.60.11-124.42.60.16 iptables -t nat POSTROUTING -A -s 172.16.1.0/255.255.255.0 -j SNAT --to-source 124.42.60.103-124.42.60.106
Linux - iptables
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.