首先在使用iptables之前敲入一下两条命令
> iptables -F   #这句话的意思是清空所有的链
> iptables -X  #这句话的意思是清空所有自定义的链
以上两条的含义你可以简单的认为是iptables的初始化命令,无需深入。
下面我们将要开始建立一个iptables防火墙了。我们的做法是,默认所有的数据都丢弃,除非我认为满足条件的我才接受,有针对的打开我们需要的端口,无疑是很安全的一种做法。下面两句话可以定义默认全部丢弃数据包:
> iptables -P INPUT DROP
> iptables -P OUTPUT DROP
-P参数的意思是policy,翻译成策略~那么这两句话就好理解了。
第一句的意思是:
输入(INPUT)的数据包默认的策略(-P)是丢弃(DROP)的
第二句的意思是:
输出(OUTPUT)的数据包默认的策略(-P)是丢弃(DROP)的
其实到这里已经是一个有用的防火墙了,只不过,没有什么意义,和拔掉网线的概念没有什么不同。
首先写下这6句话:
iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
允许icmp包进入
iptables -A INPUT -s localhost -d localhost -j ACCEPT
允许本地的数据包
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
允许已经建立和相关的数据包进入
iptables -A OUTPUT -p icmp --icmp any -j ACCEPT
允许icmp包出去
iptables -A OUTPUT -s localhost -d localhost -j ACCEPT
允许本地数据包
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
允许已经建立和相关的数据包出去
说明一下,这6句基本上都是要的。
 
如果我的电脑是一台web服务器的话,别人也没有办法访问,怎样才能让别人能访问我的web呢?很简单,打开80端口。
> iptables -A INPUT -p tcp --dport 80 -j ACCEPT
但是这样的话,别人还是没有办法访问我,问什么呢?因为OUTPUT是关闭的,没有数据包能出去,那么就需要下面的一句话:
> iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
这样别人就能访问你的web了。
 
但是如果你想访问别人的web怎么办呢?打开出去的80端口吧!
> iptables -A OUTPUT -p tcp -m state --state NEW --dport 80  -j ACCEPT
同样的这样的一句话还是不能起作用,我们需要打开别人进来的数据包
> iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
可以了么?试试看~还是不可以???为什么呢???对了,你可能想到了DNS端口没有打开怎么访问域名服务器呢?下面我们打开DNS端口吧!
> iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
> iptables -A INPUT -p udp --dport 53 -j ACCEPT
OK,这样就能访问别人的web站点了,不过如果你要访问https的站点,打开443端口吧
 
为了方便管理,我们可能还要经常ssh到这台服务器上去,那么打开22号端口吧!
> iptables -A IPUT -p tcp -dport 22 -j ACCEPT
或者我们还可能需要用这台电脑ssh到别的电脑上去
> iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
 
但是我只允许一个固定的ip能ssh到我的服务器上来怎么办呢?上句改成:
> iptables -A INPUT -p tcp --dport 22 -s 192.168.1.10 -j ACCEPT
 
上句话的意思是,只允许192.168.1.1的用户通过ssh进到服务器。不过这样还是不安全,我们可以同时绑定访问者的mac,这样就安全多了!
> iptables -A INPUT -p tcp --dport 22 -m mac --mac 00:18:de:a5:83:c7 -s 192.168.1.10 -j ACCEPT
 
最后脚本话一下:
#!/bin/bash
#DEFINE VARIABLES
HTTP_PORT=80
SECURE_HTTP_PORT=443
ALLOWED_MAC=00:18:de:a5:83:c7
SSH_PORT=22
DNS_PORT=53
ALLOWED_IP=192.168.1.10
#FLUSH IPTABLES
iptables -F
iptables -X
#DEFINE DEFAULT ACTION
iptables -P INPUT DROP
iptables -P OUTPUT DROP
#DEFINE INPUT CHAINS
iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
iptables -A INPUT -s localhost -d localhost -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 
iptables -A INPUT -p tcp --dport $SSH_PORT -j ACCEPT
diptables -A INPUT -p tcp --dport 22 -m mac --mac $ALLOWED_MAC -s $ALLOWED_IP -j ACCEPT
#DEFINE OUTPUT CHAINS
iptables -A OUTPUT -p icmp --icmp any -j ACCEPT
iptables -A OUTPUT -s localhost -d localhost -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 

iptables -A OUTPUT -p tcp -m state --state NEW --dport $HTTP_PORT  -j ACCEPT
iptables -A OUTPUT -p tcp --dport $SECURE_HTTP_PORT -j ACCEPT
iptables -A OUTPUT -p udp --dport $DNS_PORT -j ACCEPT
iptables -A OUTPUT -p tcp --dport $SSH_PORT -j ACCEPT

