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
  • 可以设置能访问外网
[root@web1 ~]# iptables -R INPUT 7 -p tcp -m multiport --sports 80,443 -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@web1 ~]# iptables -I INPUT 8 -p tcp -m multiport --sports 445,139 -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@web1 ~]# iptables -I INPUT 9 -p udp -m multiport --sports 137,138 -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@web1 ~]# iptables -I OUTPUT 5 -p tcp -m multiport --dports 80,443 -j ACCEPT
[root@web1 ~]# iptables -I INPUT -d 192.168.1.11 -p tcp -m multiport --dports 80,443 -j ACCEPT
[root@web1 ~]# iptables -I OUTPUT 7 -d 192.168.1.3 -p tcp -m multiport --dports 445,139 -j ACCEPT
[root@web1 ~]# 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)
[root@web1 ~]# 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 (包速率)
[root@web1 ~]# iptables -R INPUT 2 -p icmp --icmp-type 8 -m limit --limit 120/m --limit-burst 30 -j ACCEPT
[root@web1 ~]# 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规则
[root@center ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 192.168.1.9
目标地址转换
[root@center ~]# iptables -t nat -A PREROUTING -d 192.168.1.9 -p tcp --dport 443 -j DNAT --to-destination 192.168.10.11:443
[root@center ~]# 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