防火墙
作用
防火墙具有对服务器很好的保护作用,入侵者必须穿透防火墙的安全防护线,才能接触目标机器
功能
防火墙对经过它的流量进行一个扫描,这样能过滤掉一些恶意的流量,以免在目标机器上被执行
防火墙还能够阻挡,关闭一些不常用的端口,禁止该端口的流量进出
防火墙概念
linux下防火墙一般分为软件防火墙,硬件防火墙
硬件防火墙:在硬件的级别实现防火墙功能流量过滤功能,性能很高,但是成本也高
软件防火墙:在软件系统内核级别实现网络流量的过滤,性能较弱,但是成本很低
软件防火墙
linux上的防火墙iptables,它是一个防火墙命令行工具,iptales还是一个客户端代理
通过iptables的代理,将用户配置的安全策略,执行到对应的安全框架中netfilter
iptables只是一个命令行的工具,处于用户空间,离用户最近
真正实现流量过滤的是netfilter,处于系统内核空间,和操作系统离得是最近的
iptables+netfilter共同组成了linux的软件防火墙,一般就用来替代昂贵的硬件防火墙了
centos7系统下
filrewalld软件替代了 iptables工具
iptables是把用户配置的防火墙规则,交给内核层的netfile工具去处理
firewalld服务是把用户配置的防火墙规则,交给内核层的nftables网络过滤器去处理
iptables
iptables 查看防火墙规则
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
iptables默认会自上而下的读取防火墙规则,匹配到正确的规则后,就结束匹配工作,且执行对应的工作
如果读取的防火墙所有规则都没有符合,就执行默认的策略
默认策略一般分为2种
允许
拒绝
当默认的规则全部都是拒绝的时候,你就得设置一些允许通过的流量,否则所有的流量都禁止了,就没意义了
当默认的规则全部都是允许的时候,就得设置一些禁止,拒绝的匹配规则,以保证服务器的安全
防火墙的规则默认是存储在linux内核空间的信息包中,这些规则定义了源地址信息,目的地址信息,传输的协议类型
服务类型
当数据包符合规则条件的时候,iptables就根据所定义的动作,来处理这些数据包,放行accept,拒绝reject,丢弃drop
链
iptables吧用于处理和过滤流量的策略,趁之为规则,多条规则就组成了一个规则链,还有默认的动作
规则链根据数据包所处的不同的位置进行不同的分类
linux默认的5个规则链
路由器选择前处理数据包,prerouting链
处理流入的数据包,input链,小区的入口
处理流出的数据包,output链,小区的出口
处理转发的数据包,forward链
进行路由选择后处理数据包,postrouting链
主要都是使用的input链
动作
服务器流量在通过input链知乎,进去到服务器内,还得遵循一些动作去处理这些数据
Accpet,允许数据包通过
Reject,拒绝数据包通过,还会给客户端一个响应,告知它被拒绝
log,在linux系统的日志目录下/var/logmessage 中记录防火墙日志,在进行下一个数据包处理
drop,直接丢弃数据包,不给客户端任何回应,知道请求报错结束
SNAT,源地址转换,解决内网用户用同一个公网的问题,用于forward链
Redirect, 在本机做端口映射
四表五链
表名包括:
raw:高级功能,如:网址过滤
mangle:数据包修改(QOS),用于实现服务质量
net:地址转换,用于网关路由器
filter:包过滤,用于实现服务质量
规则链名包括:
INPUT链:处理输入数据包
OUTPUT链:处理输出数据包
FORWARD:处理转发数据包
PREROUTING链:用于目标地址转换
POSTOUTING链:用于源地址转换
动作包括:
ACCEPT:接收数据包
DROP:丢弃数据包
REDIRECT:重定向,映射,透明代理
SNAT:源地址转换
DNAT:目标地址转换
MASQUERADE:ip伪装(NAT),用于ADSL
LOG:日志记录
iptables案列
1. 查看linux本地的iptables规则
iptables -L
2.清理本地防火墙规则
iptables -F
3.禁止服务器被ping,服务器拒绝icmp协议的流量,(直接丢弃,丢弃后给与响应drop reject)
iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j REJECT
-A 指定链 -p 指定协议 --icmp-type 8 指定icmp协议的类型 -s 指定源IP网段 -j 指定动作
4.删除指定的iptables规则
iptables -D INPUT 1
5.服务器禁ping 且不给与响应
iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
6.注意云服务器不要随意的练习iptables,因为云服务器是不用软件防火墙的,如果你随意的禁止端口,禁止
流量,可能会造成云服务器无法远程连接
7.禁止访问服务器的80端口
iptables -A INPUT -p tcp --dport 80 -j DROP
8.禁止服务器的FTP端口被访问,端口ftp默认是21
iptables -A INPUT -p tcp --dport 21 -j DROP
9.指定允许的ip地址连接该服务器的22端口,指定客户端进行远程连接,拒绝其他的流量
1.先允许
intables -A INPUT -p -tcp -s 192.168.1.1 -j ACCEPT
2.拒绝所有其他流量
iptables -A INPUT -s 0/0 -p tcp -j DROP
10.禁止指定的机器访问本机的80端口
iptables -A INPUT -p tcp -s 192.168.0.1 --dport 80 -j REJECT
11.禁止所有主机网段,访问改服务器的8000-9000端口
iptables -A INPUT -p tcp -s 0/0 --dport 8000:9000 -j REJECT
iptables -A INPUT -p udp -s 0/0 --dport 8000:9000 -j REJECT
关闭禁用防火墙
systemctl stop firewalld.service