平成30/ 2018-10-21 05:31
ssh/ IP制限, アクセス制限

sshのIP制限はいろいろ方法あるみたい。

1. TCP Wrappers で設定する方法。( うまくいった )
/etc/hosts.deny
sshd: all

/etc/hosts.allow
sshd : 118.xxx.xxx.xxx # sample
sshd : 124.xxx.xxx.xxx # sample

上記、更新後、すぐに反映される。既に開かれているものは大丈夫なので、
閉じる前に、動作検証しなければならない。

しかし、うまくいったサーバと、いかなかったサーバがあった。
原因は"TCP_Wrappers"がインストールされていないことみたいだ。
yum update tcp_wrappers

必要ならば、Installすれば良いのだが、も1つ確認することがあって、それは、SSHが"TCP Wrappers"に対応してるかどうかだ。
そもそも、"hosts.deny"が使えない時点でSSHが対応していない可能性は高い。
以下で知れべられる。

ldd /usr/sbin/sshd | grep wrap
SSHが"TCP Wrappers"に対応していれば以下のレスポンスが来るのだが、
        libwrap.so.0 => /lib/libwrap.so.0 (0x00cd6000)

実行したがレスポンス無かった。
"/usr/sbin/sshd"はバイナリファイル。だから"ldd"使っている。"ldd"が何かは良く分からない。

SSHを更新
yum update openssh
することで"TCP Wrappers"に対応になるのだが、ありがたいが、そうでなければ対応しているものを手動でインストールすることになる。SSH削除するので事前にTelnet接続できるようにするとかで面倒くさい。


2. SSH設定ファイルで設定。( やったことない )
/etc/ssh/sshd_config
ListenAddress 127.0.0.1
ListenAddress AAA.BBB.CCC.DDD

// ちなみに"/etc/ssh/ssh_config"はSSHクライアント用のファイル。
"/etc/ssh/sshd_config"はSSHサーバ用。


3. pam( やったことない )
これは、ユーザごとにIP制限かけたい場合に使えるのでそのときにでも。


4. iptables( やったことない )
これでアクセス制限してるサーバも多いみたい。

iptables -L
で以下のようにINPUTがDROPになっていることを確認してから、
Chain INPUT (policy DROP)

以下のようにIP制限できる。
iptables -A INPUT -s 118.xxx.xxx.xxx -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 118.xxx.xxx.xxx -p tcp --sport 22 -j ACCEPT

削除は、
iptables -L --line-numbers
とすると番号が確認できるので以下で削除できる。
iptables -D INPUT 24

"dport"、"sport"は以下の役割。
-- http://webcache.googleusercontent.com/search?q=cache:ahp1szTi5cAJ:www.miloweb.net/pastbbs/0006/1666.html+&cd=2&hl=ja&ct=clnk&gl=jp
--dportは、そのホスト(自分のWEBサーバ)に対する80番ポートへの接続を許可しています。
これがなければ、外部からの自分のサーバの80番ポートへのパケットがサーバに届きません。
(たとえWEBサーバが起動していても届きません。)

次に、--sportについて。
これは自分のWEBサーバの動作とは関係なく、そのホスト(自分のサーバの事です)が外部のWEBサーバに接続した時にその外部のWEBサーバから帰ってくるパケットを許可する設定です。
これがなければ自分のサーバ上でWEBブラウジングが出来なくなります。

「自分のサーバマシンでは一切WEBサイトを見ない」と言うのであれば、--sportの記述は要らない様です。
--

やってみようとしたが、ACCEPT_COUNTRY という海外IPを制限する設定があったため、そのサーバで僕がやっていいものか悩んで保留にした。


( Thanks. )
TCP Wrapperを用いたアクセス制御の実装
http://webcache.googleusercontent.com/search?q=cache:3jzzSRNfplUJ:www.server-world.info/query%3Fos%3DCentOS_5%26p%3Dtcp_wrapper+&cd=2&hl=ja&ct=clnk&gl=jp

iptableのsportとdportについて
http://webcache.googleusercontent.com/search?q=cache:ahp1szTi5cAJ:www.miloweb.net/pastbbs/0006/1666.html+&cd=2&hl=ja&ct=clnk&gl=jp

パケットフィルタリング(iptables)の削除
http://tejunsho.com/os/20110331000108.html

ファイアウォール(iptables)
http://chidipy.jpn.com/server/iptables/iptables.htm

iptablesコマンド
http://itpro.nikkeibp.co.jp/article/COLUMN/20070327/266505/

iptables
http://www.geocities.co.jp/SiliconValley-Cupertino/9120/iptables.html

telnet/sshの設定
http://webcache.googleusercontent.com/search?q=cache:X1L2WsQTIh8J:software.aufheben.info/linux/telnet.html+&cd=9&hl=ja&ct=clnk&gl=jp

iptablesでJP以外を拒否したい
http://fedorasrv.com/bbshtml/webpatio/3303.shtml

ファイアウォール(iptables)の設定
http://webcache.googleusercontent.com/search?q=cache:CB2ZfideXh8J:10key.net/firewall.html+&cd=8&hl=ja&ct=clnk&gl=jp

ssh を、ユーザ、IPでアクセス制限
http://kazmax.zpp.jp/linux/lin_pam.html

[LINUX] SSHをIPTABLESで制限する(WITHOUT HITCOUNT)
http://blog.onoh.info/linux-sshiptables

SSH サーバに接続するクライアントPCの制限
http://closeworld.exblog.jp/7680915/

SSHのアクセス元IPを制限する
http://www.ahref.org/tech/server/ssh-server/336.html

【第6回】TCPWrappers(hosts.allow,hosts.deny)とSSHの公開鍵認証について
http://webcache.googleusercontent.com/search?q=cache:7EtZCq_As1MJ:lpi.or.jp/column/linux/linux_m06.shtml+&cd=4&hl=ja&ct=clnk&gl=jp

pamを使ってSSHをIP制限する方法
http://blog.playispeace.com/234/restric_ssh_ip_using_pam/

pam + opensshでユーザごとのログインIP制限
http://webcache.googleusercontent.com/search?q=cache:cHXHRiLU_fYJ:d.hatena.ne.jp/hogem/20100906/1283789476+&cd=1&hl=ja&ct=clnk&gl=jp