配置iptables防火墙(一)

配置iptables防火墙

成都创新互联公司10多年成都企业网站建设服务;为您提供网站建设,网站制作,网页设计及高端网站定制服务,成都企业网站建设及推广,对玻璃隔断等多个领域拥有丰富的网站制作经验的网站建设公司。

管理iptables规则

1、拒绝所有入站协议的数据包

[root@s2 ~]# iptables -P INPUT DROP

2、允许系统管理员从192.168.10.100/24网段使用SSH方式远程防火墙主机

[root@s2 ~]# iptables -A INPUT -p tcp --dport 22 -s 192.168.10.100/24 -j ACCEPT

3、查看filter表INPUT链中的所有规则,同时显示各条规则的顺序号

[root@s2 ~]# iptables  -L INPUT --line-numbers

4、查看filter表各链中所有规则的相信信息,同时以数字的形式显示地址和端口信息

[root@s2 ~]# iptables –vnL注意-L选项放在最后,否则会将vn当成链名

Chain INPUT (policy DROP 47 packets, 10544 bytes)

pkts bytes target     prot opt in     out     source               destination        

 732 51752 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:22

   0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0          

   0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0          

   0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0          

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target     prot opt in     out     source               destination        

Chain OUTPUT (policy ACCEPT 566 packets, 57384 bytes)

pkts bytes target     prot opt in     out     source               destination        

Chain RH-Firewall-1-INPUT (0 references)

pkts bytes target     prot opt in     out     source               destination  

5、删除filter表INPUT链中的第二条规则

[root@s2 ~]# iptables -D INPUT 2

6、清空filter表、nat表、mangle表各链中的所有规则

[root@s2 ~]# iptables –F不指定表名时默认清空filter表

[root@s2 ~]# iptables -t nat -F

[root@s2 ~]# iptables -t mangle -F

7、将filter表中FORWARD规则链的默认策略设为DROP

[root@s2 ~]# iptables -t filter -P FORWARD DROP

8、将filter表中OUTPUT规则链的默认策略设为ACCEPT

[root@s2 ~]# iptables -P OUTPUT ACCEPT

9、获得iptables相关选项用法的帮助信息

查看iptables命令中关于icmp协议的帮助信息

[root@s2 ~]# iptables -p icmp –h

10、在raw表中新增一条自定义的规则链,链名为TCP_PACKETS

[root@s2 ~]# iptables -t raw -N TCP_PACKETS

[root@s2 ~]# iptables -t raw -L

Chain PREROUTING (policy ACCEPT)

target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination        

Chain TCP_PACKETS (0 references)

target     prot opt source               destination

11、清空用户自定义的所有规则链

[root@s2 ~]# iptables -t raw -X

条件匹配

1、通用(general)条件匹配

 拒绝进入防火墙的所有icmp协议数据包

[root@s2 ~]# iptables -I INPUT -p icmp -j REJECT

2、允许防火墙转发除icmp协议以外的所有数据包(使用惊叹号! 可以将条件相反)

[root@s2 ~]# iptables -A FORWARD -p ! icmp -j ACCEPT

[root@s2 ~]# iptables -L FORWARD

Chain FORWARD (policy DROP)

target     prot opt source               destination        

ACCEPT    !icmp --  anywhere             anywhere

3、拒绝转发来自192.168.1.11主机的数据,允许转发来自192.168.0.0/24网段的数据

[root@s2 ~]# iptables -A FORWARD -s 192.168.1.11 -j REJECT

[root@s2 ~]# iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

4、丢弃从外网接口(eth2)进入防火墙本机的源地址为私网

[root@s2 ~]# iptables -A INPUT -i eht1 -s 192.168.0.0/24 -j DROP

5、封锁某个IP网段,设置两小时后解锁

[root@s2 ~]# iptables -I INPUT -s 192.168.1.0/24 -j DROP

[root@s2 ~]# iptables -I FORWARD -s 192.168.1.0/24 -j DROP

[root@s2 ~]# at now +2 hours设置2小时后解锁

at> iptables -D INPUT 1

at> iptables -D FORWARD 1

job 3 at 2010-04-25 19:52此处按Ctrl+D组合键提交任务

6、允许本机开放从TCP端口20~1024提供的应用服务

[root@s2 ~]# iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT

