http://hongwei.im/iptables-setting-for-ubuntu-1304/

Iptables是一个防火墙,所有的Ubuntu官方发行版(Ubuntu,Kubuntu,Xubuntu)都默认自带Iptables。当你安装完Ubuntu以后,Iptables就已经装好了,但是默认设置是允许所有的通讯。从Ubuntu 8.04版本开始,Ubuntu有了一个防火墙配置的GUI工具UFW

ubuntu下跟其他linux系统的操作基本相同,可能略有不同。
iptables命令的选项很多,多使用man吧。

查看本机设置

查看本机的Iptables设置使用下面的命令:

iptables -L -n

通过iso文件刚安装完的纯净的ubuntu,查看一下防火墙设置的话,是这样没有任何规则的:

Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination

没有任何规则。

清除规则

不管有没有配置过规则,在重新进行配置之前,需要先清除规则:

iptables -F        //清除预设表filter中的所有规则链的规则
iptables -X //清除预设表filter中使用者自定链中的规则

设定预设规则

这样就清除干净了,下面开始配置,先设定预设规则。
对于防火墙的设置,有两种策略:一种是全部通讯口都允许使用,只是阻止一些我们知道的不安全的或者容易被利用的口;另外一种,则是先屏蔽所有的通讯口,而只是允许我们需要使用的通讯端口。

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

注意-P中的P需要大写,表示Protocol。

可以看出INPUT,FORWARD两个链采用的是允许什么包通过,而OUTPUT链采用的是不允许什么包通过。
当超出了IPTABLES里filter表里的两个链规则(INPUT、FORWARD)时,不在这两个规则里的数据包怎么处理呢,那就是DROP(放弃)。应该说这样配置是很安全的,我们要控制流入数据包。
而对于OUTPUT链,也就是流出的包我们不用做太多限制,而是采取ACCEPT,也就是说,不在这个规则里的包怎么办呢,那就是通过。

添加规则

先来添加INPUT规则,因为INPUT预设的是DROP,所以要添加ACCEPT规则。
首先是22端口,这个的用处地球人都知道。

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

或者,你不写22,写ssh也可以。

iptables -A INPUT -p tcp --dport ssh -j ACCEPT

给Web服务器开启80端口

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

给FTP服务开启20和21端口

iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT

给邮件服务开启25和110端口

iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 110 -j ACCEPT

对于OUTPUT规则,因为预设的是ACCEPT,所以要添加DROP规则,减少不安全的端口链接。

iptables -A OUTPUT -p tcp --sport 31337 -j DROP
iptables -A OUTPUT -p tcp --dport 31337 -j DROP

具体要DROP掉哪些端口,可以查询相关的资料,可以把一些黑客常用的扫描端口全部DROP掉,多多少少提高一点服务器的安全性。

我们还可以把规则限制到只允许某个IP:

iptables -A INPUT -s 192.168.0.18 -p tcp --dport 22 -j ACCEPT

这表示只允许192.168.0.18的机器进行SSH连接。

如果要允许一个IP段,可以使用下面的写法:

iptables -A INPUT -s 192.168.0.1/255 -p tcp --dport 22 -j ACCEPT

这表示允许192.168.0.1/255IP段的机器进行连接。
但是,注意我们前面已经添加一条规则来允许所有IP连接22端口,需要把这条规则删除掉。

iptables -D INPUT -p tcp --dport 22 -j ACCEPT

对于FORWARD规则,因为预设的是DROP,所以要添加ACCEPT规则。
开启转发功能

iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT

丢弃坏的TCP包

iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP

处理IP碎片数量,防止攻击,允许每秒100个

iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包

iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT

Iptables的保存和调用

现在该提一下保存的问题了。
我们用命令来添加的设置,都不会自动保存,一旦退出,设置都将不存在了,需要手动去保存一下。

iptables-save >/etc/iptables.up.rules

把刚才设置的规则保存到指定的地方,文件名可以自定义。

调用Iptables设置

iptables-restore >/etc/iptables.up.rules

由于每次开机或重启后都需要去调用一次,我们把它设置自动的,执行

sudo gedit /etc/network/interfaces

auto ath0
iface ath0 inet dhcp

后面,加上

pre-up iptables-restore >/etc/iptables.up.rules //开机时自动调用已经存在的Iptables设置
post-down iptables-save >/etc/iptables.up.rule //关机时自动保存当前的Iptables设置

