私はCentosの初心者だということから始めましょう。すべての情報、リンク、提案は大歓迎です。
最近、Centos 6でホストサーバーをセットアップし、Webサーバーとして構成しました。その上で実行されているウェブサイトは特別なものではなく、トラフィックの少ないプロジェクトです。サーバーを可能な限りデフォルトで構成しようとしましたが、サーバーも安全であることが好きです(ftpなし、カスタムsshポート)。
私のWordpressを希望どおりに実行するために、いくつかの接続の問題が発生しています。2つのことが機能していません。
私は他のすべてを試したので、これらは両方ともiptables構成に関連していると感じています(私は思います)。ポート465(gmail smtp)とsshポート(このポートが8000であるとしましょう)のトラフィックを受け入れるためにファイアウォールを開いてみましたが、両方の問題が残っています。ただし、端末からのSSH接続は正常に機能しています。変更を加えるたびに、実装を試みた後、iptablesサービスを再起動しました。
これは私のiptables構成です(vimを使用):
# Generated by iptables-save v1.4.7 on Sun Jun 1 13:20:20 2014
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8000 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 465 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-Host-prohibited
-A FORWARD -j REJECT --reject-with icmp-Host-prohibited
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 8000 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 465 -j ACCEPT
COMMIT
# Completed on Sun Jun 1 13:20:20 2014
上記の問題を考慮して、iptablesのセットアップに(明らかな)問題はありますか?この状態でファイアウォールがまったく何もしていないと言うことも答えです...
繰り返しになりますが、セキュリティを強化するためのその他の提案があれば(このボックスで行う基本的なことを考慮して)、それを聞いてみたいと思います。
ありがとう!
OUTPUTチェーンのデフォルトポリシーがACCEPTであることに気づきました。そのため、OUTPUTチェーンの最下部にDROPまたはREJECTルールがない場合、 wordpress iptables ルールは、すべてのトラフィックが任意のポートで出力できるようにします。
したがって、明確にするために、上記の構成では、allトラフィックはOUTPUTチェーンを介して許可されます。
/var/log/audit/audit.logでselinuxAVCの拒否を確認します。許可が拒否された場合は、httpdがSMTPネットワークポートに接続して電子メールを送信できないことを示している可能性があります。
いずれの場合も、/ var/log/maillogをチェックして、そこで許可が拒否されているかどうかを確認する必要があります。もちろん、postfix/sendmailが実際に実行されており、ローカルで利用できることを確認してください。
プラグインなどをインストールできない場合、これはほぼ間違いなく ワードプレスのファイルパーミッション の問題であり、以下のリンクで調べることができます。
これがお役に立てば幸いです。あなたの質問はやや古いと思いますが、その件名についてはグーグルで非常に登録されているので、おそらくこれは他の誰かを助けるかもしれません。
個人的には、ルートフォルダーにシェルスクリプトがあり、iptablesルールを追加するために実行できます。新しいルールを追加する必要がある場合は、スクリプトを実行するだけで、すべてのポートを開いて確認することができます。ファイアウォールの問題が原因で問題が発生しています(これは、ビジネス上重要なものが何もない私の個人用サーバーです。盗む価値のあるものがある場合は、すべてのポートを長時間開くことはお勧めしません)。
ただし、テストできる場合は、これをマシンにローカルに保存することをお勧めします(ルートフォルダーは、ファイルを表示してそのアクセス許可を700(chmod 700ファイル名)に設定できる唯一のルートであるため、IMOに適しています。 sh-私は私のfirewall.shとfirewallopen.shを呼び出します)):
#!/bin/bash
#
# iptables config script
#
# Flush all current rules from iptables
#
iptables -F
#
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#
# Set access for localhost
#
iptables -A INPUT -i lo -j ACCEPT
#
# Accept packets belonging to established and related connections
#
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# Save settings
#
/sbin/service iptables save
#
# List rules
#
iptables -L -v
次に、同様のファイルを作成してサーバーをロックダウンします(予期しない結果が発生しないように、スクリプトの開始時にすべてのルールを削除します。サーバーからのすべての送信接続を受け入れることに注意してください)。
#!/bin/bash
#
# iptables config script
#
# Flush all current rules from iptables
#
echo "Clearing old rules"
iptables -F
#
echo "Adding new rules"
# Example rules
# Allow SSH connections on tcp port 22
iptables -A INPUT -p tcp --dport 22 -j ACCEPT -m comment --comment "SSH"
# Set default policies for INPUT, FORWARD and OUTPUT chains
#
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
#
# Set access for localhost
#
iptables -A INPUT -i lo -j ACCEPT
#
# Accept packets belonging to established and related connections
#
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# Save settings
#
/sbin/service iptables save
#
# List rules
#
iptables -L -v
設定したい同様のルールをこのファイルに追加できます。後で戻ったときに頭のオナラがないように、すべてにコメントする傾向があります。
両方のスクリプトを入手したら、ファイアウォールのオンとオフを簡単かつ迅速に切り替えて、ファイアウォールを無効にした後も問題が続くかどうかをテストできます。その後、簡単に再びオンに戻すことができます。
CentOSで考慮すべき非常に重要なことの1つは、Security Enhanced(SE)Linuxです。これは、正しく使用すると強力なツールですが、ファイアウォールを無効にしても問題が解決しない場合は、システムを初めてセットアップするときに機能しなくなる傾向があります。テストのためにselinuxも無効にしてみます(これで問題が解決した場合は、SE Linuxを無効のままにしておくと、安全性が低下するか、audit2allowを使用して独自のSE linuxポリシーを作成することができます)
SE Linuxを無効にするには:
setenforce 0
おそらく、Webホストサービスも同時に再起動する必要があります(httpd/Apacheを使用していると仮定します)。
service httpd restart
次に、再テストして、オンに戻すことができます。
setenforce 1
これがお役に立てば幸いです:)