顯示具有 ssh 標籤的文章。 顯示所有文章
顯示具有 ssh 標籤的文章。 顯示所有文章

2021年11月5日 星期五

在 Fedora 設定 SSH Server 的 port

1. 前言

因為 Fedora 有一些安全設定,導致要更動 SSH 的 port 比較麻煩,在不關閉原有的安全設定下,這裡提示一些必要的安全設定操作指令。



2. 相關設定

2.1. sshd_config

/etc/ssh/sshd_config

2.1.1. 安全性設定

# What ports, IPs and protocols we listen for
Port 12345

SSH 預設使用 port 22,建議更改,特別在面向網路網路使用時,幾乎只要一上網就會被攻擊。埠號可自定,不要與使用中的埠號即可。

PermitRootLogin prohibit-password

建議不要使用 root 登入 SSH,所以可將 PermitRootLogin 設為 no。但讓 root 能登入有時候滿方便的,特別是有時需要傳一些需要 root 權限的檔案時,可以省掉一些操作上的麻煩。所以這裡使用 prohibit-password,再加上使用免密碼登入方式,就可以讓 root 能登入 SSH,且能保持一定程度的安全性。

#AllowUsers cy # NOTE! this will disable root login

可限定只有某些使用者登入,值得注意的是,若沒有加入 root,將會使 root 不能登入,即使 PermitRootLogin 為 yes 或 prohibit-password 亦然。在我的 Server 並未實作此項,所以前面加 #。

2.1.2. 效能性設定

UseDNS no

加了這個據說能加速登入速度。

2.2. 變更 systemd socket

systemctl edit sshd.socket

將前面的#符號去掉,修改以下設定:

[Socket]
ListenStream=
ListenStream=12345

2.2. 變更 SELinux

增加新修改的port號如下,但是要去掉原先的22埠似乎有問題,暫且不管它。

semanage port -a -t ssh_port_t -p tcp 12345

用以下的指令可觀察是否變更。

semanage port -l | grep ssh_port_t

以下為執行結果,僅供參考。

ssh_port_t                     tcp      12345, 22

2.2. 變更防火牆

打開新修改的port:

firewall-cmd --permanent --service="ssh" --add-port "12345/tcp"

開閉原來的port22:

firewall-cmd --permanent --service="ssh" --remove-port "22/tcp"

重啟防火牆:

firewall-cmd --reload


5. 服務管理

安裝完會自動啟動服務,其餘服務常用操作指令如下所列。

systemctl status sshd.service
systemctl restart sshd.service
systemctl enable sshd.service


2017年1月23日 星期一

在 Debian 安裝 SSH Server

1. 安裝相關套件

sudo apt-get update
sudo apt-get install openssh-server


2. 相關設定檔

2.1. sshd_config

/etc/ssh/sshd_config

2.1.1. 安全性設定

# What ports, IPs and protocols we listen for
Port 12345

SSH 預設使用 port 22,建議更改,特別在面向網路網路使用時,幾乎只要一上網就會被攻擊。埠號可自定,不要與使用中的埠號即可。

PermitRootLogin prohibit-password

建議不要使用 root 登入 SSH,所以可將 PermitRootLogin 設為 no。但讓 root 能登入有時候滿方便的,特別是有時需要傳一些需要 root 權限的檔案時,可以省掉一些操作上的麻煩。所以這裡使用 prohibit-password,再加上使用免密碼登入方式,就可以讓 root 能登入 SSH,且能保持一定程度的安全性。

#AllowUsers cy # NOTE! this will disable root login

可限定只有某些使用者登入,值得注意的是,若沒有加入 root,將會使 root 不能登入,即使 PermitRootLogin 為 yes 或 prohibit-password 亦然。在我的 Server 並未實作此項,所以前面加 #。

2.1.2. 效能性設定

UseDNS no

加了這個據說能加速登入速度。



3. 資源管理

3.1. 最好不要使用的帳號名

以下為我曾被攻擊的帳號名,最好不要使用這些帳號,特別是 admin:

0
0000
1111
1234
123456
adam
adm
admin
agent
anonymous
apache
bill
cisco
client
customer
default
edu
ftp
ftpuser
guest
jack
john
manager
mark
master
mike
nagios
operator
oracle
osmc
pi
plcmspip
raspberry
sales
scan
service
steve
super
support
Taiwan
test
testuser
tiffany
ubnt
uploader
user
user1
usuario
vyatta
www


4. 測試

4.1. ssh 登入測試:

cy@cyvm:~$ ssh -p 12345 cy@192.168.0.1

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
No mail.
Last login: Sat Mar 18 11:25:52 2017 from 192.168.0.2

4.2. ssh 登入測試:

cykuo@cyvm:~$ scp -P 12345 -i ~/keys/cy_ssh_key test.file root@192.168.0.1:~/root_work_dir
test.file                     100%  273     0.3KB/s   00:00


5. 服務管理

安裝完會自動啟動服務,其餘服務常用操作指令如下所列。

systemctl status sshd.service
systemctl restart sshd.service
systemctl enable sshd.service


2016年8月4日 星期四

