iptables和sudo

Posted xuluchuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iptables和sudo相关的知识,希望对你有一定的参考价值。

1、详述iptables五链

防火墙

  • 硬件防火墙
  • 软件防火墙
  • iptables服务是firewalld
  • iptables -Lnv查看规则
  • 本机防火墙和网路防火墙两种
  • 5个表,全大写
    • PREROUTING
    • INPUT
    • FORWARD
    • OUTPUT
    • POSTROUTING
  • 4个其他功能
    • raw:关闭连接追踪
    • mangle:修改其他信息,打标
    • nat:网络地址转换
    • filter:过滤
    • 优先级从高到低
  • 4个其他功能表的位置
    • raw:PREROUTING OUTPUT
    • mangle:全
    • nat:PREROUTING INPUT OUTPUT POSTROUTING
    • filter:INPUT FORWARD OUTPUT
  • 3个报文流向
    • 1.PREROUTING→INPUT
    • 2.PREROUTING→FORWARD→OUTROUTING
    • 3.OUTPUT→OUTROUTING

2、举例实现iptables多端口匹配、连接追踪、字符串匹配、时间匹配、并发连接限制、速率匹配、报文状态匹配等应用

显式扩展规则(-m模块)

multiport
  • 离散端口最多15个,逗号,连续端口冒号
  • -m multiport --dports --sports
  • 可以设置能访问外网
[[email protected] ~]# iptables -R INPUT 7 -p tcp -m multiport --sports 80,443 -m state --state RELATED,ESTABLISHED -j ACCEPT
[[email protected] ~]# iptables -I INPUT 8 -p tcp -m multiport --sports 445,139 -m state --state RELATED,ESTABLISHED -j ACCEPT
[[email protected] ~]# iptables -I INPUT 9 -p udp -m multiport --sports 137,138 -m state --state RELATED,ESTABLISHED -j ACCEPT
[[email protected] ~]# iptables -I OUTPUT 5 -p tcp -m multiport --dports 80,443 -j ACCEPT
[[email protected] ~]# iptables -I INPUT -d 192.168.1.11 -p tcp -m multiport --dports 80,443 -j ACCEPT
[[email protected] ~]# iptables -I OUTPUT 7 -d 192.168.1.3 -p tcp -m multiport --dports 445,139 -j ACCEPT
[[email protected] ~]# iptables -I OUTPUT 8 -d 192.168.1.3 -p udp -m multiport --dports 137,138 -j ACCEPT
iprange
  • 连续ip
  • -m iprange --dst-range --src-range

    time
  • -m time --timestart --timstop --weekdays --monthdays --kerneltz

    string
  • -m string --algo kmp --string "gay"

    connlimit
  • 防止DDOS,限制单客户端最大并发
  • -m connlimit --connlimit-upto(above)

[[email protected] ~]# iptables -R INPUT 1 -d 192.168.1.11 -p tcp -m multiport --dports 80,443 -m connlimit --connlimit-upto 100 -j ACCEPT
limit
  • 限速,防止fast ping攻击 syn-flood攻击
  • -m limit --limit-burst(令牌桶) --limit (包速率)
[[email protected] ~]# iptables -R INPUT 2 -p icmp --icmp-type 8 -m limit --limit 120/m --limit-burst 30 -j ACCEPT
[[email protected] ~]# iptables -I INPUT 3 -syn -m limit --limit 5000/s --limit-burst 200 -j ACCEPT
state
  • 连接追踪:conntrack
  • 内核:
    • /proc/net/nf_conntrack
    • /proc/sys/net/nf_conntrack_max 最大追踪连接数,默认65535
    • /proc/sys/net/nf_conntrack_timeout 超时时间
  • 状态
    • NEW 新连接
    • ESTABLISHED 已建立连接
    • UNTRACKED 未追踪连接
    • RELATED 与已建立连接有关系的连接
    • INVALID 不合法的连接
  • 入站:先允许ESTABLISHED,再允许NEW
  • 出站:只允许ESTABLISHED
  • ftp: 内核模块装载modprobe nf_conntrack_ftp ,入站允许ESTABLIESHED和RELATED

    动作
  • ACCEPT DROP REJECT
  • REJECT默认--reject-with icmp-port-unreachable
  • LOG 默认/var/log/messags
  • --log-prefix "标识"
  • -j 自定义链
  • -N 新建自定义链,在INPUT等链上 -j自定义链,-X删除自定义链

    保存
  • centos6 service iptables save
  • centos7 iptables-save > /etc/sysconfig/iptables 保存
  • 重启后恢复 iptables-restore < /etc/sysconfig/iptables

dns服务器

