PROFTPを使っているサーバがあり、ログイン時にIP制限を入れています。

この状態だとどのアカウントでもIP制限が効いてしまいます。
その中で、特定のユーザーだけIP制限を解除(効かないようにして)して、ログイン出来るようにしたいです。

そのような場合、どのように記述すればいいのでしょうか?

現在の設定

<Limit LOGIN>
Order deny,allow
DenyUser All
AllowUser user1,user2
</Limit LOGIN>

<Limit LOGIN>
Order Allow,Deny
Allow from aaa.aaa.aaa.aaa
Allow from 192.168.0.
Deny from all
</Limit>

回答の条件
  • 1人2回まで
  • 登録:2007/07/20 17:13:48
  • 終了:2007/07/21 12:31:06

ベストアンサー

id:ttamo No.2

たも回答回数175ベストアンサー獲得回数292007/07/20 21:41:21

ポイント65pt

ProFTPd の実験環境がないので、ぐぐっただけですが、

ここの「外部からのアクセスを禁止する」という部分に、

上のユーザーを限定する「AllowUser」と同時に指定すると、「または」の関係になるところに注意してください。AllowUserで指定したユーザーはどこからでも接続でき、それ以外のユーザーも192.168.0.××からは接続ができます。

とありますから、

両方とも Order allow,deny にするとどうなんでしょうか。

<Limit LOGIN>
 Order allow,deny
 AllowUser user1,user2
 DenyAll
</Limit>

<Limit LOGIN>
 Order allow,deny
 Allow from aaa.aaa.aaa.aaa
 Allow from 192.168.0.
 DenyAll
</Limit>

という感じ……でしょうか。



また、ここ (英語) には

Another related question often asked is "How can I limit a user to only being able to login from a specific range of IP addresses?" The <Limit LOGIN> can be used, in conjunction with the mod_ifsession module and a Class, to configure this:

(よくある質問として「どうすれば、あるユーザを特定の IP アドレス範囲からだけログインできるように制限できますか」というのがあります。<Limit LOGIN> を mod_ifsession (デフォルトではコンパイルされない?) や Class と組み合わればできます。)

  <Class friends>
    From 1.2.3.4/8
  </Class>

  <IfUser dave>
    <Limit LOGIN>
      AllowClass friends
      DenyAll
    </Limit>
  </IfUser>

とあります。この mod_ifsession の入手方法はわかりませんが、この指示に従えば

<IfUser !user1>
 <Limit LOGIN>
  Allow from ...
  DenyAll
 </Limit>
</IfUser>

という感じで、「user1 はどこからでも OK、それ以外は ... からだけアクセス OK」になりそうです。

ifsession をコンパイルするには configure に --with-modules=mod_ifsession を付けるそうです。




自信ありませんが、お役に立てば幸いです。

id:chirubo

mod_ifsessionでうまくいきました。

普通にダウンロードしたproftpに

./configure --with-modules=mod_ifsession

をつけるだけでいけました。

設定内容はこういう形になりました。

この場合、user2がIP制限に掛からない状態です。

<Class local>

From aaa.aaa.aaa.aaa,192.168.0.

</Class>


<IfUser !user2>

<Limit LOGIN>

AllowClass local

DenyAll

</Limit>

</IfUser>


<Limit LOGIN>

Order allow,deny

AllowUser user1,user2

DenyUser All

</Limit LOGIN>

ありがとうございます!

英文が読めるといいですね。。

2007/07/21 12:30:51

その他の回答(2件)

id:Yota No.1

Yota回答回数453ベストアンサー獲得回数282007/07/20 17:33:26

ポイント5pt

くっつけたらどうですか。

<Limit LOGIN>

Order allow,deny

AllowUser user1,user2

Allow from aaa.aaa.aaa.aaa,192.168.0.

Deny all

</Limit>

http://dummy.com/

id:chirubo

この場合を試してみたのですが、IPアクセス制限が一切効いていませんでした(どのような場合でも)。

2007/07/20 19:10:02
id:ttamo No.2

たも回答回数175ベストアンサー獲得回数292007/07/20 21:41:21ここでベストアンサー

ポイント65pt

ProFTPd の実験環境がないので、ぐぐっただけですが、

ここの「外部からのアクセスを禁止する」という部分に、

上のユーザーを限定する「AllowUser」と同時に指定すると、「または」の関係になるところに注意してください。AllowUserで指定したユーザーはどこからでも接続でき、それ以外のユーザーも192.168.0.××からは接続ができます。

とありますから、

両方とも Order allow,deny にするとどうなんでしょうか。

<Limit LOGIN>
 Order allow,deny
 AllowUser user1,user2
 DenyAll
</Limit>

<Limit LOGIN>
 Order allow,deny
 Allow from aaa.aaa.aaa.aaa
 Allow from 192.168.0.
 DenyAll
</Limit>

という感じ……でしょうか。



また、ここ (英語) には

Another related question often asked is "How can I limit a user to only being able to login from a specific range of IP addresses?" The <Limit LOGIN> can be used, in conjunction with the mod_ifsession module and a Class, to configure this:

(よくある質問として「どうすれば、あるユーザを特定の IP アドレス範囲からだけログインできるように制限できますか」というのがあります。<Limit LOGIN> を mod_ifsession (デフォルトではコンパイルされない?) や Class と組み合わればできます。)

  <Class friends>
    From 1.2.3.4/8
  </Class>

  <IfUser dave>
    <Limit LOGIN>
      AllowClass friends
      DenyAll
    </Limit>
  </IfUser>

とあります。この mod_ifsession の入手方法はわかりませんが、この指示に従えば

<IfUser !user1>
 <Limit LOGIN>
  Allow from ...
  DenyAll
 </Limit>
</IfUser>

という感じで、「user1 はどこからでも OK、それ以外は ... からだけアクセス OK」になりそうです。

ifsession をコンパイルするには configure に --with-modules=mod_ifsession を付けるそうです。




自信ありませんが、お役に立てば幸いです。

id:chirubo

mod_ifsessionでうまくいきました。

普通にダウンロードしたproftpに

./configure --with-modules=mod_ifsession

をつけるだけでいけました。

設定内容はこういう形になりました。

この場合、user2がIP制限に掛からない状態です。

<Class local>

From aaa.aaa.aaa.aaa,192.168.0.

</Class>


<IfUser !user2>

<Limit LOGIN>

AllowClass local

DenyAll

</Limit>

</IfUser>


<Limit LOGIN>

Order allow,deny

AllowUser user1,user2

DenyUser All

</Limit LOGIN>

ありがとうございます!

英文が読めるといいですね。。

2007/07/21 12:30:51
id:Yota No.3

Yota回答回数453ベストアンサー獲得回数282007/07/21 09:58:20

ポイント10pt

これはどうでしょう。

<Limit LOGIN>

Order allow,deny

AllowUser user1,user2

DenyUser All

Order allow,deny

Allow from aaa.aaa.aaa.aaa,192.168.0.

Deny all

Satisfy Any

</Limit>

id:chirubo

この場合ですと、proftp側でSatisfy Anyに対応しておりませんでした。

その為、エラーとなってしまいました。

Satisfy Anyはapacheにはあるようでしたので、うまく使えばいけるのかもしれません。

2007/07/21 12:27:30
  • id:chirubo
    どうやらデフォルトでは使えないようですが、prpftpdにもSatisfy Anyがあるんですね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません