ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Linux防火墙入门:iptables入门(转)

Linux防火墙入门:iptables入门(转)

原创 Linux操作系统 作者:ilg 时间:2019-05-14 09:48:05 0 删除 编辑
Linux防火墙入门:iptables入门(转)

  这一节开始说明 iptables 的观念及用法

  iptables 中的指令,均需区分大小写。

  ipchains 和 iptables 在语法上的主要的差异,注意如下:

  1. 在 ipchains 中,诸如 input 链,是使用小写的 chains 名,在 iptables 中,要改用大写 INPUT。2. 在 iptables 中,要指定规则是欲作用在那一个规则表上(使用 -t 来指定,如 -t nat),若不指定,则预设是作用在 filter 这个表。3. 在 ipchains 中, -i 是指介面(interface),但在 iptables 中,-i 则是指进入的方向,且多了 -o,代表出去的方向。4. 在 iptables 中,来源 port 要使用关键字 --sport 或 --source-port5. 在 iptables 中,目的 port 要使用关键字 --dport 或 --destination-port6. 在 iptables 中,"丢弃" 的处置动作,不再使用 DENY 这个 target,改用 DROP。7. 在 ipchains 的记录档功能 -l,已改为目标 -j LOG,并可指定记录档的标题。8. 在 ipchains 中的旗标 -y,在 iptables 中可用 --syn 或 --tcp-flag SYN,ACK,FIN SYN9. 在 iptables 中,imcp messages 型态,要加上关键字 --icmp-type,如: iptables -A OUTPUT -o eth0 -p icmp -s $FW_IP --icmp-type 8 -d any/0 -j ACCEPT

  iptables 使用时的样板

  在设定 iptables 的封包过滤规则时,有几个样板的动作,若先熟悉它们,往后就可自行套用,依此类推,很快地,您就可以进入这个天地之中。

  观察目前的设定

  作法如下:

  iptables -L -niptablse -t nat -L -n

  定义变数

  FW_IP="163.26.197.8"

  打开核心 forward 功能

  作法如下:

  ###-----------------------------------------------------#### 打开 forward 功能###-----------------------------------------------------###echo "1" > /proc/sys/net/ipv4/ip_forward

  清除所有的规则

  一开始要先清除所有的规则,重新开始,以免旧有的规则影响新的设定。作法如下:

  ###-----------------------------------------------------#### 清除先前的设定###-----------------------------------------------------#### 清除预设表 filter 中,所有规则链中的规则iptables -F# 清除预设表 filter 中,使用者自订链中的规则iptables -X# 清除mangle表中,所有规则链中的规则iptables -F -t mangle# 清除mangle表中,使用者自订链中的规则iptables -t mangle -X# 清除nat表中,所有规则链中的规则iptables -F -t nat# 清除nat表中,使用者自订链中的规则iptables -t nat -X

  选定预设的政策

  接着,要选定各个不同的规则链,预设的政策为何。作法如下:

  预设全部丢弃:

  ###-----------------------------------------------------#### 设定 filter table 的预设政策###-----------------------------------------------------###iptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

  或者预设全部接受:

  ###-----------------------------------------------------#### 设定 filter table 的预设政策###-----------------------------------------------------###iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

  各个规则链的预设政策可独立自主的设定,不必受其它链的影响。

  以下练习,若目标为 DROP,则 policy 请设为 ACCEPT;若目标为 ACCEPT,则 policy 请设为 DROP,如此方可看出效果。

  开放某一个介面

  作法如下:

  iptables -A INPUT -i lo -j ACCEPTiptables -A OUTPUT -o lo -j ACCEPT注:IPFW 或 Netfilter 的封包流向,local process 不会经过 FORWARD Chain,因此 lo 只在 INPUT 及 OUTPUT 二个 chain 作用。iptables -A INPUT -i eth1 -j ACCEPTiptables -A OUTPUT -o eth1 -j ACCEPTiptables -A FORWARD -i eth1 -j ACCEPTiptables -A FORWARD -o eth1 -j ACCEPT

  IP 伪装

  使内部网路的封包经过伪装之后,使用对外的 eth0 网卡当作代表号,对外连线。作法如下:

  ###-----------------------------------------------------#### 启动内部对外转址###-----------------------------------------------------###iptables -t nat -A POSTROUTING -o eth0 -s 172.16.0.0/16 -j SNAT --to-source $FW_IP

  上述指令意指:把 172.16.0.0/16 这个网段,伪装成 $FW_IP 出去。

  虚拟主机

  利用转址、转 port 的方式,使外部网路的封包,可以到达内部网路中的伺服主机,俗称虚拟主机。这种方式可保护伺服主机大部份的 port 不被外界存取,只开放公开服务的通道(如 Web Server port 80),因此安全性甚高。

  作法如下:

  ###-----------------------------------------------------#### 启动外部对内部转址###-----------------------------------------------------#### 凡对 $FW_IP:80 连线者, 则转址至 172.16.255.2:80iptables -t nat -A PREROUTING -i eth0 -p tcp -d $FW_IP --dport 80 -j DNAT --to-destination 172.16.255.2:80

  开放内部主机可以 telnet 至外部的主机

  开放内部网路,可以 telnet 至外部主机。

  作法如下:(预设 policy 为 DROP)

  ###-----------------------------------------------------#### open 外部主机 telnet port 23###-----------------------------------------------------###iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 23 -j ACCEPTiptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 23 -d $FW_IP --dport 1024:65535 -j ACCEPT

  开放邮包转递通道

  开放任意的邮件主机送信包给你的 Mail Server,而你的 Mail Server 也可以送信包过去。

  作法如下:(预设 policy 为 DROP)

  ###-----------------------------------------------------#### open SMTP port 25###-----------------------------------------------------#### 以下是:别人可以送信给你iptables -A INPUT -i eth0 -p tcp -s any/0 --sport 1024:65535 -d $FW_IP --dport 25 -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp ! --syn -s $FW_IP --sport 25 -d any/0 --dport 1024:65535 -j ACCEPT# 以下是:你可以送信给别人iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 25 -j ACCEPTiptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 25 -d $FW_IP --dport 1024:65525 -j ACCEPT

  开放对外离线下载信件的通道

  开放内部网路可以对外部网路的 POP3 server 取信件。

  作法如下:(预设 policy 为 DROP)

  ###-----------------------------------------------------#### open 对外部主机的 POP3 port 110###-----------------------------------------------------###iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 110 -j ACCEPTiptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 110 -d $FW_IP --dport 1024:65535 -j ACCEPT

  开放观看网页的通道

  开放内部网路可以观看外部网路的网站。

  作法如下:(预设 policy 为 DROP)

  ###-----------------------------------------------------#### open 对外部主机的 HTTP port 80###-----------------------------------------------------###iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 80 -j ACCEPTiptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 80 -d $FW_IP --dport 1024:65535 -j ACCEPT

  开放查询外部网路的 DNS 主机

  开放内部网路,可以查询外部网路任何一台 DNS 主机。

  作法如下:(预设 policy 为 DROP)

  ###-----------------------------------------------------#### open DNS port 53###-----------------------------------------------------#### 第一次会用 udp 封包来查询iptables -A OUTPUT -o eth0 -p udp -s $FW_IP --sport 1024:65535 -d any/0 --dport 53 -j ACCEPTiptables -A INPUT -i eth0 -p udp -s any/0 --sport 53 -d $FW_IP --dport 1024:65535 -j ACCEPT# 若有错误,会改用 tcp 封包来查询iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 53 -j ACCEPTiptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 53 -d $FW_IP --dport 1024:65535 -j ACCEPT# 开放这台主机上的 DNS 和外部的 DNS 主机互动查询:使用 udpiptables -A OUTPUT -o eth0 -p udp -s $FW_IP --sport 53 -d any/0 --dport 53 -j ACCEPTiptables -A INPUT -i eth0 -p udp -s any/0 --sport 53 -d $FW_IP --dport 53 -j ACCEPT# 开放这台主机上的 DNS 和外部的 DNS 主机互动查询:使用 tcpiptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 53 -d any/0 --dport 53 -j ACCEPTiptables -A INPUT -i eth0 -p tcp ! -y -s any/0 --sport 53 -d $FW_IP --dport 53 -j ACCEPT

  开放内部主机可以 ssh 至外部的主机

  开放内部网路,可以 ssh 至外部主机。

  作法如下:(预设 policy 为 DROP)

  ###-----------------------------------------------------#### open 外部主机 ssh port 22###-----------------------------------------------------###iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 22 -j ACCEPTiptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 22 -d $FW_IP --dport 1024:65535 -j ACCEPT# 以下是 ssh protocol 比较不同的地

  

