1 防火墙定义
- 防火墙是一种高级访问控制设备,置于不同网络安全域之间,他通过相关的安全策略来控制(允许,拒绝,监视,记录)进出网络的访问行为。
- 防火墙是一组规则,当数据包进出受保护的网络区域时,进出内容(特别是关于其来源、目标和使用的协议等信息)会根据防火墙规则进行检测,以确定是否允许其通过。
2 防火墙分类
- 硬件防火墙
- 软件防火墙
- 主机防火墙
- 网络防火墙
3 iptables
3.1 iptables 四表五链
3.1.1 功能(表)
filter
:防火墙过滤数据包,默认表nat
:网络地址转换(network address translation)mangle
:拆分,做出修改raw
:关闭nat表上启用的连接追踪功能
3.1.2 链
prerouting (previous routing路由前) input output forward postrouting (postpone routing路由后)
3.1.3 功能(表)中的链
filter:input,forward,output nat:prerout(dnat),input,output,postrouting(snat) mangle:prerouting,input,forward,output,postrouting raw:prerouting,output
3.2 优先级
策略应用优先级:raw,mangle,nat,filter 策略常用优先级:filter,nat,mangle,raw
3.3 iptables 命令的使用
iptables工具: -t:指定表 -l:查看规则 -n:以数字形式查看 -f:清空所有规则 -x:清除自定义链 -p:指定链的默认规则 -j:指定要执行的动作 accept:接受 drop:丢弃 reject:拒绝 dnat:目标地址转换 snat:源地址转换 -a:append追加策略 -s:source源ip(网段) -d:destination目标ip(网段) -i:insert插入策略 -p:protocol指定协议 --dport:指定目标端口 --sport:指定源端口 --line-num:显示规则行号 -d:按照行号删除某链中的规则 -i:指定网卡
3.3.1 filter表
清空所有策略: iptables -f 清空自定义链: iptables -x 自定义一个链 iptables -n old_forward 修改自定义链的名字 iptables -e old_forward new_forward 把filter中forward链的默认策略打成drop iptables -p forward drop 查看filter表中的策略并且显示行数: iptables -l -n --line-number 删除filter表中forward链中的第9条策略: iptables -t filter -d forward 9 #限制所有主机(0.0.0.0)拒绝ping本主机 iptables -t filter -a input -s 0.0.0.0 -d 192.168.254.24 -p icmp -j reject #显示所有主机(0.0.0.0)拒绝通过ens33网卡ping本主机 iptables -t filter -a input -d 192.168.254.24 -i ens33 -p icmp -j reject #只允许10.159.32.65访问本地80端口 iptables -i input -p tcp --dport 80 -j drop //拒绝所有机器访问 iptables -i input -s 10.159.32.65-p tcp --dport 80 -j accept //对某个ip放行 或 iptables -p input -j drop //设置input链的默认规则 iptables -i input -s 10.159.32.65-p tcp --dport 80 -j accept //对某个ip放行
3.3.2 nat表
##开启转发模式 ╭─root@localhost.localdomain ~ ╰─➤ cat /proc/sys/net/ipv4/ip_forward 0 ╭─root@localhost.localdomain ~ ╰─➤ echo 1 > /proc/sys/net/ipv4/ip_forward 或者 # vim /etc/sysctl.conf ... net.ipv4.ip_forward = 1 ... # sysctl -p
#源地址为192.168.250.0网段的ip地址经过防火墙都转换成192.168.31.100这个ip地址(snat:源地址转换) iptables -t nat -a postrouting -s 192.168.250.0/24 -d 192.168.250.0/24 -j snat --to-source 192.168.31.100 ------------------------------------------------------- #访问目标地址为192.168.31.200这个机器并且是tcp协议80号端口的都转发给192.168.250.1(dnat目标地址转换) iptables -t nat -a prerouting -d 192.168.31.200 -p tcp --dport 80 -j dnat --to-destination 192.168.250.1:80 ------------------------------------------------------- #访问目标地址为192.168.31.200这个机器并且是tcp协议80号端口的都转发给192.168.31.100的9999号端口(dnat目标端口地址转换) iptables -t nat -a prerouting -d 192.168.31.200 -p tcp --dport 80 -j dnat --to-destination 192.168.31.100:9999
4 firewall相关配置使用
firewall-cmd --state #查看状态 firewall-cmd --list-all #查看过滤的列表信息 firewall-cmd --add-port=80/tcp --permanent #永久添加一个80端口(重启生效) firewall-cmd --remove-port=4444/tcp #移除4444/tcp端口 firewall-cmd --reload #重新加载firewall
firewall 有zone的概念
[root@node1 ~]# firewall-cmd --get-zones work drop internal external trusted home dmz public block
drop
(丢弃) 任何接收到的网络数据都被丢弃,没有任何回复,公有发送出去的网络连接block
(限制)任何接收的网络连接都被ipv4 的icmp-host-prohibited信息和ipv6的icmp6-adm-prohibited信息所拒绝public
(公共) 在公共区域内使用,不能相信网络内的其它计算机不会对你的计算机造成危害,只接收经过选取的连接external
(外部)特别是为路由器启用了伪装功能的外部网。你不能信任来自网络的其它计算,不能信任它们不会对你的计算机造成危害,只能接收经过选择的连接。dmz
(非军事区) 用于你的非军事区的电脑 ,此区域内可公开访问,可以有限的进入你的内部网络,仅接收经过选择的连接。work
(工作) 可以基本信任网络内的其它计算机不会危害你的计算机,仅接收经过选择的连接。home
(家庭) 用于家庭网络,可以基本信任网络内的其它计算机不会危害你的计算机,仅接收经过选择的连接。internal
(内部)用于内部网络,可以基本信任网络内的其它计算机不会危害你的计算机,仅接收经过选择的连接trusted
(信任) 可接收所有的网
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论