私のサーバーでファイアウォールを実行しており、セキュリティを向上させるために(ファイアウォールを使用して)Fail2banを設定しようとしています。問題は、確立された接続を終了できないことです。
Firewalldには、いくつかのサービス(Sshなど)のみが追加されたデフォルト設定があります。
問題が何であるかがわかります。
iptables -L INPUT
これをください。
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
INPUT_direct all -- anywhere anywhere
INPUT_ZONES_SOURCE all -- anywhere anywhere
INPUT_ZONES all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
iptablesの私の理解によると、これは最初のルールなので、関連して確立された接続が何があっても許可されることを意味します(指定されたポートのみが開いている間に2番目のルールが存在する理由はわかりませんが、今は無視します)。 。
私が試したのは最初のルールを削除することでしたがiptables -D INPUT 1
、これはネットワークもネットワークもまったくないシステムを残しました。だから私は再びルールを追加しましたが、最後のルールから2番目に追加しました。iptables -I INPUT 7 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
。
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
INPUT_direct all -- anywhere anywhere
INPUT_ZONES_SOURCE all -- anywhere anywhere
INPUT_ZONES all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
これはあなたが望む効果があるようです。これで、Fail2banエントリが作成されると、確立された接続が終了し、残りのネットワークが機能しているように見えます。
質問:これを保存するためにファイアウォールをどのように使用しますか?私はファイアウォールを恒久的に変更できることを知っており、andを介してfirewall-cmd --permanent
より低いレベルの作業を実行できることを知っていますが、INPUTチェーンを深く操作する方法を見つけることができませんでした。--direct
--xxx-rich-rule
編集する:私はこれを使って--passthrough
INPUTチェーンを操作できることを発見しました。しかし、永久に作ろうとすると次のようになります。
firewall-cmd --direct --passthrough ipv4 -I INPUT 7 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
firewall-cmd --direct --passthrough ipv4 -D INPUT 1
systemctl restart firewalld
挿入は機能しますが、削除は機能しません。この後、以下がiptables -L INPUT
生成されます。
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
INPUT_direct all -- anywhere anywhere
INPUT_ZONES_SOURCE all -- anywhere anywhere
INPUT_ZONES all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
編集する:
私はまだFail2banのファイアウォール作業をどのように機能させるかを見つけることができなかったので、現時点ではそれが可能だとは思わない。
代わりにFail2ban iptablesタスクを使用すると動作しますので、引き続き使用します。
答え1
ファイアウォールがPREROUTINGへの要求をブロックしたいようです。壊す以前確認したテーブルフィルタールールを追加するテーブルです。
簡単な禁止
確立されたセッションをブロックするための簡単なオプションは、ソースルールを追加することです。減らすゾーン。
firewall-cmd --zone=drop --add-source=192.168.1.xx
PREROUTING_ZONES_SOURCE チェーンにソース IP が追加されます。壊すテーブル。
# iptables -L PREROUTING_ZONES_SOURCE -nv --line -t mangle
Chain PREROUTING_ZONES_SOURCE (1 references)
num pkts bytes target prot opt in out source destination
1 23 1656 DROP all -- * * 192.168.1.xx 0.0.0.0/0
PREROUTING_ZONES_SOURCE電話をかける事前ルーティングすべてのトラフィックを処理する前に処理するチェーン入力するリンクインフィルターまたは壊す。
# iptables -L PREROUTING -nv --line -t mangle
Chain PREROUTING (policy ACCEPT 1809 packets, 90324 bytes)
num pkts bytes target prot opt in out source destination
1 227K 22M PREROUTING_direct all -- * * 0.0.0.0/0 0.0.0.0/0
2 227K 22M PREROUTING_ZONES_SOURCE all -- * * 0.0.0.0/0 0.0.0.0/0
3 226K 22M PREROUTING_ZONES all -- * * 0.0.0.0/0 0.0.0.0/0
カスタム禁止ルール
より具体的なルールを追加する必要がある場合は、以下を使用してください。--直接--ルールを追加ルールの追加損傷/入力後で実行マングル/事前ルーティング。以下は、特定のIPに対してポート443をブロックする例です。
# firewall-cmd --direct --add-rule ipv4 mangle INPUT 0 -p tcp --dport 443 -s 192.168.1.xx -j DROP
形式は次のとおりです。
--direct --add-rule { ipv4 | ipv6 | eb } table chain priority args
この例では、次のようになります。
- {IPv4 | IPv6エプ} ->IPv4:IPv4プロトコルの指定
- テーブル - >壊す:パケットを受信した後、ルールを確認する前にすぐに実行してください。フィルターESTABLISHED 接続のパケットを許可するテーブルなどのテーブルです。
- チェーン->入力する:このINPUTチェーンはPREROUTINGの後に確認されますが、このINPUTはPREROUTINGとは関係ありません。壊すテーブル。
- 優先順位->0:ルール優先順位。ここで、0が最も高い優先順位です。
- パラメータ->-p tcp --dport 443 -s 192.168.1.xx -j 削除:同じパラメータがiptablesに渡されます。
それでは、マングル/INPUT_direct良い:
# iptables -L INPUT_direct -nv --line -t mangle
Chain INPUT_direct (1 references)
num pkts bytes target prot opt in out source destination
1 30 1888 DROP tcp -- * * 192.168.1.181 0.0.0.0/0 tcp dpt:443
いくつかのメモ
最初の例は送信元 IP のすべてのパケットをブロックしますが、2 番目の例は PREROUTING ルールの後に実行されるため、INPUT に到達する前にパケットが変更された場合、またはパケットが FORWARD テーブルにルーティングされる場合、データパッケージは DROP ルールに到達しません。
以下は簡単なフローチャートです。Webフィルタ表面。 以下から抽出された画像http://www.iptables.info/en/struct-of-iptables.html