ProFTPdの構築メモ
・インストール
使用した環境はVineLinux 3.2 ProFTPd 1.2.10-0vl1.1 BA8000Pro
特に問題なし。最近のLinuxは楽でいい。
注意するべきは、最小構成を選んでおかないとX11だのSquidだのといらないものまで入ってきてしまうことくらいか。
HDDが少ない(6GB)ので、Samba経由でWindowsPCに繋がっている大容量ストレージに接続、そこをFTPルートにしてしまうことに。
#追記 現在HTTP,FTP,SMTP,POP3,DHCP(LOCAL),NTP(LOCAL),SMB(LOCAL),HTTHOSTが動いています。それらのメモはまた今度。
proftpd samba samba-client ntp smartmontools iptablesをaptでインストール
aptでアップグレードして、/etc/lilo.confの書き換え
・ネットワークの設定
とりあえずIPを固定する。
# ifconfig eth0 192.168.1.**
# route add default gw 192.168.1.1 dev eth0
これらの設定を起動時に行うには、以下のファイルを編集
/etc/sysconfig/network-scripts/ifcfg-eth0
-BOOTPROTO=dhcp
+BOOTPROTO=static
IPADDR=192.168.1.**
GATEWAY=192.168.1.1
/etc/sysconfig/static-routes
+any net default gw 192.168.1.1 dev eth0
/etc/sysconfig/network
-HOSTNAME=localhost.localdomain
+HOSTNAME=HOSTNAME
ここら辺で一度再起動
ここから先はSSHで作業
・Sambaの設定
Sambaサーバ側でクォータ・アクセス許可を設定しておく
/etc/samba/smb.confを編集
workgroupとserver stringを変更
hosts allowは当然かけておく
load printersはNoに
/etc/fstabに以下の行を追加
//{Sambaサーバ}/{共有名} /{FTPルート} smbfs rw,username={ユーザー名},password={パスワード},iocharset=shift-jis,codepage=cp932 0 0
ここでiocharsetをshift-jisにしておくとクライアントからSJISで使える
マウント
# mount /{FTPルート}
$ ls /{FTPルート} でファイルが見えればOK
・ProFTPdの設定
とりあえずProFTPdを入れる
# apt-get install proftpd
/etc/proftpd.confに次のエントリを追加
UseReverseDNS off
IdentLookups off
DefaultRoot /{FTPルート}
ListOptions "-a"
PassivePorts 4000 4029
MasqueradeAddress {グローバルIPまたはDDNS名}
<Anonymous>セクションに次のエントリを追加
<Limit LOGIN>
DenyAll
</Limit>
<Directory>セクションに次のエントリを追加
AllowOverwrite on
AllowRetrieveRestart on
AllowStoreRestart on
また、ログオン時のメッセージを隠したければ
DefaultServer offに変更
ログを取るなら、/var/log/proftpd/を作成した上で次のエントリを追加
LogFormat allinfo "%t : %u (%a [%h]) : [%s], %T, %m (%f)"
LogFormat write "%t : %u : %F (%a)"
LogFormat read "%t : %u : %F (%a)"
LogFormat auth "%t : %u (%a [%h])"
ExtendedLog /var/log/proftpd/all.log ALL allinfo
ExtendedLog /var/log/proftpd/write.log WRITE write
ExtendedLog /var/log/proftpd/read.log READ read
ExtendedLog /var/log/proftpd/auth.log AUTH auth
・動かしてみる
# service proftpd start
LAN内からはローカルIPじゃないと繋がらないので注意。
ルータの中からグローバルIP指定してつなごうとしてもルータの制限で出来ないようです(iptablesの設定で何とかなる)
ftpコマンドまたはFFFTPなどでログインして、特に問題がなければ、後は好みで設定を変える
・iptablesの設定
ポートフォーワード・ファイアウォールをつける。
設定のコマンドの実行回数が多いので、シェルスクリプトにまとめる。
eth0がWAN、eth1がLAN ルータからDMZでぶら下がっている状態。そこからさらに数台のクライアントがぶら下がっている。
Sambaは外側のルータで止めてある。それ以外は全てサーバにフォーワーディングがかかっている。
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -t nat -F
iptables -X
#設定の初期化
iptbales -P INPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#基本的に入ってくるパケットは落とす。
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -P OUTPUT ACCEPT
iptables -A OUTPUT -p udp -j ACCEPT
iptables -P FORWARD DROP
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#ポートフォーワーディングもかけない。
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #SSH
iptables -A INPUT -p udp --sport 53 -j ACCEPT #DNS
iptables -A INPUT -p udp -i eth1 --dport 123 -j ACCEPT #NTP
iptables -A INPUT -p udp -i eth1 --sport 68 --dport 67 -j ACCEPT #DDNS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #HTTP
iptables -A INPUT -p tcp --dport 21 -j ACCEPT #FTP
iptables -A INPUT -p tcp --dport 4000:4029 -j ACCEPT #FTPDATA(PASV)
#他に空けたいポートも同じ要領で。
iptables -t nat -A POSTROUTING -o eth0 -s $LOCALIP_MASK -j MASQUERADE
#静的マスカレード これしないとeth1経由で外に出られない
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport $HTTHOST_PORT -j DNAT --to $HTTHOST_SERVER:$HTTHOST_PORT
iptables -A FORWARD -p tcp --dport $HTTHOST_PORT -j ACCEPT
#HTTHOSTのためにフォーワーディングをかける
iptables -t nat -A PREROUTING -p tci -i eth1 -d $GLOBAL_IP -j DNAT --to $SERVER_IP
#LANの内側からグローバルIPでサーバを見えるようにする(セキュリティ上好ましくないかも?)
iptables -A OUTPUT -o eth0 -d 192.168.0.0/16 -j DROP
#ローカルIPが外に流れないように 172.16.0.0/12などでもやっておく
iptables -N LOGGING
iptables -A LOGGING -p tcp --sport 137:139 -j DROP
iptables -A LOGGING -p udp --sport 137:138 -j DROP
iptables -A LOGGING -j LOG --log-level warning --log-prefix "DROP:" -m limit --limit 1/s
iptables -A LOGGING -j DROP
iptables -A INPUT -j LOGGING
iptables -A FORWARD -j LOGGING
#ログの設定。
iptablesの設定は再起動すると消えるので、/etc/rc.localあたりに書き加えておく。
・その他の設定
ntpd,smartd,smb,proftpdをchkconfigで自動起動デーモンに追加しておく
ついでに、gpm,kudzu,murasakiは必要ないので止めてしまう
.vimrcにset nobackupを追加
/etc/bashrcにalias ls='ls -F --show-control-chars'を追加
/etc/ssh/sshd_configにAllowUser {作業用ユーザ}を追加
・注意点
この記述はあくまで管理人の環境で構築したときの備忘録です。
他の環境では適用できないかもしれませんし、間違いもあるかと思います。
参考にする際は自己責任でどうぞ。