修正する

修正する

次のようにファイアウォールを無効にします。

#!/bin/bash
iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

修正する

また、ファイアウォールを有効にしました。

 #!/bin/bash

ssh=x.x.x.x
http='x.x.x.x y.y.y.y'

# Clear any previous rules.
iptables -F

# Default drop policy.
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Allow anything over loopback.
iptables -A INPUT -i lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

# Drop any tcp packet that does not start a connection with a syn flag.
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# Drop any invalid packet that could not be identified.
iptables -A INPUT -m state --state INVALID -j DROP

# Drop invalid packets.
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN              -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST              -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,RST FIN,RST              -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags ACK,FIN FIN                  -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags ACK,URG URG                  -j DROP

# Allow TCP/UDP connections out. Keep state so conns out are allowed back in.
iptables -A INPUT  -p tcp -m state --state ESTABLISHED     -j ACCEPT
iptables -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT  -p udp -m state --state ESTABLISHED     -j ACCEPT
iptables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED -j ACCEPT

# Allow only ICMP echo requests (ping) in. Limit rate in. Uncomment if needed.
iptables -A INPUT  -p icmp -m state --state NEW,ESTABLISHED --icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED --icmp-type echo-request -j ACCEPT

iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED --source $ssh -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 22 -j DROP

for web in $http; do
    iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED --source $web -p tcp -m multiport --dports 80,443 -j ACCEPT
    iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp -m multiport --dports 80,443 -j DROP
done


# or block ICMP allow only ping out
iptables -A INPUT  -p icmp -m state --state NEW -j DROP
iptables -A INPUT  -p icmp -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED -j ACCEPT

x.x.x.xだからSSH経由で私に接続できるようにしたいです。また、次のIPが自分のポートを表示できるようにしたいです80,443

x.x.x.x
y.y.y.y

どのように変更できますか?

答え1

私の考えでは、あなたのルールが間違った順序だと思います。 iptablesでは-A 追加チェーンの前に挿入するのではなく、チェーンに取り付けてください。一般的には...

iptables -A INPUT  -p tcp -m state --state ESTABLISHED     -j ACCEPT

それから

# Drop any tcp packet that does not start a connection with a syn flag.
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

順序を変更する代わりに、Rewrite it を使用して、-I INPUT 1各ルールを前のルールの前、つまり上部に挿入することができます。ただし、この場合はtail ping / icmpルールを移動する必要があります。

今質問に戻ります。

iptables -N SSH_CHECK
iptables -N HTTP_CHECK

iptables -A INPUT -p tcp --dport 22 -j SSH_CHECK
iptables -A INPUT -p tcp --dport 80 -j HTTP_CHECK
iptables -A INPUT -p tcp --dport 443 -j HTTP_CHECK

iptables -A SSH_CHECK -s x.x.x.x -j ACCEPT -m comment --comment "allow joe to ssh from his IP"
iptables -A HTTP_CHECK -s y.y.y.y -j ACCEPT -m comment --comment "allow mary to visit my HTTP/S server"

デフォルトの削除ポリシーは、正規化されていないIPを処理します。

関連情報