linux防火墙iptables配置规则分享

本文涉及的产品
云防火墙,500元 1000GB
简介: 前面说了Freebsd下ipfw的配置,今天再说一下linux及centos下iptables的通用配置。相比于freebsd的ipfw centos下的iptables更加便于安装配置。

前面说了Freebsd下ipfw的配置,今天再说一下linux及centos下iptables的通用配置。相比于freebsd的ipfw centos下的iptables更加便于安装配置。
默认情况下iptables是集成在centos发行版本之中的,它集成到linux内核中,用户通过iptables,可以对进出你的计算机的数据包进行过滤。通过iptables命令行设置你的规则,来把保护的计算机网络──允许哪些数据通过,哪些不能通过,哪些通过的数据需要进行记录等。通过对iptables的设置甚至可以抵御小规模的DDOS攻击。
运行iptables --version来查看系统是否安装了iptables。

点击(此处)折叠或打开

  1. iptables --version或者iptables -V

 一般会显示当前iptables版本 如    iptables v1.4.7 等。如未显示版本,则表示需要手动安装iptables。下载地址:http://www.netfilter.org/

一.启动iptables
   命令行输入:service iptables status 可以查看当前iptables运行状态,显示如下

[root@localhost ~]# service iptables status
表格:filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination        

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

表示当前iptables已经运行,如未启动 可以运行 service iptables start 启动防火墙。

二.配置规则前准备
确认iptables已经启动之后,运行iptables --list查看当前iptables策略规则。
配置规则可以修改/etc/sysconfig/iptables 增加你想要的策略。
iptables未启动的情况下/etc/sysconfig/iptables 可能不存在,这时你就需要手动生成一个文件。
touch /etc/sysconfig/iptables  然后再添加规则。
使其生效的办法是修改好后 运行 service iptables restart   系统会载入你配置的iptables规则。
这里有个提示:如果你是刚接触linux或者对与iptables的配置不是很熟悉的话,建议你谨慎点。虚拟机情况还好,如果是远程登录的配置,很可能会把自己挡在外面无法连接。
这时你就需要添加一个Crontab任务
 crontab -e
 

点击(此处)折叠或打开

  1. */5 * * * * root /etc/init.d/iptables stop

这个任务意思是每5分钟关闭一次防火墙,避免出现远程连接SSH断掉无法登录。(此处借鉴抚琴煮酒大咖的办法,在此表示感谢)
 
三.添加具体规则
 
先看一个简单的规则

点击(此处)折叠或打开

  1. Generated by iptables-save v1.3.5 on Sat Nov 10 11:07:00 2012
  2. *filter
  3. :INPUT ACCEPT [0:0]
  4. :FORWARD ACCEPT [0:0]
  5. :OUTPUT ACCEPT [0:0]
  6. -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  7. -A INPUT -i lo -j ACCEPT
  8. -A INPUT -p icmp -j ACCEPT
  9. -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
  10. -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
  11. -A INPUT -j DROP
  12. -A FORWARD -j DROP
  13. -A OUTPUT -j ACCEPT
  14. COMMIT
  15. # Completed on Sat Nov 10 11:07:00 2012

这个规则只允许80 和22端口的连接进入,其余的全部阻止。而对于出去的连接则没有限制。这是针对web服务器进行的一个规则配置,其余的规则可以根据自己的需要添加

 一下是根据网上规则总结的一些配置方法,跟大家分享下

1.屏蔽指定ip
有时候我们发现某个ip不停的往服务器发包,这时我们可以使用以下命令,将指定ip发来的包丢弃:
Black_IP="x.x.x.x"
iptables -A INPUT -i eth0 -p tcp -s "$Black_IP" -j DROP
以上命令设置将由x.x.x.x ip发往eth0网口的tcp包丢弃。
 
2.配置服务项
利用iptables,我们可以对日常用到的服务项进行安全管理,比如设定只能通过指定网段、由指定网口通过SSH连接本机:
  iptables -A INPUT -i eth0 -p tcp -s 192.168.0.0/24 --dport 22 -m state --state NEW,ESTABLESHED -j ACCEPT
  iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

类似的,对于HTTP/HTTPS(80/443)、pop3(110)、rsync(873)、MySQL(3306)等基于tcp连接的服务,也可以参照上述命令配置。
对于基于udp的dns服务,使用以下命令开启端口服务:
iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT 
  
3.网口转发配置
对于用作防火墙或网关的服务器,一个网口连接到公网,其他网口的包转发到该网口实现内网向公网通信,假设eth0连接内网,eth1连接公网,配置规则如下:
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT 
  
4.端口转发配置
  对于端口,我们也可以运用iptables完成转发配置:
iptables -t nat -A PREROUTING -p tcp -d 192.168.0.1 --dport 422 -j DNAT --to 192.168.1.1:22
以上命令将422端口的包转发到22端口,因而通过422端口也可进行SSH连接,当然对于422端口,我们也需要像以上“4.配置服务项”一节一样,配置其支持连接建立的规则。
  
5.DoS攻击防范
利用扩展模块limit,我们还可以配置iptables规则,实现DoS攻击防范:
  iptables -A INPUT -p -tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
--litmit 25/minute 指示每分钟限制最大连接数为25
--litmit-burst 100 指示当总连接数超过100时,启动 litmit/minute 限制
 
6.配置web流量均衡
我们可以将一台服务器作为前端服务器,利用iptables进行流量分发,配置方法如下:
iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.1:80
iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.2:80
iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.3:80

以上配置规则用到nth扩展模块,将80端口的流量均衡到三台服务器。

ok。先分享到这里,后面还有更多精彩继续哦。

如需转载,请标明出处: http://blog.chinaunix.net/uid-29179844-id-3905551.html

相关文章
|
16天前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。
|
28天前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
59 9
|
1月前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
40 5
|
3月前
|
网络协议 安全 Linux
如何配置Linux端的ftp?
如何配置Linux端的ftp?
155 64
|
2月前
|
Java Linux 网络安全
NIFI在Linux服务区上的部署配置过程是什么?
【10月更文挑战第21天】NIFI在Linux服务区上的部署配置过程是什么?
60 2
|
26天前
|
存储 运维 Linux
Linux防火墙firewall的使用
CentOS 7 中的 firewalld 是基于 Netfilter 的防火墙服务,支持动态配置,无需重启服务即可生效。它通过区域管理网络流量,每个区域可以设置不同的防火墙规则。默认区域为 public,可以通过命令行工具 firewall-cmd 进行管理和配置。firewalld 提供了丰富的预定义服务和区域,方便用户根据需求进行灵活配置。
40 0
|
2月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
413 3
|
2月前
|
监控 安全 网络协议
快速配置Linux云服务器
【10月更文挑战第3天】快速配置Linux云服务器
|
2月前
|
运维 网络协议 安全
Linux安全运维--一篇文章全部搞懂iptables
Linux安全运维--一篇文章全部搞懂iptables
49 1
|
3月前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决