Linuxでのファイアウォール戦略の最適化
1.ファイアウォールの紹介:
1.netfilter:ファイアウォールポリシーを記録するテーブルの名前2.iptables:
netfilterの
記述方法3.iptables | firewalld:使用される管理ツールはiptablesとfirewalldです
2.ファイアウォール管理ツールスイッチ:
在rhel8中默认使用的是firewalld
firewalld----->iptables
dnf install iptables-services -y
systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld 锁定firewalld不被其他服务篡改状态;使用unmask解锁;
systemctl enable --now iptables
iptales -------> fiewalld
dnf install firewalld -y
systemctl stop iptables
systemctl disable iptables
systemctl mask iptables
systemctl enable --now firewalld
3. iptablesの使用:
#火墙策略的永久保存#
/etc/sysconfig/iptables ##iptables 策略记录文件
永久保存策略
iptales-save > /etc/sysconfig/iptables
service iptables save
4. iptablesファイアウォールのデフォルト戦略:
注:iptablesファイアウォール戦略は上から下に一致します。サービスに一致する戦略1を読むと、サービスに関連する後続の戦略を読み続けることはありません。
図に示すように、sshサービスは入力の最初の戦略で変更されています。アクセスが拒否されたため、2番目のポリシーは無効です。sshサービスをファイアウォールを通過させたいが、他のサービスは通過できない場合は、ポリシーの位置1、2を交換する必要があります。
iptablesの基本的な使用法:
默认策略中的5条链
input 输入
output 输出
forward 转发
postrouting 路由之后
prerouting 路由之前
默认的3张表
filter 经过本机内核的数据(input output forward)
nat 不经过内核的数据(postrouting,prerouting,input,output)
mangle 当filter和nat表不够用时使用(input output forward postrouting,prerouting,)
iptables命令
iptables
-t ##指定表名称
-n ##不做地址解析
-L ##查看
-A ##添加策略
-p ##协议
--dport ##目的地端口
-s ##来源
-m state --state ##指定数据包状态
-j ##动作
ACCEPT ##允许
DROP ##丢弃
REJECT ##拒绝
SNAT ##源地址转换
DNAT ##目的地地址转换
-N ##新建链
-E ##更改链名称
-X ##删除链
-D ##删除规则
-I ##插入规则
-R ##更改规则
-P ##更改默认规则
-F ##刷新表的信息(清空,重启服务后会恢复)
数据包状态
RELATED ##建立过连接的
ESTABLISHED ##正在连接的
NEW ##新的
(1)设定建立过连接和正在建立连接的数据包的火墙策略为允许:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
(2)设定本机的回环接口允许新的数据包:
iptables -A INPUT -m state --state NEW -i lo -j ACCEPT ##lo 回环接口 表示只有自身主机
(3)对于新的指定服务的数据包添加火墙策略设定为允许:
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
(4)添加火墙策略,设定除指定IP的所有主机都可以进行的服务:(!表示非)
iptables -A INPUT -m state --state NEW ! -s 192.168.0.10 -p tcp --dport 22 -j ACCEPT
(5)对于剩余其他新的数据包添加火墙策略设定为拒绝:
ptables -A INPUT -m state --state NEW -j REJECT
iptables的策略保存:
service iptables save 保存iptables中现存的策略(更改/etc/sysconfig/iptables 文件)
iptales-save > /etc/sysconfig/iptables 读取火墙策略信息并导入iptables策略记录文件
nat表中的dnat snat
snat (源地址转换-->postrouting)
iptable -t nat -A POSTROUTING -o ens160 -j SNAT --to-source 172.25.254.54
将传入数据的ip地址(任意,如 1.1.1.1)伪装成地址 172.25.254.54 输出
dnat (目的地址转换-->prerouting)
iptables -t nat -A PREROUTING -i ens160 -j DNAT --to-dest 1.1.1.200
将原本的目的地地址(任意,如 172.25.254.54)伪装成1.1.1.200
カーネルルーティング機能:
内核路由功能:sysctl -a | grep ip_forward
net.ipv4.ip_forward = 1 表示内核路由功能开启;
功能未开启时编辑:/etc/sysctl.conf 在最后添上net.ipv4.ip_forward = 1 ;
5.firewalld:
firewalld管理方法:xmlデータパッケージ:/ lib / firewalld / services
5-1:ファイアウォールを開く:
systemctl stop iptables
systemctl disable iptables
systemctl mask iptables
systemctl unmask firewalld
systemctl enable --now firewalld
5-2:firewalldのドメインについて:
trusted ##接受所有的网络连接
home ##用于家庭网络,允许接受ssh mdns ipp-client samba-client dhcp-client
work ##工作网络 ssh ipp-client dhcp-client
public ##公共网络 ssh dhcp-client
dmz ##军级网络 ssh
block ##拒绝所有
drop ##丢弃 所有数据全部丢弃无任何回复
internal ##内部网络 ssh mdns ipp-client samba-client dhcp-client
external ##ipv4网络地址伪装转发 sshd
5-3:ファイアウォール設定の原則とデータストレージについて:
ファイアウォールにないサービスを追加する場合は、/ lib / firewalld / servicesに新しいサービスパッケージデータパッケージを書き込む必要があります(他のサービスをコピーできます)。
/etc/firewalld 火墙配置目录
/lib/firewalld/services 火墙模块目录
--permanent 只更改/etc/firewalld/zones文件,表示永久设定,需要重启服务后生效
5-4:ファイアウォール管理コマンド:
firewall-cmd --state ##查看火墙状态
firewall-cmd --get-active-zones ##查看当前火墙中生效的域
firewall-cmd --get-default-zone ##查看默认域
firewall-cmd --list-all ##查看默认域中的火墙策略
firewall-cmd --list-all --zone=work ##查看指定域的火墙策略
firewall-cmd --set-default-zone=trusted ##设定默认域
firewall-cmd --get-services ##查看所有可以设定的服务
firewall-cmd --permanent --remove-service=cockpit ##移除服务
firewall-cmd --reload
firewall-cmd --permanent --add-source=172.25.254.0/24 --zone=block ##指定数据来源访问指定域
firewall-cmd --reload
firewall-cmd --permanent --remove-source=172.25.254.0/24 --zone=block ##删除自定域中的数据来源
firewall-cmd --permanent --remove-interface=ens224 --zone=public ##删除指定域的网络接口 (删除后要记得添加)
firewall-cmd --permanent --add-interface=ens224 --zone=block ##添加指定域的网络接口
firewall-cmd --permanent --change-interface=ens224 --zone=public ##更改网络接口到指定域
5-5:firewalld(直接)の高度なルール:
firewall-cmd --direct --get-all-rules ##查看高级规则
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 ! -s 172.25.254.250 -p tcp --dport 22 -j REJECT
5-6:firewalldのNAT:
SNAT
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload
DNAT
firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toaddr=172.25.254.30
firewall-cmd --reload