iptables配置Linux开启允许外网访问的端口

  1. netstat -ntpl
  2. iptables -F 清除所有规则链的规则
  3. iptables -X 清除预设表filter中使用者自定链中的规则
  4. iptables -L -n 查看本机关于IPTABLES的设置情况
    /etc/init.d/iptables status
  5. /etc/rc.d/init.d/iptables save
  6. /etc/rc.d/init.d/iptables restart

  1. ACCEPT/DROP
    iptables -P INPUT DROP
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD DROP
    上面的意思是,当超出了IPTABLES里filter表里的两个链规则(INPUT,FORWARD)时,不在这两个规则里的数据包怎么处理呢,那就是DROP(放弃).应该说这样配置是很安全的.我们要控制流入数据包
    而对于OUTPUT链,也就是流出的包我们不用做太多限制,而是采取 ACCEPT,也就是说,不在着个规则里的包怎么办呢,那就是通过.
    可以看出INPUT,FORWARD两个链采用的是允许什么包通过,而OUTPUT链采用的是不允许什么包通过.
    这样设置还是挺合理的,当然你也可以三个链都DROP,但这样做我认为是没有必要的,而且要写的规则就会增加.但如果你只想要有限的几个规则是,如只做WEB服务器.还是推荐三个链都是DROP.
    注:如果你是远程SSH登陆的话,当你输入第一个命令回车的时候就应该掉了.因为你没有设置任何规则.
    重复5,6步骤,查看结果 iptables -nvL

  1. 增加规则
  • svn默认3690:
  1. iptables -I INPUT -i eth0 -p tcp --dport 3690 -j ACCEPT

  2. iptables -I OUTPUT -o eth0 -p tcp --sport 3690 -j ACCEPT

  • ssh:
  1. iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  2. iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
  • http:
  1. iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  2. iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
  • mysql:
  1. iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
  2. iptables -A OUTPUT -p tcp --sport 3306 -j ACCEPT
  • memcached
  1. iptables -A INPUT -p tcp --dport 11211 -j ACCEPT
  2. iptables -A OUTPUT -p tcp --sport 11211 -j ACCEPT
  • mongodb
  1. iptables -A INPUT -p tcp --dport 27017 -j ACCEPT
  2. iptables -A OUTPUT -p tcp --sport 27017 -j ACCEPT
  • 允许PING设置
  1. iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
  2. iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
  3. 禁止PING设置 :iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
  • 配置文件直接编辑:vi /etc/sysconfig/iptables

这里很多人会想到/etc/rc.d/init.d/iptables save指令,但是一旦你这么干了你刚才的修改内容就白做了。。。
具体方法是:
只修改/etc/sysconfig/iptables 使其生效的办法是修改好后先service iptables restart,然后才调用/etc/rc.d/init.d/iptables save, 因为/etc/rc.d/init.d/iptables save会在iptables服务启动时重新加载,要是在重启之前直接先调用了/etc/rc.d/init.d/iptables save那么你 的/etc/sysconfig/iptables 配置就回滚到上次启动服务的配置了,


  1. 备份iptables配置文件
/sbin/iptables-save > /root/iptables-works
加时间戳的配置文件
/sbin/iptables-save > /root/iptables-works-`data+%F`
每次创建iptables配置文件副本时,都创建一个指向最新的文件的链接。
ln -s /root/iptables-works-`date +%F` /root/iptables-works-latest
技巧
  1. 将特定规则放在策略顶部,底部放置通用规则。
避免在策略顶部使用如下的一些通用规则:
iptable -A INPUT -p tcp --dport 22 -j DROP
规则中指定的条件越多,封锁自己的可能性就越小,如下:
iptables -A INPUT -p tcp --dport 22 -s 10.0.0.0.0/8 -d 192.168.100.101 -j DROP
此规则表示在 INPUT 链尾追加一条新规则,将源地址为 10.0.0.0/8、 目的地址是 192.168.100.101、目的端口号是 22 (--dport 22 ) 的 TCP(-p tcp )数据包通通丢弃掉。

2.在策略规则顶部将你的ip列入白名单,可以有效的避免封锁自己的设置:

iptables -I INPUT -s <your ip> -j ACCEPT
  1. 理解现有策略中的所有规则。
设置防火墙策略

应用场景:给工作站配置具有限制性策略的防火墙。

  1. 设置默认规则为丢弃
iptables -P INPUT DROP
设置filter表INPUT链的默认规则是DROP。
#set a default policy of DROP
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
  1. 将用户完成工作所需的最少量服务设置为允许
#set a default policy of DROP
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]

