×

firewalld&iptables

hqy hqy 发表于2019-05-20 09:58:50 浏览1953 评论0

抢沙发发表评论

1.

iptables 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。


iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否则需要下载该工具并安装使用它。


这里有四种有效状态,名称分别为 ESTABLISHED 、 INVALID 、 NEW 和 RELATED。


systemctl stop firewalld.service 

systemctl disable firewalld.service 

systemctl start iptables.service 

systemctl enable iptables.service 

systemctl status iptables.service 


2.

iptables 

???-L ##列出指定表的策略 

???-A ##添加策略 

???-N ##增加链 

???-E ##修改链名称 

???-X ##删除链 

???-D ##删除指定策略 

???-I ##(insert)插入策略 

???-R ##修改策略 

???-P ##修改默认策略 

???-t ##指定表名称 

???-n ##不做解析 

???-p ##网络协议 

???–dport ##端口 

???-s ##数据来源source 

???-j ##动作 

ACCEPT ##允许 

REJECT ##拒绝 

DROP ##丢弃


iptables -t filter -nL ##查看filter表中策略 

 

iptables -F ##刷掉filter表中所有策略,当没有-t指定表时,默认表为filter 

iptables -nL ##查看filter表中的策略 

 

service iptables save ##保存当前策略 

 

iptables -A INPUT -i lo -j ACCEPT ##允许lo(回环) 

iptables -A INPUT -p tcp –dport 22 -j ACCEPT ##允许访问22端口 

iptables -A INPUT -s 172.25.254.60 -j ACCEPT ##允许60主机访问 

iptables -A INPUT -j REJECT ##拒绝所有主机的数据来源 


iptables -N redhat ##增加链redhat 


iptables -E redhat westos ##修改链名称 


iptables -X westos ##删除westos链 


iptables -D INPUT 3 ##删除INPUT表中的第3条策略 


iptables -I INPUT -s 172.25.254.41 -j ACCEPT ##插入策略到INPUT表中的第1条 


iptables -R INPUT 4 -p tcp –dport 80 -j ACCEPT ##修改INPUT表的第4条策略 


iptables -P INPUT DROP ##把INPUT表中的默认策略改为DROP 


数据包状态

RELATED —— RELATED 表示该信息包正在启动新连接,以及它与已建立的连接相关联 

ESTABLISHED —— 指出该信息包属于已建立的连接,该连接一直用于发送和接收信息包并且完全有效 

NEW —— 状态 NEW 意味着该信息包已经或将启动新的连接,或者它与尚未用于发送和接收信息包的连接相关联


iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT ##允许RELATED与ESTABLISHED包 

iptables -A INPUT -i lo -m state –state NEW -j ACCEPT ##允许NEW包 

iptables -A INPUT -p tcp –dport 22 -m state –state NEW -j ACCEPT ##允许NEW包通过22端口(ssh服务) 

iptables -A INPUT -p tcp –dport 80 -m state –state NEW -j ACCEPT ##允许NEW包通过80端口 

iptables -A INPUT -p tcp –dport 443 -m state –state NEW -j ACCEPT ##允许NEW包通过443端口 

iptables -A INPUT -p tcp –dport 53 -m state –state NEW -j ACCEPT ##允许NEW包通过53端口 

iptables -A INPUT -j REJECT ##拒绝所有主机数据来源 


防火墙路由设置nat

————server———— 

eth0 172.25.254.133 

eth1 172.25.60.10 

————desktop———— 

eth0 172.25.60.11 

GATEWAY=172.25.60.10 


1.配置 

iptables -F ##刷掉策略 

sysctl -a | grep forward ##查看内部网卡IP转发功能是否开启 

echo “net.ipv4.ip_forward = 1” >> /etc/sysctl.conf ##允许双网卡内部通信 

sysctl -p ##重新加载 

iptables -t nat -A PREROUTING -i eth0 -j DNAT –to-dest 172.25.60.11 ##在nat表中的PREROUTING 链添加策略将外网转换为内网

iptables -t nat -A POSTROUTING -o eth0 -j SNAT –to-source 172.25.254.133 ##在nat表中的POSTROUTING链添加策略将内网发往外网数据包 


2.测试 

desktop(172.25.60.11)ping (172.25.254.60) 


firewalld