[转载] iptables 防火墙设置的更多相关文章

  1. linux下iptables防火墙设置

    各位linux的爱好者或者工作跟linux相关的程序员,我们在工作中经常遇到应用服务器端口已经启动, 在网络正常的情况下,访问不到应用程序,这个跟防火墙设置有关 操作步骤 1.检查有没有启动防火墙 s ...

  2. [转载]ubuntu防火墙设置

    原文地址:ubuntu防火墙设置作者:風飏    自打2.4版本以后的Linux内核中, 提供了一个非常优秀的防火墙工具.这个工具可以对出入服务的网络数据进行分割.过滤.转发等等细微的控制,进而实现诸 ...

  3. ubuntu 14.04/14.10 iptables 防火墙设置

    1. 一键批处理设置      [plain] view plaincopyprint? #!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/loc ...

  4. Centos iptables防火墙设置

    iptables的基本语法格式 iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]说明:表名.链名用于指定iptables命令所操作的表和链,命令选项用于指定 ...

  5. iptables防火墙设置

    ubuntu系统: apt-get install iptables #如果默认没有安装,请运行此命令安装防火墙 # whereis iptables #查看系统是否安装防火墙可以看到:iptable ...

  6. RedHat Linux下iptables防火墙设置

    一般情况下iptables已经包含在Linux发行版中.运行 # iptables --version 来查看系统是否安装iptables 启动iptables:# service iptables ...

  7. 【Linux】Centos6的iptables防火墙设置

    1,查看防火墙状态 # service iptables status //或 # /etc/init.d/iptables status 2,防火墙的启动.重启,关闭 # service iptab ...

  8. Linux iptables 防火墙设置

    1.查看防火墙iptables -L -niptablesb -L -n --line-number  显示规则行号看到 INPUT ACCEPT, FORWARD ACCEPT , OUTPUT A ...

  9. Centos6 iptables 防火墙设置【转】

    1.指令 vi /etc/sysconfig/iptables 添加以下内容和要开放的端口 # Firewall configuration written by system-config-fire ...

随机推荐

  1. 【linux配置】虚拟机配置静态IP地址

    使用VMware配置虚拟机静态IP地址 一.安装好虚拟后在菜单栏选择编辑→ 虚拟网络编辑器,打开虚拟网络编辑器对话框,选择Vmnet8 Net网络连接方式,随意设置子网IP,点击NAT设置页面,查看子 ...

  2. WPF 如何显示gif

    最近碰到了要显示表情的需求,而表情刚好是gif的图片. 于是用了Image试了下,发现不行,只会显示第一帧,然后上网查了下资料,大致有这么几种方法,都可以实现. 第一种: 使用Winfrom里面的pi ...

  3. 优化SQL之最佳索引

    SQL优化工具Tosska SQL Tuning Expert for Oracle,帮助SQL开发人员解决SQL性能问题. 本工具主要创始人Richard To, 资深ITPUB元老,从1996年开 ...

  4. Leetcode874.Walking Robot Simulation模拟行走的机器人

    机器人在一个无限大小的网格上行走,从点 (0, 0) 处开始出发,面向北方.该机器人可以接收以下三种类型的命令: -2:向左转 90 度 -1:向右转 90 度 1 <= x <= 9:向 ...

  5. Centos6.x终端中文乱码

    locale LANG LC_*的默认值,是最低级别的设置,如果LC_*没有设置,则使用该值.类似于 LC_ALL.  LC_ALL 它是一个宏,如果该值设置了,则该值会覆盖所有LC_*的设置值.注意 ...

  6. (转) Hibernate持久化类与主键生成策略

    http://blog.csdn.net/yerenyuan_pku/article/details/65462930 Hibernate持久化类 什么是持久化类呢?在Hibernate中持久化类的英 ...

  7. PLAY2.6-SCALA(九) WebSockets

    WebSockets是一种支持全双工通信的套接字.现代的html5通过js api使得浏览器天生支持webSocket.但是Websockets在移动端以及服务器之间的通信也非常有用,在这些情况下可以 ...

  8. phpcms url路由规则、多站点、PC手机切换

    解决一个分站点pc手机共存的问题 首先需要有PC手机两套模板.通过修改url路由规则,在同一目录下生成PC手机两套静态网站,PC使用默认url路由规则,手机端使用文件名追加“_m”的路由规则. 然后通 ...

  9. SDUT_2502:火星计数法

    火星人的计数规则里只有a,b,c,d四个字母,计数规则从小到大是 a,b,c,d,aa,ab,ac,ad,ba,……. 给出来由a,b,c,d四种字母组成的火星数字,算出该数字是第几个(从1开始). ...

  10. 容器化ICT融合初体验

    [编者的话]本次将分享的容器化ICT融合平台是一种面向未来ICT系统的新型云计算PaaS平台,它基于容器这一轻量级的虚拟化技术以及自动化的"微服务"管理架构,能够有效支撑应用快速上 ...