热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

在之前的几篇文章里,已经介绍过了iptables的表、链,以及如何增加规则链等。这里,想和大家分享一个简单的防火墙的规则,这里主要针对filter的input链设置规则,本篇文章相当于一个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 -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,想要信任该局域网内的主机的话,可以在该文件写入

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或重启了系统,我们之前设定的规则就会失效了。


推荐阅读
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 如何在文本中运行Java程序
    本文介绍了在文本中运行Java程序的步骤,包括创建文本文档、修改后缀、打开DOS命令窗口、编译和运行程序。通过这些步骤,可以在文本中成功运行Java程序并输出结果。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • React项目中运用React技巧解决实际问题的总结
    本文总结了在React项目中如何运用React技巧解决一些实际问题,包括取消请求和页面卸载的关联,利用useEffect和AbortController等技术实现请求的取消。文章中的代码是简化后的例子,但思想是相通的。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了使用SSH免密登录的步骤,包括生成公私钥、传递公钥给被登录机、修改文件权限的操作。同时提醒用户注意私钥的传递方式,建议使用U盘等离线方式传递。 ... [详细]
  • Java学习笔记之使用反射+泛型构建通用DAO
    本文介绍了使用反射和泛型构建通用DAO的方法,通过减少代码冗余度来提高开发效率。通过示例说明了如何使用反射和泛型来实现对不同表的相同操作,从而避免重复编写相似的代码。该方法可以在Java学习中起到较大的帮助作用。 ... [详细]
  • 原理:dismiss再弹出,把dialog设为全局对象。if(dialog!null&&dialog.isShowing()&&!(Activity.)isFinishing()) ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
author-avatar
欧阳3721_208
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有