iptables 防火墙

iptables 防火墙

iptables 文件所在位置: /etc/sysconfig/iptables

开启/关闭iptables :

1、service iptables start/stop

2、setup-firewall configure-enabled/disabled

开启服务器80端口:

# iptables -I INPUT -p tcp --dport 80 -j ACCEPT

同时开启多个端口:

# iptables -I INPUT -p tcp -m multiport --dport 20,21,22,25,53,80,110,143,3306 -j ACCEPT

拒绝所有端口访问:

# iptables -A INPUT -p tcp -j REJECT

iptables策略规则是由上而下

iptables配置文件示例:

# vi /etc/sysconfig/iptables

*filter

:INPUT ACCEPT [8:941]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

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

-A INPUT -p tcp -m  multiport --dport 20,21,22,25,53,80,110,143,3306 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-port-unreachable

-A OUTPUT -j ACCEPT

COMMIT

:wq

iptables 开启scp服务:(默认是不开启的)

# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

注:iptables中允许的服务(端口)要写在拒绝的上面,可进/etc/sysconfig/iptables里自行调整。

- A:在指定链的末尾添加一条新的规则

- D:删除指定链中的某一条规则

- I:在指定链中插入一条新规则(默认在开头)

- R:修改、替换规则

- L:查看指定链中的所有规则

- F:清空指定链中的所有规则

- N:新建一条用户自定义的规则链

- X:删除指定表中用户自定义的规则链

- P:设置指定链的默认策略

- n:使用数字形式显示输出结果

- v:查看规则列表时显示详细信息

- V:查看iptables命令工具的版本信息

- h:查看命令帮助信息

--line-numbers:查看规则表时,显示规则在链中的顺序号

规则表: filter表(过滤)            nat表(nat)

mangle表(标记)            raw表(跟踪)

规则链: INPUT链 、   OUTPUT链  、  FORWARD链

PREROUTING链  、  POSTROUTING链

# iptables - t filter - A INPUT - p tcp - j ACCEPT

# iptables - I INPUT - p udp - j ACCEPT (默认为filter表)

# iptables - I INPUT 2 - p icmp - j ACCEPT (作为第2条规则)

查看filter表INPUT链中的所有规则,并显示顺序号:

# iptables - L INPUT --line-numbers

查看filter表各链中所有规则的详细信息(以数字形式):

# iptables -vnL

删除nat表INPUT链中的第2条规则:

# iptables -t nat -D INPUT 2

清空mangle表各链中的所有规则:

iptables - t mangle - F

ACCEPT (允许)         DROP(丢弃)        REJECT(拒绝)

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

# iptables - t filter - P(大写)  FORWARD DROP

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

# iptables - p icmp - h

在raw表中新增一条自定义规则链TCP_PACKETS:

# iptables  - t raw  - N  TCP_PACKETS

# iptables - t raw - L

# ipatbles - t raw - X

# iptables - I INPUT - p icmp - j REJECT

# iptables - A FORWARD - p ! icmp - j ACCEPT             (!意为除了)

# iptables - A FORWARD - s 192.168.1.11 - j REJECT

# iptables - A FORWARD - s 192.168.0.0/24 - j REJECT

- i  eth0   (进的端口)

- o  eth1   (出的端口)

# iptables - A INPUT - i eth1 - s 192.168.0.0/16  - j DROP

设置在2个小时后删除规则:

# at now + 2 hours

> iptables - D INPUT 1

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

允许管理员从202.13.0.0/16网段使用ssh方式远程登录:

# iptables - A INPUT - p tcp --dport 22 - S 202.13.0.0/16 - j ACCEPT

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

# iptables - A INPUT - p tcp --dport 20:1024 - j ACCEPT

# iptables - A OUTPUT - p tcp --sport 20:1024 - j ACCEPT

# iptables - A FORWARD - s 192.168.0.0/24 - p udp --dport 53 - j ACCEPT  (53为DNS端口)

# iptables - A FORWARD - d 192.168.0.0/24 - p udp --sport 53 - j ACCEPT

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

# iptables - p INPUT DROP

# iptables - I INPUT - i eth1 - p tcp --tcp-flags SYN,RST,ACK  SYN  - j REJECT

# iptables - I INPUT - i eth1 - p tcp --tcp-flags ! --syn - j ACCEPT

禁止其他主机ping防火墙,但允许从防火墙上ping其他主机:

# iptables - A INPUT - p icmp --icmp-type Echo-Request - j DROP

# iptables - A INPUT - p icmp --icmp-type Echo-Reply - j ACCEPT

# iptables - A INPUT - p icmp --icmp-type destination-Unreachable - j ACCEPT

# iptables - A FORWARD - m mac --mac-source 00:0c:29:27:55:3F - j DROP

# iptables - A INPUT - p tcp - m multiport --dport 20,21,25,110,1250:1280 - j ACCEPT

# iptables - A FORWARD - p tcp - m iprange --src-range 192.168.1.20-192.168.1.99 - j DROP

# iptables - A FORWARD - m state --state NEW - p tcp ! --syn - j DROP

# ipatbles - A INPUT - p tcp - m state --state RELATED,ESTABLISHED - j ACCEPT

LOG是在/var/log/messages中记录日志信息,然后将数据包给下一个规则:

# iptables - I INPUT - p tcp --dprot 22 - j LOG

# iptables - R INPUT 1 tcp --dport 22 - m limit --limit 3/minute  --limit-burst 8 - j LOG

# iptables - t filter - N mylan1

# iptables - A FORWARD -s 192.168.1.0/24  - j mylan1

# iptables - A mylan1 - p icmp - j DROP

iptables-save(保存)             iptables-restore(恢复)

# iptables-save  > /etc/sysconfig/iptables

# service iptables restart

# iptables-restore < /etc/sysconfig/iptables

开启路由转发功能:

# vi /etc/sysctl.conf

net.ipv4.ip_forward = 1

# sysctl - p

本文转自linux博客51CTO博客,原文链接http://blog.51cto.com/yangzhiming/834591如需转载请自行联系原作者

yangzhimingg

上一篇:linux防火墙
下一篇:linux 下防火墙 iptables 的使用