[root@s2 ~]# iptables -A OUTPUT -p tcp --dport 20:1024 -j ACCEPT

7、作为网关使用时,允许转发来自192.168.0.0/24局域网段的DNS解析请求数据包

[root@s2 ~]# iptables -A FORWARD -s 192.168.0.0/24 -p udp --dport 53 -j ACCEPT

[root@s2 ~]# iptables -A FORWARD -d 192.168.0.0/24 -p udp --sport 53 -j ACCEPT

--dport 目标端口  --sport  源端口


8、拒绝从外网接口(eth2)直接访问防火墙本机的数据包,但是允许响应防火墙TCP请求的数据包进入

[root@s2 ~]# iptables -I INPUT -i eth2 -p tcp --tcp-flags SYN,RST,ACK SYN -j REJECT

[root@s2 ~]# iptables -I INPUT -i eth2 -p tcp --tcp-flags ! SYN,RST,ACK SYN -j ACCEPT

--tcp-flags  用于查找数据包的TCP标记位

9、禁止其他主机ping防火墙主机,但是允许从防火墙上ping其他主机(允许接受ICMP回应数据)

[root@s2 ~]# iptables -A INPUT -p icmp --icmp-type Echo-Request -j DROP

[root@s2 ~]# iptables -A INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT

[root@s2 ~]# iptables -A INPUT -p icmp --icmp-type destination-Unreachable -j ACCEPT

Echo-Request 数值代码为8  Echo-Reply 数值代码为0  destination-Unreachable  数值代码为3,分别对应ICMP协议的请求、回显、目标不可达数据

10、禁止转发来自MAC地址为00-50-56-C0-00-01的主机的数据包。

[root@s2 ~]# iptables -A FORWARD -m mac --mac-source 00:50:56:C0:00:01 -j DROP

-m  模块关键字的形式调用显示匹配

11、允许防火墙本机对外开放TCP端口20、21、25、110以及被动模式FTP端口1250~1280

[root@s2 ~]# iptables -A INPUT -p tcp -m multiport --dport 20,21,25,11,1250:1280 -j ACCEPT--dports  端口列表 或–sports端口列表

12、禁止转发源IP地址为192.168.1.20~192.168.1.199的TCP数据包

[root@s2 ~]# iptables -A INPUT -p tcp -m multiport --dport 20,21,25,11,1250:1280 -j ACCEPT--src-range IP地址范围  或者  --dst-rangeIP地址范围

13、禁止转发与正常TCP连接无关的非—syn请求数据包(如网络中可能存在的一些非法***数据包)

[root@s2 ~]# iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP  state  检查数据包连接状态 常见的数据包状态主要包括NEW(与任何连接无关)、ESTABLISHED(响应请求或者已建立连接的)和RELATED(与已有连接有相关性的,如FTP数据连接)

14、拒绝访问防火墙的新数据包,但允许响应连接或已有连接相关的数据包

[root@s2 ~]# iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

15、在服务器中设置防火墙策略,只开放本机的Web服务(80端口)、FTP服务(20、21端口、20450、20480),放行外部主机发往服务器其他端口的应答数据包,将其他入站数据包均予以丢弃处理

[root@s2 ~]# iptables -I INPUT -p tcp -m multiport --dport 20,21,80 -j ACCEPT

[root@s2 ~]# iptables -I INPUT -p tcp --dport 20450:20480 -j ACCEPT

[root@s2 ~]# iptables -I INPUT -p tcp -m state  --state ESTABLISHED -j ACCEPT

[root@s2 ~]# iptables -P  INPUT DROP将默认策略设为DROP

数据包控制

1、对于尝试通过SSH方式登录防火墙主机的访问数据,记录日志信息并禁止其他访问

iptables -I INPUT -p tcp --dport 22 -j DROP

iptables -I INPUT -p tcp --dport 22 -j LOGLOG 在、var/log/messages文件中记录日志信息


2、为了避免日志记录过于频繁,通常结合LIMIT方式显示匹配(-吗limit)对日志写入频繁进行限制。以下规则用于将日志的频繁限制为平均三次/分钟,允许的峰值为八次

[root@s2 ~]# iptables -R INPUT 1 -p tcp --dport 22 -m limit --limit 3/minute --limit-burst 8 -j LOG

3、自定义一个新的链MyLAN1,转发自/至192.168.1.0、24网段的数据包均较给该链中的规则处理

[root@s2 ~]# iptables -t filter -N MyLAN1

[root@s2 ~]# iptables -A FORWARD -s 192.168.1.0/24 -j MyLAN1

[root@s2 ~]# iptables -A FORWARD -d 192.168.1.0/24 -j MyLAN1

[root@s2 ~]# iptables -A MyLAN1 -p icmp -j DROP

SNAT(源地址转换)修改数据包的源IP地址

DNAT(目标地址转换)修改数据包的目标IP地址

使用防火墙脚本

1、直接执行iptables-save命令时,将会把当前设置的防火墙信息输出到终端

[root@s2 ~]# iptables-save

# Generated by iptables-save v1.3.5 on Sun Apr 25 19:41:15 2010

*filter

:INPUT DROP [456:29475]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [1855:180828]

:MyLAN1 - [0:0]

:RH-Firewall-1-INPUT - [0:0]

-A INPUT -p tcp -m tcp --dport 22 -m limit --limit 3/min --limit-burst 8 -j LOG

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

-A FORWARD -s 192.168.1.0/255.255.255.0 -j MyLAN1

-A FORWARD -d 192.168.1.0/255.255.255.0 -j MyLAN1

-A MyLAN1 -p icmp -j DROP

COMMIT

# Completed on Sun Apr 25 19:41:15 2010

2、将当前调好的iptables规则保存到配置文件,并通过iptables服务自动加载

[root@s2 ~]# iptables-save > /etc/sysconfig/iptables

[root@s2 ~]# service iptables restart

Flushing firewall rules: [  OK  ]

Setting chains to policy ACCEPT: filter [  OK  ]

Unloading iptables modules: [  OK  ]

Applying iptables firewall rules: [  OK  ]

Loading additional iptables modules: ip_conntrack_netbios_ns [  OK  ]

[root@s2 ~]# chkconfig --level 35 iptables on

3、从保存的规则配置文件中导入iptables规则

[root@s2 ~]# [root@s2 ~]# chkconfig --level 35 iptables on

编写防火墙脚本

1、在脚本文件中预先将防火墙主机的IP地址、网络接口、局域网地址等定义为变量。

#!/bin/bash

INET_IP="214.16.18.20"

INET_IF="eth2"

LAN_IP="192.168.0.1"

LAN_IF="eth0"

2、在脚本文件中预先加载iptables需要用到的内核模块

/sbin/depmod -a

/sbin/modprobe ip_tables

/sbin/modprobe ip_conntrack

/sbin/modprobe iptable_filter

/sbin/modprobe iptable_nat

/sbin/modprobe iptable_mangle

/sbin/modprobe iptable_raw

/sbin/modprobe ipt_REJECT

/sbin/modprobe ipt_LOG

/sbin/modprobe ipt_iprange

/sbin/modprobe xt_tcpudp

/sbin/modprobe xt_state

/sbin/modprobe xt_multiport

/sbin/modprobe xt_mac

/sbin/modprobe xt_limit

/sbin/modprobe ip_nat_ftp

/sbin/modprobe ip_nat_irc

/sbin/modprobe ip_conntrack_ftp

/sbin/modprobe ip_conntrack_irc

3开启路由转发功能

 在脚本文件中开启防火墙主机的路由转发功能