#Accept any related or established connections
-I INPUT 1 -m state --state RELATED,ESABLISHED -j ACCEPT
-I OUTPUT 1 -m state --state RELATED,ESABLISHED -j ACCEPT

#Allow all traffic on the loopback interface
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

#Allow outbound DHCP request
-A output -o eth0 -p udp --dport 67:68 --sport 67:68 -j ACCEPT

#Allow inbound SSH
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT

#Allow outbound email
-A OUTPUT -i eth0 -p tcp -m tcp --dport 25 -m state --state NEW -j ACCEPT

#outbound DNS lookups
-A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT

#Outbound PING requests
-A OUTPUT -o eth0 -p icmp -j ACCEPT

#Outbound Network Time Protocol (NTP) requests
-A OUTPUT -o eth0 -p udp --dport 123 --sport 123 -j ACCEPT

#outbound HTTP
-A OUTPUT -o eth0 -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 443 0m state --state NEW -j ACCEPT
COMMIT
  1. 限制ip地址范围
    阻止一切到 Facebook 的访问连接。首先你使用 host 或者 whois 命令来获取 Facebook 的 IP 地址。
host -t a www.facebook.com
www.facebook.com is an alias for star.c10r.facebook.com.
star.c10r.facebook.com has address 31.13.65.17
whois 31.13.65.17 | grep inetnum
inetnum:        31.13.64.0 - 31.13.127.255

然后使用 CIDR 到 IPv4 转换 页面来将其转换为 CIDR 表示法。然后你得到 31.13.64.0/18 的地址。输入以下命令来阻止对 Facebook 的访问:

iptables -A OUTPUT -p tcp -i eth0 –o eth1 –d 31.13.64.0/18 -j DROP 
  1. 按时间规定做限制 - 场景1
    应用场景:中午 12 点到下午 1 点之间假设默认规则是丢弃,使用 iptables 的时间功能便可以实现。
iptables –A OUTPUT -p tcp -m multiport --dport http,https -i eth0 -o eth1 -m time --timestart 12:00 –timestop 13:00 –d 31.13.64.0/18 -j ACCEPT

该命令中指定在中午12点(–timestart 12:00)到下午 1 点(–timestop 13:00)之间允许(-j ACCEPT)到 Facebook.com (-d [31.13.64.0/18][5])的 http 以及 https (-m multiport --dport http,https)的访问。
5. 按时间规定做限制 - 场景2
应用场景:在计划系统维护期间,你需要设置凌晨 2 点到 3 点之间拒绝所有的 TCP 和 UDP 访问,这样维护任务就不会受到干扰。使用两个 iptables 规则可实现:

iptables -A INPUT -p tcp -m time --timestart 02:00 --timestop 03:00 -j DROP
iptables -A INPUT -p udp -m time --timestart 02:00 --timestop 03:00 -j DROP

该规则禁止(-j DROP)在凌晨2点(–timestart 02:00)到凌晨3点(–timestop 03:00)之间的 TCP 和 UDP (-p tcp and -p udp)的数据进入(-A INPUT)访问。
6. 限制连接数量
应用场景:你的 web 服务器有可能受到来自世界各地的 DoS 攻击,为了避免这些攻击,你可以限制单个 IP 地址到你的 web 服务器创建连接的数量:

iptables –A INPUT –p tcp –syn -m multiport -–dport http,https –m connlimit -–connlimit-above 20 –j REJECT -–reject-with-tcp-reset

如果单个主机在一分钟之内新建立(-p tcp -syn)超过 20 个(-connlimit-above 20)到你的 web 服务器(–dport http,https)的连接,服务器将拒绝(-j REJECT)建立新的连接,然后通知对方新建连接被拒绝(–reject-with-tcp-reset)。
7. 监控 iptables 规则
由于数据包会遍历链中的规则,iptables 遵循 “首次匹配获胜” 的原则,因此经常匹配的规则应该靠近策略的顶部,而不太频繁匹配的规则应该接近底部。 你怎么知道哪些规则使用最多或最少,可以在顶部或底部附近监控?

1.iptables -L -v -n –line-numbers               //-L:列出所有规则,-v详细信息,-n显示数字格式的数据包和字节计数器,
2.iptables -nvL | grep -v "0     0"            //找到从来没有用过的规则删掉
注意:两个数字 0 之间不是 Tab 键,而是 5 个空格。
3.监控正在发生什么:
watch --interval=5 'iptables -nvL | grep -v "0     0"'
watch命令通过参数iptables -nvL|grep-v “0     0” 每隔5秒输出iptables的动态。
4.输出日志,使用第三方工具,例:FWLogwatch
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值