linux下的软件防火墙iptables——防火墙的设计

在之前的几篇文章里,已经介绍过了iptables的表、链,以及如何增加规则链等。这里,想和大家分享一个简单的防火墙的规则,这里主要针对filter的input链设置规则,本篇文章相当于一个iptables规则实战,帮助大家加深巩固所学的知识。

应用规则如下:

清除已有规则,将原有的规则全部清除。

设定默认策略,将filter的input链默认策略设置为drop,其他的都设置为accept。

信任本机,对于回环网卡lo必须设置为可信任的。

响应数据包,对于主机主动向外请求的而响应的数据包可以进入本机(establish/related)

拒绝无效数据包,对于无效的数据包都拒绝(INVALID)

白名单,信任某些ip或网络地址等

黑名单,不信任的ip或网络地址等

允许icmp包,对于icmp包放行

开放部分端口, 有些服务的端口是必须要向外开放的,比如80、443、22等端口

我们准备制作3个shell脚本文件:iptables.rule、iptables.allow(白名单)、iptables.deny(黑名单)文件。这三个文件,我一般会先建立一个目录/etc/iptables,这三个文件存在这个目录。

下面,我们看这个iptables.rule的脚本内容:

#!/bin/bash# iptables rule# 清楚默认规则iptables -Fiptables -Xiptables -Z# 修改默认策略iptables -P INPUT  DROPiptables -P FORWARD  ACCEPTiptables -P OUTPUT  ACCEPT# 信任本机iptables -A INPUT -i lo -j ACCEPT # 响应数据包iptables -A INPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT# 拒绝无效数据包iptables -A INPUT  -m state --state INVALID -j DROP# 白名单if [ -f "/etc/iptables/iptables.allow" ];then    sh /etc/iptables/iptables.allowfi# 黑名单if [ -f "/etc/iptables/iptables.deny" ];then    sh /etc/iptables/iptables.denyfi# 允许icmp包iptables -A INPUT -p icmp -j ACCEPT# 开放部分端口iptables -A INPUT -p tcp --dport 22  -j ACCEPT # ssh服务iptables -A INPUT -p tcp --dport 80 -j ACCEPT # www服务iptables -A INPUT -p tcp --dport 443 -j ACCEPT # ssl# 保存规则/usr/libexec/iptables/iptables.init save

对于iptables.allow,我们一般会将信任的ip或网络地址写入到这个文件,比如该主机所在局域网络为192.168.1.0/24,想要信任该局域网内的主机的话,可以在该文件写入

iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT

而iptables.deny则是用来阻挡某些恶意ip的流量进入到本机,比如像阻挡8.210.247.5这个ip,可以在该文件写入

iptables -A INPUT -s 8.210.247.5/32 -j DROP

在iptables.rule的最后,我们使用的命令来保存了防火墙规则,注意,如果不加入本命令,该规则只会零时生效,当重启了iptables或重启了系统,我们之前设定的规则就会失效了。

相关推荐:《linux课程》

以上就是linux下的软件防火墙iptables——防火墙的设计的详细内容,更多请关注其它相关文章!

人只要不失去方向,就不会失去自己

linux下的软件防火墙iptables——防火墙的设计

相关文章:

你感兴趣的文章:

标签云: