最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
linux中iptables防火墙设置学习笔记
时间:2015-06-23 编辑:简简单单 来源:一聚教程网
以下内容总结自鸟哥的 Linux 私房菜 -- 服务器(第三版),同时推荐喜欢Linux的同学们学习阅读。
For Linux Kernel 2.6+
I. 图解防火墙
上面的图示很复杂喔!不过基本上你依旧可以看出来,我们的 iptables 可以控制三种封包的流向:
封包进入 Linux 主机使用资源 (路径 A): 在路由判断后确定是向 Linux 主机要求数据的封包,主要就会透过 filter 的 INPUT 链来进行控管;
封包经由 Linux 主机的转递,没有使用主机资源,而是向后端主机流动 (路径 B): 在路由判断之前进行封包表头的修订作业后,发现到封包主要是要透过防火墙而去后端,此时封包就会透过路径 B 来跑动。 也就是说,该封包的目标并非我们的 Linux 本机。主要经过的链是 filter 的 FORWARD 以及 nat 的 POSTROUTING, PREROUTING。 这路径 B 的封包流向使用情况,我们会在本章的 9.5 小节来跟大家作个简单的介绍。
封包由 Linux 本机发送出去 (路径 C): 例如响应客户端的要求,或者是 Linux 本机主动送出的封包,都是透过路径 C 来跑的。先是透过路由判断, 决定了输出的路径后,再透过 filter 的 OUTPUT 链来传送的!当然,最终还是会经过 nat 的 POSTROUTING 链。
II. 图解防火墙(隐藏不常用的mangle)
III. 防火墙操作
IV. 防火墙实例1
[root@www ~]# vim bin/firewall.sh
#!/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin; export PATH
# 1. 清除规则
iptables -F
iptables -X
iptables -Z
# 2. 设定政策
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
# 3~5. 制订各项规则
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
#iptables -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT
# 6. 写入防火墙规则配置文件
/etc/init.d/iptables save
[root@www ~]# sh bin/firewall.sh
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
V. 防火墙实例2
[root@www ~]# mkdir -p /usr/local/virus/iptables
[root@www ~]# cd /usr/local/virus/iptables
[root@www iptables]# vim iptables.rule
#!/bin/bash
# 请先输入您的相关参数,不要输入错误了!
EXTIF="eth0" # 这个是可以连上 Public IP 的网络接口
INIF="eth1" # 内部 LAN 的连接接口;若无则写成 INIF=""
INNET="192.168.100.0/24" # 若无内部网域接口,请填写成 INNET=""
export EXTIF INIF INNET
# 第一部份,针对本机的防火墙设定!##########################################
# 1. 先设定好核心的网络功能:
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
for i in /proc/sys/net/ipv4/conf/*/{rp_filter,log_martians}; do
echo "1" > $i
done
for i in /proc/sys/net/ipv4/conf/*/{accept_source_route,accept_redirects,\
send_redirects}; do
echo "0" > $i
done
实际应用VPS安全之防火墙设置
iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表。
filter负责过滤数据包,包括的规则链有,input,output和forward;
nat则涉及到网络地址转换,包括的规则链有,prerouting,postrouting和output;
mangle表则主要应用在修改数据包内容上,用来做流量整形的,默认的规则链有:INPUT,OUTPUT,NAT,POSTROUTING,PREROUTING;
input匹配目的IP是本机的数据包;
forward匹配流经本机的数据包;
prerouting用来修改目的地址用来做DNAT;
postrouting用来修改源地址用来做SNAT。
I. iptables的语法
iptables -A INPUT -j ACCEPT
-A --append # 向规则链中添加一条规则,默认被添加到末尾
iptables -D INPUT -j ACCEPT
-D --delete # 删条规则链
-A 向规则链中添加一条规则,默认被添加到末尾
-T 指定要操作的表,默认是filter
-D 从规则链中删除规则,可以指定序号或者匹配的规则来删除
-R 进行规则替换
-I 插入一条规则,默认被插入到首部
-F 清空所选的链,重启后恢复
-N 新建用户自定义的规则链
-X 删除用户自定义的规则链
-p 用来指定协议可以是tcp,udp,icmp等也可以是数字的协议号,
-s 指定源地址
-d 指定目的地址
-i 进入接口
-o 流出接口
-j 采取的动作,accept,drop,snat,dnat,masquerade
--sport 源端口
--dport 目的端口,端口必须和协议一起来配合使用
-P 定义预设规则(Policy)
语法: iptables -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP]
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
II. iptables常用操作
iptables -L #列出iptables规则
iptables -F #清除iptables内置规则
iptables -X #清除iptables自定义规则
# 可以加入-n查看
/etc/rc.d/init.d/iptables save # 保存规则,只有保存规则后重启机器才不会生效
/etc/init.d/iptables status # 查看规则
/etc/init.d/iptables stop # 停用防火墙
chkconfig –level 35 iptables off # 停止防火墙服务
III. 检查iptables是否生效
# 检测是否打开了22端口
telnet www.phpgao.com 22
# 返回telnet: connect to address 104.224.144.xxx: Connection refused
IV. iptables规则的导出和还原
iptables-save > somefile
iptables-restore < somefile
V. 推荐的规则
*filter
# Allow all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
#-A OUTPUT -o lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
# Accept all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow all outbound traffic - you can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT
# Allow HTTP and HTTPS connections from anywhere (the normal ports for websites and SSL).
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# DNS(not need this rule, as we only accept the input with [ESTABLISHED,RELATED])
#-A INPUT -p udp --dport 53 -j ACCEPT
# DNS
#-A OUTPUT -p udp --dport 53 -j ACCEPT
# Allow ports for testing
#-A INPUT -p tcp --dport 8080:8090 -j ACCEPT
# Allow ports for MOSH (mobile shell)
#-A INPUT -p udp --dport 60000:61000 -j ACCEPT
# Allow SSH connections
# The -dport number should be the same port number you set in sshd_config
-A INPUT -p tcp -m state --state NEW --dport xxx -j ACCEPT
# Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
#-A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
#-A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
# DDoS
-A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
# Log
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A OUTPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Log iptables denied calls
# -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Allow shadowsocks connections
# The -dport number should be the same port number you set in config.json
-A INPUT -p tcp --dport xxx -j ACCEPT
# Reject all other inbound - default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECT
#-A OUTPUT -j DROP
相关文章
- win11内核隔离和内存完整性介绍 10-31
- win10全屏缩放设置教程 10-31
- win10系统备份出错解决教程 10-31
- win10打开软件每次都要询问解决教程 10-31
- win10更新驱动后设备出现异常解决教程 10-31
- win10一直提示找到可能不需要的应用解决教程 10-31