質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

3回答

4173閲覧

CentOSにて一部ポートのみ全開放する設定

sityu

総合スコア37

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

1クリップ

投稿2017/02/10 02:19

編集2017/02/10 02:45

###前提・実現したいこと
CentOSにてサーバー構築を行っております。
基本的にはhosts.allow denyとiptablesを用いてipによるアクセス制限をしているのですが、
sftpの22番ポートだけはhost.allow denyを介さず、全アクセス許可したいのですが、
どのように設定していいのかわかりません。

可能でしょうか?また、どのようにしたらいいのでしょうか?

追記 2017/2/10 11:43
申し訳ございませんが、特別な理由はありません。恥ずかしながら、社内にサーバー構築に長けた人間がおらず、最初にサーバーを立てた手順書を基に構築を行っております。そこで今回sftpでアクセスしてくるIPが固定でない事がわかりあたふたしているところでございます。

sftpは元から入っている物だと思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Rayla_Purateado

2017/02/10 02:41 編集

SFTPはCentOSに元から入っているもので行うのでしょうか?
sityu

2017/02/10 02:42

申し訳ございませんが、特別な理由はありません。恥ずかしながら、社内にサーバー構築に長けた人間がおらず、最初にサーバーを立てた手順書を基に構築を行っております。そこで今回sftpでアクセスしてくるIPが固定でない事がわかりあたふたしているところでございます。
t_obara

2017/02/10 06:20

今時iptablesということは、証明書ベース認証でもなく、selinuxもDisabledで運用されていたりするのですよね(想像)。その状態で、22番を他のIPからアクセスできるようにするとは、貴社は不正アクセスを生み出す助長をしている企業と思われても仕方がありません。もし、情報漏洩が発生した場合、損害賠償請求を求められることを覚悟しなければなりません。ということで、外注でもして、きちんとセキュリティを考慮した運用ができるように構築することをお勧めします。
sityu

2017/02/13 00:43

ご指摘有難うございます。証明書は一応発行しておりますが、セキュリティには疎いというのは間違いないです。情報系として大変恥ずかしい限りです。サーバー構築全般の見直しをできるようにかけあってみるようにします。ありがとうございました。
guest

回答3

0

ベストアンサー

/etc/hosts.allowに

sshd : all

では駄目ですか?

完全にTCP Wrapperの支配から抜けたいなら、OpenSSHのソースを拾ってきて、TCPWrapperを無効にしてコンパイルしてやればいいんですかね。

追記(2017/02/11 03:20)

さて。

sshdは現在社内・または開発会社のみつながるようにallow内で設定しております。

そこはそのままでsftp(22)だけアクセス可能にしたいのです。

allowを使うやり方では難しいでしょうか

ということでしたので、回答に追記を。
まず、hosts.allow(TCP Wrappers)だけで要件を満たすのは厳しいと思います。

mooonphaseさんが提示された、sftpとsshを分ける方法を採用する場合、
0. ssh用ポート(22番)はFirewallで社内と開発会社のみに許可する。
0. sftp用ポート(22番以外)はFirewallで全許可する。

という感じなのかなと思います。
ただ、御社の情シスや偉い方が
「よくわからんポートを開放したくないから、現状のままでなんとかせよ」
と言う場合は、別の方法を検討するしかないです。

最初思いついた方法は、この回答のコメントに書いた
「sshとsftpのユーザーを分ける」+「ユーザー毎にアクセス制限をかける」
ものですが、よくよくManページを確認したらアドレスのみでもいけることがわかりました。

/etc/ssh/sshd_configの最後に、以下のように追記し、sshdサービスを再起動します。
※再起動時に「Subsystem sftp~」とか出たら、既存の設定に「Subsystem sftp~」がないか確認し、コメントアウトして下さい。

(↑ここから上は既存の設定) Subsystem sftp internal-sftp Match Address *,!192.168.0.0/24 ForceCommand internal-sftp

上記の場合、「全てのアクセス元にsftpのみ許可、ただし192.168.0.0/24からは除く」という設定になります。
許可アドレスを追加する場合は「Match Address」の行に「,!許可するアドレス」を追加していきます。
ホスト名を指定する場合は「Match Host *,!~」となるかと思いますが、詳細はManページなどをご確認下さい。

SSHD_CONFIG(5)