动态防火墙后台程序 firewalld 提供了一个 动态管理的防火墙,用以支持网络 “ zones” ,以分配对一个网络及其相关链接和界面一定程度的信任。它具备对 IP v4 和 IP v6 防火墙设置的支持。它支持以太网桥,并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口。


系统提供了图像化的配置工具firewall-config、system-config-firewall, 提供命令行客户端firewall-cmd, 用于配置 firewalld永久性或非永久性运行时间的改变:它依次用 iptables工具与执行数据包筛选的内核中的 Netfilter通信。


firewalld和iptables service 之间最本质的不同是: 

? iptables service 在 /etc/sysconfig/iptables 中储存配置,而 firewalld将配置储存在/usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种XML文件里. 

? 使用 iptables service每一个单独更改意味着清除所有旧有的规则和从/etc/sysconfig/iptables里读取所有新的规则,然而使用 firewalld却不会再创建任何新的规则;仅仅运行规则中的不同之处。因此,firewalld可以在运行时间内,改变设置而不丢失现行连接。 

systemctl stop iptables 

systemctl mask iptables 

systemctl start firewalld 

systemctl enable firewalld 

firewalld的网络区与默认配置

trusted( 信任 ) 可接受所有的网络连接 

home( 家庭 ) 用于家庭网络,仅接受ssh、mdns、ipp-client、samba-client、或dhcpv6-client服务连接 

internal( 内部 ) 用于内部网络,仅接受ssh、mdns、ipp-client、samba-client、dhcpv6-client服务连接 

work( 工作 ) 用于工作区,仅接受ssh、ipp-client或dhcpv6-client服务连接 

public( 公共 ) 在公共区域内使用,仅接受ssh或dhcpv6-client服务连接,为firewalld的默认区域 

external( 外部 ) 出去的ipv4网络连接通过此区域伪装和转发,仅接受ssh服务连接 

dmz( 非军事区 ) 仅接受ssh服务接连 

block( 限制 ) 拒绝所有网络连接 

drop( 丢弃 ) 任何接收的网络数据包都被丢弃,没有任何回复


使用命令行接口配置firewalld

–permanent表示永久修改,不加则表示临时修改 

–reload表示重载防火墙(注意:这并不会中断已经建立的连接,如果打算中断,可以使用 –complete-reload选项) 

——————查看firewalld的状态—————— 

firewall-cmd –state 


——————查看当前活动的区域,并附带一个目前分配给它们的接口列表—————— 

firewall-cmd –get-active-zones 

 

——————查看所有可用区域—————— 

firewall-cmd –get-zones 


——————列出指定域的所有设置—————— 

firewall-cmd –zone=public –list-all 

 

——————列出所有预设服务—————— 

firewall-cmd –get-services 

 

——————查看默认区域—————— 

firewall-cmd –get-default-zone 

 

——————设置默认区域—————— 

firewall-cmd –set-default-zone=trusted 


——————设置网络地址到指定的区域—————— 

firewall-cmd –set-default-zone=trusted 

firewall-cmd –permanent –add-source=172.25.254.60 

firewall-cmd –reload 

firewall-cmd –list-all 

 

测试: 

yum install httpd -y 

systemctl start httpd 

172.25.254.60以浏览器访问 

 

——————删除指定区域中的网路地址—————— 

firewall-cmd –permanent –zone=trusted –remove-source=172.25.254.60 

——————添加、改变、删除网络接口—————— 

firewall-cmd –zone=public –add-interface=eth0 ##添加网络接口eth0 

firewall-cmd –zone=public –remove-interface=eth1 ##删除网络接口eth1 

firewall-cmd –zone=public –change-interface=eth1 ##修改网络接口为eth1 

——————添加、删除服务—————— 

firewall-cmd –zone=public –add-service=http 

172.25.254.60以浏览器访问 


firewall-cmd –zone=public –remove-service=http 

 

172.25.254.60以浏览器访问 

 

——————列出、添加、删除端口—————— 

firewall-cmd –zone=public –list-ports 

firewall-cmd –zone=public –add-port=53/tcp ##添加53端口(tcp协议) 


Direct Rules

通过 firewall-cmd 工具,可以使用 –direct 选项在运行时间里增加或者移除链。 

如果不熟悉 iptables ,使用直接接口非常危险,因为您可能无意间导致防火墙被入侵。 

直接端口模式适用于服务或者程序,以便在运行时间内增加特定的防火墙规则。 

直接端口模式添加的规则优先应用。 

