このスレッドは未解決です(解決したらこちらで解決済にしてください)
<<戻る

CentOS7 + sshd 外部から接続できない このメッセージに返信する
日時: 2015/06/30(Tue) 20:38
名前: フテイシ
URL:
いつもこのサイトで勉強をさせて頂いています、フテイシともうします。
今日はお助け願いたく、投稿させて頂いています。

内部のLANからはssh接続ができ、外部からも、iptables.shを実行する前であれば
接続できるのですがiptables.shを実行するとport 22 connection refuseとなってしまいます。
iptables.shの内容を見ても原因がわからないため、一緒に考えていただけないかと思いました。
よろしくお願いします。

以下はiptables.shの内容です。
記事編集 編集
Re: CentOS7 + sshd 外部から接続できない このメッセージに返信する
日時: 2015/06/30(Tue) 20:39
名前: フテイシ
URL:
#!/bin/bash

LOCALNET=192.168.0.0/24

if [ -f /usr/libexec/iptables/iptables.init ]; then
/usr/libexec/iptables/iptables.init stop
else
/etc/rc.d/init.d/iptables stop
fi

IPTABLES_CONFIG=`mktemp`
echo "*filter" >> $IPTABLES_CONFIG
echo ":INPUT DROP [0:0]" >> $IPTABLES_CONFIG # 受信はすべて破棄
echo ":FORWARD DROP [0:0]" >> $IPTABLES_CONFIG # 通過はすべて破棄
echo ":OUTPUT ACCEPT [0:0]" >> $IPTABLES_CONFIG # 送信はすべて許可
echo ":ACCEPT_COUNTRY - [0:0]" >> $IPTABLES_CONFIG # 指定した国からのアクセスを許可
echo ":DROP_COUNTRY - [0:0]" >> $IPTABLES_CONFIG # 指定した国からのアクセスを破棄
echo ":LOG_PINGDEATH - [0:0]" >> $IPTABLES_CONFIG # Ping of Death攻撃はログを記録して破棄

echo "-A INPUT -i lo -j ACCEPT" >> $IPTABLES_CONFIG

echo "-A INPUT -s $LOCALNET -j ACCEPT" >> $IPTABLES_CONFIG

echo "-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT" >> $IPTABLES_CONFIG

sysctl -w net.ipv4.tcp_syncookies=1 > /dev/null
sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf
echo "net.ipv4.tcp_syncookies=1" >> /etc/sysctl.conf

sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 > /dev/null
sed -i '/net.ipv4.icmp_echo_ignore_broadcasts/d' /etc/sysctl.conf
echo "net.ipv4.icmp_echo_ignore_broadcasts=1" >> /etc/sysctl.conf

sed -i '/net.ipv4.conf.*.accept_redirects/d' /etc/sysctl.conf
for dev in `ls /proc/sys/net/ipv4/conf/`
do
sysctl -w net.ipv4.conf.$dev.accept_redirects=0 > /dev/null
echo "net.ipv4.conf.$dev.accept_redirects=0" >> /etc/sysctl.conf
done

sed -i '/net.ipv4.conf.*.accept_source_route/d' /etc/sysctl.conf
for dev in `ls /proc/sys/net/ipv4/conf/`
do
sysctl -w net.ipv4.conf.$dev.accept_source_route=0 > /dev/null
echo "net.ipv4.conf.$dev.accept_source_route=0" >> /etc/sysctl.conf
done

echo "-A INPUT -f -j LOG --log-prefix \"[IPTABLES FRAGMENT] : \"" >> $IPTABLES_CONFIG
echo "-A INPUT -f -j DROP" >> $IPTABLES_CONFIG

echo "-A INPUT ! -s $LOCALNET -p tcp -m multiport --dports 135,137,138,139,445 -j DROP" >> $IPTABLES_CONFIG
echo "-A INPUT ! -s $LOCALNET -p udp -m multiport --dports 135,137,138,139,445 -j DROP" >> $IPTABLES_CONFIG
echo "-A OUTPUT ! -d $LOCALNET -p tcp -m multiport --sports 135,137,138,139,445 -j DROP" >> $IPTABLES_CONFIG
echo "-A OUTPUT ! -d $LOCALNET -p udp -m multiport --sports 135,137,138,139,445 -j DROP" >> $IPTABLES_CONFIG

