1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 列出规则,供查看
iptables -L -n
# stop iptables, 如果清空规则前没有停止,ssh 会断掉,必须重启系统
/etc/init.d/iptables stop
# 清空规则
iptables -F
# 允许内网ip访问所有端口
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
# 允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
# 允许访问22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许访问80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 允许所有ip访问80端口
iptables -A INPUT -p tcp -s 0/0 --dport 80 -j ACCEPT
# 允许本地发起的连接返回数据到任意端口。本地作为客户端可以发起到任何ip和端口的请求,这条规则确保能够收到返回
#------------------when conntrack unkonw error use this
# sudo /sbin/iptables -A OUTPUT -m state --state NEW,ESTABLISHED -j ACCEPT
# sudo /sbin/iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
# sudo /sbin/iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
#---------------------------------------------------------------
iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
# 允许80端口返回数据
iptables -A OUTPUT -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT
# 允许返回数据给所有ip所有端口 允许所有本机向外的访问
iptables -A OUTPUT -j ACCEPT
# 除上面允许的规则,抛弃所有INPUT请求 (注意:如果22端口未加入允许规则,SSH链接会直接断开。)
iptables -P INPUT DROP
# 除上面允许的规则,抛弃所有FORWARD请求
iptables -P FORWARD DROP
# 除上面允许的规则,抛弃所有OUTPUT请求
iptables -P OUTPUT DROP
# 备份
iptables-save > /etc/iptables/iptables.rules
# (cat /etc/sysconfig/iptables > /etc/iptables/iptables.rules )
# 保存(ArchLinux系统下的路径可能和其他系统下的路径不同)
sudo /etc/rc.d/init.d/iptables save
# 重新启动
sudo service iptables restart
# (/etc/init.d/iptables restart)
# 列出规则,供查看
iptables -L -n
# iptables 安装后 iptables 命令无效,可能是因为该用户的PATH不包括/sbin和/usr/sbin, 可用 sudo /sbin/iptables 运行

文章转自:http://www.badnotes.com/2013/10/03/iptables/

原文作者: liups.com

原文链接: http://liups.com/posts/1d0c2853/

许可协议: 知识共享署名-非商业性使用 4.0 国际许可协议