添加规则: 

firewall-cmd –direct –add-rule ipv4 filter INPUT 0 -s 172.25.254.60 -p tcp –dport 22 -j ACCEPT 

删除规则: 

firewall-cmd –direct –remove-rule ipv4 filter INPUT 0 -s 172.25.254.60 -p tcp –dport 22 -j ACCEPT 

列出规则: 

firewall-cmd –direct –get-all-rules


Rich Rules

通过“ rich language”语法,可以用比直接接口方式更易理解的方法建立复杂防火墙规则。此外,还能永久保留设置。这种语言使用关键词值,是 iptables 工具的抽象表示。 

这种语言可以用来配置分区,也仍然支持现行的配置方式。 

source 

指定源地址,可以是一个ipv4/ipv6的地址或网段,不支持使用主机名。 

destination 

指定目的地址,用法和source相同。 

service 

服务名称是 f irewalld 提供的其中一种服务。要获得被支持的服务的列表,输入以下命令: 

firewall-cmd –get-services 。命令为以下形式: 

service name= service_name 

port 

端口既可以是一个独立端口数字,又或者端口范围,例如,5060-5062。协议可以指定为 tcp 或udp 。命令为以下形式: 

port port= number_or_range protocol= protocol 

protocol 

协议值可以是一个协议 ID 数字,或者一个协议名。预知可用协议,请查阅 /etc/protocols。 

命令为以下形式: 

protocol value= protocol_name_or_ID 

icmp-block 

用这个命令阻绝一个或多个ICMP类型。IC MP 类型是 firewalld支持的ICMP类型之一。 

要获得被支持的ICMP类型列表,输入以下命令: firewall-cmd –get-icmptypes 

icmp-block在内部使用 reject 动作,因此不允许指定动作。命令为以下形式: 

icmp-block name= icmptype_name 

masquerade 

打开规则里的 IP 伪装。用源地址而不是目的地址来把伪装限制在这个区域内。不允许指定动作。 

forward-port 

从一个带有指定为 tcp 或 udp 协议的本地端口转发数据包到另一个本地端口,或另一台机器,或另一台机器上的另一个端口。port 和 to-port 可以是一个单独的端口数字,或一个端口范围。而目的地址是一个简单的 IP 地址。不允许指定动作,命令使用内部动作 

accept 。命令为以下形式: 

forward-port port= number_or_range protocol= protocol / 

to-port= number_or_range to-addr= address 

log 

注册含有内核记录的新连接请求到规则中,比如系统记录。你可以定义一个前缀文本, 

记录等级可以是 emerg、alert、crit、error、warning、notice、info 或者 debug 中的 

一个。命令形式: 

log [prefix= prefix text ] [level= log level ] limit value= rate/duration 

(等级用正的自然数 [1, ..] 表达,持续时间的单位为 s 、 m 、 h 、 d 。 s 表示秒, m 表示分钟, h表示小时, d 表示天。最大限定值是 1/d ,意为每天最多有一条日志进入。) 

audit 

审核为发送到 aud i td 服务的审核记录来注册提供了另一种方法。审核类型可以是ACCEPT、REJECT或DROP中的一种,但不能在 audit命令后指定,因为审核类型将会从规则动作中自动收集。审核不包含自身参数,但可以选择性地增加限制。审核的使用是可选择的。选择 accept 所有新的连接请求都会被允许。选择 reject ,连接将被拒绝,连接来源将接到一个拒绝信息。拒绝的类型可以被设定为使用另一种值。选择 drop , 所有数据包会被丢弃,并且不会向来源地发送任何信息。


伪装和端口转发

*)server 

eth0 172.25.254.133 

eth1 172.25.60.10


*)desktop 

eth0 172.25.60.11 

gateway 172.25..10


伪装: 

(在server) 

firewall-cmd –list-all 

firewall-cmd –add-masquerade ##开启伪装功能 

firewall-cmd –list-all 

firewall-cmd –zone=public –add-rich-rule=’rule family=ipv4 source address=172.25.254.100 masquerade’ ##入站伪装 


转发: 

(在server) 

firewall-cmd –zone=public –add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.60.11 ##连接本机时会转连接到172.25.60.11主机 


测试: 

172.25.254.60主机连接172.25.254.133主机时会连接到172.25.60.11主机 


打赏

本文链接:https://www.kinber.cn/post/754.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客