iptables
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主机
---------------------
作者:xiaojun_Fairy
来源:CSDN
原文:https://blog.csdn.net/xiaojun_fairy/article/details/72824160
版权声明:本文为博主原创文章,转载请附上博文链接!
本文链接:https://www.kinber.cn/post/747.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝: