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
转载于:https://blog.51cto.com/yangzhiming/834591