openssh-server設定
debian で標準インストールのみを行なったシステムでの検証です。 1.とりあえず使う。 SSHサービスのインストール # apt-get -y install openssh-server ■SSHサービスの設定(ポート変更) # cd /etc/ssh;mv sshd_config sshd_config.bak; \ sed s/"Port 22"/"Port 8022"/ sshd_config.bak > sshd_config ■ユーザ権限でSSH認証の鍵を作成 $ ssh-keygen -t rsa ■SSHサービスを起動する # ps -A | grep ssh || /etc/init.d/ssh start || /etc/init.d/ssh restart; \ test $? -eq 0 && /etc/init.d/ssh restart ■フィンガープリントをチェックする $ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub ■テスト接続を行なう $ ssh localhost -p 8022 ■Windowsの場合、Puttyからも接続してみる (同様にフィンガープリントの警告が表示されるので確認する) 2.IPアドレスが変わらないようにする ■DHCPを無効にする # cd /etc/network;mv interfaces interfaces.bak; \ sed s/"iface eth0 inet dhcp"/"#&"/ interfaces.bak > interfaces ■IPアドレスを固定に設定する # echo 'iface eth0 inet static address 192.168.87.140 netmask 255.255.255.0 broadcast 192.168.87.255 gateway 192.168.87.2' >> interfaces
3.名前解決できるようにする ■IPアドレス、ホスト名変換の登録と確認 # LANG=C;ifconfig | grep inet | awk -F" " '{print $2}' | head -1 | \ sed s/"addr:"// | sed s/"\$"/"\tdebian-test"/ >> /etc/hosts # grep "debian-test" /etc/hosts 127.0.0.1 debian-test.localdomain debian-test 192.168.87.140 debian-test # hostname -a;hostname --fqdn debian-test debian-test debian-test.llocaldomain ■NETBIOS名が使えるようにSambaをインストールする # apt-get install -y samba ■挿入する場所を変数に入れます。 # CHANGE_NETBIOS=$(cat /etc/samba/smb.conf | grep "server string ="; echo "$CHANGE_NETBIOS"; server string = %h server ■NETBIOS名の設定を挿入します。 # cd /etc/samba;mv smb.conf smb.conf.bak; \ sed s/"$CHANGE_NETBIOS"/"&\n netbios name = debian-test"/ \ smb.conf.bak > /etc/samba/smb.conf ■エディタで開いて、ホームディレクトリの共有設定を以下のように追加します。 # vim smb.conf [homes] path = /home/%S write list = labunix ■smb.confの設定に構文エラーがないかチェックします。 # testparm ■samba用のパスワードの追加と確認をします。 # smbpasswd -a labunix && smbpasswd -e labunix ■NETBIOS名を確認します。 # nmblookup debian-test | grep "<00>" 192.168.87.140 debian-test<00> # net lookup debian-test 127.0.1.1 Windowsからは、「ファイル名を指定して実行」から以下を入力、実行します。 \\debian-test ■ホームディレクトリの共有が出来て、IPアドレスでのssh接続を行なうと、 sshクライアントからも名前解決を利用することが出来ます。 ■Putty からホスト名で確認すると、再度フィンガープリントの警告が表示されます。 4.公開鍵認証を利用する ■ユーザ権限でDSA鍵を作成します。 $ ssh-keygen -t dsa $ cd ~/ssh;ls id_dsa*;ls id_rsa* id_dsa id_dsa.pub id_rsa id_rsa.pub ■通常のftpと同じように使えるpsftp.exeを使うか、 使い慣れたsftpクライアントからid_dsaを持ってきます。 puttygen.exeの「Load」から「All Files」で「id_dsa」を選択してppkに変換、 「Save Private key」で任意の場所に保存します。 ■DSA鍵でのログインの確認 ログイン時にユーザ名を入力した後、「Server refused our key」が表示されます。 「id_dsa」でアクセス出来、 他にアクセスするクライアントが無い場合は、サーバ側から、「id_dsa」を削除します。 また、「id_rsa*」を削除します。 $ cd ~/.ssh;rm id_dsa;rm id_rsa* 5.IP制限を行なう $ echo "sshd:ALL" >> /etc/hosts.deny $ echo -e "All:127.0.0.1\nsshd:192.168.87." >> /etc/hosts.allow ■下記のようなメッセージで他のIPからは接続できなったことを確認します。 「ssh_exchange_identification: Connection closed by remote host」 下記参考URLのようにiptablesを設定します。 ※「--reject-with」が2度あって、完全にコピペすると失敗するので、修正します。
http://itpro.nikkeibp.co.jp/article/COLUMN/20070611/274357/
# iptables -N ssh_blute # iptables -N ssh # iptables -A INPUT -j ssh -p tcp --dport 8022 # iptables -A ssh_blute -m recent --name ssh_block --set -j \ LOG --log-level DEBUG --log-prefix "ssh_block: " # iptables -A ssh_blute -j REJECT # iptables -A ssh -p tcp ! --syn -m state --state ESTABLISHED,RELATED \ -j ACCEPT # iptables -A ssh -p tcp --syn -m recent --name ssh_block \ --update --seconds 86400 -j REJECT --reject-with icmp-port-unreachable # iptables -A ssh -p tcp --syn -m recent --name ssh_conn --rcheck \ --seconds 60 --hitcount 5 -j ssh_blute # iptables -A ssh -p tcp --syn -m recent --name ssh_conn --set # iptables -A ssh -p tcp --syn -j ACCEPT iptablesの設定を保存します。 ※記事のままでは失敗します。manマニュアルを読んでもそのような記述方法はありませんでした。 # iptables-save ■iptablesの設定を確認します。 # iptables -L 6.しばらく監視します。 # apt-get -y install tcpdump ■監視方法 # tcpdump -i eth0 -X -vvv port 8022 ■パケットの中身や詳細表示が不要な場合は下記のようにします。 # tcpdump -i eth0 port 8022 ■nmapによるチェックを行ないます。 内部からのnmap。 # nmap -v -p 8022 192.168.87.140 | grep tcp Discovered open port 8022/tcp on 192.168.87.140 8022/tcp open unknown ■別のNAT越えIPからのnmap。 $ sudo nmap -v -p 8022 debian-test Starting Nmap 4.62 ( http://nmap.org ) at 2011-01-23 07:52 JST Initiating Ping Scan at 07:52 Scanning 192.168.87.140 [2 ports] Completed Ping Scan at 07:52, 3.02s elapsed (1 total hosts) Read data files from: /usr/share/nmap Note: Host seems down. If it is really up, but blocking our ping probes, try -PN Nmap done: 1 IP address (0 hosts up) scanned in 3.116 seconds Raw packets sent: 4 (136B) | Rcvd: 0 (0B)