探索OpenSSH和iptables

探索OpenSSH和iptables


前言

工作中经常用到远程登录服务器ssh及远程文件传输scp的命令,自从升级过OpenSSH的版本之后,才知道都是OpenSSH这个软件提供的服务,一下知识串联了起来,虽然还未接触了解过SSH协议其底层原理,但是也进一步了解这些工具的使用。


一、OpenSSH是什么?

OpenSSH 是一个免费的 SSH 协议套件,为远程登录或远程文件传输等网络服务提供加密。

OpenSSH is the premier connectivity tool for remote login with the SSH protocol. It encrypts all traffic to eliminate eavesdropping, connection hijacking, and other attacks. In addition, OpenSSH provides a large suite of secure tunneling capabilities, several authentication methods, and sophisticated configuration options.
The OpenSSH suite consists of the following tools:

OpenSSH 是采用 SSH 协议进行远程登录的首选连接工具。它会对所有流量进行加密,以消除窃听、连接劫持和其他攻击。此外,OpenSSH 还提供了一整套安全隧道功能、多种身份验证方法以及复杂的配置选项。
OpenSSH 工具套件包含以下工具:

  • 远程操作使用 ssh、scp 和 sftp 来完成。
  • ssh-add、ssh-keysign、ssh-keyscan 和 ssh-keygen 用于密钥管理。
  • 服务端由 sshd、sftp-server 和 ssh-agent 组成。

OpenSSH的客户端是ssh,服务器是sshd。

1.SSHD服务器端

运行sshd需要一个配置文件以及主机密钥。大多数发行版都将配置文件放在/etc/ssh配置目录中,并在你安装它们的sshd包时,尝试将一切都配置好。

Port 22
#Protocol 2,1
#ListenAddress 0.0.0.0
#ListenAddress ::
HostKey /etc/ssh/ssh_host_key
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key

服务器端:sshd
服务器端的配置文件: /etc/ssh/sshd_config
服务器端的配置文件帮助:man 5 sshd_config
sshd_config(5)手册包含了所有可选值的解释,而以下这些是最重要的。

  • HostKey file:使用file作为主机密钥。(主机密钥是短的。)
  • LogLevel level:按照syslog的级别level来记录信息。
  • PermitRootLogin value:value为yes则允许超级用户通过SSH登录,否则不允许。
  • SyslogFacility name:按syslog设施的名字name来记录信息。
  • X11Forwarding value:若value为yes则允许X Window客户端被SSH管道接驳。
  • XAuthLocation path:设置xauth的路径。找不到路径的话,X11的SSH管道将无法工作。如果xauth不在/usr/bin里,则需写明xauth的完整路径。

主机密钥

OpenSSH有三套主机密钥:一套用于版本1的协议,另两套用于版本2。每套都有一个公钥(扩展名为.pub的文件)和一个私钥(无扩展名)。不要让任何人知道你的私钥,否则就有被入侵的危险。
SSH版本1只有RSA密钥,而版本2则有RSADSARSADSA都是公钥加密算法。

创建密钥

可用OpenSSH自带的ssh-keygen程序:

ssh-keygen -t rsa -N '' -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t dsa -N '' -f /etc/ssh/ssh_host_dsa_key

ssh_known_hosts的密钥文件
里面包含了其他主机的公钥。如果你要使用基于主机的认证,服务器端的ssh_known_hosts必须要包含所有可信客户端的公钥。了解密钥文件有助于你更换机器。当你从头给机器安装系统时,你可以用回旧的机器上的密钥文件,这样用户就能跟旧的密钥配置对上了。

2.SSH客户端

想要登录远程主机,运行:ssh remote_username@host

全局的SSH客户端配置文件 /etc/ssh/ssh_config

SSH客户端的最常见问题是,你本机的ssh_known_hosts.ssh/known_hosts里的公钥跟远程主机的不匹配

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

通常表示远程主机的管理员更改了密钥或者升级了openssh导致密钥重新生成了。

解决方法:移除错误的那行记录,或替换成正确的公钥。

SSH文件传输客户端

OpenSSH包含了文件传输程序:scp和sftp。这两个命令用以取代旧的、不安全的命令rcp和ftp。你可以用scp在本机和远程主机之间传输文件,它就像cp命令一样。

$ scp user@host:file .
$ scp file user@host:dir
$ scp user1@host1:file user2@host2:dir

二、iptables是什么?

Linux中,防火墙的规则是链型的。一个表就是一套链。数据包在Linux网络子系统的各部分移动时,内核就会对包应用某套规则。例如,从物理层接收到一个新的包之后,内核就会根据输入的数据激活对应的规则。这些数据结构由内核来维护。整个系统叫作iptables,可以使用用户空间的iptables命令来创建和修改规则。
因为规则表有很多,表里面的规则也很多,所以使得数据包的流动变得比较复杂。然而,你一般都只会接触到一个叫作filter(过滤)的表,它控制基本的包流动。该表里面有三个基本的链:对应包输入的INPUT、对应包输出的OUTPUT和对应包转发的FORWARD。

设置防火墙规则的几个小例子

1、屏蔽192.168.11.11用户
# iptables -A INPUT -s 192.168.11.11 -j DROP

-A INPUT :给INPUT链增加一个规则
-s 192.168.11.11:指定规则所针对的源IP
-j DROP:当数据包符合规则时,内核会将其丢弃

2、屏蔽192.168.11.0/24所有子网下的用户并且只屏蔽25端口
# iptables -A INPUT -s 192.168.11.0/24 -p tcp --destination-port 25 -j DROP

-p tcp:限定只屏蔽TCP包
--destination-port 25:只屏蔽25端口

3、接受198.168.11.12的用户
# iptables -A INPUT -s 192.168.11.12 -j ACCEPT

4、删除第三条规则
#iptables -D INPUT 3

5、在链的顶部插入规则
# iptables -I INPUT -s 192.168.11.12 -j ACCEPT

6、在链名后指定行号插入
# iptables -I INPUT 4 -s 192.168.11.12 -j ACCEPT

7、查看设置好的规则
# iptables -L

总结

Netfilter和iptables是Linux防火墙的核心工具,其官方网站为 http://www.netfilter.org。这是学习iptables和Netfilter的首选资源,提供了详细的文档、教程和常见问题。也可以通过命令 man iptables 查看iptables的官方手册,该手册包含了命令的详细说明和参数选项。


参考资料

1、openssh官网 https://www.openssh.com

2、精通Linux(第2版) (图灵程序设计丛书) [美]沃德(Brian Ward)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

l_Oct

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值