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

相关文章
|
1月前
|
网络协议 安全 Linux
如何配置Linux端的ftp?
如何配置Linux端的ftp?
137 64
|
9天前
|
网络协议 Ubuntu 网络安全
|
1月前
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
201 73
|
9天前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
114 3
|
13天前
|
监控 安全 网络协议
快速配置Linux云服务器
【10月更文挑战第3天】快速配置Linux云服务器
|
17天前
|
运维 网络协议 安全
Linux安全运维--一篇文章全部搞懂iptables
Linux安全运维--一篇文章全部搞懂iptables
27 1
|
1月前
|
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问题的解决
|
1月前
|
Linux 编译器 开发工具
快速在linux上配置python3.x的环境以及可能报错的解决方案(python其它版本可同样方式安装)
这篇文章介绍了在Linux系统上配置Python 3.x环境的步骤,包括安装系统依赖、下载和解压Python源码、编译安装、修改环境变量,以及常见安装错误的解决方案。
48 1
|
1月前
|
运维 监控 安全
网络管理:防火墙和安全组配置详解
网络管理:防火墙和安全组配置详解
49 1
|
1月前
|
Ubuntu Linux
Linux服务器的自动启动可以在哪里进行配置?
Linux服务器的自动启动可以在哪里进行配置?
117 3