443ãã¼ã以å¤ãçµ¶æ» ãããã§ã
ãã¡ãã¡ã§ãã¼ãã¯éãããã¦ãã¾ããssh ã sftp ããããã·å©ç¨ããå種ãã¼ãã§ã¯ãå ¨ãå¤é¨ã«åºãããæ¥ç¶ã§ããªããããã¯ã¼ã¯ãå¤ãã§ãã
TCP/IPãªã®ã«IPã¨ãã¼ãã使ã£ãéä¿¡ãã§ããªããå£ãããããã¯ã¼ã¯ãå½ç¶ã«ãªãã¾ããã
ãããã®æ¥ç¶å¶éã«ã¨ã¦ãä¸ä¾¿ãæãããã¨ãå¤ãã§ãã
ãµã¼ãã¼ç®¡çè ã®æ°åä¸ã¤ã§ãã¼ãã空ãããéããããç§ã触ã£ã¦ããããã¯ã¼ã¯ã§ã¯ããªã·ã¼ãçµ±ä¸ããããã¯ã½ãããã¯ã¼ã¯ç®¡çè ã«æ¯ãåããã¦ãåãã¯ãã®ãã®ãåãããä¸ä¾¿ãªãã¨ãå¤ãã£ãã®ã§ããããã§ä»æ¹ãªãï¼ï¼ï¼ã使ã£ã¦ãã¾ãã
ç§éãå©ç¨ãã端æ«ã§ã¯80/443 ã®ãã¼ãã®å¤é¨æ¥ç¶ãéãããããã¨ã¯å°ãªãã443ã§ããã°éä¿¡ã§ãã¾ãã
ãã®ããã443ãã¼ãã«æ§ã ãªã¢ããªã±ã¼ã·ã§ã³ãèµ·åãã¦ããã¨æãã¾ãã
443 ãã¼ãã¨IPã¢ãã¬ã¹ãæ¯æ¸ããã»ã»ã»
ãã»ã©ã®GWã§ãªãéãï¼ï¼ï¼ã¯éãã¦ãããã®ã§ãï¼ï¼ï¼ã§ãã¹ã¦ã®éä¿¡ãè¡ããã¨ã«ãªãã¾ãã
443 ã§æ¥ç¶ãããã¢ããªããããã³ã«IPã¢ãã¬ã¹ãå¢ããç¾½ç®ã«ãªãã¾ãã
ãã¨ãã£ã¦ãæè»½ã«IPv4ã¢ãã¬ã¹ãå¢ããã®ã¯é£ããããããNATã§ã¯å¯¾å¿ãã§ããã
443æ¥ç¶ã®ä¸èº«ãå ã«ããããã³ã«æ¯ã«è»¢éåºæ¥ããã¤ã¤ãªã¨æã£ã¦ãã¾ãã
HTTPSã ãã§ããã°ã443 ãã¼ãã§è¤æ°ã®ãã¡ã¤ã³ããã¹ãã£ã³ã°ããã®ã¯SNIã®æè¡ã§åé¿ã§ããã¨ãã¦ãã443 ã§ssh ãå¾ ã¡åããã¨ãhttps ãè¶³ããªããªãã¾ãã
ssh 㨠https ãåæã«å¾ ã¡åããããã
ssh 㨠https ã443 ãã¼ãã§åæã«å¾ ã¡åããã§ãããåé¡è§£æ±ºãªãã§ãã
ãã®ãããªå¤¢ã®ã½ããã¦ã§ã¢ã¯ããã®ã§ããããã
ããã¾ããã socks ãããã·ã ãã ã¨æã£ã¦ãããåæã«å¾ ã¡åãã§ããå é¨ãã©ã¼ã¯ã¼ããããã¾ããã
sslh ã®å°å ¥
sslh ã¯ãã«ããã¬ã¯ãµãã¤ã¾ããã¯ã©ã¤ã¢ã³ãã®éä¿¡ãããã³ã«æ¯ã«å¯¾å¿ããã¢ããªã±ã¼ã·ã§ã³ï¼IP/ãã¼ãï¼ã«è»¢éãã¦ããã夢ã®ãããªã¢ããªã±ã¼ã·ã§ã³ã§ãã
sslh ã®å¹æ
sslh ã 443 ãã¼ãã§å¾ ã¡åãããã¦ããã ssh ã®éä¿¡ã¯22/TCP ã¸è»¢éãHTTPS ã®éä¿¡ã¯443/TCPã¸è»¢éãã§ãã¾ãã
443 ãã¼ãã§éä¿¡å 容ã«åºã¥ãæ¯ãåããã§ããã®ã§ããé«ã¬ãã«ãªã¬ã¤ã¤ã§ã®ã«ã¼ãã£ã³ã°ã§ããã
(éä¿¡ãããã³ã«ã§å¤å¥ã転é)
ãã®ããã«443ãã¼ãã§ãssh/httpã®åæå©ç¨ãåºæ¥ã¦ãã¾ãã®ã§ãï¼ï¼(é©)
ææ¿ã§ãã
sslh ã®ã¤ã³ã¹ãã¼ã«
debian ç³»ã®å ´åã¯ãã¨ã¦ãã«ã³ã¿ã³ã§ãã
sudo apt install sslh
ã»ã¼ãã£ã¨ä½¿ãã®ã§ãã¹ã¿ã³ãã¢ãã³ã§èµ·åããã®ãç¡é£ã§ãã
sslh ã®èµ·å
èµ·åã¨çµäºã¯ãsystemd çµç±ã§unit åããã¦ããã®ã§ã«ã³ã¿ã³ã§ããã
# systemctl start sslh
inetd çµç±ã®å ´åã¯inetd ã§èªåèµ·åãããã®ã§ãã¾ãèããªãã¦ããã§ããã
sslh ã®è¨å®
è¨å®ãã¡ã¤ã«ã¯ã/etc/default
ã®ä¸ã«ããã¾ãã
# ls -l /etc/default/sslh -rw-r--r-- 1 root root 715 2016-10-14 14:02 /etc/default/sslh
è¨å®ã®èãããã
å¤é¨åãã® 443 ãã¼ãã§å¾ åãã¦ãå é¨åãã® ãã¼ãã«è»¢éããã
https ã転éãããã¨ãã¯ãããªæãã«ãªãã¾ãã
https client ====> 192.168.11.11:443 ( sslh ) ----(転é)---- > 127.0.0.1:443
ssh ã転éãããã¨ãã¯ãããªæãã«ãªãã¾ãã
ssh client =====> 192.168.11.11:443 ( sslh ) ----(転é)----- > 127.0.0.1:22
443 ãã¼ããã²ã¼ãã¦ã§ã¤
転éå ã¯TCP/IPã§æå®ããã°ããã¿ãããªã®ã§ã443 ã²ã¼ãã¦ã§ã¤ã¨ãã¦ã使ãã¾ããã
ããä»ã«443 ãã¼ããå¾ ã¡åãã¦ããDaemonãããã°ãããã¯è§£é¤ã®å¿ è¦ãããã¾ãã
ç§ã®å ´åã¯Apacheãhttpsã§443ãå©ç¨ãã¦ãããapache ã® Listen ãã å¤é¨:443 ãé¤å¤ã㦠localhost:443 ã«çµãã¾ããã
apache ã®443ãè§£é¤ã㦠localhost ã«çµãä¾
apache ã® 443 ãã¼ãã¯æ¬¡ã®ããã«æ¸ãæãã¾ããã
/etc/apache2/ports.conf ç·¨éå
# Listen 80 <IfModule ssl_module> Listen 443 </IfModule>
ç·¨éå¾
# Listen 80 <IfModule ssl_module> Listen localhost:443 </IfModule>
sslh ã転éããããã«è¨å®ã
å¤é¨IPããã®ï¼ï¼ï¼ãlocalhost ã® 443/ 22 ã«è»¢éããããã«è¨å®ãã¾ããã
è¨å®ãã¡ã¤ã«ã®ãµã³ãã«
/etc/default/sslh
DAEMON_OPTS="--user sslh --listen 192.168.11.11:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --pidfile /var/run/sslh/sslh.pid"
ããã§åèµ·åãã¦ç¢ºèªãã¾ãã
æ¥ç¶ã®ç¢ºèª
ssh ã®çé確èª
ssh 192.168.11.11 -p443
httpsã®çé確èª
curl https://192.168.11.11 -k
ããã§å®æã§ãã
è²´éãª443ãã¼ãã®æå¹æ´»ç¨
ã³ãã³ãã®ãªãã·ã§ã³ãè¦ãã°åãããã§ããã
ssh / http 以å¤ã«ãå¹¾ã¤ã対å¿ãã¦ãã¾ãã
takuya@:~$ sslh -h sslh: option '--http' requires an argument sslh 1.16-2 usage: sslh [-v] [-i] [-V] [-f] [-n] [-F <file>] [-t <timeout>] [-P <pidfile>] -u <username> -p <add> [-p <addr> ...] [--ssh <addr>] [--openvpn <addr>] [--tinc <addr>] [--xmpp <addr>] [--http <addr>] [--ssl <addr>] [--tls <addr>] [--anyprot <addr>] [--on-timeout <addr>] -v: verbose -V: version -f: foreground -n: numeric output -F: use configuration file --on-timeout: connect to specified address upon timeout (default: ssh address) -t: seconds to wait before connecting to --on-timeout address. -p: address and port to listen on. Can be used several times to bind to several addresses. --[ssh,ssl,...]: where to connect connections from corresponding protocol. -F: specify a configuration file -P: PID file. -i: Run as a inetd service.
è¨å®ãã¡ã¤ã«ãèªã¿è¾¼ã¾ããå ´å
è¨å®ãã¡ã¤ã«ä½¿ãã¨ã/etc/default ãã管çãæ¥½ã«ãªãã¾ãã
/etc/default/sslh
##è¨å®ãã¡ã¤ã«ã-F ã§æå®ãã¦ããã¾ãã DAEMON_OPTS="--user sslh -F /etc/sslh --pidfile /var/run/sslh/sslh.pid"
/etc/sslh
listen: ( { host : "192.168.11.11"; port :443 } ); protocols: ( {name: "ssh" ; host: "127.0.0.1"; port: "22" ;}, {name: "http" ; host: "127.0.0.1"; port: "443"; }, )
443ãã¼ãã¯è²´é
IPv4ã® ãã¼ã 443 ã¯ä»ã¯ã¤ã³ã¿ã¼ããããã®ãã®ã«ãªãã¤ã¤ããã¾ããå ¨ã¦ã®éä¿¡ãï¼ï¼ï¼ãã¼ãã§ãããªããã¤ã¤ããã¨ããã£ã¦ãã¾ãã
ï¼ï¼ï¼ãã¼ãã§VPNãè²¼ã£ããssh ãããSocksProxyä½ã£ããéä¿¡å 容ãè¦ãããªãã¨ããã®ã¯ã¨ã¦ãéè¦ãªãã¡ã¯ã¿ã«æãã¤ã¤ããã¾ãã
æè¬
ç§ã®é·å¹´ã®æªå¤¢ã«ç´ æ´ãããè§£æ±ºæ¹æ³ãæãã¦ããã OpenSSH å®è·µå ¥éã«ã¯ã»ãã¨ãã«æè¬ã§ãã
åèè³æ
http://www.rutschle.net/tech/sslh.shtml
https://github.com/yrutschle/sslh
追è¨
ã°ã¼ã°ã«ã§ãsslh ã§æ¤ç´¢ãã㨠sshã«ãã¼ã¯ã¼ããä¿®æ£ãã¦æ¤ç´¢çµæã表示ããã¾ããã google ããã¯ãã¸ããæ¶ãã¦ããã¨æãã¾ããã
2016/10/20 追è¨
ç§ã¯ https 㨠ssh ãåæã«ä½¿ãããã®ã§ sslh ã使ããã¨ã«ãã¾ããã
ããåç´ã«443ã§ssh ãå¾ ã¡åããã ããªããä¸è¦ã§ãã
sshd_config ã ãã§å¯è½ã§ãã
ãã¡ããåç §â発見、sshd の待ち受けポートは二つ書けた!!! - それマグで!
ãã¨ãsslh 㯠systemd ã§èµ·åããã®ã§ãsslh ããã¦ã³ãã¦ãsystemd å´ãé¢åè¦ã¦ãããã¯ãã