なお、Subsystem sftpに指定する「internal-sftp」は別にデフォルトのsftp-serverでも構いませんが、「internal-sftp」だと
This Service allows sftp connections only.
と出てくれたりします。

何年もOpenSSH触ってるはずなのに、未だに使いこなせてなかったんだなーと反省。

投稿2017/02/10 02:42

編集2017/02/10 19:36
kanbeworks

総合スコア829

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sityu

2017/02/10 02:51

ありがとうございます。 sshdは現在社内・または開発会社のみつながるようにallow内で設定しております。 そこはそのままでsftp(22)だけアクセス可能にしたいのです。 allowを使うやり方では難しいでしょうか
kanbeworks

2017/02/10 18:14 編集

なるほど、そういう要件なんですね。 sftp専用ユーザーを用意して、そのユーザーにはsftpだけ許可。 社内と開発会社にはsshできるアカウントを発行し、それ以外はsftp専用アカウントのみ発行するって方法も考えられますが、そういうのでは駄目ですか? /etc/ssh/sshd_configの最後にこんなのを追加してサービス再起動してください。 ``` Subsystem sftp internal-sftp Match User sftponlyuser ForceCommand internal-sftp ``` sshを許可するユーザーのアクセス元で制限する場合、(1)sshd_configのAllowUsers もしくは(2)PAMの/etc/pam.d/sshdの設定でpam_access.soを使う なんて方法も思いつきます。 いまスマホで、そのあたりを詳しくぽちぽち打つのはややつらいので、申し訳ないですが検索で調べてみて下さい。
sityu

2017/02/13 00:52

追記にて細かいところまでありがとうございます。 まだサーバー構築を進めている段階でしたので、OS再インストールから行い セキュリティの件を考慮してもらえるように資料を上に通してみようと思います。 じゃあ責任もってやってみ?^^って感じになると思いますが、 このままでいくよりはいいと思いますので。。。 最悪の手段として分ける方法をとるときは参考にさせていただきます。 本当にありがとうございました。
guest

0

明後日の回答になってしまうかな?と思いますが、一応参考までに...

あくまで私の場合ですが、
管理が面倒なので ufw を使っております。

また、TCP Wrapper + iptablesの設定がすごく すごくだるいので、kanbeworks様のおっしゃられたとおり、
OpenSSHを入れております。

ufw では基本的に
デフォルト設定に
基本許可されているもの以外破棄 ufw default deny
開放させておきたいポートを指定 ufw allow 22/tcp(もしくはSSHのアプリケーション/変更済みのポート番号)

以上のようにやります。(一応これだけで設定自体は完了です。サーバー設定は省いてます。)

投稿2017/02/10 02:54

Rayla_Purateado

総合スコア97

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sityu

2017/02/13 00:47

ありがとうございます。 恥ずかしながらufwというものを知りませんでした。 Firewallの設定を簡略化してくれるツールと思っていいんでしょうか。。。 ufwについて少し勉強させていただきます。 ありがとうございました。
guest

0

そもそもやりたいことはSSHには制限をかけたくないだけでしょうか?
手段が限定されているのが気になります。

  • SSH(SCP)等を許可するには以下でできます
$ cat /etc/hosts.allow sshd: ALL $ cat /etc/sysconfig/iptable -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

ですが、TCP Wrapperをそもそも使いたくないということでしょうか?
もしそうであれば、sshdをlibwrapを使わないようにビルドしてインストールしてください。

  • libwrapがリンクされてるものはTCP Wrapperを利用しています。
# ldd /usr/sbin/sshd | grep libwrap libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fc908cde000)

一番簡単な解決方法はTCP Wrappersをアンインストールしてiptablesに統合することです。

投稿2017/02/10 02:43

moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sityu

2017/02/10 02:49

ありがとうございます。 現在hosts.allowとdenyを使用して社内・また開発会社のみアクセスできるようにしております。 恥ずかしながら、allow denyを使用している理由は追記の通りです。 今回sftpでデータをサーバに自動アップロードするのですが、 そのクライアント側が固定IPを取得できない為、 sftpにip制限をかけたくないのです。 やはりiptablesだけに統一する以外ないでしょうか?
moonphase

2017/02/10 03:03

iptablesだけに統一しなくても、sshd: ALLを記載することでどこからでもアクセス可能になります。 sftpとsshを分けたいなら次のリンクの内容を参考になさってください。 http://qiita.com/tjinjin/items/16ea25354e25467e8b56
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問