【基础部分】之Firewall和iptables

Firewalliptables

firewall 和 iptables 默认只能开一个

火墙:

图形界面形式配置火墙 firewall-config

使用命令行接口配置防火墙

查看firewalld的状态: firewall-cmd --state

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

# firewall-cmd --get-active-zones

查看默认区域: # firewall-cmd --get-default-zone

查看所有可用区域: # firewall-cmd --get-zones

列出指定域的所有设置: # firewall-cmd --zone=public --list-all

列出所有区域的设置: # firewall-cmd --list-all-zones

设置默认区域: # firewall-cmd --set-default-zone=trusted

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

# firewall-cmd --permanent --zone=tursted --add-source=172.25.15.0/24

(--permanent参数表示永久生效设置,如果没有指定--zone参数,那么会加入默认区域)

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

# firewall-cmd --permanent --zone=trusted --remove-source=172.25.0.0/24

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

# firewall-cmd --permanent --zone=trusted --add-interface=eth0

# firewall-cmd --permanent --zone=trusted --change-interface=eth0

# firewall-cmd --permanent --zone=trusted --remove-interface=eth0

添加、删除服务:

# firewall-cmd --permanent --zone=public --add-service=smtp

# firewall-cmd --permanent --zone=public --remove-service=smtp

列出、添加、删除端口:

# firewall-cmd --zone=public --list-ports

# firewall-cmd --permanent --zone=public --add-port=8080/tcp

# firewall-cmd --permanent --zone=public --remove-port=8080/tcp

重载防火墙:

# firewall-cmd --reload

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

比如你正在ssh连接该主机,该主机重载防火墙 ssh不会断开 仍然可以操作该主机

如果--complete-reload 则ssh会断开。

列出所有预设服务: # firewall-cmd --get-services

在/usr/lib/firewalld/services/ 中的可以查看服务名称。注意:配置文件是以服务本身命名的

service-name. Xml 如下

【基础部分】之Firewall和iptables

以http为例子

【基础部分】之Firewall和iptables

默认 端口为80 如果想改端口 可以在这里修改

Direct Rules

firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 22 -s 172.25.15.10 -j REJECT

添加rule 拒绝172.25.15.10 主机访问22端口(ssh)

firewall-cmd --direct --get-all-rules 查看所有rule

【基础部分】之Firewall和iptables

firewall-cmd --direct --remove-rule ipv4 filter INPUT 0 -p tcp --dport 22 -s 172.25.15.10 -j REJECT (删除的是上面查看出来的)

firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 22 ! -s 172.25.15.10 -j REJECT

添加rule 拒绝除了172.25.15.10主机以外的任何主机连接

Rich Rules

使用规则

【基础部分】之Firewall和iptables

firewall-cmd --remove-service=ssh (禁止访问ssh服务)

firewall-cmd --add-rich-rule='rule family="ipv4" source address="172.25.15.10" accept'

允许172.25.15.10主机所有连接。

firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp drop' (禁止 ping )

丢弃所有icmp包

端口转发:(外网通过端????口转发连接内网)

【基础部分】之Firewall和iptables

325:开启地址转换功能

326:访问本机的80端口转发到15.10主机的22端口

伪装:(内网通过ip伪装访问外网)

要求:一台单网卡172.25.15.10。一台双网卡作为网关172.25.15.11 172.25.254.115

双网卡:firewall-cmd --add-masquerade

firewall-cmd --add-rich-rule=’rule family=ipv4 source address=172.25.254.115’

(地址伪装为254.115)

则单网卡机器 可以ping通 254网段

IPTABLES

Iptables -nL 查看策略

Iptables -t filter -nL 查看filter表的策略

Iptables -t nat -nL 查看nat表的策略

Iptables -F 刷新策略(清空)

Iptables-save > /etc/sysconfig/iptables (保存修改的策略)

如何写策略:

【基础部分】之Firewall和iptables

131行: 写入允许该主机连接任何端口

133行: 写入允许lo回环连接任何端口

135行:拒绝所有写入

137行:允许访问22端口

139行:删除INPUT里第4行

141行:插入允许访问22端口到第三行

143行:修改拒绝访问22端口在第三行

145行:删除第三行策略

策略有从上至下的顺序问题:拒绝所有访问在第三行,允许访问22端口在第四行,结果22端口不能被访问。因为策略的顺序问题