防火墙的分类
主机型防火墙:主要保护的是服务器本机(过滤威胁本机的数据包)
网络型防火墙:主要保护的是防火墙后面的其他服务器,如web服务器、FTP服务器等
Iptables介绍
Linux内核默认支持软路由功能,通过修改内核参数即可开。
永久保存写入规则文件:service iptables save
规则文件位置:/etc/sysconfig/iptables
Linux内核默认支持软路由功能,通过修改内核参数即可开启或关闭路由转发功能:
[ root@proxy ~] # echo 0 > /proc/sys/net/ipv4/ip_forward //关闭路由转发
[ root@proxy ~] # echo 1> /proc/sys/net/ipv4/ip_forward //开启路由转发
//注意以上操作仅当前有效,计算机重启后失效
[ root@proxy ~] # echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf //可以实现永久有效规则
添加网关:
[ root@client ~] # nmcli connection modify eth0 ipv4.gateway 192.168.4.5
[ root@client ~] # nmcli connection up eth0
添加永久的网关:
创建一个对应网卡的路由配置文件
Vim /etc/sysconfig/network-scripts/route-eth0
192.168.142.100/32 via 192.168.142.10
192.168.142.200/32 via 192.168.142.20
然后重启网络 service network restart
查看 route -n
或 ip route
要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1 的永久路由,请键入:
route -p add 10.41.0.0 mask 255.255.0.0 10.27.0.1
要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1,接口索引为 0x3 的路由,请键入:
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 if 0x3
IPtable的四张表:
Raw表:确定是否对该数据包进行状态跟踪
Mangle表:为数据包设置标记
Nat表:修改数据包的源、目的IP地址和端口
Filter表:确定是否放行该数据包
Iptable的五条链:
入站:PREROUTING INPUT
出站:POSTROUTING OUTPUT
转发:PREROUTING POSTROUTING FORWARD
7个动作类型:
ACCEPT:允许通过
DORP:直接丢弃,不给出任何回应
REJECT:拒绝通过,必要时给出提示
LOG:记录日志信息,然后传给下一条规则继续匹配
SNAT:修改数据包的源地址
DNAT:修改数据包的目的地址
REDIRECT:重定向
选项:
-A:在链的末尾追加一条规则
-I:在链的开头(指定序号)插入一条规则
-L:列出所有规则条目
-n:以数字的形式显示地址、端口等信息
-v:以更详细的方式显示规则信息
–line-numbers:显示规则的序号
-D:删除链内指定序号的一条规则
-P:为指定的链设置默认规则
-F:清空所有规则
常见的通用匹配条件:
-p:协议名
-s:源地址
-d:目标地址
-i:入站网卡
-o:出站网卡
Iptables -I INPUT -p icmp -j DROP
iptables -D INPUT 1
常见的隐藏匹配条件:
–sport:源端口
–dport:目标端口
–icmp-type:icmp类型
Iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT
iptables -D FORWARD 3
Iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -t filter -D INPUT 14
源端口:就是本机程序用来发送数据的端口,目的端口,就是对方主机用哪个端口接收,源IP目标IP,意思相似。
常见的显示匹配条件:
-m multiport --sport 源端口列表 多端口匹配
-m iprange --src-range ip范围
-m mac --macl-source mac地址范围
-m state --state 连接状态
Iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT
iptables -t filter -nL INPUT --line-numbers //查看指定链的规则
iptables -t filter -D INPUT 14 //删除规则
Iptables -A FORWARD -p tcp -m iprange --src-range 192.168.4.21-192.168.4.28
-j ACCEPT
iptables -t filter -nL FORWARD --line-numbers
iptables -t filter -D FORWARD 3
Iptables -I INPUT -p tcp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -nL INPUT --line-numbers
iptables -t filter -D INPUT 1
注意事项和规律:
可以不指定表,默认为filter表;
可以不指定链,默认为对应表的所有链;
可以不指定链,默认为对应表的所有链;
选项/链名/目标操作用大写字母,其余都小写;
iptables - t filter - A INPUT - p tcp - j ACCEPT //追加规则至filter表中的INPUT链的末尾,允许任何人使用TCP协议访问本机
iptables - A INPUT - s 192.168.4.100 - j DROP //丢弃192.168.4.100发给本机的所有数据包
iptables - A INPUT - p icmp - - icmp-type echo-request - j DROP //仅禁止入站的ping请求,不拒绝入站的ping回应包
iptables - A INPUT - p tcp - - dport 22 - m mac - - mac- source 52:54:00:00:00:0b - j DROP //拒绝52:54:00:00:00:0b这台主机远程本机
iptables - A INPUT - p tcp - m multiport --dports 20:22,25,80,110,143,16501:16800 - j ACCEPT //一次性开启20,21,22,25,80,110,143,16501到16800所有的端口
iptables - A INPUT - p tcp - - dport 22 - m iprange --src- range 192.168.4.10- 192.168.4.20 - j ACCEPT注意,这里也可以限制多个目标IP的范围,参数是--dst-range,用法与--src-range一致。
iptables - t nat - A POSTROUTING - s 192.168.4.0/24 - p tcp - - dport 80 - j SNAT - - to- source 192.168.2.5
SNAT策略:
局域网主机共享单个公网IP地址接入Internet
Iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 218.29.30.31
DNAT策略:
在Internet中发布位于企业局域网的服务器
Iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.6
导出规则:
使用iptables-save工具,可以结合重定向输出保存到指定文件
Iptables-save >1.iptables
导入规则:
使用iptables-restore工具,可以结合重定向输入指定规则来源
Firewalld防火墙
firewall-cmd --get-default-zone #查看默认区域
firewall-cmd --set-default-zone=规则 #修改默认区域
firewall-cmd --zone=规则 --list-all #查看区域策略
firewall-cmd --zone=规则 --add-service=协议 #添加协议
firewall-cmd --reload #重新加载防火墙所有配置文件规则
--permanent 永久配置选项
firewall-cmd --zone=规则 --remove-service=协议 #删除协议
firewall-cmd --zone=规则 --add-source=IP #添加源IP地址策略
firewall-cmd --zone=规则 --add-port=端口 #添加端口策略
firewall-cmd --permanent --zone=public --add-forward-port=port=5423:proto=tcp:toport=80 #端口映射