iptables 和 firewalld
五张表,五条链
filter 过滤,nat 转发,mangle 数据表修改,raw 提高效率,security 与selinux有关mac安全过滤
规则链名包括:
INPUT链:处理输入数据包。
OUTPUT链:处理输出数据包。
FORWARD链:处理转发数据包。
PREROUTING链:用于目标地址转换(DNAT)。
POSTOUTING链:用于源地址转换(SNAT)。
firewalld,iptable只是维护规则,真正实现的是内核的netfilter
firewalld的配置文件以xml格式为主(主配置文件firewalld.conf例外),他们有两个存储位置
1、/etc/firewalld/
2、/usr/lib/firewalld/
firewalld默认提供了九个zone配置文件:block.xml、dmz.xml、drop.xml、external.xml、 home.xml、internal.xml、public.xml、trusted.xml、work.xml,他们都保存在“/usr/lib /firewalld/zones/”目录下
但是public这个zone只会放行其中所配置的服务,其他的一律不予放行,
trusted这个zone会信任所有的数据包
irewalld的配置方法主要有三种:firewall-config、firewall-cmd和直接编辑xml文件,其中 firewall-config是图形化工具,firewall-cmd是命令行工具,而对于linux来说大家应该更习惯使用命令行方式的操作,所以 firewall-config我们就不给大家介绍了
配置文件结构
firewalld的配置文件结构非常简单,主要有两个文件和三个目录:
文件:firewalld.conf、lockdown-whitelist.xml
目录:zones、services、icmptypes
另外,如果使用到direct,还会有一个direct.xml文件。我们要注意,在保存默认配置的目录“/usr/lib/firewalld/”中只有我们这里所说的目录,而没有firewalld.conf、lockdown-whitelist.xml和direct.xml这三个文件,也就是说这三个文件只存在于“/etc/firewalld/”目录中。
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl –failed
查看版本: firewall-cmd –version
查看帮助: firewall-cmd –help
显示状态: firewall-cmd –state
查看所有打开的端口: firewall-cmd –zone=public –list-ports
更新防火墙规则: firewall-cmd –reload
查看区域信息: firewall-cmd –get-active-zones
查看指定接口所属区域: firewall-cmd –get-zone-of-interface=eth0
拒绝所有包:firewall-cmd –panic-on
取消拒绝状态: firewall-cmd –panic-off
查看是否拒绝: firewall-cmd –query-panic
添加
firewall-cmd –zone=public –add-port=80/tcp –permanent (–permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd –reload
查看
firewall-cmd –zone= public –query-port=80/tcp
删除
firewall-cmd –zone= public –remove-port=80/tcp –permanent
iptables
filter
input forward output
nat
prerouting input output postrouting
raw
prerouting postrouting
mangle
prirouting input forward output postrouting
selinux
常用命令
iptables -nL 显示规则 iptables -nvL –line-numbers
添加规则
iptables -t nat/filter -A INPUT|OUTPUT|PREROUTING|POSTROUTING -p tcp –dport 80|53 –sport 80 53 -j ACCEPT|DROP
插入
iptables -t nat/filter -I INPUT|OUTPUT|PREROUTING|POSTROUTING -p tcp –dport 80|53 –sport 80 53 -j ACCEPT|DROP
默认规则
iptables -t nat/filter -P INPUT|OUTPUT|PREROUTING|POSTROUTING DROP|ACCEPT
iptables -P INPUT DROP
拦截
iptables -A FORWARD -p TCP –dport 22 -j REJECT –reject-with tcp-reset
重定向
iptables -t nat -A PREROUTING -p tcp –dport 80 -j REDIRECT –to-ports 8080
伪装
iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE –to-ports 1024-31000
删除
iptables -t nat/filter -D INPUT|OUTPUT|PREROUTING|POSTROUTING 1 ,2,3
iptables -t mangle -A PREROUTING -p tcp –dport 22 -j MARK –set-mark 2
iptables -A INPUT -p tcp -j LOG –log-prefix “INPUT packets”
全部清除
iptables -F -X
保存
service iptables save
-m 参数
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m owner –gid-owner 0
iptables -A OUTPUT -m owner –uid-owner 500
iptables -A OUTPUT -m owner –pid-owner 78
iptables -A OUTPUT -m owner –sid-owner 100
iptables -A INPUT -m mac –mac-source 00:00:00:00:00:01 -j ACCEPT
iptables -A INPUT -m limit –limit-burst 5
iptables -A INPUT -m limit –limit 3/hour /second /minute /day
配置文件
/etc/sysconfig/iptables
FORWARD 转发
iptables –A FORWARD –s 192.168.0.0/24 –j ACCEPT
iptables –A FORWARD –d 192.168.0.0/24 –j ACCEPT
内核里面的转发文件并没有打开,因为我们要手工修改/proc/sys/net/ipv4/ip_forward 的值,将默认的0改为1!(1为打开,0为关闭)
NAT 转发
iptables –t nat –A postrouting –s 10.0.0.0/24 –j SNAT –to-source 192.168.0.254
iptables –t nat –A prerouting –d 10.0.254 –p tcp –dport 80 –j NAT –to-destination 192.168.0.1