echo "-A LOG_PINGDEATH -m limit --limit 1/s --limit-burst 4 -j ACCEPT" >> $IPTABLES_CONFIG
echo "-A LOG_PINGDEATH -j LOG --log-prefix \"[IPTABLES PINGDEATH] : \"" >> $IPTABLES_CONFIG
echo "-A LOG_PINGDEATH -j DROP" >> $IPTABLES_CONFIG
echo "-A INPUT -p icmp --icmp-type echo-request -j LOG_PINGDEATH" >> $IPTABLES_CONFIG

echo "-A INPUT -d 255.255.255.255 -j DROP" >> $IPTABLES_CONFIG
echo "-A INPUT -d 224.0.0.1 -j DROP" >> $IPTABLES_CONFIG

echo "-A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset" >> $IPTABLES_CONFIG

ACCEPT_COUNTRY_MAKE(){
for addr in `cat /tmp/cidr.txt|grep ^$1|awk '{print $2}'`
do
echo "-A ACCEPT_COUNTRY -s $addr -j ACCEPT" >> $IPTABLES_CONFIG
done
grep ^$1 $IP_LIST >> $CHK_IP_LIST
}

DROP_COUNTRY_MAKE(){
for addr in `cat /tmp/cidr.txt|grep ^$1|awk '{print $2}'`
do
echo "-A DROP_COUNTRY -s $addr -m limit --limit 1/s -j LOG --log-prefix \"[IPTABLES DENY_COUNTRY] : \"" >> $IPTABLES_CONFIG
echo "-A DROP_COUNTRY -s $addr -j DROP" >> $IPTABLES_CONFIG
done
grep ^$1 $IP_LIST >> $CHK_IP_LIST
}

IP_LIST=/tmp/cidr.txt
CHK_IP_LIST=/tmp/IPLIST
if [ ! -f $IP_LIST ]; then
wget -q http://nami.jp/ipv4bycc/cidr.txt.gz
gunzip -c cidr.txt.gz > $IP_LIST
rm -f cidr.txt.gz
fi
rm -f $CHK_IP_LIST

ACCEPT_COUNTRY_MAKE JP
DROP_COUNTRY_MAKE CN
DROP_COUNTRY_MAKE CA
DROP_COUNTRY_MAKE IR
DROP_COUNTRY_MAKE NL
DROP_COUNTRY_MAKE TW
echo "-A INPUT -j DROP_COUNTRY" >> $IPTABLES_CONFIG

echo "-A INPUT -p tcp --dport 22 -j ACCEPT_COUNTRY" >> $IPTABLES_CONFIG

echo "-A INPUT -p tcp --dport 53 -j ACCEPT" >> $IPTABLES_CONFIG
echo "-A INPUT -p udp --dport 53 -j ACCEPT" >> $IPTABLES_CONFIG

echo "-A INPUT -p tcp --dport 80 -j ACCEPT" >> $IPTABLES_CONFIG

echo "-A INPUT -p tcp --dport 443 -j ACCEPT" >> $IPTABLES_CONFIG

echo "-A INPUT -p tcp --dport 21 -j ACCEPT_COUNTRY" >> $IPTABLES_CONFIG

echo "-A INPUT -p tcp --dport 60000:60030 -j ACCEPT_COUNTRY" >> $IPTABLES_CONFIG

echo "-A INPUT -p tcp --dport 25 -j ACCEPT" >> $IPTABLES_CONFIG

echo "-A INPUT -p tcp --dport 465 -j ACCEPT_COUNTRY" >> $IPTABLES_CONFIG

echo "-A INPUT -p tcp --dport 110 -j ACCEPT_COUNTRY" >> $IPTABLES_CONFIG

echo "-A INPUT -p tcp --dport 995 -j ACCEPT_COUNTRY" >> $IPTABLES_CONFIG

echo "-A INPUT -p tcp --dport 143 -j ACCEPT_COUNTRY" >> $IPTABLES_CONFIG

echo "-A INPUT -p tcp --dport 993 -j ACCEPT_COUNTRY" >> $IPTABLES_CONFIG

echo "-A INPUT -p udp --dport 1194 -j ACCEPT_COUNTRY" >> $IPTABLES_CONFIG

