iptables 로 접근제어를 하려고 하는데 막히는 부분이 있네요.
안녕하세요? 첫 질문이네요^^ 두근두근...
현재 서버에선 방화벽 설정을 전혀 해놓지 않았습니다. (특성상^^) iptables -L 하면
정책이 전혀 없죠.
이제 iptables 로 아래와 같이 서버 접근을 제어 하려고 합니다.
1) /etc/pam.d/su 설정으로 일단 모든 사용자 계정의 root 접근 권한을 막습니다.
2) /etc/profile 에서
/sbin/iptables -A OUTPUT -d xxx.xxx.xxx.0/24 -p TCP --dport 21:23 -j DROP 를 추가하여
일반 사용자가 위의 C클래스로 21,22,23 포트를 사용한 접근을 다 막습니다.
3) ~root/.profile 에는
/sbin/iptables -F 를 추가하여, root 로 접근하는 경우에는 위의 C클래스로 접근이 가능합니다.
4) root 에서 다시 exit 를 사용하여 다시 일반 유저로 빠져나올땐
/sbin/iptables -A OUTPUT -d xxx.xxx.xxx.0/24 -p TCP --dport 21:23 -j DROP 를 적용하고 싶습니다.
원하는 사항은 위와 같고요, 적용을 해봤더니 일반 유저로 로그인할때
iptables v1.2.8: can't initialize iptables table `filter': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.
이와같은 메시지가 나오네요. 아무래도 /etc/profile 에서 iptables 의 권한때문에 그러는거 같은데 저걸 실행시킬수 있는 방법이 없을까요? (/sbin/iptables 에 g+x, o+x 권한을 주는건 제가 의도하는거랑은 안 맞아서요. 그럼 접근제어 자체가 의미가 없어집니다^^)
그리고 4) 를 구현하는 방법이 있는지도 여쭙고 싶습니다. 초보적인 질문이였나요^^
아시는분들 지나치지 마시고, 답변 부탁드리겠습니다.
흠.
1) iptables 는 일반 유저가 사용할 수 없습니다.
2) /sbin/iptables 에 go+x 를 준다고 하더라도 일반 유저는 iptables를
실행할 수 없습니다. (o+s 를 주면 실행 가능합니다)
3) 일반 유저가 iptables 를 실행 가능하게 변경하더라도 root가
로그인한 상황이면 다른 일반 유저도 접근 가능하게 됩니다.
원하시는 게 일반 유저는 저 서브넷으로 접근을 못하도록 하는 것입니까?
man iptables 하시고 owner 모듈을 읽어 보세요.(사용해 본 적은 없습니다)
아...그 생각을 하지 못 했네요...
나머진 다 그렇다쳐도, root 로 로그인한순간 iptables -F 로 모든 정책이 다 없어지는군요 ㅡㅡ;;
로그인 한 세션만 적용이 될줄 알았는데, 생각을 잘못했습니다.
아 그렇다면 수사는 원점으로...
답변 감사합니다~!
^^;
댓글 달기