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

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

ただいまの
回答率

90.51%

  • Linux

    3778questions

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

  • CentOS

    2708questions

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

  • FTP

    322questions

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

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

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 862

sityu

score 20

前提・実現したいこと

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

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Rayla_Purateado

    2017/02/10 11:37 編集

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

    キャンセル

  • sityu

    2017/02/10 11:42

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

    キャンセル

  • t_obara

    2017/02/10 15:20

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

    キャンセル

  • sityu

    2017/02/13 09:43

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

    キャンセル

回答 3

checkベストアンサー

+1

/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を分ける方法を採用する場合、

  1. ssh用ポート(22番)はFirewallで社内と開発会社のみに許可する。
  2. 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 11:51

    ありがとうございます。

    sshdは現在社内・または開発会社のみつながるようにallow内で設定しております。
    そこはそのままでsftp(22)だけアクセス可能にしたいのです。

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

    キャンセル

  • 2017/02/10 12:12 編集

    なるほど、そういう要件なんですね。
    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を使う なんて方法も思いつきます。

    いまスマホで、そのあたりを詳しくぽちぽち打つのはややつらいので、申し訳ないですが検索で調べてみて下さい。

    キャンセル

  • 2017/02/13 09:52

    追記にて細かいところまでありがとうございます。
    まだサーバー構築を進めている段階でしたので、OS再インストールから行い
    セキュリティの件を考慮してもらえるように資料を上に通してみようと思います。

    じゃあ責任もってやってみ?^^って感じになると思いますが、
    このままでいくよりはいいと思いますので。。。

    最悪の手段として分ける方法をとるときは参考にさせていただきます。
    本当にありがとうございました。

    キャンセル

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 11:49

    ありがとうございます。

    現在hosts.allowとdenyを使用して社内・また開発会社のみアクセスできるようにしております。
    恥ずかしながら、allow denyを使用している理由は追記の通りです。

    今回sftpでデータをサーバに自動アップロードするのですが、
    そのクライアント側が固定IPを取得できない為、
    sftpにip制限をかけたくないのです。

    やはりiptablesだけに統一する以外ないでしょうか?

    キャンセル

  • 2017/02/10 12:03

    iptablesだけに統一しなくても、sshd: ALLを記載することでどこからでもアクセス可能になります。

    sftpとsshを分けたいなら次のリンクの内容を参考になさってください。
    http://qiita.com/tjinjin/items/16ea25354e25467e8b56

    キャンセル

0

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

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/13 09:47

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

    ufwについて少し勉強させていただきます。
    ありがとうございました。

    キャンセル

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

  • ただいまの回答率 90.51%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Linux

    3778questions

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

  • CentOS

    2708questions

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

  • FTP

    322questions

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