[转载] iptables 防火墙设置
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 防火墙设置的更多相关文章
- linux下iptables防火墙设置
各位linux的爱好者或者工作跟linux相关的程序员,我们在工作中经常遇到应用服务器端口已经启动, 在网络正常的情况下,访问不到应用程序,这个跟防火墙设置有关 操作步骤 1.检查有没有启动防火墙 s ...
- [转载]ubuntu防火墙设置
原文地址:ubuntu防火墙设置作者:風飏 自打2.4版本以后的Linux内核中, 提供了一个非常优秀的防火墙工具.这个工具可以对出入服务的网络数据进行分割.过滤.转发等等细微的控制,进而实现诸 ...
- ubuntu 14.04/14.10 iptables 防火墙设置
1. 一键批处理设置 [plain] view plaincopyprint? #!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/loc ...
- Centos iptables防火墙设置
iptables的基本语法格式 iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]说明:表名.链名用于指定iptables命令所操作的表和链,命令选项用于指定 ...
- iptables防火墙设置
ubuntu系统: apt-get install iptables #如果默认没有安装,请运行此命令安装防火墙 # whereis iptables #查看系统是否安装防火墙可以看到:iptable ...
- RedHat Linux下iptables防火墙设置
一般情况下iptables已经包含在Linux发行版中.运行 # iptables --version 来查看系统是否安装iptables 启动iptables:# service iptables ...
- 【Linux】Centos6的iptables防火墙设置
1,查看防火墙状态 # service iptables status //或 # /etc/init.d/iptables status 2,防火墙的启动.重启,关闭 # service iptab ...
- Linux iptables 防火墙设置
1.查看防火墙iptables -L -niptablesb -L -n --line-number 显示规则行号看到 INPUT ACCEPT, FORWARD ACCEPT , OUTPUT A ...
- Centos6 iptables 防火墙设置【转】
1.指令 vi /etc/sysconfig/iptables 添加以下内容和要开放的端口 # Firewall configuration written by system-config-fire ...
随机推荐
- MyEclipse优化】-----如何合理设置MyEclipse中的validation选项
打开eclipse,点击[window]菜单,选择[preferences]选项. 在左侧点击[validation]选项,在右侧可以看到eclipse进行的自动检查都有哪些内容. 将Manual(手 ...
- 批量删除maven lastUpdated
批量删除lastUpdated for /r %i in (*.lastUpdated) do del %i 安装jar到本地仓库 mvn install:install-file -Dfile=D: ...
- Leetcode674.Longest Continuous Increasing Subsequence最长连续递增序列
给定一个未经排序的整数数组,找到最长且连续的的递增序列. 示例 1: 输入: [1,3,5,4,7] 输出: 3 解释: 最长连续递增序列是 [1,3,5], 长度为3. 尽管 [1,3,5,7] 也 ...
- PHPCMS V9双语站建设切换
PHPCMS V9要做双语,很多同学都是迷茫的,在此特地分享我的双语制作步辶 我这种模式是把两个站点都改为HTML静态模式才可以实现 双语切换可分为两种模式: 1.解析二级域名来切换双语 解析二级域名 ...
- 50倍时空算力提升,阿里云RDS PostgreSQL GPU版本上线
2019年3月19日,阿里云RDS PostgreSQL数据库GPU规格版本正式上线,开启了RDS异构计算并行加速之路.该版本在RDS(关系型数据库服务)的云基础设施层面首次完成了与阿里云异构计算产品 ...
- MySQL数据库操作语句(补充1)(cmd环境运行)
一.字符串类型 enum枚举类型 /* 也叫做枚举类型,类似于单选! 如果某个字段的值只能从某几个确定的值中进行选择,一般就使用enum类型, 在定义的时候需要将该字段所有可能的选项都罗列出来: */ ...
- scorllview嵌套gridview和listview的兼容问题
ScrollView嵌套GridView或ListView,由于这两款控件都自带滚动条,当他们碰到一起的时候便会出问题,即GridView会显示不全. 解决办法:自定义一个GridView控件 pac ...
- DAY1-作业
Python-day1-------> 本节内容: Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据 ...
- JDBC操作数据库实例
jdbc操作数据库实例 1.jdbc创建数据库 1.1 前提条件 1.拥有创建和删除表的权限 2.数据库已经启动,且可用 1.2 jdbc创建数据库表的步骤: 导包:导入需要进行数据库编程的 JDBC ...
- linux 下 自己写的 html文件产生中文乱码问题 解决办法
再文件顶部加上 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" / ...