防火墙
防火墙的作用
防火墙具有对服务器很好的保护作用,入侵者必须穿透防火墙的安全防护线才能解除到目标机器。
防火墙的功能
防火墙对经过它的流量进行一个扫描,这样就能过滤掉一些恶意的流量。以免再目标机器上被执行。
防火墙能阻挡关闭一些不常用的端口,禁止该端口的进出流量。
防火墙概念
linux下防火墙一般分为软件防火墙和硬件防火墙。
硬件:功能多,性能好,成本高。在硬件级别实现防火墙流量过滤功能。
软件:性能略差,成本低,在软件系统内核级别实现流量网络的过滤。
软件防火墙
在linux上提供的软件防火墙,名字叫做iptables,它是一个防火墙命令行工具,iptables还是一个客户端代理,通过iptables的代理,将用户配置的安全策略,执行到对应的安全框架中netfilter。
iptables只是一个命令行工具,处于用户空间,离用户最近。
真正实现流量过滤的软件是netfilter,处于系统内核空间,和操作系统离得是最近的。
iptables+netfilter 共同组成了linux的软件防火墙。一般就用来替代昂贵的硬件防火墙。
centos7系统下 firewalld软件又替代了iptables
iptables是把用户配置的防火墙规则,交给内核层的netfile工具去处理。 firewalld服务把用户配置的防火墙规则,交给内核层的。
iptables
iptables就是按照规则办事的,由运维人员制定流量的出入把控。
查看防火墙规则
[root@localhost ~]# iptables -LChain INPUT (policy ACCEPT) #输入链 默认放行target prot opt source destinationChain FORWARD (policy ACCEPT)target prot opt source destinationChain OUTPUT (policy ACCEPT)target prot opt source destination
iptables默认会自上而下的读取防火墙规则,匹配到正确的规则后,就结束匹配的工作,并且执行对应的工作。如果读取的防火墙所有规则都没有符合,就执行默认的策略。
默认策略
默认策略一般分为两种:
允许和拒绝
- 当默认的规则全部都是拒绝的时候,你就得设置一些允许通过的流量,否则所有的流量都禁止了,就没意义了
- 当默认的规则全部都是允许的时候,就得设置一些禁止,决绝的匹配规则,以保证服务器的安全
防火墙的规则是默认存储在linux内核空间的信息包中,这些规则定义了源地址信息,目的地址信息,传输的协议类型,服务类型。
当数据包符号条件的时候,iptables就根据所定义的动作,来处理这些数据包,放行,拒绝,丢弃。
由内向外一般都是安全的,由外向内大多都是危险的。
iptables服务
iptables把用于处理和过滤流量的策略,称之为规则,多条规则就组成了一个规则链,并且规则链,还有默认的动作。规则链根据数据包所处的不同的位置进行不同的分类。
Linux默认5个规则链:
- 路由选择前处理数据包,prerouting链
- 处理流入的数据包,input链
- 处理流出的数据包,output链
- 进行路由选择后处理数据包,postrouting链
主要使用input链
动作
服务器流量在通过input链之后,进入到服务器内,还得遵循一些动作去处理这些数据包
- Accept 允许数据包通过。
- Reject 拒绝数据包通过,还会给客户端一个响应。
- log 在linux系统的日志目录下,/var/log/message中记录防火墙日志,再进行下一个数据包处理
- drop 直接丢弃数据包,不给于任何的回应,客户端会认为自己的请求被丢弃。直到请求报错结束。
- SNAT 源地址转换,解决内网用户同用一个公网的问题,用于Forward链
- DNAT 目标地址转换
- Redirect 在本地做端口映射
iptables案例
1.查看本地iptables命令
iptables -L
2.清空本地防火墙规则
iptables -F
3.禁止服务器被ping 服务器拒绝ICMP协议流量
#参数解释#-A 指定链#-p 指定协议#--icmp-type 8 指定ICMP协议的类型 8 为回显类型#-s 指定源IP网段#-j 指定动作iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j REJECT
4.删除指定的iptables规则
iptables -D INPUT 1
5.服务器禁止ping,直接丢弃请求,不给于响应
#-A 指定链#-p 指定协议#--icmp-type 8 #指定协议类型#-s 指定ip网段#-j 指定动作iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
6.禁止/允许访问服务器80端口
iptables -A INPUT -p tcp --dport 80 -j DROPiptables -A INPUT -p tcp --dport 80 -j ACCEPT
7.禁止/允许服务器ftp端口被访问 21
iptables -A INPUT -p tcp --dport 21 -j DROPiptables -A INPUT -p tcp --dport 21 -j DROP
8.指定允许的ip地址访问服务器22端口,指定客户端远程连接,拒绝所有其他流量
虽然我们拒绝了所有的22端口流量,但是iptables是自上而下的,所以我们是先局域网连接,后拒绝了所有。我们才能连接上的。
1、只允许某一个客户端连接该服务器的22端口iptables -A INPUT -s 192.168.218.0/24 -p tcp --dport 22 -j ACCEPT2、具有其他所有流量iptables -A INPUT -s 0/0 -p tcp --dport 22 -j DROP
9.禁止指定机器访问本地80端口
iptables -A INPUT -p tcp --dport 80 -s 192.168.218.0/24 -j REJECT
10.禁止所有的主机网段,访问8000到9000端口
iptables -A INPUT -p tcp --dport 8000:9000 -j REJECTiptables -A INPUT -p udp --dport 8000:9000 -j REJECT
