• ubuntu iptables设置


    1.    查看iptables防火墙规则
    sudo iptables -L
    2.    清除已有iptables规则

    iptables -F或者iptables --flush

    这两条命令是等效的。有的linux不会清除NAT表中的规则,所有需要手动清除iptables  -t NAT -F

    iptables -X
    iptables –Z
    将所有iptables以序号标记显示,执行:
    iptables –L –n --line-numbers
    比如要删除INPUT里序号为8的规则,执行:
    iptables –D INPUT 8
    3.    开放指定的端口
    #允许本地回环接口(即运行本机访问本机)
    iptables -A INPUT -i lo –j ACCEPT
    # 允许已建立的或相关连的通行
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    #允许所有本机向外的访问
    iptables -A OUTPUT -j ACCEPT
    # 允许访问22端口
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    #允许访问80端口
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    #允许FTP服务的21和20端口
    iptables -A INPUT -p tcp --dport 21 -j ACCEPT
    iptables -A INPUT -p tcp --dport 20 -j ACCEPT
    #如果有其他端口的话,规则也类似,稍微修改上述语句就行
    #禁止其他未允许的规则访问
    iptables -A INPUT -j REJECT  (注意:如果22端口未加入允许规则,SSH链接会直接断开。)
    iptables -A FORWARD -j REJECT
    4.    屏蔽IP
    #如果只是想屏蔽IP的话,开放指定的端口”可以直接跳过。
    #屏蔽单个IP的命令是
    iptables -I INPUT -s 123.45.6.7 -j DROP
    #封整个段即从123.0.0.1到123.255.255.254的命令
    iptables -I INPUT -s 123.0.0.0/8 -j DROP
    #封IP段即从123.45.0.1到123.45.255.254的命令
    iptables -I INPUT -s 124.45.0.0/16 -j DROP
    #封IP段即从123.45.6.1到123.45.6.254的命令是
    iptables -I INPUT -s 123.45.6.0/24 -j DROP
    5.    Iptables的开机启动及规则保存
    Ubuntu上iptables是不会保存规则的
    先将防火墙规则保存到/etc/iptables.up.rules文件中
    #sudo –s
    # iptables-save > /etc/iptables.up.rules
    然后修改脚本/etc/network/interfaces,使系统能自动应用这些规则(最后一行是我们手工添加的)
    auto eth0
    iface eth0 inet dhcp
    pre-up iptables-restore < /etc/iptables.up.rules
    当网络接口关闭后,您可以让iptables使用一套不同的规则集。
    auto eth0
    iface eth0 inet dhcp
    pre-up iptables-restore < /etc/iptables.up.rules #启动自动调用已存储的iptables
    post-down iptables-restore < /etc/iptables.down.rules #关机时,把当前的iptables储存

    Ip6tables其语法在各方面都和iptables相同。只不过iptables支持128位地址。


    #删除原来 iptables 里面已经有的规则
    iptables -F
    iptables -X

    #抛弃所有不符合三种链规则的数据包
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP

    #设置:本地进程 lo  的 INPUT 和 OUTPUT 链接 ; eth1的 INPUT链
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -i eth1 -m state --state NEW,INVALID -j LOG
    iptables -A OUTPUT -o lo -j ACCEPT

    #对其他主要允许的端口的 OUTPUT设置:
    # DNS
    iptables -A OUTPUT -o eth1 -p TCP --sport 1024:65535 --dport 53 -j ACCEPT
    iptables -A OUTPUT -o eth1 -p UDP --sport 1024:65535 --dport 53 -j ACCEPT

    #HTTP
    iptables -A OUTPUT -o eth1 -p TCP --sport 1024:65535 --dport 80 -j ACCEPT

    #HTTPS
    iptables -A OUTPUT -o eth1 -p TCP --sport 1024:65535 --dport 443 -j ACCEPT

    #Email 接受 和发送
    iptables -A OUTPUT -o eth1 -p TCP --sport 1024:65535 --dport 110 -j ACCEPT
    iptables -A OUTPUT -o eth1 -p TCP --sport 1024:65535 --dport 25 -j ACCEPT

    # FTP 数据和控制
    iptables -A OUTPUT -o eth1 -p TCP --sport 1024:65535 --dport 20 -j ACCEPT
    iptables -A OUTPUT -o eth1 -p TCP --sport 1024:65535 --dport 21 -j ACCEPT

    #DHCP
    iptables -A OUTPUT -o eth1 -p TCP --sport 1024:65535 --dport 68 -j ACCEPT
    iptables -A OUTPUT -o eth1 -p UDP --sport 1024:65535 --dport 68 -j ACCEPT

    #POP3S Email安全接收
    iptables -A OUTPUT -o eth1 -p TCP --sport 1024:65535 --dport 995 -j ACCEPT

    #时间同步服务器 NTP
    iptables -A OUTPUT -o eth1 -p TCP --sport 1024:65535 --dport 123 -j ACCEPT

    #拒绝 eth1 其他剩下的
    iptables -A OUTPUT -o eth1 --match state --state NEW,INVALID -j LOG


    iptable NAT应用

    1. 源NAT(SNAT)

      比如,更改所有来自192.168.1.0/24的数据包的源ip地址为1.2.3.4:

      iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -jSNAT--to 1.2.3.4

      这里需要注意的是,系统在路由及过虑等处理直到数据包要被送出时才进行SNAT。

      有一种SNAT的特殊情况是ip欺骗,也就是所谓的Masquerading,通常建议在使用拨号上网的时候使用,或者说在合法ip地址不固定的情况下使用。比如

      # iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

      可以看出,这时候我们没有必要显式的指定源ip地址等信息。

      2. 目的SNAT(DNAT)

      比如,更改所有来自192.168.1.0/24的数据包的目的ip地址为1.2.3.4:

      iptables -t nat -A PREROUTING -s 192.168.1.0/24 -i eth1 -jDNAT--to 1.2.3.4

      这里需要注意的是,系统是先进行DNAT,然后才进行路由及过虑等操作。

      有一种DNAT的特殊情况是重定向,也就是所谓的Redirection,这时候就相当于将符合条件的数据包的目的ip地址改为数据包进入系统时的网络接口的ip地址。通常是在与squid配置形成透明代理时使用,假设squid的监听端口是3128,我们可以通过以下语句来将来自192.168.1.0/24,目的端口为80的数据包重定向到squid监听

      端口:

      iptables -t nat -A PREROUTING -i eth1 -p tcp -s192.168.1.0/24--dport 80

      -j REDIRECT --to-port 3128



    参考文档:

    http://forum.ubuntu.org.cn/viewtopic.php?t=62432

    http://wiki.ubuntu.org.cn/IptablesHowTo

    http://blog.chinaunix.net/uid-22120556-id-75158.html

  • 相关阅读:
    二级菜单
    侧面导航
    QFileDialog文件保存
    GitHub for window
    Qt学习事件/信号
    开始RTThread之旅
    Qt事件过滤器
    LPC1768开发板液晶问题解决
    用QSplitter分裂器实现QTextEdit窗口大小的变化
    Qt之串口编程使用事件驱动来触发接收数据
  • 原文地址:https://www.cnblogs.com/chengliu/p/3636393.html
Copyright © 2020-2023  润新知