[root@s2 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

[root@s2 ~]# cat /proc/sys/net/ipv4/ip_forward

1

 通过修改/etc/sysctl.conf文件中的方式开启防火墙主机的路由转发功能。

net.ipv4.ip_forward = 1

4、用户设置的iptables规则

 删除用户的自定义的链,清空以保存的规则,将filter表的默认策略恢复为允许

/sbin/iptables  -X

/sbin/iptables  -t      nat     -X

/sbin/iptables  -t      mangle  -X

/sbin/iptables  -t      raw     -X

/sbin/iptables  -F

/sbin/iptables  -t      nat     -F

/sbin/iptables  -t      mangle  -F

/sbin/iptables  -t      raw     -F

/sbin/iptables  -p INPUT ACCEPT

/sbin/iptables  -p OUTPUT ACCEPT

/sbin/iptables  -p FORWARD ACCEPT

上机实验部分

编写iptables脚本实现IP地址、端口过滤

1、将iptables的filter表中INPUT、FORWARD链的缺省策略设为DROP

[root@s2 ~]# iptables -P INPUT DROP

[root@s2 ~]# iptables -PFORWARD DROP

2、

(1)、允许从Internet访问网关服务器的指定端口,并记录访问日志没15分钟记录一次

[root@s2 ~]# iptables -A INPUT -p tcp --dport 22 -s 201.12.13.14/24 -j ACCEPT

[root@s2 ~]# iptables -I INPUT -p tcp --dport 22 -m limit --limit 15/minute  -j LOG

(2)、允许来自内网IP为:192.168.1.5/24的主机访问网关的22号端口

[root@s2 ~]# iptables -A INPUT -p tcp --dport 22 -s 192.168.1.5/24 -j ACCEPT

(3)、允许MAC地址为00:0C:27:30:4E:5D的主机访问网关的22号端口

[root@s2 ~]# iptables -A INPUT -p tcp --dport 22 -m mac --mac-source 00:0C:27:30:4E:5D -j ACCEPT

(4)、仅允许局域网主机(LAN1:192.168.1.0/24)访问3128端口的代理服务

[root@s2 ~]# iptables  -A INPUT -p tcp --dport 3128  -s 192.168.1.0/24  -j ACCEPT

(5)、允许局域网主机访问DNS服务器

[root@s2 ~]# iptables -AFORWARD -s 192.168.1.5/24 -d 192.168.2.2/24 -p udp --dport 53 -j ACCEPT

[root@s2 ~]# iptables -A FORWARD -s 192.168.2.2/24 -d 192.168.1.5/24 -p udp --dport 53 -j ACCEPT

3、开启路由转发

/etc/sysctl.conf

net.ipv4.ip_forward = 1

 重新加载/etc/sysctl.conf文件中的sysctl配置

[root@s2 ~]# sysctl -p

net.ipv4.ip_forward = 1

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.accept_source_route = 0

kernel.sysrq = 0

kernel.core_uses_pid = 1

net.ipv4.tcp_syncookies = 1

kernel.msgmnb = 65536

kernel.msgmax = 65536

kernel.shmmax = 4294967295

kernel.shmall = 268435456

4、编写脚本

net_ip="201.12.13.1/24"

inet_if="eth0"

inet2_ip="192.168.2.1"

inet2_if="eth2"

yuan_ip="201.12.13.14/24"

lan_ip="192.168.1.0/24"

lan_mac="00:0C:27:30:4E:5D"

dns="192.168.2.2/24"

/sbin/depmod -a

/sbin/modprobe ip_tables

/sbin/modprobe ip_conntrack

/sbin/modprobe iptable_filter

/sbin/modprobe iptable_nat

/sbin/modprobe iptable_mangle

/sbin/modprobe iptable_raw

/sbin/modprobe ipt_REJECT

/sbin/modprobe ipt_LOG

/sbin/modprobe ipt_iprange

/sbin/modprobe xt_tcpudp

/sbin/modprobe xt_state

/sbin/modprobe xt_multiport

/sbin/modprobe xt_mac

/sbin/modprobe xt_limit

/sbin/modprobe ip_nat_ftp

/sbin/modprobe ip_nat_irc

/sbin/modprobe ip_conntrack_ftp

/sbin/modprobe ip_conntrack_irc

/sbin/iptables -P INPUT DROP

/sbin/iptables -P FORWARD DROP

/sbin/iptables -A INPUT -p tcp --dport 22 -s $yuan_ip -j ACCEPT

/sbin/iptables -I INPUT -p tcp --dport 22 -m limit --limit 15/minute  -j LOG

/sbin/iptables -A INPUT -p tcp --dport 22 -s $lan_ip -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 22 -m mac --mac-source $lan_mac -j ACCEPT

/sbin/iptables  -A INPUT -p tcp --dport 3128  -s $lan_ip  -j ACCEPT

/sbin/iptables -A FORWARD -s $lan_ip -d $dns -p udp --dport 53 -j ACCEPT

/sbin/iptables -A FORWARD -s $dns -d $lan_ip -p udp --dport 53 -j ACCEPT


网站名称:配置iptables防火墙(一)
当前链接:http://csdahua.cn/article/jhoddh.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流