(十二) iptables,sudo

摘要

1、详述iptables四表五链                                          

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

3、举例实现iptables之SNAT源地址修改及DNAT目标地址修改和PNAT端口修改等应用      (重要再研究)                                      

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

 

1、详述iptables四表五链                                          

    链(内置):
        PREROUTING
        INPUT
        FORWARD
        OUTPUT
        POSTROUTING
        
    表功能:
        filter:过滤,防火墙;
        nat:network address translation;用于修改源IP或目标IP,也可以改端口;
        mangle:拆解报文,做出修改,并重新封装起来;
        raw:关闭nat表上启用的连接追踪机制;
        
    功能<--链:
        raw:PREROUTING, OUTPUT
        mangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
        nat:PREROUTING,[INPUT,]OUTPUT,POSTROUTING
        filter:INPUT,FORWARD,OUTPUT
        
    报文流向:
        流入本机:PREROUTING --> INPUT
        由本机流出:OUTPUT --> POSTROUTING
        转发:PREROUTING --> FORWARD --> POSTROUTING

 

(十二) iptables,sudo(十二) iptables,sudo

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

多端口匹配:

# iptables -I INPUT  -d 192.168.1.7 -p tcp -m multiport --dports 22,80,100,423 -j ACCEPT

连接追踪:

# iptables -I FORWARD 2 -s 192.168.1.5 -p tcp --dport 80 -m state --state NEW -j ACCEPT 

# iptables -I INPUT -d 192.168.1.5 -m state --state ESTABLISHED -j ACCEPT 

字符串匹配:

#iptables -I OUTPUT -m string --algo bm --string "hello" -j REJECT

时间匹配:

# iptables -R INPUT 3 -d 172.16.0.67 -p tcp --dport 23 -m time --timestart 08:30:00 --timestop 17:00:00 --weekends 1,2,3,4,5 -kerneltz -j ACCEPT

并发连接限制:

# iptables -I INPUT -d 192.168.1.7 -p tcp --syn --dport 22 -m connlimit --connlimit-above 2 -j REJECT

速率匹配:

# iptables -I INPUT -d 192.168.1.6 -p icmp-type 8 -m  --limit 2/minute --limit-burst 3 -j ACCEPT

报文状态匹配:

# iptables -I input -p tcp -m tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST,URG,SYN -j REJECT

 

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

  • SNAT:主要实现内网客户端访问外网主机,在POSTROUTING和OUTPUT上使用
  • DNAT:主要实现内网中的服务器能被外网客户端访问到,定义在PREROUTING链上.
  • PNAT:将封包重新导向到另一个端口(PNAT),这个功能可以用来实作透明代理或用来保护web服务器。

待补充

 

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

1). sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。

 

2). sudo的特性主要有这样几点:

§ sudo能够限制用户只在某台主机上运行某些命令。

§ sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。

§ sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票(这个值可以在编译的时候改变)。

§ sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440。

 

3).visudo测试

[[email protected] ~]# echo '123456' | passwd --stdin Jay
Changing password for user Jay.
passwd: all authentication tokens updated successfully.
[[email protected] ~]# su - Jay
[[email protected] ~]$ useradd Jack
-bash: /usr/sbin/useradd: Permission denied
 

执行visudo,添加下面内容:

Jay ALL=(ALL) /usr/sbin/useradd, /usr/sbin/userdell

[[email protected] ~]# su - Jay
[[email protected] ~]$ sudo -l
[sudo] password for Jay: 
Matching Defaults entries for Jay on this host:
requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESSLC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE
 LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User Jay may run the following commands on this host:
    (ALL) /usr/sbin/useradd, (ALL) /usr/sbin/userdel
[[email protected] ~]$ sudo useradd Jack
[[email protected] ~]$ tail -1 /etc/group
Jack:x:501:
[[email protected] ~]$ 
 

4) visudo 添加别名

/etc/sudoers应用示例:
        
Cmnd_Alias USERADMINCMNDS = /usr/sbin/useradd, /usr/sbin/usermod, /usr/bin/passwd [a-z]*, !/usr/bin/passwd root

User_Alias USERADMIN = bob, alice

 USERADMIN       ALL=(root)      USERADMINCMNDS