iptables -A INPUT -s 192.168.1.3 -d 192.168.1.10 -p tcp --dport 37777 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i enp0s3 -j REJECT
iptables -P FORWARD DROP
iptables -A OUTPUT -s 192.168.1.10 -d 192.168.1.3 -p tcp --sport 37777 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -j REJECT
iptables -I INPUT -s 192.168.1.0/24 -d 192.168.1.10 -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I OUTPUT -s 192.168.1.10 -d 192.168.1.0/24 -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
iptables -I INPUT -s 192.168.1.0/24 -d 192.168.1.10 -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I OUTPUT -s 192.168.1.10 -d 192.168.1.0/24 -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
iptables -I OUTPUT 4 -s 192.168.1.10 -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 4 -d 192.168.1.10 -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
iptables -I OUTPUT 5 -s 192.168.1.10 -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 5 -d 192.168.1.10 -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED -j ACCEPT
iptables -I INPUT 6 -p icmp --icmp-type 8 -m limit --limit 120/m --limit-burst 30 -j ACCEPT
iptables -I INPUT 7 -p icmp --icmp-type 0 -j ACCEPT
iptables -I OUTPUT 6 -p icmp --icmp-type 0 -j ACCEPT
iptables -I OUTPUT 7 -p icmp --icmp-type 8 -j ACCEPT
iptables -I OUTPUT 5 -s 192.168.1.10 -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 5 -d 192.168.1.10 -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT

web服务器

iptables -A INPUT -s 192.168.1.3 -d 192.168.1.11 -p tcp --dport 37777 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i enp0s3 -j REJECT
iptables -P FORWARD DROP
iptables -A OUTPUT -s 192.168.1.11 -d 192.168.1.3 -p tcp --sport 37777 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -j REJECT
iptables -I INPUT -d 192.168.1.11 -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -m connlimit --connlimit-upto 100 -j ACCEPT
iptables -I OUTPUT -s 192.168.1.11 -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED -j ACCEPT
iptables -I OUTPUT 3 -s 192.168.1.11 -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 3 -d 192.168.1.11 -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
iptables -I OUTPUT 4 -s 192.168.1.11 -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 4 -d 192.168.1.11 -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED -j ACCEPT
iptables -I INPUT 5 -p icmp --icmp-type 8 -m limit --limit 120/m --limit-burst 30 -j ACCEPT
iptables -I INPUT 6 -p icmp --icmp-type 0 -j ACCEPT
iptables -I OUTPUT 5 -p icmp --icmp-type 0 -j ACCEPT
iptables -I OUTPUT 6 -p icmp --icmp-type 8 -j ACCEPT
iptables -I INPUT 5 -s 192.168.1.3 -d 192.168.1.11 -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I OUTPUT 5 -s 192.168.1.11 -d 192.168.1.3 -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
iptables -I OUTPUT 4 -s 192.168.1.11 -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 4 -d 192.168.1.11 -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT

3、举例实现iptables之SNAT源地址修改及DNAT目标地址修改和PNAT端口修改等应用

NAT

  • 网络地址转换
  • 隐藏主机,解决网络地址短缺问题
  • 源地址转换SNAT POSTROUTING 隐藏客户端,内网机器共享上网
  • 目标地址转换 DNAT PREROUTING 隐藏服务端 MASQUERADE 动态ip,端口映射
  • PNAT 端口地址转换
  • REDIRECT 端口映射

    源地址转换
  • 网关开转发 net.ipv4.ip_forward = 1
  • 内网修改为网关
  • SNAT规则

[[email protected] ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 192.168.1.9
目标地址转换
[[email protected] ~]# iptables -t nat -A PREROUTING -d 192.168.1.9 -p tcp --dport 443 -j DNAT --to-destination 192.168.10.11:443
[[email protected] ~]# iptables -t nat -A PREROUTING -d 192.168.1.9 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.11:80
本机端口映射
  • REDIRECT
  • -j REDIRECT --to-ports 8080

4、简述sudo安全切换工具,及详细讲解visudo

sudo

  • 使用其他用户的权限来执行命令
  • 配置文件/etc/sudoers visudo命令检查语法
  • who where=(whom) commands
  • users hosts=(runas) commands
  • 默认:root ALL=(ALL) ALL
    • %wheel ALL=(ALL) ALL
  • wheel必须是基本组
  • sudo -k 删除已经保存的密码
  • sudo -l 查看命令列表
  • User_Alias:用户别名大写
  • Cmnd_Alias:命令别名大写
  • NOPASSWD: 不需要输入密码
  • PASSWD: 需要输入密码

    例子

    visudo加入

xlc ALL=(ALL) NOPASSWD: /usr/bin/rsync

以上是关于iptables和sudo的主要内容,如果未能解决你的问题,请参考以下文章

Linux iptables与sudo

IPTables系列:如何配置Ubuntu 14.04中的IPTables防火墙

IPTables系列:如何配置Ubuntu 14.04中的IPTables防火墙

如何启用iptables 防火墙

tcp_wrapper,sudo,nsswitch与pam安全解析

通过sudo提权方式控制公司人员权限