linux iptables 相关设置的更多相关文章

  1. Oracle在linux中相关设置操作

    set linesize 300;  -- 设置行长度 set pagesize 300; set long 100000; -- 设置输出长度select dbms_metadata.get_ddl ...

  2. Linux iptables 防火墙设置

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

  3. linux iptables相关

    iptables -A INPUT -p udp --dport 90 -j ACCEPT iptables -A INPUT -p tcp -m state --state ESTABLISHED ...

  4. 10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 netfilter5表5链介绍 10.14 iptables语法

    Linux网络相关 ifocnfig 查看网卡ip(yum install net-tools) ip add 查看网卡 ip add = ifocnfig ifconfig 不显示down掉的网卡, ...

  5. Linux网络相关、firewalld和netfilter、netfilter5表5链介绍、iptables语法 使用介绍

    第7周第3次课(5月9日) 课程内容: 10.11 Linux网络相关10.12 firewalld和netfilter10.13 netfilter5表5链介绍10.14 iptables语法 扩展 ...

  6. Linux centos7 Linux网络相关、firewalld和netfilter、netfilter5表5链介绍、iptables语法

    一. Linux网络相关 yum install net-tools ifconfig查看网卡ip ifup ens33开启网卡 ifdown ens33关闭网卡 设定虚拟网卡ens33:0 mii- ...

  7. 工作中linux定时任务的设置及相关配置

    工作中会用到定时任务,来处理以前采集来的数据备份, 每周一凌晨4点执行一次    0 4 * * */1 find/data/templatecdr/oracle/dcndatabak/ -type ...

  8. Linux 之 网络相关设置

    网络相关设置 参考教程:[千峰教育] 命令: ping: 作用:通常用于检测网络设备的连通性. 格式:ping IP/域名 选项:-c,指定方式测试数据包的次数 实例:ping www.baidu.c ...

  9. iptables相关

    ⑴.Iptables规则写法的基本格式是:    Iptables [-ttable] COMMAND chain CRETIRIA -j ACTION   ⑵.Iptables规则相关参数说明:  ...

随机推荐

  1. iOS9以后 GDataXMLNode修改方式

    iOS9以后GDataXMLNode修改方式

  2. Java学习笔记之类和对象

    1.类是对象的抽象,对象是类的实例. 2.一个.java 文件,只能有一个公有类. 3.Java的默认访问权限是:default,即不加任何访问修饰符,该权限设置只能在同一包访问.   当前类 同一包 ...

  3. ANT 操控 ORACLE数据库实践

    Ant 执行系统命令没有任何问题,这次实际系统命令中可以说遇到了两个问题,一个是启动服务的命令是含有空格的,第二个如何备份数据库可以自动加上日期. 首先,我们启动oracle数据库,操作有两个: 1. ...

  4. 超棒的自定义超酷滚动条jQuery插件 - Perfect Scrollbar

    可能大家厌倦了千篇一律的页面滚动条,如果你希望能够设计出与众不同的页面UI设计的话,Perfect ScrollBar可能就是你寻找的解决方案. 这个滚动条来自于一个个人项目,一个简单但是非常棒的滚动 ...

  5. Outing

    Outing 题目描述 Organising a group trip for the elderly can be a daunting task... Not least because of t ...

  6. IO流---字符流(FileWriter, FileReader ,BufferedWriter,BufferedReader)

    IO   Input  Output IO流用来处理设备之间的数据传输. java对数据的操作是通过流来实现的. 流按流向分:输入流,输出流     是相对内存而言的.把硬盘的数据读取到内存中就是输入 ...

  7. JAVA-基本知识

    1.JAVA跨平台 其实就是在每个平台上要安装对应该操作系统的JVM,JVM负责解析执行,即实现了跨平台.JVM是操作系统与java程序之间的桥梁. 2.JRE:java运行环境,包含JVM+核心类库 ...

  8. HDU 4027 <线段树,区间√>

    题目连接 题意 给出一个区间,每次把[l,r]内的值√,维护区间和. 坑: £:l会比r大,swap. £: 当f[i].sum=f[i].r-f[i].l+1;,不修改.因为保证每个数都大于等于1, ...

  9. strncasecmp与strcasecmp用法

    strcasecmp strcasecmp(忽略大小写比较字符串) 相关函数 bcmp,memcmp,strcmp,strcoll,strncmp 表头文件 #include<string.h& ...

  10. windows程序设计(三)

    MFC所有封装类一共200多个,但在MFC的内部技术不只是简单的封装 MFC的内部总共有六大关键技术,架构起了整个MFC的开发平台 一.MFC的六大关键技术包括: a).MFC程序的初始化过程 b). ...