本文来自:http://www.linuxpk.com/40128.html

-->linux电子图书免费下载和技术讨论基地

·上一篇:Linux防火墙入门:防火墙注意事项

·下一篇:Linux防火墙入门:iptables结构图
 
     最新更新
·安装配置技巧:如何实现自动Logoff

·MandrakeLinux安装(4)

·MandrakeLinux安装(2)

·Linux基本设置技巧:如何限制只有0组的用户可以su成root

·Linux基本设置技巧:如何在console顶部显示当前时间

·Linux基本设置技巧:如何限制用户的最小密码长度

·安装配置技巧:如何使特定用户具有smbmount上的目录的写权限

·安装配置技巧:tcsh如何用当前路径作提示符

·安装配置技巧:如何在consol下定义快捷

·如何修改grub的安装位置

·Linux基本设置技巧:如何使非root用户都不能远程登录

·Linux基本设置技巧:如何用lilo引导不同的运行级别

·Samba的安装

·新手入门之——Linux学习基础

·Linux下中文字体的安装

·Fedora软件包管理器system-config-packages

·Linux查看磁盘分区等命令和相关工具介绍

·Linux如何编译安装源码包软件

·华硕A2C笔记本安装SUSE9.3pro小结

·Linux发行版制作过程中的各个步骤

·FedoraCore5安装后的快速配置

·Fedora4.0中用VMware安装和使用Windows

·安装配置-安装SuseLinux10

·VMware虚拟安装FedoraCore4.0手册

·SlackwareLinux的安装之关於Linux的硬体drivers

·如何在硬碟建置Linux系统之指定安装目的分割区

·如何在硬碟建置Linux系统之指定安装来源(Source)

·RedHatLinux新手入门教程(5)

·RedHatLinux新手入门教程(4)

·RedHatLinux新手入门教程(1)


关于我们 | 联系方式 | 广告合作 | 诚聘英才 | 网站地图 | 网址大全 | 友情链接 | 免费注册

Copyright © 2004 - 2007 All Rights Reserved

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14102/viewspace-116874/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2002-06-18

  • 博文量
    1715
  • 访问量
    1301362