: 리눅스시작한지 한달된 초짜입니다.
: 궁금한 게 있어서 이렇게 염치불구하고 자문을 구합니다.
: 다름이아니라 서버에 특정아이피만이 텔넷이나 에프티피를 가능하도록할려면
: 어떻게 하는지궁금합니다. /etc/host.conf를 건드니면 된다고 하던데...
: 전 어떻게 건드리는지도 어떻게 설정하는지 조차도 알지 못합니다.
: 고수님들 도와주세요.
특정 ip만 텔넷이나 ftp가 가능하게 하고 http등은 다른 모든 ip가 가능하게 하려면 iptables를
쓰시는 것이 편할 것입니다. 저는 rc.local 파일에 스크립트를 호출하도록 해놓고 사용하는
데요. kltp.kldp.org에서 보고 따라한 것입니다. 저의 경우는 특정 ip의 특정 포트만 열어주고
나머지는 다 거부합니다. /etc/rc.d/rc.local에
if [ -f /etc/sysconfig/iptables ]; then
/etc/sysconfig/iptables
fi
를 추가하고
/etc/sysconfig/iptables 에
다음과 같이 씁니다.
============다음=============
#!/bin/sh
# 모듈을 올린다.
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe iptable_nat
/sbin/modprobe iptable_mangle
# 우선 모든 Rule을 정리한다.
/sbin/iptables -F
/sbin/iptables -A INPUT -m state --state RELATED -j ACCEPT
# localhost에서의 traffic을 받아들인다.
/sbin/iptables -A INPUT -i lo -j ACCEPT
#특정 ip의 ssh(22번) telnet(23번) ftp(21,20번) 포트를 열어준다.
/sbin/iptables -A INPUT -p tcp --destination-port 22 -s 192.168.1.100 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --destination-port 21 -s 192.168.1.100 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --destination-port 20 -s 192.168.1.100 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --destination-port 23 -s 192.168.1.100 -j ACCEPT
# 확립된 연결에 대한 Packet을 받아들인다.
/sbin/iptables -A INPUT -i eth0 -p tcp ! --syn -j ACCEPT
#/sbin/iptables -A INPUT -i eth0 -p udp ! --syn -j ACCEPT
# 인증 연결을 거부한다(그렇지 않을 경우 메일서버가 오랫동안 타임아웃 상태가 될 것이
다 /sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 113 -j REJECT
# echo나 목적지에 도착 못하거나 시간 초과된 icmp packet들을 받아들인다.
/sbin/iptables -A INPUT -i eth0 -p icmp --icmp-type 0 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --icmp-type 3 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --icmp-type 11 -j ACCEPT
# 다음으로 각각에 대한 정책을 세운다.
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT
# 위의 경우가 아닌 경우 1~30000번 포트는 다 거부한다.
/sbin/iptables -A INPUT -p tcp --dport 1:30000 -j DROP
# 핑도 안되게 한다.
/sbin/iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
===============여기 까지==========
만약에 특정 ip만 모든 포트로 다 접속 되게 하고싶다면
/sbin/iptables -A INPUT -s 192.168.1.100 -j ACCEPT
로 포트 번호별로 열어둔 것을 대체하시면 됩니다.
특정 포트 외에 다른 포트는 다른 ip에서도 접속이 가능하게 하시려면
먼저
/sbin/iptables -A INPUT -p tcp --destination-port 22 -s 192.168.1.100 -j ACCEPT
로 포트를 열어놓고
/sbin/iptables -A INPUT -p tcp --destination-port 22 -j REJECT
로 모든 ip에 대해 포트를 거부시켜놓고
/sbin/iptables -A INPUT -j ACCEPT
으로 모두 열어주시면 되겠네요. (먼저 설정한 규칙이 우선하므로 모든 ip를 거부해도 먼저
설정한 192.168.1.100의 경우는 포트가 열립니다.) 더 자세한 것은 kldp.org나 iptables 메뉴얼을
참고 하세요. ps. 물론 위 스크립트는 실행 옵션이 되어있어야 겠지요.--with lots of love ^^;;