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


本文摘自PHP中文网,作者齐天大圣,侵删。

在之前的几篇文章里,已经介绍过了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的脚本内容:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

#!/bin/bash

# iptables rule

 

# 清楚默认规则

iptables -F

iptables -X

iptables -Z

 

# 修改默认策略

iptables -P INPUT  DROP

iptables -P FORWARD  ACCEPT

iptables -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.allow

fi

 

# 黑名单

if [ -f "/etc/iptables/iptables.deny" ];then

    sh /etc/iptables/iptables.deny

fi

 

# 允许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,想要信任该局域网内的主机的话,可以在该文件写入

1

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

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

1

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

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

相关推荐:《linux课程》

以上就是linux下的软件防火墙iptables――防火墙的设计的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

Linux中删除文件的命令是什么

pear Linux是什么意思?

怎么配置Linux的ip地址?

Linux怎么查看mysql安装在哪里

Linux下输入正确密码仍无法登录

Linux中改变文件所有者的命令是什么

Linux创建文件夹命令是什么

如何查看Linux版本

解决Linux下mysql密码错误的问题

Linux 系统和 windows 系统的区别?

更多相关阅读请进入《Linux》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...