标签:操作 机制 51cto des 适合 客户 直接 添加 sysctl
防火墙的概念防火墙( FireWall ):隔离功能,工作在网络或主机边缘,对进出网络或主机的 数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一组功能的组件,基本上的实现都是默认情况下关闭所有的通过型访问,只开放允许访问的策略
主机防火墙:服务范围为当前主机
网络防火墙:服务范围为防火墙一侧的局域网
硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现
软件防火墙:运行于通用硬件平台之上的防火墙的应用软件
网络层防火墙
应用层防火墙/代理服务器
规则rule:根据规则的匹配条件尝试匹配报文,对匹配成功的报文根据规则定义的处理动 作作出处理
报文进入主机之后,流经的路径:
由上图可以看出报文的流向:
规则要添加在链上,才生效;添加在自定义上不会自动生效
防火墙的作用就是对经过的报文匹配规则,然后执行响应的动作,当报文经过这些"关卡"的时候,必须匹配"关卡"上的规则,但是关卡上有很多的规则,当我们把这些规则串到一条链上的时候,就形成了链,如下图所示
链chain
把具有相同规则的集合叫表
表的分类
所有的规则都是这四张表中的规则,也就是说,所有的规则都存在这四张表中
链到表的对应关系
表到链的对应关系
数据经过防火墙的流程
红色箭头是表的执行顺序,蓝色箭头是数据流向
处理动作:(处理动作被称为target)
基本动作:
iptables -I INPUT -p tcp --dport 80 -j LOG --log-prefix "new connection:"
扩展动作:
–reject-with 后面跟参数
#实现自己可以ping其他人,其他人无法ping自己.icmp-type 8是请求icmp-type 0是回应
iptables -A INPUT -p icmp -j REJECT
iptables -A OUTPUT -p icmp -j REJECT
iptables -I OUTPUT 1 -p icmp --icmp-type 8 -j ACCEPT
iptables -I INPUT 1 -p icmp --icmp-type 0 -j ACCEPT
#只同意接受某些端口
iptables -R INPUT 1 -p tcp -m multiport --dport 21:23,80,53 -j ACCEPT
#只允许规定的网段IP访问
iptables -I INPUT 1 -p tcp --dport 22 -m iprange --src-range 192.168.153.101-192.168.153.103 -j ACCEPT
#如果IP过多,可以加到一个集合里,通过控制集合来实现控制大量IP
ipset create httplist hash:net maxelem 10000 #限制一个集合里的最大IP数
ipset add httplist 192.168.153.101 #添加IP到集合里
ipset --list #查看集合里的IP
iptables -I OUTPUT 1 -p tcp --sport 80 -m set --match-set httplist dst -j ACCEPT
iptables -I INPUT 1 -p tcp --dport 80 -m set --match-set httplist src -j ACCEPT
iptables -I INPUT 1 -m string --algo bm --string "google" -j REJECT #限制路径里有"google"的请求
iptables -R INPUT 1 -m time --timestart 7:00 --timestop 8:55 --weekdays Mon,Thu -m string --algo bm --string "baidu" -j REJECT #每周的周一,周二的早7点到早8:55访问路径中有"baidu"的请求拒绝
#控制访问并发树,即每个IP同时连接到一个服务器个数
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 1 -j REJECT
#控制每分钟连接的个数为10,即6个只允许一个访问被回应
iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 10/minute --limit-burst 8 -j ACCEPT
#
modprobe nf_conntrack_ftp #加载ftp的这个模块
lsmod |grep nf_conntrack_ftp #查看是否加载模块
iptables -I INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT #这里的--state NEW可以不写,只是强调是否通过21号端口第一次简历端口
iptables -I INPUT 2 -m state --state ESTABLISHED,RELATED -j ACCEPT #让追踪服务器开启的这个Y端口
实验环境
host ip:192.168.153.7 ip: 10.10.10.7 两块网卡
inside ip:192.168.153.101
outside ip:10.10.10.102
[root@firewall ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@firewall ~]# sysctl -p #检查是否开启转发
net.ipv4.ip_forward = 1
[root@inside ~]# route add default gw 192.168.153.7
[root@outside ~]# route add default gw 10.10.10.7
#方法一 #利用icmp 的8 和 0 端口来做转发实现限制ping
[root@firewall ~]# iptables -A FORWARD -j REJECT
[root@firewall ~]# iptables -I FORWARD -s 192.168.153.0/24 -d 10.0.0.0/8 -p icmp --icmp-type 8 -j ACCEPT
[root@firewall ~]# iptables -I FORWARD -d 192.168.153.0/24 -s 10.0.0.0/8 -p icmp --icmp-type 0 -j ACCEPT
#方法二#利用发过去的icmp报文返回的响应做追踪
[root@firewall ~]# iptables -A FORWARD -j REJECT
[root@firewall ~]# iptables -I FORWARD -s 192.168.153.0/24 -d 10.0.0.0/8 -p icmp --icmp-type 8 -j ACCEPT
[root@firewall ~]# iptables -I FORWARD -m state --state ESTABLISHED -j ACCEPT
#方法三#利用状态追踪,对第一次发送的icmp报文后返回的icmp响应追踪
[root@firewall ~]# iptables -A FORWARD -j REJECT
[root@firewall ~]# iptables -I FORWARD -s 192.168.153.0/24 -d 10.0.0.0/8 -p icmp -m state --state NEW -j ACCEPT
[root@firewall ~]# iptables -I FORWARD -m state --state ESTABLISHED -j ACCEPT
[root@firewall ~]# iptables -t nat -A POSTROUTING -s 192.168.153.0/24 -j SNAT --to-source 172.18.254.96
[root@firewall ~]# iptables -t nat -A POSTROUTING -s 192.168.153.0/24 -j MASQUERADE
#在inside开启httpd服务,设置默认端口为9527端口
[root@firewall ~]# iptables -t nat -A PREROUTING -d 172.18.254.96 -p tcp --dport 80 -j DNAT --to-destination 192.168.153.101:9527
标签:操作 机制 51cto des 适合 客户 直接 添加 sysctl
原文地址:http://blog.51cto.com/13805636/2309669