Iptables与Firewalld防火墙web
备注:全部的服务在设置完后,需把服务设置成开机自启: # systemctl enable 服务名称vim
依据策略对穿越防火墙自身的流量进行过滤;利用预先定制的策略来监控出入的流量;服务器
防火墙策略能够基于流量的源目的地址,端口号,协议,应用等信息来定制;网络
firewalld与iptablesapp
1:RHEL 7 系统中,firewalld防火墙取代了 iptables防火墙;防火墙管理工具;框架
2:iptables服务配置好的防火墙策略交由内核层面的netfilter网络过滤器来处理;ssh
3:firewalld服务则交由内核层面的nftables包过滤框架处理;tcp
4:当前Linux系统中存在多个防火墙管理工具,便于管理防火墙策略;工具
RHEL6以前的系统包括6,默认使用的防火墙服务;spa
1:策略与规则链
1)防火墙会至上而下的顺序来读取配置的策略规则;
2)策略规则的设置两种;
一种是 通,即放行;若是默认策略为容许,需设置拒绝规则;
一种是 堵,即阻止;若是默认策略为拒绝,需设置容许规则;
3)iptables服务把处理或过滤流量的策略条目称之为规则,多条规则组成一个规则链,规则链依据数据包处理位置的不一样进行分类以下:
a:在进行路由选择前处理数据包(PREROUTING);
b:处理流入的数据包(INPUT);
c:处理流出的数据包(OUTPUT);
d:处理转发的数据包(FORWARD);
e:在进行路由选择后处理数据包(POSTROUTING);
4)iptables服务的术语
ACCEPT:容许流量经过;
REJECT:拒绝经过;拒绝流量后会回复短信“你的信息收到,但被扔掉了”
LOG: 记录日志信息;
DROP: 拒绝经过;拒绝流量后直接丢弃流量,无任何回应;
2:基本的命令参数
-P: 设置默认策略;
-F: 清空规则链;
-L: 查看规则链;
-A: 在规则链的末尾加入新规则;
-I num: 在规则链的头部加入新规则;
-D num: 删除一条规则;
-s: 匹配来源地址IP/MASK,加叹号 ! 表示除这个IP 外;
-d: 匹配目标地址;
-i 网卡名称: 匹配从这块网卡流入的数据;
-o 网卡名称: 匹配从这块网卡流出的数据;
-p: 匹配协议,如 TCP ,UDP ,ICMP;
--dport num: 匹配目标端口号;
--sport num: 匹配来源端口号;
例:
1:查看规则链,清空规则链;
# iptables -L
# iptables -F
# iptables -L --line-number 显示策略编号,在删除策略时使用;
2:把INPUT规则链的默认策略设置为拒绝;
# iptables -P INPUT DROP
当把INPUT链设置为默认拒绝,默认拒绝动做只能是DROP,不是REJECT;INPUT设置的拒绝策略后,须要配置容许策略,不然全部进入的流量都被丢弃;
3:向INPUT规则链中添加容许ICMP流量进入的策略规则;
# iptables -I INPUT -p icmp -j ACCEPT
4:删除INPUT规则链中刚刚加入的那条ICMP策略,并把默认策略设置为容许
# iptables -D INPUT 1
# iptables -P INPUT ACCEPT
5:将INPUT设置为只容许指定网段主机访问本机的22端口,拒绝其余主机流量;
# iptables -P INPUT DROP
先将INPUT规则链的默认设置改成 DROP,拒绝全部;
# iptables -I INPUT -s 192.168.30.0/24 -p tcp --dport 22 -j ACCEPT
6:将INPUT设置为只容许指定IP地址访问本机的22端口,其余拒绝;
# iptables -I INPUT -s 10.1.1.10 -p tcp --dport 22 -j ACCEPT
备注1:
防火墙策略规则是按照从上而下的顺序匹配,须要把容许的放在拒绝的上面;
6:向INPUT规则中添加拒绝全部人访问本机12345端口的策略;
# iptables -I INPUT -p tcp --dport 12345 -j REJECT
# iptables -I INPUT -p udp --dport 12345 -j REJECT
7:向INPUT规则中添加拒绝192.168.30.1主机访问本机80端口(web服务)策略;
# iptalbes -I INPUT -s 192.168.30.1 -p tcp --dport 80 -j REJECT
8:向INPUT链中添加拒绝全部主机访问本机1000~1024端口的策略;
# iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT
# iptables -A INPUT -p udp --dport 1000:1024 -j REJECT
备注2:
使用iptables配置的防火墙规则默认会在系统重启后失效;
想要 永久生效,运行以下命令:
# service iptables save
RH3L 7 系统默认的动态防火墙管理工具:firewalld
基于 TCP/IP 协议的流量过滤工具;
两种管理方式:
CLI命令行界面;
GUI图形用户界面;
特色:
支持动态更新技术并加入区域的概念;
区域就是firewalld预先准备了几套防火墙策略模板,根据场景选择合适的策略集合;
经常使用区域名称及策略
1:终端管理工具
firewall-cmd是firewalld防火墙管理工具的CLI版本;它的参数通常以 长格式 来提供,RHEL7 支持参数补齐功能;
firewalld防火墙运行模式:
1)默认为运行时模式(Runtime)又称当前生效模式;策略重启失效;
2)永久模式(Permanent)
设置方法:firewall-cmd 正常设置策略是添加 permanent 参数;
策略当即生效:firewall-cmd --reload 不然必须重启才生效;
例:
1:查看firewalld服务当前所使用的区域;
# firewall-cmd --get-default-zone
public
2:查询eno16777728网卡在firewalld服务中的区域;
# firewall-cmd --get-zone-of-interface=eno16777728
public
3:把firewalld服务中eno16777728网卡的默认区域修改成external,并在系统重启后生效,分别查看当前与永久模式下的区域名称;
# firewall-cmd --permanent --zone=external --change-interface=eno16777728
success
# firewall-cmd --get-zone-of-interface=eno16777728
public
# firewall-cmd --permanent --get-zone-of-interface=eno16777728
external
4:把firewalld服务的当前默认区域设置为public;
# firewall-cmd --set-default-zone=public
success
# firewall-cmd --get-default-zone
public
5:启动/关闭firewalld防火墙服务的应急情况模式,阻断一切网络链接(当远程控制服务器时请慎用);
# firewall-cmd --panic-on
success
# firewall-cmd --panic-off
success
6:查询public区域是否容许请求ssh和https协议流量;
# firewall-cmd --zone=public --query-service=ssh
yes
# firewall-cmd --zone=public --query-service=https
no
7:把firewalld服务器请求HTTP协议的流量设置为永久拒绝,并当即生效;
# firewall-cmd --permanent --zone=public --remove-service=http
success
# firewall-cmd --reload
8:把firewalld服务器请求HTTPS协议的流量设置为永久容许,并当即生效;
# firewall-cmd --zone=public --add-servie=https
success
# firewall-cmd --permanent --zone=public --add-service=https
success
# firewall-cmd --reload
9:把在firewalld服务中访问8080和8081端口的流量策略设置为容许,但仅当前有效;
# firewall-cmd --zone=publie --add-port=8080-8081/tcp
success
# firewall-cmd --zone=public --list-ports
8080-8081/tcp
10:把本来访问本机888端口的流量转发到22端口,要求当前和长期有效;
格式:firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>
# firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.30.1
success
# firewall-cmd --reload
11:在客户端使用ssh命令尝试访问192.168.30.1主机的888端口;
# ssh -p 888 192.168.30.1
2:图形管理工具
# firewall-config 进入图形界面配置防火墙;
TCP Wrappers 是RHEL 7中默认启用的一款流量监控程序,它可以根据来访主机的地址与本机的目标服务程序做出容许或拒绝的操做;
Linux的另外一个防火墙:TCP Wrappers,可以容许或禁止系统服务提供的防火墙;
在软件层起做用的监控程序;
防火墙策略:
/etc/hosts.allow 容许控制列表,系统先检查容许列表,匹配就放行;
/etc/hosts.deny 拒绝控制列表,没有匹配容许列表,再匹配拒绝列表;
若是两个列表都没有匹配到,则默认放行流量;
配置TCP Wrappers服务时遵循的两个原则:
1:编写拒绝策略规则时,填写的是服务名称,而非协议名称;
2:建议先编写拒绝策略规则,再编写容许策略规则,以便直观的看到相应效果;
3:查看service信息
# cat /etc/services
例:
1:禁止访问本机sshd服务的全部流量(无需 /etc/hosts.deny文件中修改原有的注释信息);
# vim /etc/hosts.deny
sshd:*
2:容许策略规则中添加一条规则,使其放行源自192.168.10.0/24网络,访问本机sshd服务器的全部流量;
# vim /etc/hosts.allow
sshd:192.168.10.0