首先在使用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. 登录验证的js;JS验证邮箱 验证密码

    var auth_email = 0, auth_pwd = 0, auth_captcha = 0, url_ajax = "/protected/user_ajax.php"; ...

  2. cURL: Learning..

    CURL usage.. -v, -m, -H, -I, -s, --connect-timeout, -x, -X GET|POST, -d, -T, -o. --retry, -u curl [o ...

  3. android上的JAVA8:使用retrolambda

    android上的JAVA8:使用retrolambda posted by juuda 2015年6月3日 下午7:33 under Android Java8引入了lambda表达式,让许多开发者 ...

  4. AI 人工智能 探索 (二)

    完整被动技能代码 using UnityEngine; using System.Collections; public class AI : MonoBehaviour { private Hash ...

  5. java 实例方法和类方法的区别

  6. UVA - 1347 Tour(DP + 双调旅行商问题)

    题意:给出按照x坐标排序的n个点,让我们求出从最左端点到最右短点然后再回来,并且经过所有点且只经过一次的最短路径. 分析:这个题目刘汝佳的算法书上也有详解(就在基础dp那一段),具体思路如下:按照题目 ...

  7. FZU 1914 Funny Positive Sequence(线性算法)

    这个当时我没有做出来,看了很多人包括学长的代码才懂,我感觉最好的方法还是下面那一种,标记以谁开头的是不行的,我感觉有点不好理解,如果不懂举组样例在纸上写一下就会比较清楚了 #include<io ...

  8. Problem A: 小火山的跳子游戏 多校训练2(小火山专场)(周期)

    题目链接:http://acm.zzuli.edu.cn/zzuliacm/problem.php?cid=1158&pid=0 zzuli 1905  题意:如果k=1的话是1,2,3,4. ...

  9. 从内存溢出看Java 环境中的内存结构(转)

    作为有个java程序员,我想大家对下面出现的这几个场景并不陌生,倍感亲切,深恶痛绝,抓心挠肝,一定会回过头来问为什么为什么为什么会这样,嘿嘿,让我们看一下我们日常在开发过程中接触内存溢出的异常: Ex ...

  10. 转:全面剖析C#正则表达式

    到目前为止,许多的编程语言和工具都包含对正则表达式的支持,当然.NET也不例外,.NET基础类库中包含有一个名称空间和一系列可以充分发挥规则表达式威力的类.         正则表达式的知识可能是不少 ...