[ -f /etc/openvpn/openvpn-startup ] && \
grep ^iptables /etc/openvpn/openvpn-startup|sed -e 's/iptables //p' -e d >> $IPTABLES_CONFIG

if [ -s /root/deny_ip ]; then
for ip in `cat /root/deny_ip`
do
echo "-I INPUT -s $ip -j DROP" >> $IPTABLES_CONFIG
done
fi
記事編集 編集
Re: CentOS7 + sshd 外部から接続できない このメッセージに返信する
日時: 2015/06/30(Tue) 20:40
名前: フテイシ
URL:
・・前画面続き

echo "-A INPUT -m limit --limit 1/s -j LOG --log-prefix \"[IPTABLES INPUT] : \"" >> $IPTABLES_CONFIG
echo "-A INPUT -j DROP" >> $IPTABLES_CONFIG
echo "-A FORWARD -m limit --limit 1/s -j LOG --log-prefix \"[IPTABLES FORWARD] : \"" >> $IPTABLES_CONFIG
echo "-A FORWARD -j DROP" >> $IPTABLES_CONFIG

echo "COMMIT" >> $IPTABLES_CONFIG
cat $IPTABLES_CONFIG | iptables-restore
rm -f $IPTABLES_CONFIG
記事編集 編集
Re: CentOS7 + sshd 外部から接続できない(再レス) このメッセージに返信する
日時: 2015/07/01(Wed) 17:00
名前: stranger
URL: http://ja.528p.com/
echo "-A INPUT -p tcp --dport 22 -j ACCEPT_COUNTRY" >> $IPTABLES_CONFIG
の部分を一時的に
echo "-A INPUT -p tcp --dport 22 -j ACCEPT" >> $IPTABLES_CONFIG
に変えてみて上手く行くなら
ACCEPT_COUNTRY_MAKE JP
の部分で
cidr.txt に記述されてる JP に対応したグローバルアドレスに
あなたの利用したアドレスがないのでは?
記事編集 編集
Re: CentOS7 + sshd 外部から接続できない このメッセージに返信する
日時: 2015/07/01(Wed) 20:12
名前: フテイシ
URL:
Strangerさん
解決策をありがとうございます。
Strangerさんのおっしゃるとおりでした。
ACCPETに変えたらすんなり通りました。
実は、i-phoneのテザリングで外部接続していました。
秘密鍵でセキュアにしているのですが、
ACCEPT_COUNTRYにしないと、かなりやばいでしょうか?
記事編集 編集
Re: CentOS7 + sshd 外部から接続できない このメッセージに返信する
日時: 2015/07/01(Wed) 21:23
名前: 通りすがり
URL:
>ACCEPT_COUNTRYにしないと、かなりやばいでしょうか?

参考になるかわからないけど
5月にCentOS7の新サーバー借りて納品されたから
さぁ設定しようとrootになったら、
いきなり400回以上sshのrootでログイン失敗しましたとでていたよ(w
全部中国からだったけどあれはあせったww
/var/log/secureみておちついたけどさw
記事編集 編集
Re: CentOS7 + sshd 外部から接続できない このメッセージに返信する
日時: 2015/07/02(Thu) 06:15
名前: stranger
URL: http://ja.528p.com/
opensshはマルチポートで接続できるから
sshd_configで
port 22
port xxxx
(xxxxは使われてないポート)
とすれば
どちらでも接続を受け付けるので
ローカルはport 22
インターネットは port xxxx
で接続するようにすれば不正接続は減ります
その場合は、iptablesもそれに合わせます
あとはルータの問題だけど、たいていのルータは大丈夫でしょ

その前に
JPを設定したばあいに
iptablesに反映されているか調べましたか
日本のプロバイダを使っているなら接続できるはずだけどね
記事編集 編集
Re: CentOS7 + sshd 外部から接続できない このメッセージに返信する
日時: 2015/07/03(Fri) 02:19
名前: フテイシ
URL:
Strangerさん
解決策をありがとうございます。

ポート番号増やして運用していきます。

ありがとうございました。
記事編集 編集
件名※必須
名前※必須
URL
任意のパスワード (投稿後のコメント修正・削除時に使用)
画像認証※必須 投稿キー(画像で表示されている数字を入力)
コメント※必須

※質問を投稿後に自己解決された場合は、原因と行った対処を具体的に書き込み下さるよう、よろしくお願いします。

- WEB PATIO -