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的主要内容,如果未能解决你的问题,请参考以下文章
IPTables系列:如何配置Ubuntu 14.04中的IPTables防火墙
IPTables系列:如何配置Ubuntu 14.04中的IPTables防火墙