免密远程执行命令
· 阅读需 1 分钟
ssh-keygen -t rsa # 分别在两台电脑上运行此命令, 生成密匙
scp -p ~/.ssh/id_rsa.pub root@IP:/root/.ssh/authorized_keys # 上传本地公钥到服务器
ssh root@IP "cd /home; ls" # 远程执行命令
ssh-keygen -t rsa # 分别在两台电脑上运行此命令, 生成密匙
scp -p ~/.ssh/id_rsa.pub root@IP:/root/.ssh/authorized_keys # 上传本地公钥到服务器
ssh root@IP "cd /home; ls" # 远程执行命令
| filter表 | 强调:主要和主机自身相关,真正负责主机防火墙功能(过滤流入流出主机的数据包)filter表示iptables默认使用的表,这个表定义了三个链(chains)企业工作场景:主机防火墙 |
|---|---|
| INPUT | 负责过滤所有目标地址是本机地址的数据包,通俗来说:就是过滤进入主机的数据包 |
| FORWARD | 负责转发刘静主机的数据包。起转发的作用,和NAT关系很大,后面会详细介绍LVS NAT模式,net.ipv4.ip_forward=0 |
| OUTPUT | 处理所有源地址是本机地址的数据包,通俗来讲:就是处理从主机发出的数据包。 |
| nat | 负责网络地址转换的,即来源与目的IP地址和port的转换。 应用:和主机本身无关,一般用于局域网共享上网或者特殊的端口转换服务相关。 工作场景: 1. 用于企业路由(zebra)或网关(iptables),共享上网(POSTROUTING) 2. 做内部外部IP地址一对一映射(dmz),硬件防火墙映射IP到内部服务器,ftp服务(PREROUTING) 3. WEB,单个端口的映射,直接映射80端口(PREOUTING)这个表定义了3个链,nat功能相当于网络的acl控制。和网络交换机acl类似。 |
|---|---|
| OUTPUT | 和主机放出去的数据包有关,改变主机发出数据包的目的地址。 |
| PREROUTING | 在数据包到达防火墙时,进行路由判断之前执行的规则,作用是改变数据包的目的地址、目的端口等 例如:把公网IP:XXX.XXX.XXX.XXX映射到局域网的XX.XX.XX.XX服务器上。 如果是web服务,可以将80转换为局域网的服务器9000端口上 |
| POSTROUTING | 在数据包离开防火墙时进行路由判断之后执行的规则,作用改变数据包的源地址,源端口等。 例如:默认笔记本和虚拟机都是局域网地址,在出网的时候被路由器将源地址改为了公网地址。 生产应用:局域网共享上网。 |
# 安装服务
yum install -y iptables-servicesR
# 加载防火墙相关模块到内核中
cat >>/etc/rc.local<<EOF
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
EOF
# 关闭系统自带的firewalld防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
# 启动iptables,并添加开机自动启
systemctl start iptables.service
systemctl enable iptables.service
# 查看iptables规则
iptables -nL
| 参数 | 含义 |
|---|---|
| -L | 显示表中的所有规则 |
| -n | 不要把端口或ip反向解析为服务名或域名 |
| -t | 指定表 不指定时默认是filter表 |
| -A | append追加 加入准许类规则 使用-A |
| -D | delete 删除 -D INPUT 1 |
| -I | insert 拒绝类规则放在所有规则最上面 拒绝类 -I |
| 参数 | 含义 |
|---|---|
| -p | 协议protocal tcp/udp/icmp/all |
| --dport | 目标端口 dest destination 指定端口 加上协议-p tcp |
| --sport | 源端口 source源 |
| -s | --source 源ip |
| -d | --destination 目标ip |
| -m | 指定模块 multiport |
| -i | input 输入的时候 从哪个网卡进来 |
| -o | output输出的时候 从哪个网卡出去 |
| 参数 | 含义 |
|---|---|
| -j | 满足条件后的动作:DROP/ACCEPT/REJECT |
| DROP REJECT 拒绝 DROP 把数据丢掉 不会返回信息给 用户 REJECT 拒绝 返回拒绝信息 | |
| 参数 | 含义 |
|---|---|
| -F | 清除所有规则,不会处理默认的规则 |
| -X | 删除用户自定义的链 |
| -Z | 链的计数器清零 (数据包计数器与数据包字节计数器) |
iptables -F
iptables -X
iptables -Z
iptables -t filter -I INPUT -p tcp --dport 22 -j DROP
iptables -nL --lint-number
iptables -D INPUT 1 # 精确删除规则,可以用此方法
iptables -I INPUT -s 10.0.0.7 -j DROP
iptables -I INPUT -s 10.0.0.0/24 -p tcp --dport 8888 -j DROP
# 方法1:利用 !
# 只准许 10.0.0.0/24 访问,除了10.0.0.0/24 都拒绝
iptables -I INPUT ! -s 10.0.0.0/24 -j DROP
# 方法2: 修改链默认规则 修改为拒绝 添加准许
# 先配置准许规则,再修改默认规则,不然会将自己屏蔽
iptables -A INPUT -s 10.0.0.0/24 -j ACCEPT
iptables -P INPUT DROP
# 将默认规则改回允许
iptables -P INPUT ACCEPT
iptables -I INPUT -P tcp --dport 8888 -j DROP
iptables -I INPUT -p tco --dport 9999 -j DROP
iptables -I INPUT -p tcp -m multiport 80,443 -j DROP
# 如果是连续端口,可以不加-m multiport
iptables -I INPUT -p tcp --dport 1:1024 -j DROP
iptables -I INPUT -p icmp --icmp-type 8 -j DROP
# 修改为1,禁止被ping;修改为0,允许被ping
[root@m01 ~]# cat /etc/sysctl.conf
#/proc/sys/net/ipv4/icmp_echo_ignore_all
net.ipv4.icmp_echo_ignore_all = 1
# sysctl -p 生效
[root@m01 ~]# sysctl -p
net.ipv4.icmp_echo_ignore_all = 1