SSH 登入免檢查指紋

ssh-keygen -R <ssh.server.ip.address> ;\ 
 ssh -o UserKnownHostsFile=/dev/null \   
 -o StrictHostKeyChecking=no \           
 <account>@<ssh.server.ip.address> 

2016年7月29日 星期五

SSH 免密碼登入

產生 key-pair

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/<my_home>/.ssh/id_rsa): <= 按enter
Enter passphrase (empty for no passphrase):                        <= 按enter
Enter same passphrase again:                                       <= 按enter
Your identification has been saved in /home/<my_home>/.ssh/id_rsa.
Your public key has been saved in /home/<my_home>/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:hRybtdk8kAYPTGWRA6lz9lW/uWhM+Vzzex939UJgp64 cykuo@ubuntu
The key's randomart image is:
+---[RSA 2048]----+
|       s-x-f     |
|       .kk.*  .  |
|       .=.=.d.f. |
|      = =. ..*  .|
|       +R. s. . -|
|       ---** * -+|
|    --++ *  = +.+|
|       s =*. *==+|
|          E -  ++|
+----[SHA256]-----+

※ 此動作將在家目錄的 .ssh 目錄底下(即~/.ssh)產生兩個檔:
私鑰(private key):id_rsa
公鑰(public key):id_rsa.pub

當然是私鑰保存在己方,公鑰丟到你想要連線的地方進行註冊囉!


要產生更高位元的 key,並加入註解,指令如下:

ssh-keygen -t rsa -b 4096 -C "my workstation"


使用 putty 產生私鑰

若要在 Windows 使用 SSH 登入,常常使用 putty。要免密碼登入比較麻煩,需要用 puttygen 先產生私鑰,然後轉換成 OpenSSH 格式的檔案(轉換時使用force new file format,這裡假設產生的檔名為 id_rsa.putty),然後將這個檔案 傳上 Linux 機器,再以下列指令進行轉換:

ssh-keygen -e -f id_rsa.putty > id_rsa_com.pub
ssh-keygen -i -f id_rsa_com.pub > id_rsa.pub

然後再以下面方式註冊即可。

註冊公鑰

複製公鑰檔案內容到對方的家目錄底下的 .ssh/authorized_keys,即完成註冊。例如:你要連線到 192.168.1.1 的 peer_account 帳號,即註冊到對方機器的 /home/peer_account/.ssh/authorized_keys ;若是要連線到 root 帳號,就註冊到 /root/.ssh/authorized_keys。

通常我使用 scp 將 id_rsa.pub ,然後在對方機器下以下的指令以完成註冊。

cat id_rsa.pub >> ~/.ssh/authorized_keys

通常 id_rsa.pub 與 authorized_keys 長的像這樣:

ssh-rsa AAAAB3NzsC1yc2EAGFFGFGDFGDFFJAC4idfDIh714g7GCssas4gpt714kgJ0wgIDIBBijY592BSasda4XSDaafFasQg0/yvjQSEnKKFq+sVQutpFX9dHI2HadadasdSDAsdasAaFAqTMgo1n+sObhIgSqOZSyASDAZasdaDASDASDAxasdTna+S4SDASD6tyuhfgaASDASDKasaasdasdASDASDAasdASDsDASDADasdsASDasdASDasdAsdAssp42pXiqw9YbpOf1zNqpASDsdASDaSFfzdFASDfdfdsdsd2u+wHJ8CzuASDQN8/PzCCASDQdAsDAS/XB8asdasDASDSDAsdasdaSDyl9F/EM+hXgDDws4r <my_home>@<my_server>

當然在 authorized_keys 檔可能會有更多行像這個東東,特別是公用的機器,所以記住,不要蓋掉或毀損別人註冊的公鑰哦!

另外,可用簡單的 ssh-copy-id 指令,簡單完成以上動作,範例如下:

ssh-copy-id peer_account@192.168.1.1

安全設定

有時候你會發現以上步驟做完了還是無法免密碼登入,可以檢查下面的設定:
1、改變 .ssh 下面檔案的屬性設定:
  chmod 700 ~/.ssh
  chmod 600 ~/.ssh/authorized_keys
2、檢查 selinux, /etc/sshd_config。
  這些情況我還沒遇上過,有遇到再來補充吧!

轉換 putty 所產生的 public keys

在 Windows 環境下可使用 puttygen.exe 產生 ssh key,分別存入 private(ppk檔)與 public key 檔之後,public 檔需要做轉換才能在匯入到 authorized_keys 中。指令如下,其中 my.pub 是 puttygen.exe 所存入的 public key 檔名(舉例)。

ssh-keygen -i -f my.pub > ~/.ssh/authorized_keys

轉換 putty 所產生的 private keys

在 Lunux 環境底下要轉換 puttygen.exe 產生ppk檔,有一點麻煩,還需要另外裝 putty-tools 才行,然後用下列的指令產生:

puttygen putty.ppk -O private-openssh -o id_rsa

注意!產生的檔案名稱要根據相關的演算法命名,上例是用 RSA 產生的私鑰,所以命名為 id_rsa,若命名為其他檔名有可能會出錯。